{"version":3,"file":"seniorsistemas-angular-components-alert.mjs","sources":["../../projects/angular-components/alert/src/lib/alert/alert.component.ts","../../projects/angular-components/alert/src/lib/alert/alert.component.html","../../projects/angular-components/alert/src/lib/alert/alert.module.ts","../../projects/angular-components/alert/src/seniorsistemas-angular-components-alert.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\r\nimport { Component, EventEmitter, input, Input, Output } from '@angular/core';\r\n\r\n/**\r\n * @description Componente de alerta que exibe mensagens informativas, de sucesso, aviso ou erro.\r\n * Suporta fechamento manual pelo usuário e emite um evento ao ser fechado.\r\n *\r\n * @example\r\n * ```html\r\n * <s-alert\r\n *   severity=\"warning\"\r\n *   summary=\"Atenção\"\r\n *   detail=\"Verifique os dados antes de continuar.\"\r\n *   (closed)=\"onAlertClosed()\"\r\n * />\r\n * ```\r\n *\r\n * @category Feedback\r\n */\r\n@Component({\r\n    selector: 's-alert',\r\n    templateUrl: './alert.component.html',\r\n    standalone: true,\r\n    imports: [NgClass],\r\n})\r\nexport class AlertComponent {\r\n    /**\r\n     * @description Nível de severidade do alerta, que define a cor e o ícone exibidos.\r\n     * - `'info'`: alerta informativo (padrão).\r\n     * - `'success'`: alerta de sucesso.\r\n     * - `'warning'`: alerta de aviso.\r\n     * - `'error'`: alerta de erro.\r\n     *\r\n     * @default 'info'\r\n     */\r\n    // sonar-ignore: Refactor this union type to have less than 3 elements\r\n    @Input()\r\n    public severity: 'info' | 'success' | 'warning' | 'error' = 'info';\r\n\r\n    /**\r\n     * @description Título principal do alerta exibido em destaque. Campo obrigatório.\r\n     */\r\n    @Input({ required: true })\r\n    public summary!: string;\r\n\r\n    /**\r\n     * @description Mensagem detalhada exibida abaixo do título do alerta. Campo obrigatório.\r\n     */\r\n    @Input()\r\n    public detail!: string;\r\n\r\n    /**\r\n     * @description Quando `true`, exibe o botão de fechar o alerta.\r\n     * Quando `false`, o alerta não pode ser dispensado pelo usuário.\r\n     *\r\n     * @default true\r\n     */\r\n    @Input()\r\n    public closable = true;\r\n\r\n    /**\r\n     * @description Quando `true`, o conteúdo do alerta é escapado para evitar a execução de HTML ou scripts.\r\n     * Quando `false`, o conteúdo do alerta é renderizado como HTML, permitindo a inclusão de links, negrito, etc.\r\n     *\r\n     * @default true\r\n     */\r\n    escape = input<boolean>(true);\r\n\r\n    /**\r\n     * @description Emitido quando o usuário fecha o alerta clicando no botão de fechar.\r\n     */\r\n    @Output()\r\n    public closed = new EventEmitter<void>();\r\n\r\n    public get isOpen(): boolean {\r\n        return this._isOpen;\r\n    }\r\n\r\n    public closeAlert(): void {\r\n        this._isOpen = false;\r\n    }\r\n\r\n    public showAlert(): void {\r\n        this._isOpen = true;\r\n    }\r\n\r\n    public onClose(): void {\r\n        this.closed.emit();\r\n        this.closeAlert();\r\n    }\r\n\r\n    private _isOpen = true;\r\n}\r\n","@if (isOpen) {\n    <div\n        class=\"alert m-2 flex items-center justify-between gap-4 rounded-medium border-l-4 px-4 py-3 shadow-[1px_1px_2px_rgba(0,0,0,0.2)]\"\n        [ngClass]=\"{\n            'alert--info': severity === 'info',\n            'alert--success': severity === 'success',\n            'alert--warning': severity === 'warning',\n            'alert--error': severity === 'error',\n            'border-primary bg-hippie-blue-50': severity === 'info',\n            'border-criticality-green bg-teal-50': severity === 'success',\n            'border-criticality-yellow bg-buttercup-50': severity === 'warning',\n            'border-criticality-red bg-sunset-orange-50': severity === 'error',\n        }\"\n    >\n        <div class=\"content flex items-center gap-4\">\n            <div\n                class=\"icon-container inline-flex h-10 w-10 flex-shrink-0 items-center justify-center rounded-[50%]\"\n                [ngClass]=\"{\n                    'bg-primary': severity === 'info',\n                    'bg-criticality-green': severity === 'success',\n                    'bg-criticality-yellow': severity === 'warning',\n                    'bg-criticality-red': severity === 'error',\n                }\"\n            >\n                <i\n                    class=\"fas\"\n                    [ngClass]=\"{\n                        'fa-info': severity === 'info',\n                        'fa-check': severity === 'success',\n                        'fa-exclamation-triangle': severity === 'warning',\n                        'fa-times': severity === 'error',\n                        'text-grayscale-0': severity !== 'warning',\n                        'text-grayscale-90': severity === 'warning',\n                    }\"\n                ></i>\n            </div>\n            <div class=\"text-container flex flex-col gap-4\">\n                <div class=\"text flex flex-col justify-start\">\n                    @if (summary) {\n                        <span class=\"summary font-open-sans text-sm font-bold text-grayscale-90\">{{ summary }}</span>\n                    }\n\n                    @if (detail) {\n                        @if (escape()) {\n                            <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n                                {{ detail }}\n                            </span>\n                        } @else {\n                            <span\n                                class=\"detail font-open-sans text-sm text-grayscale-90\"\n                                [innerHTML]=\"detail\"\n                            ></span>\n                        }\n                    } @else {\n                        <span class=\"detail font-open-sans text-sm text-grayscale-90\">\n                            <ng-content />\n                        </span>\n                    }\n                </div>\n            </div>\n        </div>\n        @if (closable) {\n            <button\n                class=\"close-option cursor-pointer border-0 bg-transparent p-1 text-base text-grayscale-90\"\n                (click)=\"onClose()\"\n            >\n                <i class=\"fas fa-times\"></i>\n            </button>\n        }\n    </div>\n}\n\n","import { NgModule } from '@angular/core';\r\n\r\nimport { AlertComponent } from './alert.component';\r\n\r\n@NgModule({\r\n    imports: [AlertComponent],\r\n    exports: [AlertComponent],\r\n})\r\nexport class AlertModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}