{"version":3,"file":"seniorsistemas-angular-components-badge.mjs","sources":["../../projects/angular-components/badge/src/lib/badge/badge.component.ts","../../projects/angular-components/badge/src/lib/badge/badge.component.html","../../projects/angular-components/badge/src/lib/badge/badge.module.ts","../../projects/angular-components/badge/src/seniorsistemas-angular-components-badge.ts"],"sourcesContent":["import { Component, EventEmitter, HostListener, input, Input, Output } from '@angular/core';\r\n\r\nimport { BadgeColors } from './types/badge-colors';\r\nimport { BadgeTypes } from './types/badge-types';\r\nimport { NgClass } from '@angular/common';\r\nimport { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Componente de badge (etiqueta) para exibir rótulos coloridos e clicáveis,\r\n * com suporte a ícones, variantes visuais (pill, tag) e estado selecionável.\r\n *\r\n * @example\r\n * ```html\r\n * <s-badge color=\"blue\" type=\"pill\" text=\"Ativo\" />\r\n * ```\r\n *\r\n * @category Feedback\r\n */\r\n@Component({\r\n    selector: 's-badge',\r\n    templateUrl: './badge.component.html',\r\n    styleUrls: ['./badge.component.scss'],\r\n    standalone: true,\r\n    imports: [NgClass, InfoSignModule, TooltipDirective],\r\n})\r\nexport class BadgeComponent {\r\n    /** @description Variante visual do badge. @default 'pill' */\r\n    @Input()\r\n    public type?: BadgeTypes = 'pill';\r\n\r\n    /** @description Cor do badge. @default 'blue' */\r\n    @Input()\r\n    public color?: BadgeColors = 'blue';\r\n\r\n    /** @description Texto de título exibido no badge. */\r\n    @Input()\r\n    public title?: string;\r\n\r\n    /** @description Texto principal exibido dentro do badge. */\r\n    @Input()\r\n    public text?: string;\r\n\r\n    /** @description Habilita o modo selecionável, emitindo o evento `selected` ao clicar. @default false */\r\n    @Input()\r\n    public selectable = false;\r\n\r\n    /** @description Classe CSS do ícone exibido no badge (ex.: `'fa fa-check'`). */\r\n    @Input()\r\n    public iconClass?: string;\r\n\r\n    /** @description Posição do ícone em relação ao texto. @default 'left' */\r\n    @Input()\r\n    public iconPosition?: 'left' | 'right' = 'left';\r\n\r\n    /** @description Configuração do info-sign exibido no badge, com texto e tempo de exibição opcional. */\r\n    @Input() infoSign!: { text: string; displayTime?: number };\r\n\r\n    /** @description Emitido ao clicar no badge, enviando o valor de `text`. */\r\n    @Output()\r\n    public selected = new EventEmitter<string>();\r\n\r\n    @HostListener('click')\r\n    public onClick(): void {\r\n        this.selected.emit(this.text);\r\n    }\r\n\r\n    enableTruncateText = input(false);\r\n}\r\n","<span\n    class=\"badge inline-flex max-w-full min-h-5 min-w-5 items-center justify-center gap-2 px-2 overflow-hidden border\"\n    [ngClass]=\"{\n        'badge--pill': type === 'pill',\n        'badge--chip': type === 'chip',\n        'badge--red': color === 'red',\n        'badge--orange': color === 'orange',\n        'badge--yellow': color === 'yellow',\n        'badge--blue': color === 'blue',\n        'badge--green': color === 'green',\n        'badge--gray': color === 'gray',\n        'badge--selectable': selectable,\n        'rounded-[10px]': type === 'pill',\n        'rounded-medium': type === 'chip',\n        'bg-sunset-orange-100 border-criticality-red': color === 'red',\n        'bg-buttercup-100 border-criticality-orange': color === 'orange',\n        'bg-buttercup-50 border-criticality-yellow': color === 'yellow',\n        'bg-hippie-blue-100 border-criticality-blue': color === 'blue',\n        'bg-lime-100 border-criticality-green': color === 'green',\n        'bg-grayscale-10 border-grayscale-60': color === 'gray',\n        'cursor-pointer select-none': selectable,\n    }\"\n>\n    @if (infoSign) {\n        <span *sInfoSign=\"infoSign.text; displayTime: infoSign.displayTime ?? 0\"></span>\n    }\n    @if (iconClass) {\n        <span\n            [class]=\"'badge-icon inline-flex items-center justify-center text-[10px] text-grayscale-90 ' + iconClass\"\n            [ngClass]=\"{\n                'badge-icon--left': iconPosition === 'left' && text,\n                'badge-icon--right': iconPosition === 'right' && text,\n                'order-2': iconPosition === 'right' && text,\n            }\"\n        >\n        </span>\n    }\n    @if (title) {\n        <span class=\"badge-title font-open-sans mr-0.5 text-xs font-bold leading-[150%] text-grayscale-90\">{{ title }}:</span>\n    }\n    @if (text) {\n        <span\n            class=\"badge-text font-open-sans text-xs font-normal leading-[150%] text-grayscale-90\"\n            [class.badge-text-truncated]=\"enableTruncateText()\"\n            [class.line-clamp-1]=\"enableTruncateText()\"\n            [sTooltip]=\"text\"\n            [visible]=\"enableTruncateText()\"\n            [checkTruncatedText]=\"enableTruncateText()\"\n        >{{text}}</span>\n    }\n</span>\n\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { BadgeComponent } from './badge.component';\r\n\r\n@NgModule({\r\n    imports: [RouterModule, BadgeComponent],\r\n    exports: [BadgeComponent, RouterModule],\r\n})\r\nexport class BadgeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}