import { Component, EventEmitter, Input, Output } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@seniorsistemas/angular-components/button";
/**
 * @description Componente de estado vazio exibido quando não há conteúdo para mostrar.
 * Apresenta um ícone, título, descrição e até duas ações configuráveis
 * (primária com suporte a tiered menu e secundária simples).
 *
 * @example
 * ```html
 * <s-empty-state
 *   title="Nenhum resultado encontrado"
 *   description="Tente ajustar os filtros da busca."
 *   primaryActionLabel="Criar novo"
 *   (primaryAction)="onCreate()"
 * />
 * ```
 *
 * @category Feedback
 */
export class EmptyStateComponent {
    static nextIdSeed = 0;
    static _nextId = EmptyStateComponent.nextIdSeed;
    static getNextId() {
        return this._nextId++;
    }
    /**
     * @description Identificador único do componente. Gerado automaticamente se não informado.
     */
    id = `s-empty-state-${EmptyStateComponent.getNextId()}`;
    /**
     * @description Título principal exibido no estado vazio. Campo obrigatório.
     */
    title;
    /**
     * @description Classe CSS do ícone exibido no estado vazio.
     * Aceita classes de bibliotecas de ícones como Font Awesome.
     *
     * @default 'fa fa-inbox'
     */
    iconClass = 'fa fa-inbox';
    /**
     * @description Texto descritivo exibido abaixo do título, explicando o motivo do estado vazio
     * ou orientando o usuário sobre as próximas ações.
     */
    description;
    /**
     * @description Controla a visibilidade do botão de ação primária.
     *
     * @default true
     */
    showPrimaryAction = true;
    /**
     * @description Controla a visibilidade do botão de ação secundária.
     *
     * @default true
     */
    showSecondaryAction = true;
    /**
     * @description Texto do botão de ação primária.
     * Quando `primaryModel` possui itens, o botão exibe um tiered menu ao clicar.
     */
    primaryActionLabel;
    /** @description Texto do botão de ação secundária. */
    secondaryActionLabel;
    /**
     * @description Lista de itens para o tiered menu da ação primária.
     * Quando informado com itens, o botão primário exibe um menu de opções
     * ao invés de emitir o evento `primaryAction` diretamente.
     */
    primaryModel = [];
    /**
     * @description Emitido quando o usuário clica no botão de ação primária e `primaryModel` está vazio.
     */
    primaryAction = new EventEmitter();
    /**
     * @description Emitido quando o usuário clica no botão de ação secundária.
     */
    secondaryAction = new EventEmitter();
    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: EmptyStateComponent, selector: "s-empty-state", inputs: { id: "id", title: "title", iconClass: "iconClass", description: "description", showPrimaryAction: "showPrimaryAction", showSecondaryAction: "showSecondaryAction", primaryActionLabel: "primaryActionLabel", secondaryActionLabel: "secondaryActionLabel", primaryModel: "primaryModel" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div\n    [id]=\"id\"\n    class=\"empty-state\"\n>\n    <div\n        [id]=\"id + '-icon'\"\n        class=\"icon\"\n    >\n        <i\n            [attr.class]=\"iconClass ? iconClass : 'fa fa-cogs'\"\n            aria-hidden=\"true\"\n        ></i>\n    </div>\n    <div\n        [id]=\"id + '-title'\"\n        class=\"title\"\n    >\n        {{ title }}\n    </div>\n\n    @if (description) {\n        <div\n            [id]=\"id + '-description'\"\n            class=\"description\"\n        >\n            <p>{{ description }}</p>\n        </div>\n    }\n    @if (showPrimaryAction && primaryActionLabel) {\n        <div\n            [id]=\"id + '-actions'\"\n            class=\"actions\"\n        >\n            <s-button\n                [id]=\"id + '-primary-action'\"\n                type=\"button\"\n                [label]=\"primaryActionLabel\"\n                [menuOptions]=\"primaryModel\"\n                (clicked)=\"primaryAction.next()\"\n            ></s-button>\n            @if (showSecondaryAction && secondaryActionLabel) {\n                <s-button\n                    [id]=\"id + '-secondary-action'\"\n                    id=\"secondaryAction\"\n                    type=\"button\"\n                    [label]=\"secondaryActionLabel\"\n                    priority=\"link\"\n                    (clicked)=\"secondaryAction.next()\"\n                ></s-button>\n            }\n        </div>\n    }\n</div>\n", styles: [".empty-state{width:100%;text-align:center}.empty-state .icon{color:#d8d8d8;font-size:6em}.empty-state .title{font-weight:700;margin-bottom:10px}.empty-state .description{margin-bottom:15px;color:#999;padding:0 20px;text-align:center}.empty-state .description p{margin:auto;max-width:400px;max-height:80px;overflow:hidden}.empty-state .actions{text-align:center;width:100%}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel"], outputs: ["clicked"] }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyStateComponent, decorators: [{
            type: Component,
            args: [{ selector: 's-empty-state', template: "<div\n    [id]=\"id\"\n    class=\"empty-state\"\n>\n    <div\n        [id]=\"id + '-icon'\"\n        class=\"icon\"\n    >\n        <i\n            [attr.class]=\"iconClass ? iconClass : 'fa fa-cogs'\"\n            aria-hidden=\"true\"\n        ></i>\n    </div>\n    <div\n        [id]=\"id + '-title'\"\n        class=\"title\"\n    >\n        {{ title }}\n    </div>\n\n    @if (description) {\n        <div\n            [id]=\"id + '-description'\"\n            class=\"description\"\n        >\n            <p>{{ description }}</p>\n        </div>\n    }\n    @if (showPrimaryAction && primaryActionLabel) {\n        <div\n            [id]=\"id + '-actions'\"\n            class=\"actions\"\n        >\n            <s-button\n                [id]=\"id + '-primary-action'\"\n                type=\"button\"\n                [label]=\"primaryActionLabel\"\n                [menuOptions]=\"primaryModel\"\n                (clicked)=\"primaryAction.next()\"\n            ></s-button>\n            @if (showSecondaryAction && secondaryActionLabel) {\n                <s-button\n                    [id]=\"id + '-secondary-action'\"\n                    id=\"secondaryAction\"\n                    type=\"button\"\n                    [label]=\"secondaryActionLabel\"\n                    priority=\"link\"\n                    (clicked)=\"secondaryAction.next()\"\n                ></s-button>\n            }\n        </div>\n    }\n</div>\n", styles: [".empty-state{width:100%;text-align:center}.empty-state .icon{color:#d8d8d8;font-size:6em}.empty-state .title{font-weight:700;margin-bottom:10px}.empty-state .description{margin-bottom:15px;color:#999;padding:0 20px;text-align:center}.empty-state .description p{margin:auto;max-width:400px;max-height:80px;overflow:hidden}.empty-state .actions{text-align:center;width:100%}\n"] }]
        }], propDecorators: { id: [{
                type: Input
            }], title: [{
                type: Input,
                args: [{ required: true }]
            }], iconClass: [{
                type: Input
            }], description: [{
                type: Input
            }], showPrimaryAction: [{
                type: Input
            }], showSecondaryAction: [{
                type: Input
            }], primaryActionLabel: [{
                type: Input
            }], secondaryActionLabel: [{
                type: Input
            }], primaryModel: [{
                type: Input
            }], primaryAction: [{
                type: Output
            }], secondaryAction: [{
                type: Output
            }] } });
//# sourceMappingURL=data:application/json;base64, 