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