{"version":3,"file":"seniorsistemas-angular-components-tile.mjs","sources":["../../projects/angular-components/tile/src/lib/tile/tile.component.ts","../../projects/angular-components/tile/src/lib/tile/tile.component.html","../../projects/angular-components/tile/src/lib/tile/tile.module.ts","../../projects/angular-components/tile/src/seniorsistemas-angular-components-tile.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, HostListener } from '@angular/core';\n\n/**\n * @description Card clicável que representa uma opção ou destino de navegação,\n * exibindo ícone (por classe ou imagem), rótulo e descrição opcional.\n * Suporta navegação por teclado e exibe as iniciais do rótulo como fallback.\n *\n * @example\n * ```html\n * <s-tile\n *   label=\"Relatórios\"\n *   iconClass=\"fas fa-chart-bar\"\n *   (clicked)=\"onTileClicado()\" />\n * ```\n *\n * @category Summary\n */\n@Component({\n    selector: 's-tile',\n    templateUrl: './tile.component.html',\n    styleUrls: ['./tile.component.scss'],\n})\nexport class TileComponent {\n    public static nextId = 0;\n\n    /** @description Identificador único do elemento no DOM. Gerado automaticamente se não informado. */\n    @Input()\n    public id = `s-tile-${TileComponent.nextId++}`;\n\n    /** @description Rótulo principal exibido no tile. Campo obrigatório. */\n    @Input({ required: true })\n    public label!: string;\n\n    /** @description Texto descritivo exibido abaixo do rótulo. */\n    @Input()\n    public description?: string;\n\n    /** @description Classe do ícone exibido no tile (ex.: `'fas fa-home'`). */\n    @Input()\n    public iconClass?: string;\n\n    /** @description URL da imagem exibida no tile. */\n    @Input()\n    public imageSource?: string;\n\n    /** @description Texto alternativo para a imagem (`alt`). */\n    @Input()\n    public imageAlt?: string;\n\n    /** @description Desabilita o tile, removendo interações e aplicando estilo desativado. @default false */\n    @Input()\n    public disabled = false;\n\n    /** @description `tabindex` do tile para navegação por teclado. @default 0 */\n    @Input()\n    public tabIndex = 0;\n\n    /** @description Exibe o thumbnail (miniatura) no tile. @default true */\n    @Input()\n    public thumbnail = true;\n\n    /** @description Emitido quando o usuário clica ou pressiona Enter/Espaço no tile. */\n    @Output()\n    public clicked = new EventEmitter();\n\n    public get initialLetter(): string {\n        let initialLetter = '';\n        if (this.label) {\n            const words = this.label.split(' ', 2);\n            initialLetter = words[0].charAt(0).toUpperCase();\n            if (words.length > 1) {\n                initialLetter += words[1].charAt(0).toUpperCase();\n            }\n        }\n        return initialLetter;\n    }\n\n    @HostListener('keydown', ['$event'])\n    public onKeyDown(event: any) {\n        if (!this.disabled && [13, 32].includes(event.keyCode)) {\n            this.clicked.emit();\n        }\n    }\n}\n\n","<div\n    [id]=\"id\"\n    class=\"tile\"\n    [attr.tabindex]=\"disabled ? undefined : tabIndex\"\n    [attr.aria-label]=\"label\"\n    [attr.aria-disabled]=\"disabled\"\n    role=\"button\"\n    [ngClass]=\"{ 'tile--disabled': disabled }\"\n    (click)=\"!disabled && clicked.emit($event)\"\n>\n\n    @if(imageSource || iconClass) {\n        <div class=\"thumbnail\">\n            @if(imageSource) {\n                @if(!thumbnail) {\n                    <div\n                        class=\"image-icon\">\n                        <div\n                            class=\"icon\"\n                            [style.background-image]=\"'url(' + imageSource + ')'\">\n                        </div>\n                    </div>\n\n                }\n                @if(thumbnail) {\n                    <s-thumbnail\n                        [id]=\"id + '-thumbnail'\"\n                        [imageSource]=\"imageSource\"\n                        [imageAlt]=\"imageAlt || label\"\n                        size=\"small\"\n                        [isTile]=\"true\"/>\n                }\n            }\n            @if(!imageSource && iconClass) {\n                <span\n                    [id]=\"id + '-icon'\"\n                    [class]=\"'icon ' + iconClass\"\n                    aria-hidden=\"true\">\n                </span>\n            }\n        </div>\n    }\n\n    @if (!iconClass && !imageSource) {\n        <div class=\"first-letter-container\">\n            <div class=\"first-letter\">\n                <span>{{ initialLetter }}</span>\n            </div>\n        </div>\n    }\n\n    <div class=\"info\">\n        <span\n            [id]=\"id + '-title'\"\n            class=\"title\"\n            [sTooltip]=\"label\"\n        >\n            {{ label }}\n        </span>\n        <span\n            [id]=\"id + '-description'\"\n            class=\"description\"\n            [sTooltip]=\"description\"\n        >\n            {{ description }}\n        </span>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TileComponent } from './tile.component';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { ThumbnailModule } from '@seniorsistemas/angular-components/thumbnail';\n\n@NgModule({\n    imports: [CommonModule, TooltipModule, ThumbnailModule],\n    declarations: [TileComponent],\n    exports: [TileComponent, ThumbnailModule],\n})\nexport class TileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}