tudu-components 0.2.7 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/fallback-message/fallback-message.component.mjs +7 -5
- package/fesm2015/tudu-components.mjs +6 -4
- package/fesm2015/tudu-components.mjs.map +1 -1
- package/fesm2020/tudu-components.mjs +6 -4
- package/fesm2020/tudu-components.mjs.map +1 -1
- package/lib/components/fallback-message/fallback-message.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ export class FallbackMessageComponent {
|
|
|
5
5
|
constructor() {
|
|
6
6
|
this.card = [];
|
|
7
7
|
this.statusPedido = '';
|
|
8
|
+
this.hideBtn = false;
|
|
8
9
|
this.primaryAction = new EventEmitter();
|
|
9
10
|
this.secondaryAction = new EventEmitter();
|
|
10
11
|
}
|
|
@@ -51,8 +52,7 @@ export class FallbackMessageComponent {
|
|
|
51
52
|
case 'sem servicos':
|
|
52
53
|
return {
|
|
53
54
|
title: this.customTitle || 'Sem serviço',
|
|
54
|
-
description: this.customDescription ||
|
|
55
|
-
'Não há serviços disponíveis aqui.',
|
|
55
|
+
description: this.customDescription || 'Não há serviços disponíveis aqui.',
|
|
56
56
|
icon: '📄',
|
|
57
57
|
// iconColor: 'text-yellow-500',
|
|
58
58
|
// bgColor: 'bg-yellow-100',
|
|
@@ -104,10 +104,10 @@ export class FallbackMessageComponent {
|
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
106
|
FallbackMessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FallbackMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
107
|
-
FallbackMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FallbackMessageComponent, selector: "lib-fallback-message", inputs: { card: "card", statusPedido: "statusPedido", customTitle: "customTitle", customDescription: "customDescription", primaryActionText: "primaryActionText", secondaryActionText: "secondaryActionText" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative\">\n
|
|
107
|
+
FallbackMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FallbackMessageComponent, selector: "lib-fallback-message", inputs: { card: "card", statusPedido: "statusPedido", customTitle: "customTitle", customDescription: "customDescription", primaryActionText: "primaryActionText", secondaryActionText: "secondaryActionText", hideBtn: "hideBtn" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative w-32 h-32 flex items-center justify-center\">\n <div [class]=\"emptyStateConfig.iconColor\" class=\"z-10\">\n <div class=\"text-xl leading-none\" style=\"font-size: 4rem\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-full h-full rounded-full opacity-50 flex-shrink-0\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conte\u00FAdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- T\u00EDtulo -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descri\u00E7\u00E3o -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informa\u00E7\u00F5es adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Servi\u00E7o avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do servi\u00E7o</span>\n </div>\n </div>\n </div>\n\n <!-- A\u00E7\u00F5es -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- A\u00E7\u00E3o Prim\u00E1ria -->\n <button\n *ngIf=\"hideBtn\"\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indispon\u00EDvel' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- A\u00E7\u00E3o Secund\u00E1ria -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n", styles: [".empty-state-card{animation:fadeInUp .5s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.empty-state-icon{animation:bounceIn .6s ease-out}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1)}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
108
108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FallbackMessageComponent, decorators: [{
|
|
109
109
|
type: Component,
|
|
110
|
-
args: [{ selector: 'lib-fallback-message', template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative\">\n
|
|
110
|
+
args: [{ selector: 'lib-fallback-message', template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative w-32 h-32 flex items-center justify-center\">\n <div [class]=\"emptyStateConfig.iconColor\" class=\"z-10\">\n <div class=\"text-xl leading-none\" style=\"font-size: 4rem\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-full h-full rounded-full opacity-50 flex-shrink-0\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conte\u00FAdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- T\u00EDtulo -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descri\u00E7\u00E3o -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informa\u00E7\u00F5es adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Servi\u00E7o avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do servi\u00E7o</span>\n </div>\n </div>\n </div>\n\n <!-- A\u00E7\u00F5es -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- A\u00E7\u00E3o Prim\u00E1ria -->\n <button\n *ngIf=\"hideBtn\"\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indispon\u00EDvel' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- A\u00E7\u00E3o Secund\u00E1ria -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n", styles: [".empty-state-card{animation:fadeInUp .5s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.empty-state-icon{animation:bounceIn .6s ease-out}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1)}}\n"] }]
|
|
111
111
|
}], propDecorators: { card: [{
|
|
112
112
|
type: Input
|
|
113
113
|
}], statusPedido: [{
|
|
@@ -120,9 +120,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
120
120
|
type: Input
|
|
121
121
|
}], secondaryActionText: [{
|
|
122
122
|
type: Input
|
|
123
|
+
}], hideBtn: [{
|
|
124
|
+
type: Input
|
|
123
125
|
}], primaryAction: [{
|
|
124
126
|
type: Output
|
|
125
127
|
}], secondaryAction: [{
|
|
126
128
|
type: Output
|
|
127
129
|
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2stbWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWR1LWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZhbGxiYWNrLW1lc3NhZ2UvZmFsbGJhY2stbWVzc2FnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWR1LWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZhbGxiYWNrLW1lc3NhZ2UvZmFsbGJhY2stbWVzc2FnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFpQnZFLE1BQU0sT0FBTyx3QkFBd0I7SUFMckM7UUFNVyxTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBTXpCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7S0FpSHREO0lBL0dDLElBQUksZ0JBQWdCO1FBQ2xCLHNCQUFzQjtRQUN0QixnQ0FBZ0M7UUFDaEMsYUFBYTtRQUNiLGlDQUFpQztRQUNqQyxtQkFBbUI7UUFDbkIscUVBQXFFO1FBQ3JFLGtCQUFrQjtRQUNsQixrQ0FBa0M7UUFDbEMsOEJBQThCO1FBQzlCLHNFQUFzRTtRQUN0RSxxREFBcUQ7UUFDckQsT0FBTztRQUNQLElBQUk7UUFFSix5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLFFBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDdkMsS0FBSyxZQUFZO29CQUNmLE9BQU87d0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksdUJBQXVC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bkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbnRlcmZhY2UgRW1wdHlTdGF0ZUNvbmZpZyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgaWNvbkNvbG9yOiBzdHJpbmc7XG4gIGJnQ29sb3I6IHN0cmluZztcbiAgcHJpbWFyeUFjdGlvblRleHQ/OiBzdHJpbmc7XG4gIHNlY29uZGFyeUFjdGlvblRleHQ/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1mYWxsYmFjay1tZXNzYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZhbGxiYWNrLW1lc3NhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mYWxsYmFjay1tZXNzYWdlLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRmFsbGJhY2tNZXNzYWdlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY2FyZDogYW55W10gPSBbXTtcbiAgQElucHV0KCkgc3RhdHVzUGVkaWRvOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgY3VzdG9tVGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGN1c3RvbURlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBwcmltYXJ5QWN0aW9uVGV4dD86IHN0cmluZztcbiAgQElucHV0KCkgc2Vjb25kYXJ5QWN0aW9uVGV4dD86IHN0cmluZztcblxuICBAT3V0cHV0KCkgcHJpbWFyeUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlY29uZGFyeUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBnZXQgZW1wdHlTdGF0ZUNvbmZpZygpOiBFbXB0eVN0YXRlQ29uZmlnIHtcbiAgICAvLyBTZSBuw6NvIGjDoSBwcm9wb3N0YXNcbiAgICAvLyBpZiAodGhpcy5jYXJkLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vICAgcmV0dXJuIHtcbiAgICAvLyAgICAgdGl0bGU6ICdOZW5odW1hIFByb3Bvc3RhJyxcbiAgICAvLyAgICAgZGVzY3JpcHRpb246XG4gICAgLy8gICAgICAgJ1ZvY8OqIGFpbmRhIG7Do28gcG9zc3VpIG5lZ29jaWHDp8O1ZXMgb3UgcHJvcG9zdGFzIHJlY2ViaWRhcy4nLFxuICAgIC8vICAgICBpY29uOiAn8J+ThCcsXG4gICAgLy8gICAgIGljb25Db2xvcjogJ3RleHQtZ3JheS01MDAnLFxuICAgIC8vICAgICBiZ0NvbG9yOiAnYmctZ3JheS0xMDAnLFxuICAgIC8vICAgICBwcmltYXJ5QWN0aW9uVGV4dDogdGhpcy5wcmltYXJ5QWN0aW9uVGV4dCB8fCAnQW7Dum5jaWFyIEdyw6F0aXMnLFxuICAgIC8vICAgICBzZWNvbmRhcnlBY3Rpb25UZXh0OiB0aGlzLnNlY29uZGFyeUFjdGlvblRleHQsXG4gICAgLy8gICB9O1xuICAgIC8vIH1cblxuICAgIC8vIFNlIGjDoSBzdGF0dXMgZGUgcGVkaWRvXG4gICAgaWYgKHRoaXMuc3RhdHVzUGVkaWRvKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdHVzUGVkaWRvLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgY2FzZSAnZmluYWxpemFkbyc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmN1c3RvbVRpdGxlIHx8ICdTZXJ2acOnbyBDb25jbHXDrWRvISDwn46JJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICB0aGlzLmN1c3RvbURlc2NyaXB0aW9uIHx8XG4gICAgICAgICAgICAgICdPIHNlcnZpw6dvIGZvaSBmaW5hbGl6YWRvIGNvbSBzdWNlc3NvLiBBZ3JhZGVjZW1vcyBwZWxhIGNvbmZpYW7Dp2EhJyxcbiAgICAgICAgICAgIGljb246ICfinIUnLFxuICAgICAgICAgICAgaWNvbkNvbG9yOiAndGV4dC1ncmVlbi01MDAnLFxuICAgICAgICAgICAgYmdDb2xvcjogJ2JnLWdyZWVuLTEwMCcsXG4gICAgICAgICAgICBwcmltYXJ5QWN0aW9uVGV4dDogdGhpcy5wcmltYXJ5QWN0aW9uVGV4dCB8fCAnVmVyIERldGFsaGVzJyxcbiAgICAgICAgICAgIHNlY29uZGFyeUFjdGlvblRleHQ6IHRoaXMuc2Vjb25kYXJ5QWN0aW9uVGV4dCB8fCAnQXZhbGlhciBTZXJ2acOnbycsXG4gICAgICAgICAgfTtcblxuICAgICAgICAvLyBjYXNlICdjYW5jZWxhZG8nOlxuICAgICAgICAvLyAgIHJldHVybiB7XG4gICAgICAgIC8vICAgICB0aXRsZTogdGhpcy5jdXN0b21UaXRsZSB8fCAnU2VydmnDp28gQ2FuY2VsYWRvJyxcbiAgICAgICAgLy8gICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAvLyAgICAgICB0aGlzLmN1c3RvbURlc2NyaXB0aW9uIHx8XG4gICAgICAgIC8vICAgICAgICdPIHNlcnZpw6dvIGZvaSBjYW5jZWxhZG8gcGVsbyBwcmVzdGFkb3IuIFZvY8OqIHBvZGUgYnVzY2FyIG91dHJvcyBwcm9maXNzaW9uYWlzIGRpc3BvbsOtdmVpcy4nLFxuICAgICAgICAvLyAgICAgaWNvbjogJ+KdjCcsXG4gICAgICAgIC8vICAgICBpY29uQ29sb3I6ICd0ZXh0LXJlZC01MDAnLFxuICAgICAgICAvLyAgICAgYmdDb2xvcjogJ2JnLXJlZC0xMDAnLFxuICAgICAgICAvLyAgICAgcHJpbWFyeUFjdGlvblRleHQ6IHRoaXMucHJpbWFyeUFjdGlvblRleHQgfHwgJ0J1c2NhciBQcm9maXNzaW9uYWlzJyxcbiAgICAgICAgLy8gICAgIHNlY29uZGFyeUFjdGlvblRleHQ6IHRoaXMuc2Vjb25kYXJ5QWN0aW9uVGV4dCB8fCAnVm9sdGFyIGFvIEluw61jaW8nLFxuICAgICAgICAvLyAgIH07XG5cbiAgICAgICAgY2FzZSAnc2VtIHNlcnZpY29zJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRoaXMuY3VzdG9tVGl0bGUgfHwgJ1NlbSBzZXJ2acOnbycsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgdGhpcy5jdXN0b21EZXNjcmlwdGlvbiB8fFxuICAgICAgICAgICAgICAnTsOjbyBow6Egc2VydmnDp29zIGRpc3BvbsOtdmVpcyBhcXVpLicsXG4gICAgICAgICAgICBpY29uOiAn8J+ThCcsXG4gICAgICAgICAgICAvLyBpY29uQ29sb3I6ICd0ZXh0LXllbGxvdy01MDAnLFxuICAgICAgICAgICAgLy8gYmdDb2xvcjogJ2JnLXllbGxvdy0xMDAnLFxuICAgICAgICAgICAgaWNvbkNvbG9yOiAndGV4dC1ncmF5LTUwMCcsXG4gICAgICAgICAgICBiZ0NvbG9yOiAnYmctZ3JheS0xMDAnLFxuICAgICAgICAgICAgcHJpbWFyeUFjdGlvblRleHQ6IHRoaXMucHJpbWFyeUFjdGlvblRleHQgfHwgJ1Byb2N1cmFyIHNlcnZpw6dvcycsXG4gICAgICAgICAgICAvLyBzZWNvbmRhcnlBY3Rpb25UZXh0OiB0aGlzLnNlY29uZGFyeUFjdGlvblRleHQgfHwgJ01ldXMgQW7Dum5jaW9zJyxcbiAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdpbmRpc3Bvbml2ZWwnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy5jdXN0b21UaXRsZSB8fCAnUHJvcG9zdGEgSW5kaXNwb27DrXZlbCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgdGhpcy5jdXN0b21EZXNjcmlwdGlvbiB8fFxuICAgICAgICAgICAgICAnRXN0YSBwcm9wb3N0YSBuw6NvIGVzdMOhIG1haXMgZGlzcG9uw612ZWwgcGFyYSB2aXN1YWxpemHDp8Ojby4nLFxuICAgICAgICAgICAgaWNvbjogJ/Cfk4QnLFxuICAgICAgICAgICAgLy8gaWNvbkNvbG9yOiAndGV4dC15ZWxsb3ctNTAwJyxcbiAgICAgICAgICAgIC8vIGJnQ29sb3I6ICdiZy15ZWxsb3ctMTAwJyxcbiAgICAgICAgICAgIGljb25Db2xvcjogJ3RleHQtZ3JheS01MDAnLFxuICAgICAgICAgICAgYmdDb2xvcjogJ2JnLWdyYXktMTAwJyxcbiAgICAgICAgICAgIHByaW1hcnlBY3Rpb25UZXh0OiB0aGlzLnByaW1hcnlBY3Rpb25UZXh0IHx8ICdWZXIgT3V0cmFzIFByb3Bvc3RhcycsXG4gICAgICAgICAgICAvLyBzZWNvbmRhcnlBY3Rpb25UZXh0OiB0aGlzLnNlY29uZGFyeUFjdGlvblRleHQgfHwgJ01ldXMgQW7Dum5jaW9zJyxcbiAgICAgICAgICB9O1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdENvbmZpZygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldERlZmF1bHRDb25maWcoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdENvbmZpZygpOiBFbXB0eVN0YXRlQ29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHRoaXMuY3VzdG9tVGl0bGUgfHwgJ05lbmh1bWEgUHJvcG9zdGEnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIHRoaXMuY3VzdG9tRGVzY3JpcHRpb24gfHwgJ1ZvY8OqIGFpbmRhIG7Do28gcG9zc3VpIG5lZ29jaWHDp8O1ZXMuJyxcbiAgICAgIGljb246ICfwn5OEJyxcbiAgICAgIGljb25Db2xvcjogJ3RleHQtZ3JheS01MDAnLFxuICAgICAgYmdDb2xvcjogJ2JnLWdyYXktMTAwJyxcbiAgICAgIHByaW1hcnlBY3Rpb25UZXh0OiB0aGlzLnByaW1hcnlBY3Rpb25UZXh0IHx8ICdBbsO6bmNpYXIgR3LDoXRpcycsXG4gICAgICBzZWNvbmRhcnlBY3Rpb25UZXh0OiB0aGlzLnNlY29uZGFyeUFjdGlvblRleHQsXG4gICAgfTtcbiAgfVxuXG4gIC8vIE3DqXRvZG8gcGFyYSBkZXRlcm1pbmFyIHNlIGRldmUgbW9zdHJhciBvIGNvbXBvbmVudGVcbiAgc2hvdWxkU2hvd0VtcHR5U3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY2FyZC5sZW5ndGggPT09IDAgfHxcbiAgICAgIFsnZmluYWxpemFkbycsICdjYW5jZWxhZG8nLCAnaW5kaXNwb27DrXZlbCcsICdpbmRpc3Bvbml2ZWwnXS5pbmNsdWRlcyhcbiAgICAgICAgdGhpcy5zdGF0dXNQZWRpZG8/LnRvTG93ZXJDYXNlKClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgb25QcmltYXJ5QWN0aW9uKCkge1xuICAgIHRoaXMucHJpbWFyeUFjdGlvbi5lbWl0KCk7XG4gIH1cblxuICBvblNlY29uZGFyeUFjdGlvbigpIHtcbiAgICB0aGlzLnNlY29uZGFyeUFjdGlvbi5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJzaG91bGRTaG93RW1wdHlTdGF0ZSgpXCIgY2xhc3M9XCJlbXB0eS1zdGF0ZS1jb250YWluZXJcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZW1wdHktc3RhdGUtY2FyZCBtYXgtdy1tZCBteC1hdXRvIGJnLXdoaXRlIHNoYWRvdy14bCByb3VuZGVkLTN4bCBwLTggYm9yZGVyIGJvcmRlci1ncmF5LTEwMFwiXG4gID5cbiAgICA8IS0tIMONY29uZSBkaW7Dom1pY28gLS0+XG4gICAgPGRpdiBjbGFzcz1cImVtcHR5LXN0YXRlLWljb24gbWItNiBmbGV4IGp1c3RpZnktY2VudGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmVcIj5cbiAgICAgICAgPCEtLSDDjWNvbmUgcHJpbmNpcGFsIC0tPlxuICAgICAgICA8ZGl2IFtjbGFzc109XCJlbXB0eVN0YXRlQ29uZmlnLmljb25Db2xvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LTZ4bFwiPlxuICAgICAgICAgICAge3sgZW1wdHlTdGF0ZUNvbmZpZy5pY29uIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQmFja2dyb3VuZCBkZWNvcmF0aXZvIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgLXotMTAgaW5zZXQtMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzc109XCJlbXB0eVN0YXRlQ29uZmlnLmJnQ29sb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJ3LTMyIGgtMzIgcm91bmRlZC1mdWxsIG9wYWNpdHktNTBcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQ29udGXDumRvIGRhIG1lbnNhZ2VtIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZS1jb250ZW50IHRleHQtY2VudGVyIHNwYWNlLXktNFwiPlxuICAgICAgPCEtLSBUw610dWxvIC0tPlxuICAgICAgPGgzIGNsYXNzPVwidGV4dC0yeGwgZm9udC1ib2xkIHRleHQtZ3JheS05MDAgbWItMlwiPlxuICAgICAgICB7eyBlbXB0eVN0YXRlQ29uZmlnLnRpdGxlIH19XG4gICAgICA8L2gzPlxuXG4gICAgICA8IS0tIERlc2NyacOnw6NvIC0tPlxuICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWdyYXktNjAwIHRleHQtbGcgbGVhZGluZy1yZWxheGVkIHB4LTRcIj5cbiAgICAgICAge3sgZW1wdHlTdGF0ZUNvbmZpZy5kZXNjcmlwdGlvbiB9fVxuICAgICAgPC9wPlxuXG4gICAgICA8IS0tIEluZm9ybWHDp8O1ZXMgYWRpY2lvbmFpcyBiYXNlYWRhcyBubyBzdGF0dXMgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwic3RhdHVzUGVkaWRvID09PSAnZmluYWxpemFkbydcIiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGJnLWdyZWVuLTUwIHRleHQtZ3JlZW4tNzAwIHB4LTQgcHktMiByb3VuZGVkLWZ1bGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtY2hlY2stY2lyY2xlXCI+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj5TZXJ2acOnbyBhdmFsaWFkbyBlIGZpbmFsaXphZG88L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJzdGF0dXNQZWRpZG8gPT09ICdjYW5jZWxhZG8nXCIgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBiZy1yZWQtNTAgdGV4dC1yZWQtNzAwIHB4LTQgcHktMiByb3VuZGVkLWZ1bGxcIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZXhjbGFtYXRpb24tY2lyY2xlXCI+PC9pPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1tZWRpdW1cIj5DYW5jZWxhZG8gcGVsbyBwcmVzdGFkb3IgZG8gc2VydmnDp288L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEHDp8O1ZXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cIm10LTggZmxleCBmbGV4LWNvbCBzbTpmbGV4LXJvdyBnYXAtNCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPCEtLSBBw6fDo28gUHJpbcOhcmlhIC0tPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwib25QcmltYXJ5QWN0aW9uKClcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ2JnLWdyZWVuLTYwMCBob3ZlcjpiZy1ncmVlbi03MDAnOiBzdGF0dXNQZWRpZG8gPT09ICdmaW5hbGl6YWRvJyxcbiAgICAgICAgICAnYmctcmVkLTYwMCBob3ZlcjpiZy1yZWQtNzAwJzogc3RhdHVzUGVkaWRvID09PSAnY2FuY2VsYWRvJyxcbiAgICAgICAgICAnYmctYmx1ZS02MDAgJzpcbiAgICAgICAgICAgIHN0YXR1c1BlZGlkbyA9PT0gJ2luZGlzcG9uw612ZWwnIHx8IHN0YXR1c1BlZGlkbyA9PT0gJ2luZGlzcG9uaXZlbCcsXG4gICAgICAgICAgJ2JnLXByaW1hcnktNjAwIGhvdmVyOmJnLXByaW1hcnktNzAwJzogY2FyZC5sZW5ndGggPT09IDBcbiAgICAgICAgfVwiXG4gICAgICAgIGNsYXNzPVwiY29sLTEyIGJ0biBidG4tcHJpbWFyeVwiXG4gICAgICA+XG4gICAgICAgIHt7IGVtcHR5U3RhdGVDb25maWcucHJpbWFyeUFjdGlvblRleHQgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8IS0tIEHDp8OjbyBTZWN1bmTDoXJpYSAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJlbXB0eVN0YXRlQ29uZmlnLnNlY29uZGFyeUFjdGlvblRleHRcIlxuICAgICAgICAoY2xpY2spPVwib25TZWNvbmRhcnlBY3Rpb24oKVwiXG4gICAgICAgIGNsYXNzPVwiY29sLTEyIGJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCJcbiAgICAgID5cbiAgICAgICAge3sgZW1wdHlTdGF0ZUNvbmZpZy5zZWNvbmRhcnlBY3Rpb25UZXh0IH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTGluayBkZSBhanVkYSAob3BjaW9uYWwpIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJzdGF0dXNQZWRpZG8gPT09ICdjYW5jZWxhZG8nXCIgY2xhc3M9XCJtdC02IHRleHQtY2VudGVyXCI+XG4gICAgICA8YVxuICAgICAgICBocmVmPVwiI1wiXG4gICAgICAgIGNsYXNzPVwidGV4dC1zbSB0ZXh0LWJsdWUtNjAwIGhvdmVyOnRleHQtYmx1ZS04MDAgaG92ZXI6dW5kZXJsaW5lXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcXVlc3Rpb24tY2lyY2xlIG1yLTJcIj48L2k+XG4gICAgICAgIFByZWNpc2EgZGUgYWp1ZGE/IEVudHJlIGVtIGNvbnRhdG8gY29tIG8gc3Vwb3J0ZVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFsbGJhY2stbWVzc2FnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWR1LWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZhbGxiYWNrLW1lc3NhZ2UvZmFsbGJhY2stbWVzc2FnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWR1LWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2ZhbGxiYWNrLW1lc3NhZ2UvZmFsbGJhY2stbWVzc2FnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFpQnZFLE1BQU0sT0FBTyx3QkFBd0I7SUFMckM7UUFNVyxTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBSzFCLFlBQU8sR0FBYSxLQUFLLENBQUM7UUFFekIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3pDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQWdIdEQ7SUE5R0MsSUFBSSxnQkFBZ0I7UUFDbEIsc0JBQXNCO1FBQ3RCLGdDQUFnQztRQUNoQyxhQUFhO1FBQ2IsaUNBQWlDO1FBQ2pDLG1CQUFtQjtRQUNuQixxRUFBcUU7UUFDckUsa0JBQWtCO1FBQ2xCLGtDQUFrQztRQUNsQyw4QkFBOEI7UUFDOUIsc0VBQXNFO1FBQ3RFLHFEQUFxRDtRQUNyRCxPQUFPO1FBQ1AsSUFBSTtRQUVKLHlCQUF5QjtRQUN6QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsUUFBUSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUN2QyxLQUFLLFlBQVk7b0JBQ2YsT0FBTzt3QkFDTCxLQUFLLEVBQUUs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QXBCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW50ZXJmYWNlIEVtcHR5U3RhdGVDb25maWcge1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGljb25Db2xvcjogc3RyaW5nO1xuICBiZ0NvbG9yOiBzdHJpbmc7XG4gIHByaW1hcnlBY3Rpb25UZXh0Pzogc3RyaW5nO1xuICBzZWNvbmRhcnlBY3Rpb25UZXh0Pzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItZmFsbGJhY2stbWVzc2FnZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mYWxsYmFjay1tZXNzYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmFsbGJhY2stbWVzc2FnZS5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZhbGxiYWNrTWVzc2FnZUNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNhcmQ6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHN0YXR1c1BlZGlkbzogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGN1c3RvbVRpdGxlPzogc3RyaW5nO1xuICBASW5wdXQoKSBjdXN0b21EZXNjcmlwdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgcHJpbWFyeUFjdGlvblRleHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlY29uZGFyeUFjdGlvblRleHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZGVCdG4/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHByaW1hcnlBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzZWNvbmRhcnlBY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgZ2V0IGVtcHR5U3RhdGVDb25maWcoKTogRW1wdHlTdGF0ZUNvbmZpZyB7XG4gICAgLy8gU2UgbsOjbyBow6EgcHJvcG9zdGFzXG4gICAgLy8gaWYgKHRoaXMuY2FyZC5sZW5ndGggPT09IDApIHtcbiAgICAvLyAgIHJldHVybiB7XG4gICAgLy8gICAgIHRpdGxlOiAnTmVuaHVtYSBQcm9wb3N0YScsXG4gICAgLy8gICAgIGRlc2NyaXB0aW9uOlxuICAgIC8vICAgICAgICdWb2PDqiBhaW5kYSBuw6NvIHBvc3N1aSBuZWdvY2lhw6fDtWVzIG91IHByb3Bvc3RhcyByZWNlYmlkYXMuJyxcbiAgICAvLyAgICAgaWNvbjogJ/Cfk4QnLFxuICAgIC8vICAgICBpY29uQ29sb3I6ICd0ZXh0LWdyYXktNTAwJyxcbiAgICAvLyAgICAgYmdDb2xvcjogJ2JnLWdyYXktMTAwJyxcbiAgICAvLyAgICAgcHJpbWFyeUFjdGlvblRleHQ6IHRoaXMucHJpbWFyeUFjdGlvblRleHQgfHwgJ0Fuw7puY2lhciBHcsOhdGlzJyxcbiAgICAvLyAgICAgc2Vjb25kYXJ5QWN0aW9uVGV4dDogdGhpcy5zZWNvbmRhcnlBY3Rpb25UZXh0LFxuICAgIC8vICAgfTtcbiAgICAvLyB9XG5cbiAgICAvLyBTZSBow6Egc3RhdHVzIGRlIHBlZGlkb1xuICAgIGlmICh0aGlzLnN0YXR1c1BlZGlkbykge1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXR1c1BlZGlkby50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIGNhc2UgJ2ZpbmFsaXphZG8nOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy5jdXN0b21UaXRsZSB8fCAnU2VydmnDp28gQ29uY2x1w61kbyEg8J+OiScsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgdGhpcy5jdXN0b21EZXNjcmlwdGlvbiB8fFxuICAgICAgICAgICAgICAnTyBzZXJ2acOnbyBmb2kgZmluYWxpemFkbyBjb20gc3VjZXNzby4gQWdyYWRlY2Vtb3MgcGVsYSBjb25maWFuw6dhIScsXG4gICAgICAgICAgICBpY29uOiAn4pyFJyxcbiAgICAgICAgICAgIGljb25Db2xvcjogJ3RleHQtZ3JlZW4tNTAwJyxcbiAgICAgICAgICAgIGJnQ29sb3I6ICdiZy1ncmVlbi0xMDAnLFxuICAgICAgICAgICAgcHJpbWFyeUFjdGlvblRleHQ6IHRoaXMucHJpbWFyeUFjdGlvblRleHQgfHwgJ1ZlciBEZXRhbGhlcycsXG4gICAgICAgICAgICBzZWNvbmRhcnlBY3Rpb25UZXh0OiB0aGlzLnNlY29uZGFyeUFjdGlvblRleHQgfHwgJ0F2YWxpYXIgU2VydmnDp28nLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgLy8gY2FzZSAnY2FuY2VsYWRvJzpcbiAgICAgICAgLy8gICByZXR1cm4ge1xuICAgICAgICAvLyAgICAgdGl0bGU6IHRoaXMuY3VzdG9tVGl0bGUgfHwgJ1NlcnZpw6dvIENhbmNlbGFkbycsXG4gICAgICAgIC8vICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgLy8gICAgICAgdGhpcy5jdXN0b21EZXNjcmlwdGlvbiB8fFxuICAgICAgICAvLyAgICAgICAnTyBzZXJ2acOnbyBmb2kgY2FuY2VsYWRvIHBlbG8gcHJlc3RhZG9yLiBWb2PDqiBwb2RlIGJ1c2NhciBvdXRyb3MgcHJvZmlzc2lvbmFpcyBkaXNwb27DrXZlaXMuJyxcbiAgICAgICAgLy8gICAgIGljb246ICfinYwnLFxuICAgICAgICAvLyAgICAgaWNvbkNvbG9yOiAndGV4dC1yZWQtNTAwJyxcbiAgICAgICAgLy8gICAgIGJnQ29sb3I6ICdiZy1yZWQtMTAwJyxcbiAgICAgICAgLy8gICAgIHByaW1hcnlBY3Rpb25UZXh0OiB0aGlzLnByaW1hcnlBY3Rpb25UZXh0IHx8ICdCdXNjYXIgUHJvZmlzc2lvbmFpcycsXG4gICAgICAgIC8vICAgICBzZWNvbmRhcnlBY3Rpb25UZXh0OiB0aGlzLnNlY29uZGFyeUFjdGlvblRleHQgfHwgJ1ZvbHRhciBhbyBJbsOtY2lvJyxcbiAgICAgICAgLy8gICB9O1xuXG4gICAgICAgIGNhc2UgJ3NlbSBzZXJ2aWNvcyc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLmN1c3RvbVRpdGxlIHx8ICdTZW0gc2VydmnDp28nLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIHRoaXMuY3VzdG9tRGVzY3JpcHRpb24gfHwgJ07Do28gaMOhIHNlcnZpw6dvcyBkaXNwb27DrXZlaXMgYXF1aS4nLFxuICAgICAgICAgICAgaWNvbjogJ/Cfk4QnLFxuICAgICAgICAgICAgLy8gaWNvbkNvbG9yOiAndGV4dC15ZWxsb3ctNTAwJyxcbiAgICAgICAgICAgIC8vIGJnQ29sb3I6ICdiZy15ZWxsb3ctMTAwJyxcbiAgICAgICAgICAgIGljb25Db2xvcjogJ3RleHQtZ3JheS01MDAnLFxuICAgICAgICAgICAgYmdDb2xvcjogJ2JnLWdyYXktMTAwJyxcbiAgICAgICAgICAgIHByaW1hcnlBY3Rpb25UZXh0OiB0aGlzLnByaW1hcnlBY3Rpb25UZXh0IHx8ICdQcm9jdXJhciBzZXJ2acOnb3MnLFxuICAgICAgICAgICAgLy8gc2Vjb25kYXJ5QWN0aW9uVGV4dDogdGhpcy5zZWNvbmRhcnlBY3Rpb25UZXh0IHx8ICdNZXVzIEFuw7puY2lvcycsXG4gICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnaW5kaXNwb25pdmVsJzpcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdGl0bGU6IHRoaXMuY3VzdG9tVGl0bGUgfHwgJ1Byb3Bvc3RhIEluZGlzcG9uw612ZWwnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIHRoaXMuY3VzdG9tRGVzY3JpcHRpb24gfHxcbiAgICAgICAgICAgICAgJ0VzdGEgcHJvcG9zdGEgbsOjbyBlc3TDoSBtYWlzIGRpc3BvbsOtdmVsIHBhcmEgdmlzdWFsaXphw6fDo28uJyxcbiAgICAgICAgICAgIGljb246ICfwn5OEJyxcbiAgICAgICAgICAgIC8vIGljb25Db2xvcjogJ3RleHQteWVsbG93LTUwMCcsXG4gICAgICAgICAgICAvLyBiZ0NvbG9yOiAnYmcteWVsbG93LTEwMCcsXG4gICAgICAgICAgICBpY29uQ29sb3I6ICd0ZXh0LWdyYXktNTAwJyxcbiAgICAgICAgICAgIGJnQ29sb3I6ICdiZy1ncmF5LTEwMCcsXG4gICAgICAgICAgICBwcmltYXJ5QWN0aW9uVGV4dDogdGhpcy5wcmltYXJ5QWN0aW9uVGV4dCB8fCAnVmVyIE91dHJhcyBQcm9wb3N0YXMnLFxuICAgICAgICAgICAgLy8gc2Vjb25kYXJ5QWN0aW9uVGV4dDogdGhpcy5zZWNvbmRhcnlBY3Rpb25UZXh0IHx8ICdNZXVzIEFuw7puY2lvcycsXG4gICAgICAgICAgfTtcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB0aGlzLmdldERlZmF1bHRDb25maWcoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5nZXREZWZhdWx0Q29uZmlnKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRDb25maWcoKTogRW1wdHlTdGF0ZUNvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0aGlzLmN1c3RvbVRpdGxlIHx8ICdOZW5odW1hIFByb3Bvc3RhJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICB0aGlzLmN1c3RvbURlc2NyaXB0aW9uIHx8ICdWb2PDqiBhaW5kYSBuw6NvIHBvc3N1aSBuZWdvY2lhw6fDtWVzLicsXG4gICAgICBpY29uOiAn8J+ThCcsXG4gICAgICBpY29uQ29sb3I6ICd0ZXh0LWdyYXktNTAwJyxcbiAgICAgIGJnQ29sb3I6ICdiZy1ncmF5LTEwMCcsXG4gICAgICBwcmltYXJ5QWN0aW9uVGV4dDogdGhpcy5wcmltYXJ5QWN0aW9uVGV4dCB8fCAnQW7Dum5jaWFyIEdyw6F0aXMnLFxuICAgICAgc2Vjb25kYXJ5QWN0aW9uVGV4dDogdGhpcy5zZWNvbmRhcnlBY3Rpb25UZXh0LFxuICAgIH07XG4gIH1cblxuICAvLyBNw6l0b2RvIHBhcmEgZGV0ZXJtaW5hciBzZSBkZXZlIG1vc3RyYXIgbyBjb21wb25lbnRlXG4gIHNob3VsZFNob3dFbXB0eVN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmNhcmQubGVuZ3RoID09PSAwIHx8XG4gICAgICBbJ2ZpbmFsaXphZG8nLCAnY2FuY2VsYWRvJywgJ2luZGlzcG9uw612ZWwnLCAnaW5kaXNwb25pdmVsJ10uaW5jbHVkZXMoXG4gICAgICAgIHRoaXMuc3RhdHVzUGVkaWRvPy50b0xvd2VyQ2FzZSgpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG9uUHJpbWFyeUFjdGlvbigpIHtcbiAgICB0aGlzLnByaW1hcnlBY3Rpb24uZW1pdCgpO1xuICB9XG5cbiAgb25TZWNvbmRhcnlBY3Rpb24oKSB7XG4gICAgdGhpcy5zZWNvbmRhcnlBY3Rpb24uZW1pdCgpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwic2hvdWxkU2hvd0VtcHR5U3RhdGUoKVwiIGNsYXNzPVwiZW1wdHktc3RhdGUtY29udGFpbmVyXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImVtcHR5LXN0YXRlLWNhcmQgbWF4LXctbWQgbXgtYXV0byBiZy13aGl0ZSBzaGFkb3cteGwgcm91bmRlZC0zeGwgcC04IGJvcmRlciBib3JkZXItZ3JheS0xMDBcIlxuICA+XG4gICAgPCEtLSDDjWNvbmUgZGluw6JtaWNvIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1zdGF0ZS1pY29uIG1iLTYgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctMzIgaC0zMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IFtjbGFzc109XCJlbXB0eVN0YXRlQ29uZmlnLmljb25Db2xvclwiIGNsYXNzPVwiei0xMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhsIGxlYWRpbmctbm9uZVwiIHN0eWxlPVwiZm9udC1zaXplOiA0cmVtXCI+XG4gICAgICAgICAgICB7eyBlbXB0eVN0YXRlQ29uZmlnLmljb24gfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFic29sdXRlIGluc2V0LTAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3NdPVwiZW1wdHlTdGF0ZUNvbmZpZy5iZ0NvbG9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsIGgtZnVsbCByb3VuZGVkLWZ1bGwgb3BhY2l0eS01MCBmbGV4LXNocmluay0wXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnRlw7pkbyBkYSBtZW5zYWdlbSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHktc3RhdGUtY29udGVudCB0ZXh0LWNlbnRlciBzcGFjZS15LTRcIj5cbiAgICAgIDwhLS0gVMOtdHVsbyAtLT5cbiAgICAgIDxoMyBjbGFzcz1cInRleHQtMnhsIGZvbnQtYm9sZCB0ZXh0LWdyYXktOTAwIG1iLTJcIj5cbiAgICAgICAge3sgZW1wdHlTdGF0ZUNvbmZpZy50aXRsZSB9fVxuICAgICAgPC9oMz5cblxuICAgICAgPCEtLSBEZXNjcmnDp8OjbyAtLT5cbiAgICAgIDxwIGNsYXNzPVwidGV4dC1ncmF5LTYwMCB0ZXh0LWxnIGxlYWRpbmctcmVsYXhlZCBweC00XCI+XG4gICAgICAgIHt7IGVtcHR5U3RhdGVDb25maWcuZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cblxuICAgICAgPCEtLSBJbmZvcm1hw6fDtWVzIGFkaWNpb25haXMgYmFzZWFkYXMgbm8gc3RhdHVzIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cInN0YXR1c1BlZGlkbyA9PT0gJ2ZpbmFsaXphZG8nXCIgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBiZy1ncmVlbi01MCB0ZXh0LWdyZWVuLTcwMCBweC00IHB5LTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZWNrLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbWVkaXVtXCI+U2VydmnDp28gYXZhbGlhZG8gZSBmaW5hbGl6YWRvPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwic3RhdHVzUGVkaWRvID09PSAnY2FuY2VsYWRvJ1wiIGNsYXNzPVwibXQtNFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgYmctcmVkLTUwIHRleHQtcmVkLTcwMCBweC00IHB5LTIgcm91bmRlZC1mdWxsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvbnQtbWVkaXVtXCI+Q2FuY2VsYWRvIHBlbG8gcHJlc3RhZG9yIGRvIHNlcnZpw6dvPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBBw6fDtWVzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJtdC04IGZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZ2FwLTQganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgIDwhLS0gQcOnw6NvIFByaW3DoXJpYSAtLT5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCJoaWRlQnRuXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uUHJpbWFyeUFjdGlvbigpXCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdiZy1ncmVlbi02MDAgaG92ZXI6YmctZ3JlZW4tNzAwJzogc3RhdHVzUGVkaWRvID09PSAnZmluYWxpemFkbycsXG4gICAgICAgICAgJ2JnLXJlZC02MDAgaG92ZXI6YmctcmVkLTcwMCc6IHN0YXR1c1BlZGlkbyA9PT0gJ2NhbmNlbGFkbycsXG4gICAgICAgICAgJ2JnLWJsdWUtNjAwICc6XG4gICAgICAgICAgICBzdGF0dXNQZWRpZG8gPT09ICdpbmRpc3BvbsOtdmVsJyB8fCBzdGF0dXNQZWRpZG8gPT09ICdpbmRpc3Bvbml2ZWwnLFxuICAgICAgICAgICdiZy1wcmltYXJ5LTYwMCBob3ZlcjpiZy1wcmltYXJ5LTcwMCc6IGNhcmQubGVuZ3RoID09PSAwXG4gICAgICAgIH1cIlxuICAgICAgICBjbGFzcz1cImNvbC0xMiBidG4gYnRuLXByaW1hcnlcIlxuICAgICAgPlxuICAgICAgICB7eyBlbXB0eVN0YXRlQ29uZmlnLnByaW1hcnlBY3Rpb25UZXh0IH19XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPCEtLSBBw6fDo28gU2VjdW5kw6FyaWEgLS0+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiZW1wdHlTdGF0ZUNvbmZpZy5zZWNvbmRhcnlBY3Rpb25UZXh0XCJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2Vjb25kYXJ5QWN0aW9uKClcIlxuICAgICAgICBjbGFzcz1cImNvbC0xMiBidG4gYnRuLW91dGxpbmUtcHJpbWFyeVwiXG4gICAgICA+XG4gICAgICAgIHt7IGVtcHR5U3RhdGVDb25maWcuc2Vjb25kYXJ5QWN0aW9uVGV4dCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIExpbmsgZGUgYWp1ZGEgKG9wY2lvbmFsKSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwic3RhdHVzUGVkaWRvID09PSAnY2FuY2VsYWRvJ1wiIGNsYXNzPVwibXQtNiB0ZXh0LWNlbnRlclwiPlxuICAgICAgPGFcbiAgICAgICAgaHJlZj1cIiNcIlxuICAgICAgICBjbGFzcz1cInRleHQtc20gdGV4dC1ibHVlLTYwMCBob3Zlcjp0ZXh0LWJsdWUtODAwIGhvdmVyOnVuZGVybGluZVwiXG4gICAgICA+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXF1ZXN0aW9uLWNpcmNsZSBtci0yXCI+PC9pPlxuICAgICAgICBQcmVjaXNhIGRlIGFqdWRhPyBFbnRyZSBlbSBjb250YXRvIGNvbSBvIHN1cG9ydGVcbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -172,6 +172,7 @@ class FallbackMessageComponent {
|
|
|
172
172
|
constructor() {
|
|
173
173
|
this.card = [];
|
|
174
174
|
this.statusPedido = '';
|
|
175
|
+
this.hideBtn = false;
|
|
175
176
|
this.primaryAction = new EventEmitter();
|
|
176
177
|
this.secondaryAction = new EventEmitter();
|
|
177
178
|
}
|
|
@@ -218,8 +219,7 @@ class FallbackMessageComponent {
|
|
|
218
219
|
case 'sem servicos':
|
|
219
220
|
return {
|
|
220
221
|
title: this.customTitle || 'Sem serviço',
|
|
221
|
-
description: this.customDescription ||
|
|
222
|
-
'Não há serviços disponíveis aqui.',
|
|
222
|
+
description: this.customDescription || 'Não há serviços disponíveis aqui.',
|
|
223
223
|
icon: '📄',
|
|
224
224
|
// iconColor: 'text-yellow-500',
|
|
225
225
|
// bgColor: 'bg-yellow-100',
|
|
@@ -272,10 +272,10 @@ class FallbackMessageComponent {
|
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
274
|
FallbackMessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FallbackMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
275
|
-
FallbackMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FallbackMessageComponent, selector: "lib-fallback-message", inputs: { card: "card", statusPedido: "statusPedido", customTitle: "customTitle", customDescription: "customDescription", primaryActionText: "primaryActionText", secondaryActionText: "secondaryActionText" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative\">\n
|
|
275
|
+
FallbackMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FallbackMessageComponent, selector: "lib-fallback-message", inputs: { card: "card", statusPedido: "statusPedido", customTitle: "customTitle", customDescription: "customDescription", primaryActionText: "primaryActionText", secondaryActionText: "secondaryActionText", hideBtn: "hideBtn" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative w-32 h-32 flex items-center justify-center\">\n <div [class]=\"emptyStateConfig.iconColor\" class=\"z-10\">\n <div class=\"text-xl leading-none\" style=\"font-size: 4rem\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-full h-full rounded-full opacity-50 flex-shrink-0\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conte\u00FAdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- T\u00EDtulo -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descri\u00E7\u00E3o -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informa\u00E7\u00F5es adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Servi\u00E7o avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do servi\u00E7o</span>\n </div>\n </div>\n </div>\n\n <!-- A\u00E7\u00F5es -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- A\u00E7\u00E3o Prim\u00E1ria -->\n <button\n *ngIf=\"hideBtn\"\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indispon\u00EDvel' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- A\u00E7\u00E3o Secund\u00E1ria -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n", styles: [".empty-state-card{animation:fadeInUp .5s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.empty-state-icon{animation:bounceIn .6s ease-out}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1)}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
276
276
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FallbackMessageComponent, decorators: [{
|
|
277
277
|
type: Component,
|
|
278
|
-
args: [{ selector: 'lib-fallback-message', template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative\">\n
|
|
278
|
+
args: [{ selector: 'lib-fallback-message', template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative w-32 h-32 flex items-center justify-center\">\n <div [class]=\"emptyStateConfig.iconColor\" class=\"z-10\">\n <div class=\"text-xl leading-none\" style=\"font-size: 4rem\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-full h-full rounded-full opacity-50 flex-shrink-0\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conte\u00FAdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- T\u00EDtulo -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descri\u00E7\u00E3o -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informa\u00E7\u00F5es adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Servi\u00E7o avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do servi\u00E7o</span>\n </div>\n </div>\n </div>\n\n <!-- A\u00E7\u00F5es -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- A\u00E7\u00E3o Prim\u00E1ria -->\n <button\n *ngIf=\"hideBtn\"\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indispon\u00EDvel' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- A\u00E7\u00E3o Secund\u00E1ria -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n", styles: [".empty-state-card{animation:fadeInUp .5s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.empty-state-icon{animation:bounceIn .6s ease-out}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1)}}\n"] }]
|
|
279
279
|
}], propDecorators: { card: [{
|
|
280
280
|
type: Input
|
|
281
281
|
}], statusPedido: [{
|
|
@@ -288,6 +288,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
288
288
|
type: Input
|
|
289
289
|
}], secondaryActionText: [{
|
|
290
290
|
type: Input
|
|
291
|
+
}], hideBtn: [{
|
|
292
|
+
type: Input
|
|
291
293
|
}], primaryAction: [{
|
|
292
294
|
type: Output
|
|
293
295
|
}], secondaryAction: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tudu-components.mjs","sources":["../../../projects/tudu-components/src/lib/tudu-components.component.ts","../../../projects/tudu-components/src/lib/components/card-layout/card-layout.component.ts","../../../projects/tudu-components/src/lib/components/card-layout/card-layout.component.html","../../../projects/tudu-components/src/lib/components/nav/nav.component.ts","../../../projects/tudu-components/src/lib/components/nav/nav.component.html","../../../projects/tudu-components/src/lib/components/fallback-message/fallback-message.component.ts","../../../projects/tudu-components/src/lib/components/fallback-message/fallback-message.component.html","../../../projects/tudu-components/src/lib/tudu-components.module.ts","../../../projects/tudu-components/src/lib/tudu-components.service.ts","../../../projects/tudu-components/src/public-api.ts","../../../projects/tudu-components/src/tudu-components.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-tudu-components',\n template: `\n <p>\n tudu-components works!sss\n </p>\n `,\n styles: [\n ]\n})\nexport class TuduComponentsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'lib-card-layout',\n templateUrl: './card-layout.component.html',\n styleUrls: ['./card-layout.component.css'],\n})\nexport class CardLayoutComponent implements OnInit {\n @Input() statusPedido: string = '';\n @Input() cardTemplateIndicator: number = 0; // 1 para serviço, 2 para candidatura\n @Input() hideHeader: boolean = false; // 1 para serviço, 2 para candidatura\n\n tags: string[] = ['Residencial', 'Urgente', 'Elétrica'];\n\n statusOptions = [\n { class: 'status-active', text: 'Ativo', icon: 'fa-circle' },\n { class: 'status-pending', text: 'Em andamento', icon: 'fa-spinner' },\n { class: 'status-completed', text: 'Concluído', icon: 'fa-check' },\n { class: 'status-cancelled', text: 'Cancelado', icon: 'fa-times' },\n ];\n\n currentStatus = this.statusOptions[0];\n private statusInterval: any;\n flowIndicator: string = '1';\n\n constructor(private route: Router) {\n this.route.events.subscribe(() => {\n if (this.route.url.includes('budgets')) {\n this.flowIndicator = 'budgets';\n console.log('asdasdadsasda', this.flowIndicator);\n }\n });\n }\n\n ngOnInit() {\n let index = 0;\n this.statusInterval = setInterval(() => {\n index = (index + 1) % this.statusOptions.length;\n this.currentStatus = this.statusOptions[index];\n }, 3000);\n\n console.log('cardTemplateIndicator', this.cardTemplateIndicator);\n }\n\n get badgeStyles(): { [key: string]: string } {\n const status = this.statusPedido?.toLowerCase();\n\n switch (status) {\n case 'finalizado':\n return { backgroundColor: '#4caf5020', color: '#4caf50' }; // verde suave\n case 'concluido':\n return { backgroundColor: '#0096881c', color: '#009688' }; // teal\n case 'cancelado':\n return { backgroundColor: '#ff52521c', color: '#ff5252' }; // vermelho claro\n case 'publicado':\n return { backgroundColor: '#0096ff1c', color: '#25a5ff' }; // azul suave\n case 'recusado':\n return { backgroundColor: '#ff52521c', color: '#ff5252' }; // vermelho claro\n case 'em negociacao':\n return { backgroundColor: '#ffab251f', color: '#ff9800' }; // laranja suave\n case 'pendente':\n return { backgroundColor: '#9a1fad1c', color: '#7e57c2' }; // roxo claro\n default:\n return { backgroundColor: '#e0e0e01c', color: '#757575' }; // cinza padrão\n }\n }\n\n ngOnDestroy() {\n if (this.statusInterval) {\n clearInterval(this.statusInterval);\n }\n }\n\n verDetalhes() {\n alert('Abrir detalhes do serviço...');\n }\n}\n","<div\n class=\"service-card rounded-xl shadow-md overflow-hidden bg-white hover:shadow-lg transition-all duration-300 relative mb-5\"\n>\n <!-- HEADER -->\n <div\n [class.force-show]=\"!hideHeader\"\n class=\"service-card-header flex items-center justify-between p-3 border-b border-gray-200\"\n >\n <div class=\"flex items-center gap-3\">\n <div class=\"icon-style\">\n <ng-content select=\"[service-icon]\"></ng-content>\n </div>\n <div class=\"flex flex-col\">\n <div class=\"flex items-center gap-3\">\n <div class=\"service-title truncate w-full\">\n <ng-content select=\"[service-title]\"></ng-content>\n </div>\n <div class=\"\">\n <ng-content select=\"[details-btn]\"></ng-content>\n </div>\n </div>\n <div\n class=\"whitespace-nowrap overflow-hidden text-ellipsis\"\n style=\"font-size: 12px; color: var(--tab-link)\"\n >\n <ng-content select=\"[service-address]\"></ng-content>\n </div>\n </div>\n </div>\n </div>\n\n <!-- BODY -->\n <div class=\"service-card-body p-4 space-y-3\">\n <div>\n <div\n class=\"flex flex-col items-start gap-3 border-b border-gray-100 pb-3 mb-3\"\n *ngIf=\"cardTemplateIndicator === 1\"\n >\n <div class=\"flex justify-between w-full pb-2\">\n <div class=\"status-badge\" [ngStyle]=\"badgeStyles\">\n <ng-content select=\"[status-badge]\"></ng-content>\n </div>\n\n <div\n class=\"text-xs text-gray-50 font-semibold\"\n style=\"\n background-color: #d3d3d32c;\n color: grey;\n border-radius: 25px;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 4px 10px;\n \"\n >\n <ng-content select=\"[order-number]\"></ng-content>\n </div>\n </div>\n\n <div class=\"flex flex-wrap gap-2 items-center\">\n <ng-content select=\"[filter-tag]\"></ng-content>\n </div>\n </div>\n\n <div class=\"fw-semibold\" *ngIf=\"statusPedido === 'finalizado'\">\n <ng-content select=\"[conclusion-date]\"></ng-content>\n </div>\n </div>\n <ng-content select=\"[info-row]\"></ng-content>\n\n <ng-content select=\"[description]\"></ng-content>\n </div>\n\n <!-- FOOTER -->\n\n <div\n class=\"service-card-footer flex justify-center items-center p-3 border-t border-gray-100 bg-gray-50 gap-1\"\n >\n <div class=\"col-6\">\n <ng-content select=\"[main-btn]\"></ng-content>\n </div>\n <div\n class=\"fw-semibold col-6\"\n style=\"display: flex; justify-content: flex-end\"\n >\n <ng-content select=\"[price]\"></ng-content>\n </div>\n </div>\n <!-- <div\n \n class=\"flex row justify-between items-center p-3 border-t border-gray-100 bg-gray-50\"\n >\n <div class=\"col-6\">\n <ng-content select=\"[main-btn]\"></ng-content>\n </div>\n <div class=\"col-6\">\n <ng-content select=\"[price]\"></ng-content>\n </div>\n </div> -->\n</div>\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'lib-nav',\n templateUrl: './nav.component.html',\n styleUrls: ['./nav.component.css'],\n})\nexport class NavComponent implements OnInit {\n @Input() changeNavColor: boolean = false;\n\n openClose: boolean = false;\n message: string = '';\n\n lastScrollPosition = 0;\n isHeaderVisible = true;\n headerHeight = 0;\n isMobile = false;\n\n hasOffer: boolean = false;\n\n constructor(private router: Router, private el: ElementRef) {}\n\n ngAfterViewInit() {\n this.checkMobile();\n\n // Obtém a altura do header-menu após a view ser inicializada\n const headerMenu = this.el.nativeElement.querySelector('[header-menu]');\n if (headerMenu) {\n this.headerHeight = headerMenu.offsetHeight;\n }\n }\n\n ngOnInit(): void {\n this.hasOffer = this.router.url.includes('offer');\n }\n\n @HostListener('window:resize')\n onResize() {\n this.checkMobile();\n }\n\n private checkMobile() {\n this.isMobile = window.innerWidth < 768; // 768px é o breakpoint padrão do Tailwind para md\n if (!this.isMobile) {\n this.isHeaderVisible = true; // Garante que fique visível em desktop\n }\n }\n public menu() {\n this.openClose = !this.openClose;\n }\n\n receiveMessage(event: string) {\n this.message = event;\n }\n\n @HostListener('window:scroll', [])\n onWindowScroll() {\n if (!this.isMobile) return;\n\n const currentScrollPosition =\n window.pageYOffset || document.documentElement.scrollTop;\n\n // Scroll DOWN - esconde o header\n if (\n currentScrollPosition > this.lastScrollPosition &&\n currentScrollPosition > 50\n ) {\n this.isHeaderVisible = false;\n }\n // Scroll UP - mostra o header\n else if (currentScrollPosition < this.lastScrollPosition) {\n this.isHeaderVisible = true;\n }\n\n this.lastScrollPosition = currentScrollPosition;\n }\n}\n","<!-- Overlay -->\n<div\n *ngIf=\"openClose\"\n (click)=\"openClose = false\"\n class=\"fixed inset-0 bg-black bg-opacity-40 z-40 md:hidden\"\n></div>\n\n<!-- Navbar Container -->\n<div\n class=\"fixed top-0 left-0 right-0 z-50 shadow-none transition-transform duration-300 ease-out \"\n [class.-translate-y-full]=\"!isHeaderVisible\"\n [style.backgroundColor]=\"\n changeNavColor ? 'var(--primary)' : 'var(--primary)'\n \"\n>\n <!-- Main Navbar -->\n <div class=\"w-full\">\n <div class=\"mx-auto px-2 h-16 flex items-center justify-between\">\n <!-- Left Content -->\n <div class=\"flex-1 flex justify-start\">\n <ng-content select=\"[left-content]\"></ng-content>\n </div>\n\n <!-- Center Content -->\n <div class=\"flex-1 flex justify-center\">\n <ng-content select=\"[central-content]\"></ng-content>\n </div>\n\n <!-- Right Content -->\n <div class=\"flex-1\" style=\"display: flex; justify-content: flex-end\">\n <ng-content select=\"[right-content]\"></ng-content>\n </div>\n </div>\n </div>\n\n <!-- Header Menu (Submenu) -->\n <div header-menu class=\"w-full hr-nav\">\n <ng-content select=\"[header-menu]\"></ng-content>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\ninterface EmptyStateConfig {\n title: string;\n description: string;\n icon: string;\n iconColor: string;\n bgColor: string;\n primaryActionText?: string;\n secondaryActionText?: string;\n}\n\n@Component({\n selector: 'lib-fallback-message',\n templateUrl: './fallback-message.component.html',\n styleUrls: ['./fallback-message.component.css'],\n})\nexport class FallbackMessageComponent {\n @Input() card: any[] = [];\n @Input() statusPedido: string = '';\n @Input() customTitle?: string;\n @Input() customDescription?: string;\n @Input() primaryActionText?: string;\n @Input() secondaryActionText?: string;\n\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n\n get emptyStateConfig(): EmptyStateConfig {\n // Se não há propostas\n // if (this.card.length === 0) {\n // return {\n // title: 'Nenhuma Proposta',\n // description:\n // 'Você ainda não possui negociações ou propostas recebidas.',\n // icon: '📄',\n // iconColor: 'text-gray-500',\n // bgColor: 'bg-gray-100',\n // primaryActionText: this.primaryActionText || 'Anúnciar Grátis',\n // secondaryActionText: this.secondaryActionText,\n // };\n // }\n\n // Se há status de pedido\n if (this.statusPedido) {\n switch (this.statusPedido.toLowerCase()) {\n case 'finalizado':\n return {\n title: this.customTitle || 'Serviço Concluído! 🎉',\n description:\n this.customDescription ||\n 'O serviço foi finalizado com sucesso. Agradecemos pela confiança!',\n icon: '✅',\n iconColor: 'text-green-500',\n bgColor: 'bg-green-100',\n primaryActionText: this.primaryActionText || 'Ver Detalhes',\n secondaryActionText: this.secondaryActionText || 'Avaliar Serviço',\n };\n\n // case 'cancelado':\n // return {\n // title: this.customTitle || 'Serviço Cancelado',\n // description:\n // this.customDescription ||\n // 'O serviço foi cancelado pelo prestador. Você pode buscar outros profissionais disponíveis.',\n // icon: '❌',\n // iconColor: 'text-red-500',\n // bgColor: 'bg-red-100',\n // primaryActionText: this.primaryActionText || 'Buscar Profissionais',\n // secondaryActionText: this.secondaryActionText || 'Voltar ao Início',\n // };\n\n case 'sem servicos':\n return {\n title: this.customTitle || 'Sem serviço',\n description:\n this.customDescription ||\n 'Não há serviços disponíveis aqui.',\n icon: '📄',\n // iconColor: 'text-yellow-500',\n // bgColor: 'bg-yellow-100',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Procurar serviços',\n // secondaryActionText: this.secondaryActionText || 'Meus Anúncios',\n };\n case 'indisponivel':\n return {\n title: this.customTitle || 'Proposta Indisponível',\n description:\n this.customDescription ||\n 'Esta proposta não está mais disponível para visualização.',\n icon: '📄',\n // iconColor: 'text-yellow-500',\n // bgColor: 'bg-yellow-100',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Ver Outras Propostas',\n // secondaryActionText: this.secondaryActionText || 'Meus Anúncios',\n };\n\n default:\n return this.getDefaultConfig();\n }\n }\n\n return this.getDefaultConfig();\n }\n\n private getDefaultConfig(): EmptyStateConfig {\n return {\n title: this.customTitle || 'Nenhuma Proposta',\n description:\n this.customDescription || 'Você ainda não possui negociações.',\n icon: '📄',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Anúnciar Grátis',\n secondaryActionText: this.secondaryActionText,\n };\n }\n\n // Método para determinar se deve mostrar o componente\n shouldShowEmptyState(): boolean {\n return (\n this.card.length === 0 ||\n ['finalizado', 'cancelado', 'indisponível', 'indisponivel'].includes(\n this.statusPedido?.toLowerCase()\n )\n );\n }\n\n onPrimaryAction() {\n this.primaryAction.emit();\n }\n\n onSecondaryAction() {\n this.secondaryAction.emit();\n }\n}\n","<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- Ícone dinâmico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative\">\n <!-- Ícone principal -->\n <div [class]=\"emptyStateConfig.iconColor\">\n <div class=\"text-6xl\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <!-- Background decorativo -->\n <div class=\"absolute -z-10 inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-32 h-32 rounded-full opacity-50\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conteúdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- Título -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descrição -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informações adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Serviço avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do serviço</span>\n </div>\n </div>\n </div>\n\n <!-- Ações -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- Ação Primária -->\n <button\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indisponível' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- Ação Secundária -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TuduComponentsComponent } from './tudu-components.component';\nimport { CommonModule } from '@angular/common';\nimport { CardLayoutComponent } from '../lib/components/card-layout/card-layout.component';\nimport { NavComponent } from './components/nav/nav.component';\nimport { FallbackMessageComponent } from './components/fallback-message/fallback-message.component';\n\n@NgModule({\n declarations: [TuduComponentsComponent, CardLayoutComponent, NavComponent, FallbackMessageComponent],\n imports: [CommonModule],\n exports: [TuduComponentsComponent, CardLayoutComponent, NavComponent, FallbackMessageComponent],\n})\nexport class TuduComponentsModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TuduComponentsService {\n\n constructor() { }\n}\n","/*\n * Public API Surface of tudu-components\n */\nexport * from './lib/tudu-components.component';\nexport * from './lib/tudu-components.module'; // ← Se criou este módulo\n\nexport * from './lib/components/card-layout/card-layout.component';\nexport * from './lib/components/nav/nav.component';\nexport * from './lib/components/fallback-message/fallback-message.component';\nexport * from './lib/tudu-components.service';\n// export * from './lib/card-layout.module'; // ← Ou se usou CardLayoutModule\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tudu-components.mjs","sources":["../../../projects/tudu-components/src/lib/tudu-components.component.ts","../../../projects/tudu-components/src/lib/components/card-layout/card-layout.component.ts","../../../projects/tudu-components/src/lib/components/card-layout/card-layout.component.html","../../../projects/tudu-components/src/lib/components/nav/nav.component.ts","../../../projects/tudu-components/src/lib/components/nav/nav.component.html","../../../projects/tudu-components/src/lib/components/fallback-message/fallback-message.component.ts","../../../projects/tudu-components/src/lib/components/fallback-message/fallback-message.component.html","../../../projects/tudu-components/src/lib/tudu-components.module.ts","../../../projects/tudu-components/src/lib/tudu-components.service.ts","../../../projects/tudu-components/src/public-api.ts","../../../projects/tudu-components/src/tudu-components.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-tudu-components',\n template: `\n <p>\n tudu-components works!sss\n </p>\n `,\n styles: [\n ]\n})\nexport class TuduComponentsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'lib-card-layout',\n templateUrl: './card-layout.component.html',\n styleUrls: ['./card-layout.component.css'],\n})\nexport class CardLayoutComponent implements OnInit {\n @Input() statusPedido: string = '';\n @Input() cardTemplateIndicator: number = 0; // 1 para serviço, 2 para candidatura\n @Input() hideHeader: boolean = false; // 1 para serviço, 2 para candidatura\n\n tags: string[] = ['Residencial', 'Urgente', 'Elétrica'];\n\n statusOptions = [\n { class: 'status-active', text: 'Ativo', icon: 'fa-circle' },\n { class: 'status-pending', text: 'Em andamento', icon: 'fa-spinner' },\n { class: 'status-completed', text: 'Concluído', icon: 'fa-check' },\n { class: 'status-cancelled', text: 'Cancelado', icon: 'fa-times' },\n ];\n\n currentStatus = this.statusOptions[0];\n private statusInterval: any;\n flowIndicator: string = '1';\n\n constructor(private route: Router) {\n this.route.events.subscribe(() => {\n if (this.route.url.includes('budgets')) {\n this.flowIndicator = 'budgets';\n console.log('asdasdadsasda', this.flowIndicator);\n }\n });\n }\n\n ngOnInit() {\n let index = 0;\n this.statusInterval = setInterval(() => {\n index = (index + 1) % this.statusOptions.length;\n this.currentStatus = this.statusOptions[index];\n }, 3000);\n\n console.log('cardTemplateIndicator', this.cardTemplateIndicator);\n }\n\n get badgeStyles(): { [key: string]: string } {\n const status = this.statusPedido?.toLowerCase();\n\n switch (status) {\n case 'finalizado':\n return { backgroundColor: '#4caf5020', color: '#4caf50' }; // verde suave\n case 'concluido':\n return { backgroundColor: '#0096881c', color: '#009688' }; // teal\n case 'cancelado':\n return { backgroundColor: '#ff52521c', color: '#ff5252' }; // vermelho claro\n case 'publicado':\n return { backgroundColor: '#0096ff1c', color: '#25a5ff' }; // azul suave\n case 'recusado':\n return { backgroundColor: '#ff52521c', color: '#ff5252' }; // vermelho claro\n case 'em negociacao':\n return { backgroundColor: '#ffab251f', color: '#ff9800' }; // laranja suave\n case 'pendente':\n return { backgroundColor: '#9a1fad1c', color: '#7e57c2' }; // roxo claro\n default:\n return { backgroundColor: '#e0e0e01c', color: '#757575' }; // cinza padrão\n }\n }\n\n ngOnDestroy() {\n if (this.statusInterval) {\n clearInterval(this.statusInterval);\n }\n }\n\n verDetalhes() {\n alert('Abrir detalhes do serviço...');\n }\n}\n","<div\n class=\"service-card rounded-xl shadow-md overflow-hidden bg-white hover:shadow-lg transition-all duration-300 relative mb-5\"\n>\n <!-- HEADER -->\n <div\n [class.force-show]=\"!hideHeader\"\n class=\"service-card-header flex items-center justify-between p-3 border-b border-gray-200\"\n >\n <div class=\"flex items-center gap-3\">\n <div class=\"icon-style\">\n <ng-content select=\"[service-icon]\"></ng-content>\n </div>\n <div class=\"flex flex-col\">\n <div class=\"flex items-center gap-3\">\n <div class=\"service-title truncate w-full\">\n <ng-content select=\"[service-title]\"></ng-content>\n </div>\n <div class=\"\">\n <ng-content select=\"[details-btn]\"></ng-content>\n </div>\n </div>\n <div\n class=\"whitespace-nowrap overflow-hidden text-ellipsis\"\n style=\"font-size: 12px; color: var(--tab-link)\"\n >\n <ng-content select=\"[service-address]\"></ng-content>\n </div>\n </div>\n </div>\n </div>\n\n <!-- BODY -->\n <div class=\"service-card-body p-4 space-y-3\">\n <div>\n <div\n class=\"flex flex-col items-start gap-3 border-b border-gray-100 pb-3 mb-3\"\n *ngIf=\"cardTemplateIndicator === 1\"\n >\n <div class=\"flex justify-between w-full pb-2\">\n <div class=\"status-badge\" [ngStyle]=\"badgeStyles\">\n <ng-content select=\"[status-badge]\"></ng-content>\n </div>\n\n <div\n class=\"text-xs text-gray-50 font-semibold\"\n style=\"\n background-color: #d3d3d32c;\n color: grey;\n border-radius: 25px;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 4px 10px;\n \"\n >\n <ng-content select=\"[order-number]\"></ng-content>\n </div>\n </div>\n\n <div class=\"flex flex-wrap gap-2 items-center\">\n <ng-content select=\"[filter-tag]\"></ng-content>\n </div>\n </div>\n\n <div class=\"fw-semibold\" *ngIf=\"statusPedido === 'finalizado'\">\n <ng-content select=\"[conclusion-date]\"></ng-content>\n </div>\n </div>\n <ng-content select=\"[info-row]\"></ng-content>\n\n <ng-content select=\"[description]\"></ng-content>\n </div>\n\n <!-- FOOTER -->\n\n <div\n class=\"service-card-footer flex justify-center items-center p-3 border-t border-gray-100 bg-gray-50 gap-1\"\n >\n <div class=\"col-6\">\n <ng-content select=\"[main-btn]\"></ng-content>\n </div>\n <div\n class=\"fw-semibold col-6\"\n style=\"display: flex; justify-content: flex-end\"\n >\n <ng-content select=\"[price]\"></ng-content>\n </div>\n </div>\n <!-- <div\n \n class=\"flex row justify-between items-center p-3 border-t border-gray-100 bg-gray-50\"\n >\n <div class=\"col-6\">\n <ng-content select=\"[main-btn]\"></ng-content>\n </div>\n <div class=\"col-6\">\n <ng-content select=\"[price]\"></ng-content>\n </div>\n </div> -->\n</div>\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'lib-nav',\n templateUrl: './nav.component.html',\n styleUrls: ['./nav.component.css'],\n})\nexport class NavComponent implements OnInit {\n @Input() changeNavColor: boolean = false;\n\n openClose: boolean = false;\n message: string = '';\n\n lastScrollPosition = 0;\n isHeaderVisible = true;\n headerHeight = 0;\n isMobile = false;\n\n hasOffer: boolean = false;\n\n constructor(private router: Router, private el: ElementRef) {}\n\n ngAfterViewInit() {\n this.checkMobile();\n\n // Obtém a altura do header-menu após a view ser inicializada\n const headerMenu = this.el.nativeElement.querySelector('[header-menu]');\n if (headerMenu) {\n this.headerHeight = headerMenu.offsetHeight;\n }\n }\n\n ngOnInit(): void {\n this.hasOffer = this.router.url.includes('offer');\n }\n\n @HostListener('window:resize')\n onResize() {\n this.checkMobile();\n }\n\n private checkMobile() {\n this.isMobile = window.innerWidth < 768; // 768px é o breakpoint padrão do Tailwind para md\n if (!this.isMobile) {\n this.isHeaderVisible = true; // Garante que fique visível em desktop\n }\n }\n public menu() {\n this.openClose = !this.openClose;\n }\n\n receiveMessage(event: string) {\n this.message = event;\n }\n\n @HostListener('window:scroll', [])\n onWindowScroll() {\n if (!this.isMobile) return;\n\n const currentScrollPosition =\n window.pageYOffset || document.documentElement.scrollTop;\n\n // Scroll DOWN - esconde o header\n if (\n currentScrollPosition > this.lastScrollPosition &&\n currentScrollPosition > 50\n ) {\n this.isHeaderVisible = false;\n }\n // Scroll UP - mostra o header\n else if (currentScrollPosition < this.lastScrollPosition) {\n this.isHeaderVisible = true;\n }\n\n this.lastScrollPosition = currentScrollPosition;\n }\n}\n","<!-- Overlay -->\n<div\n *ngIf=\"openClose\"\n (click)=\"openClose = false\"\n class=\"fixed inset-0 bg-black bg-opacity-40 z-40 md:hidden\"\n></div>\n\n<!-- Navbar Container -->\n<div\n class=\"fixed top-0 left-0 right-0 z-50 shadow-none transition-transform duration-300 ease-out \"\n [class.-translate-y-full]=\"!isHeaderVisible\"\n [style.backgroundColor]=\"\n changeNavColor ? 'var(--primary)' : 'var(--primary)'\n \"\n>\n <!-- Main Navbar -->\n <div class=\"w-full\">\n <div class=\"mx-auto px-2 h-16 flex items-center justify-between\">\n <!-- Left Content -->\n <div class=\"flex-1 flex justify-start\">\n <ng-content select=\"[left-content]\"></ng-content>\n </div>\n\n <!-- Center Content -->\n <div class=\"flex-1 flex justify-center\">\n <ng-content select=\"[central-content]\"></ng-content>\n </div>\n\n <!-- Right Content -->\n <div class=\"flex-1\" style=\"display: flex; justify-content: flex-end\">\n <ng-content select=\"[right-content]\"></ng-content>\n </div>\n </div>\n </div>\n\n <!-- Header Menu (Submenu) -->\n <div header-menu class=\"w-full hr-nav\">\n <ng-content select=\"[header-menu]\"></ng-content>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\ninterface EmptyStateConfig {\n title: string;\n description: string;\n icon: string;\n iconColor: string;\n bgColor: string;\n primaryActionText?: string;\n secondaryActionText?: string;\n}\n\n@Component({\n selector: 'lib-fallback-message',\n templateUrl: './fallback-message.component.html',\n styleUrls: ['./fallback-message.component.css'],\n})\nexport class FallbackMessageComponent {\n @Input() card: any[] = [];\n @Input() statusPedido: string = '';\n @Input() customTitle?: string;\n @Input() customDescription?: string;\n @Input() primaryActionText?: string;\n @Input() secondaryActionText?: string;\n @Input() hideBtn?: boolean = false;\n\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n\n get emptyStateConfig(): EmptyStateConfig {\n // Se não há propostas\n // if (this.card.length === 0) {\n // return {\n // title: 'Nenhuma Proposta',\n // description:\n // 'Você ainda não possui negociações ou propostas recebidas.',\n // icon: '📄',\n // iconColor: 'text-gray-500',\n // bgColor: 'bg-gray-100',\n // primaryActionText: this.primaryActionText || 'Anúnciar Grátis',\n // secondaryActionText: this.secondaryActionText,\n // };\n // }\n\n // Se há status de pedido\n if (this.statusPedido) {\n switch (this.statusPedido.toLowerCase()) {\n case 'finalizado':\n return {\n title: this.customTitle || 'Serviço Concluído! 🎉',\n description:\n this.customDescription ||\n 'O serviço foi finalizado com sucesso. Agradecemos pela confiança!',\n icon: '✅',\n iconColor: 'text-green-500',\n bgColor: 'bg-green-100',\n primaryActionText: this.primaryActionText || 'Ver Detalhes',\n secondaryActionText: this.secondaryActionText || 'Avaliar Serviço',\n };\n\n // case 'cancelado':\n // return {\n // title: this.customTitle || 'Serviço Cancelado',\n // description:\n // this.customDescription ||\n // 'O serviço foi cancelado pelo prestador. Você pode buscar outros profissionais disponíveis.',\n // icon: '❌',\n // iconColor: 'text-red-500',\n // bgColor: 'bg-red-100',\n // primaryActionText: this.primaryActionText || 'Buscar Profissionais',\n // secondaryActionText: this.secondaryActionText || 'Voltar ao Início',\n // };\n\n case 'sem servicos':\n return {\n title: this.customTitle || 'Sem serviço',\n description:\n this.customDescription || 'Não há serviços disponíveis aqui.',\n icon: '📄',\n // iconColor: 'text-yellow-500',\n // bgColor: 'bg-yellow-100',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Procurar serviços',\n // secondaryActionText: this.secondaryActionText || 'Meus Anúncios',\n };\n case 'indisponivel':\n return {\n title: this.customTitle || 'Proposta Indisponível',\n description:\n this.customDescription ||\n 'Esta proposta não está mais disponível para visualização.',\n icon: '📄',\n // iconColor: 'text-yellow-500',\n // bgColor: 'bg-yellow-100',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Ver Outras Propostas',\n // secondaryActionText: this.secondaryActionText || 'Meus Anúncios',\n };\n\n default:\n return this.getDefaultConfig();\n }\n }\n\n return this.getDefaultConfig();\n }\n\n private getDefaultConfig(): EmptyStateConfig {\n return {\n title: this.customTitle || 'Nenhuma Proposta',\n description:\n this.customDescription || 'Você ainda não possui negociações.',\n icon: '📄',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Anúnciar Grátis',\n secondaryActionText: this.secondaryActionText,\n };\n }\n\n // Método para determinar se deve mostrar o componente\n shouldShowEmptyState(): boolean {\n return (\n this.card.length === 0 ||\n ['finalizado', 'cancelado', 'indisponível', 'indisponivel'].includes(\n this.statusPedido?.toLowerCase()\n )\n );\n }\n\n onPrimaryAction() {\n this.primaryAction.emit();\n }\n\n onSecondaryAction() {\n this.secondaryAction.emit();\n }\n}\n","<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- Ícone dinâmico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative w-32 h-32 flex items-center justify-center\">\n <div [class]=\"emptyStateConfig.iconColor\" class=\"z-10\">\n <div class=\"text-xl leading-none\" style=\"font-size: 4rem\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-full h-full rounded-full opacity-50 flex-shrink-0\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conteúdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- Título -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descrição -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informações adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Serviço avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do serviço</span>\n </div>\n </div>\n </div>\n\n <!-- Ações -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- Ação Primária -->\n <button\n *ngIf=\"hideBtn\"\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indisponível' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- Ação Secundária -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TuduComponentsComponent } from './tudu-components.component';\nimport { CommonModule } from '@angular/common';\nimport { CardLayoutComponent } from '../lib/components/card-layout/card-layout.component';\nimport { NavComponent } from './components/nav/nav.component';\nimport { FallbackMessageComponent } from './components/fallback-message/fallback-message.component';\n\n@NgModule({\n declarations: [TuduComponentsComponent, CardLayoutComponent, NavComponent, FallbackMessageComponent],\n imports: [CommonModule],\n exports: [TuduComponentsComponent, CardLayoutComponent, NavComponent, FallbackMessageComponent],\n})\nexport class TuduComponentsModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TuduComponentsService {\n\n constructor() { }\n}\n","/*\n * Public API Surface of tudu-components\n */\nexport * from './lib/tudu-components.component';\nexport * from './lib/tudu-components.module'; // ← Se criou este módulo\n\nexport * from './lib/components/card-layout/card-layout.component';\nexport * from './lib/components/nav/nav.component';\nexport * from './lib/components/fallback-message/fallback-message.component';\nexport * from './lib/tudu-components.service';\n// export * from './lib/card-layout.module'; // ← Ou se usou CardLayoutModule\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -171,6 +171,7 @@ class FallbackMessageComponent {
|
|
|
171
171
|
constructor() {
|
|
172
172
|
this.card = [];
|
|
173
173
|
this.statusPedido = '';
|
|
174
|
+
this.hideBtn = false;
|
|
174
175
|
this.primaryAction = new EventEmitter();
|
|
175
176
|
this.secondaryAction = new EventEmitter();
|
|
176
177
|
}
|
|
@@ -217,8 +218,7 @@ class FallbackMessageComponent {
|
|
|
217
218
|
case 'sem servicos':
|
|
218
219
|
return {
|
|
219
220
|
title: this.customTitle || 'Sem serviço',
|
|
220
|
-
description: this.customDescription ||
|
|
221
|
-
'Não há serviços disponíveis aqui.',
|
|
221
|
+
description: this.customDescription || 'Não há serviços disponíveis aqui.',
|
|
222
222
|
icon: '📄',
|
|
223
223
|
// iconColor: 'text-yellow-500',
|
|
224
224
|
// bgColor: 'bg-yellow-100',
|
|
@@ -270,10 +270,10 @@ class FallbackMessageComponent {
|
|
|
270
270
|
}
|
|
271
271
|
}
|
|
272
272
|
FallbackMessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FallbackMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
273
|
-
FallbackMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FallbackMessageComponent, selector: "lib-fallback-message", inputs: { card: "card", statusPedido: "statusPedido", customTitle: "customTitle", customDescription: "customDescription", primaryActionText: "primaryActionText", secondaryActionText: "secondaryActionText" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative\">\n
|
|
273
|
+
FallbackMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FallbackMessageComponent, selector: "lib-fallback-message", inputs: { card: "card", statusPedido: "statusPedido", customTitle: "customTitle", customDescription: "customDescription", primaryActionText: "primaryActionText", secondaryActionText: "secondaryActionText", hideBtn: "hideBtn" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative w-32 h-32 flex items-center justify-center\">\n <div [class]=\"emptyStateConfig.iconColor\" class=\"z-10\">\n <div class=\"text-xl leading-none\" style=\"font-size: 4rem\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-full h-full rounded-full opacity-50 flex-shrink-0\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conte\u00FAdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- T\u00EDtulo -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descri\u00E7\u00E3o -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informa\u00E7\u00F5es adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Servi\u00E7o avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do servi\u00E7o</span>\n </div>\n </div>\n </div>\n\n <!-- A\u00E7\u00F5es -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- A\u00E7\u00E3o Prim\u00E1ria -->\n <button\n *ngIf=\"hideBtn\"\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indispon\u00EDvel' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- A\u00E7\u00E3o Secund\u00E1ria -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n", styles: [".empty-state-card{animation:fadeInUp .5s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.empty-state-icon{animation:bounceIn .6s ease-out}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1)}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
274
274
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FallbackMessageComponent, decorators: [{
|
|
275
275
|
type: Component,
|
|
276
|
-
args: [{ selector: 'lib-fallback-message', template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative\">\n
|
|
276
|
+
args: [{ selector: 'lib-fallback-message', template: "<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- \u00CDcone din\u00E2mico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative w-32 h-32 flex items-center justify-center\">\n <div [class]=\"emptyStateConfig.iconColor\" class=\"z-10\">\n <div class=\"text-xl leading-none\" style=\"font-size: 4rem\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-full h-full rounded-full opacity-50 flex-shrink-0\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conte\u00FAdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- T\u00EDtulo -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descri\u00E7\u00E3o -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informa\u00E7\u00F5es adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Servi\u00E7o avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do servi\u00E7o</span>\n </div>\n </div>\n </div>\n\n <!-- A\u00E7\u00F5es -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- A\u00E7\u00E3o Prim\u00E1ria -->\n <button\n *ngIf=\"hideBtn\"\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indispon\u00EDvel' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- A\u00E7\u00E3o Secund\u00E1ria -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n", styles: [".empty-state-card{animation:fadeInUp .5s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.empty-state-icon{animation:bounceIn .6s ease-out}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{transform:scale(1)}}\n"] }]
|
|
277
277
|
}], propDecorators: { card: [{
|
|
278
278
|
type: Input
|
|
279
279
|
}], statusPedido: [{
|
|
@@ -286,6 +286,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
286
286
|
type: Input
|
|
287
287
|
}], secondaryActionText: [{
|
|
288
288
|
type: Input
|
|
289
|
+
}], hideBtn: [{
|
|
290
|
+
type: Input
|
|
289
291
|
}], primaryAction: [{
|
|
290
292
|
type: Output
|
|
291
293
|
}], secondaryAction: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tudu-components.mjs","sources":["../../../projects/tudu-components/src/lib/tudu-components.component.ts","../../../projects/tudu-components/src/lib/components/card-layout/card-layout.component.ts","../../../projects/tudu-components/src/lib/components/card-layout/card-layout.component.html","../../../projects/tudu-components/src/lib/components/nav/nav.component.ts","../../../projects/tudu-components/src/lib/components/nav/nav.component.html","../../../projects/tudu-components/src/lib/components/fallback-message/fallback-message.component.ts","../../../projects/tudu-components/src/lib/components/fallback-message/fallback-message.component.html","../../../projects/tudu-components/src/lib/tudu-components.module.ts","../../../projects/tudu-components/src/lib/tudu-components.service.ts","../../../projects/tudu-components/src/public-api.ts","../../../projects/tudu-components/src/tudu-components.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-tudu-components',\n template: `\n <p>\n tudu-components works!sss\n </p>\n `,\n styles: [\n ]\n})\nexport class TuduComponentsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'lib-card-layout',\n templateUrl: './card-layout.component.html',\n styleUrls: ['./card-layout.component.css'],\n})\nexport class CardLayoutComponent implements OnInit {\n @Input() statusPedido: string = '';\n @Input() cardTemplateIndicator: number = 0; // 1 para serviço, 2 para candidatura\n @Input() hideHeader: boolean = false; // 1 para serviço, 2 para candidatura\n\n tags: string[] = ['Residencial', 'Urgente', 'Elétrica'];\n\n statusOptions = [\n { class: 'status-active', text: 'Ativo', icon: 'fa-circle' },\n { class: 'status-pending', text: 'Em andamento', icon: 'fa-spinner' },\n { class: 'status-completed', text: 'Concluído', icon: 'fa-check' },\n { class: 'status-cancelled', text: 'Cancelado', icon: 'fa-times' },\n ];\n\n currentStatus = this.statusOptions[0];\n private statusInterval: any;\n flowIndicator: string = '1';\n\n constructor(private route: Router) {\n this.route.events.subscribe(() => {\n if (this.route.url.includes('budgets')) {\n this.flowIndicator = 'budgets';\n console.log('asdasdadsasda', this.flowIndicator);\n }\n });\n }\n\n ngOnInit() {\n let index = 0;\n this.statusInterval = setInterval(() => {\n index = (index + 1) % this.statusOptions.length;\n this.currentStatus = this.statusOptions[index];\n }, 3000);\n\n console.log('cardTemplateIndicator', this.cardTemplateIndicator);\n }\n\n get badgeStyles(): { [key: string]: string } {\n const status = this.statusPedido?.toLowerCase();\n\n switch (status) {\n case 'finalizado':\n return { backgroundColor: '#4caf5020', color: '#4caf50' }; // verde suave\n case 'concluido':\n return { backgroundColor: '#0096881c', color: '#009688' }; // teal\n case 'cancelado':\n return { backgroundColor: '#ff52521c', color: '#ff5252' }; // vermelho claro\n case 'publicado':\n return { backgroundColor: '#0096ff1c', color: '#25a5ff' }; // azul suave\n case 'recusado':\n return { backgroundColor: '#ff52521c', color: '#ff5252' }; // vermelho claro\n case 'em negociacao':\n return { backgroundColor: '#ffab251f', color: '#ff9800' }; // laranja suave\n case 'pendente':\n return { backgroundColor: '#9a1fad1c', color: '#7e57c2' }; // roxo claro\n default:\n return { backgroundColor: '#e0e0e01c', color: '#757575' }; // cinza padrão\n }\n }\n\n ngOnDestroy() {\n if (this.statusInterval) {\n clearInterval(this.statusInterval);\n }\n }\n\n verDetalhes() {\n alert('Abrir detalhes do serviço...');\n }\n}\n","<div\n class=\"service-card rounded-xl shadow-md overflow-hidden bg-white hover:shadow-lg transition-all duration-300 relative mb-5\"\n>\n <!-- HEADER -->\n <div\n [class.force-show]=\"!hideHeader\"\n class=\"service-card-header flex items-center justify-between p-3 border-b border-gray-200\"\n >\n <div class=\"flex items-center gap-3\">\n <div class=\"icon-style\">\n <ng-content select=\"[service-icon]\"></ng-content>\n </div>\n <div class=\"flex flex-col\">\n <div class=\"flex items-center gap-3\">\n <div class=\"service-title truncate w-full\">\n <ng-content select=\"[service-title]\"></ng-content>\n </div>\n <div class=\"\">\n <ng-content select=\"[details-btn]\"></ng-content>\n </div>\n </div>\n <div\n class=\"whitespace-nowrap overflow-hidden text-ellipsis\"\n style=\"font-size: 12px; color: var(--tab-link)\"\n >\n <ng-content select=\"[service-address]\"></ng-content>\n </div>\n </div>\n </div>\n </div>\n\n <!-- BODY -->\n <div class=\"service-card-body p-4 space-y-3\">\n <div>\n <div\n class=\"flex flex-col items-start gap-3 border-b border-gray-100 pb-3 mb-3\"\n *ngIf=\"cardTemplateIndicator === 1\"\n >\n <div class=\"flex justify-between w-full pb-2\">\n <div class=\"status-badge\" [ngStyle]=\"badgeStyles\">\n <ng-content select=\"[status-badge]\"></ng-content>\n </div>\n\n <div\n class=\"text-xs text-gray-50 font-semibold\"\n style=\"\n background-color: #d3d3d32c;\n color: grey;\n border-radius: 25px;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 4px 10px;\n \"\n >\n <ng-content select=\"[order-number]\"></ng-content>\n </div>\n </div>\n\n <div class=\"flex flex-wrap gap-2 items-center\">\n <ng-content select=\"[filter-tag]\"></ng-content>\n </div>\n </div>\n\n <div class=\"fw-semibold\" *ngIf=\"statusPedido === 'finalizado'\">\n <ng-content select=\"[conclusion-date]\"></ng-content>\n </div>\n </div>\n <ng-content select=\"[info-row]\"></ng-content>\n\n <ng-content select=\"[description]\"></ng-content>\n </div>\n\n <!-- FOOTER -->\n\n <div\n class=\"service-card-footer flex justify-center items-center p-3 border-t border-gray-100 bg-gray-50 gap-1\"\n >\n <div class=\"col-6\">\n <ng-content select=\"[main-btn]\"></ng-content>\n </div>\n <div\n class=\"fw-semibold col-6\"\n style=\"display: flex; justify-content: flex-end\"\n >\n <ng-content select=\"[price]\"></ng-content>\n </div>\n </div>\n <!-- <div\n \n class=\"flex row justify-between items-center p-3 border-t border-gray-100 bg-gray-50\"\n >\n <div class=\"col-6\">\n <ng-content select=\"[main-btn]\"></ng-content>\n </div>\n <div class=\"col-6\">\n <ng-content select=\"[price]\"></ng-content>\n </div>\n </div> -->\n</div>\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'lib-nav',\n templateUrl: './nav.component.html',\n styleUrls: ['./nav.component.css'],\n})\nexport class NavComponent implements OnInit {\n @Input() changeNavColor: boolean = false;\n\n openClose: boolean = false;\n message: string = '';\n\n lastScrollPosition = 0;\n isHeaderVisible = true;\n headerHeight = 0;\n isMobile = false;\n\n hasOffer: boolean = false;\n\n constructor(private router: Router, private el: ElementRef) {}\n\n ngAfterViewInit() {\n this.checkMobile();\n\n // Obtém a altura do header-menu após a view ser inicializada\n const headerMenu = this.el.nativeElement.querySelector('[header-menu]');\n if (headerMenu) {\n this.headerHeight = headerMenu.offsetHeight;\n }\n }\n\n ngOnInit(): void {\n this.hasOffer = this.router.url.includes('offer');\n }\n\n @HostListener('window:resize')\n onResize() {\n this.checkMobile();\n }\n\n private checkMobile() {\n this.isMobile = window.innerWidth < 768; // 768px é o breakpoint padrão do Tailwind para md\n if (!this.isMobile) {\n this.isHeaderVisible = true; // Garante que fique visível em desktop\n }\n }\n public menu() {\n this.openClose = !this.openClose;\n }\n\n receiveMessage(event: string) {\n this.message = event;\n }\n\n @HostListener('window:scroll', [])\n onWindowScroll() {\n if (!this.isMobile) return;\n\n const currentScrollPosition =\n window.pageYOffset || document.documentElement.scrollTop;\n\n // Scroll DOWN - esconde o header\n if (\n currentScrollPosition > this.lastScrollPosition &&\n currentScrollPosition > 50\n ) {\n this.isHeaderVisible = false;\n }\n // Scroll UP - mostra o header\n else if (currentScrollPosition < this.lastScrollPosition) {\n this.isHeaderVisible = true;\n }\n\n this.lastScrollPosition = currentScrollPosition;\n }\n}\n","<!-- Overlay -->\n<div\n *ngIf=\"openClose\"\n (click)=\"openClose = false\"\n class=\"fixed inset-0 bg-black bg-opacity-40 z-40 md:hidden\"\n></div>\n\n<!-- Navbar Container -->\n<div\n class=\"fixed top-0 left-0 right-0 z-50 shadow-none transition-transform duration-300 ease-out \"\n [class.-translate-y-full]=\"!isHeaderVisible\"\n [style.backgroundColor]=\"\n changeNavColor ? 'var(--primary)' : 'var(--primary)'\n \"\n>\n <!-- Main Navbar -->\n <div class=\"w-full\">\n <div class=\"mx-auto px-2 h-16 flex items-center justify-between\">\n <!-- Left Content -->\n <div class=\"flex-1 flex justify-start\">\n <ng-content select=\"[left-content]\"></ng-content>\n </div>\n\n <!-- Center Content -->\n <div class=\"flex-1 flex justify-center\">\n <ng-content select=\"[central-content]\"></ng-content>\n </div>\n\n <!-- Right Content -->\n <div class=\"flex-1\" style=\"display: flex; justify-content: flex-end\">\n <ng-content select=\"[right-content]\"></ng-content>\n </div>\n </div>\n </div>\n\n <!-- Header Menu (Submenu) -->\n <div header-menu class=\"w-full hr-nav\">\n <ng-content select=\"[header-menu]\"></ng-content>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\ninterface EmptyStateConfig {\n title: string;\n description: string;\n icon: string;\n iconColor: string;\n bgColor: string;\n primaryActionText?: string;\n secondaryActionText?: string;\n}\n\n@Component({\n selector: 'lib-fallback-message',\n templateUrl: './fallback-message.component.html',\n styleUrls: ['./fallback-message.component.css'],\n})\nexport class FallbackMessageComponent {\n @Input() card: any[] = [];\n @Input() statusPedido: string = '';\n @Input() customTitle?: string;\n @Input() customDescription?: string;\n @Input() primaryActionText?: string;\n @Input() secondaryActionText?: string;\n\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n\n get emptyStateConfig(): EmptyStateConfig {\n // Se não há propostas\n // if (this.card.length === 0) {\n // return {\n // title: 'Nenhuma Proposta',\n // description:\n // 'Você ainda não possui negociações ou propostas recebidas.',\n // icon: '📄',\n // iconColor: 'text-gray-500',\n // bgColor: 'bg-gray-100',\n // primaryActionText: this.primaryActionText || 'Anúnciar Grátis',\n // secondaryActionText: this.secondaryActionText,\n // };\n // }\n\n // Se há status de pedido\n if (this.statusPedido) {\n switch (this.statusPedido.toLowerCase()) {\n case 'finalizado':\n return {\n title: this.customTitle || 'Serviço Concluído! 🎉',\n description:\n this.customDescription ||\n 'O serviço foi finalizado com sucesso. Agradecemos pela confiança!',\n icon: '✅',\n iconColor: 'text-green-500',\n bgColor: 'bg-green-100',\n primaryActionText: this.primaryActionText || 'Ver Detalhes',\n secondaryActionText: this.secondaryActionText || 'Avaliar Serviço',\n };\n\n // case 'cancelado':\n // return {\n // title: this.customTitle || 'Serviço Cancelado',\n // description:\n // this.customDescription ||\n // 'O serviço foi cancelado pelo prestador. Você pode buscar outros profissionais disponíveis.',\n // icon: '❌',\n // iconColor: 'text-red-500',\n // bgColor: 'bg-red-100',\n // primaryActionText: this.primaryActionText || 'Buscar Profissionais',\n // secondaryActionText: this.secondaryActionText || 'Voltar ao Início',\n // };\n\n case 'sem servicos':\n return {\n title: this.customTitle || 'Sem serviço',\n description:\n this.customDescription ||\n 'Não há serviços disponíveis aqui.',\n icon: '📄',\n // iconColor: 'text-yellow-500',\n // bgColor: 'bg-yellow-100',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Procurar serviços',\n // secondaryActionText: this.secondaryActionText || 'Meus Anúncios',\n };\n case 'indisponivel':\n return {\n title: this.customTitle || 'Proposta Indisponível',\n description:\n this.customDescription ||\n 'Esta proposta não está mais disponível para visualização.',\n icon: '📄',\n // iconColor: 'text-yellow-500',\n // bgColor: 'bg-yellow-100',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Ver Outras Propostas',\n // secondaryActionText: this.secondaryActionText || 'Meus Anúncios',\n };\n\n default:\n return this.getDefaultConfig();\n }\n }\n\n return this.getDefaultConfig();\n }\n\n private getDefaultConfig(): EmptyStateConfig {\n return {\n title: this.customTitle || 'Nenhuma Proposta',\n description:\n this.customDescription || 'Você ainda não possui negociações.',\n icon: '📄',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Anúnciar Grátis',\n secondaryActionText: this.secondaryActionText,\n };\n }\n\n // Método para determinar se deve mostrar o componente\n shouldShowEmptyState(): boolean {\n return (\n this.card.length === 0 ||\n ['finalizado', 'cancelado', 'indisponível', 'indisponivel'].includes(\n this.statusPedido?.toLowerCase()\n )\n );\n }\n\n onPrimaryAction() {\n this.primaryAction.emit();\n }\n\n onSecondaryAction() {\n this.secondaryAction.emit();\n }\n}\n","<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- Ícone dinâmico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative\">\n <!-- Ícone principal -->\n <div [class]=\"emptyStateConfig.iconColor\">\n <div class=\"text-6xl\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <!-- Background decorativo -->\n <div class=\"absolute -z-10 inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-32 h-32 rounded-full opacity-50\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conteúdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- Título -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descrição -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informações adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Serviço avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do serviço</span>\n </div>\n </div>\n </div>\n\n <!-- Ações -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- Ação Primária -->\n <button\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indisponível' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- Ação Secundária -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TuduComponentsComponent } from './tudu-components.component';\nimport { CommonModule } from '@angular/common';\nimport { CardLayoutComponent } from '../lib/components/card-layout/card-layout.component';\nimport { NavComponent } from './components/nav/nav.component';\nimport { FallbackMessageComponent } from './components/fallback-message/fallback-message.component';\n\n@NgModule({\n declarations: [TuduComponentsComponent, CardLayoutComponent, NavComponent, FallbackMessageComponent],\n imports: [CommonModule],\n exports: [TuduComponentsComponent, CardLayoutComponent, NavComponent, FallbackMessageComponent],\n})\nexport class TuduComponentsModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TuduComponentsService {\n\n constructor() { }\n}\n","/*\n * Public API Surface of tudu-components\n */\nexport * from './lib/tudu-components.component';\nexport * from './lib/tudu-components.module'; // ← Se criou este módulo\n\nexport * from './lib/components/card-layout/card-layout.component';\nexport * from './lib/components/nav/nav.component';\nexport * from './lib/components/fallback-message/fallback-message.component';\nexport * from './lib/tudu-components.service';\n// export * from './lib/card-layout.module'; // ← Ou se usou CardLayoutModule\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;MAYa,uBAAuB,CAAA;AAElC,IAAA,WAAA,GAAA,GAAiB;IAEjB,QAAQ,GAAA;KACP;;oHALU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EARxB,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAIU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EACrB,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,CAAA;;;MCAU,mBAAmB,CAAA;AAkB9B,IAAA,WAAA,CAAoB,KAAa,EAAA;QAAb,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAjBxB,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;AAC1B,QAAA,IAAA,CAAA,qBAAqB,GAAW,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAY,KAAK,CAAC;QAErC,IAAI,CAAA,IAAA,GAAa,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAExD,QAAA,IAAA,CAAA,aAAa,GAAG;YACd,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE;YAC5D,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;YACrE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE;YAClE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE;SACnE,CAAC;AAEF,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAa,CAAA,aAAA,GAAW,GAAG,CAAC;QAG1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;YAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACtC,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;AAClD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,MAAK;AACrC,YAAA,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;YAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAChD,EAAE,IAAI,CAAC,CAAC;QAET,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;KAClE;AAED,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;AAEhD,QAAA,QAAQ,MAAM;AACZ,YAAA,KAAK,YAAY;gBACf,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5D,YAAA,KAAK,WAAW;gBACd,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5D,YAAA,KAAK,WAAW;gBACd,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5D,YAAA,KAAK,WAAW;gBACd,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5D,YAAA,KAAK,UAAU;gBACb,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5D,YAAA,KAAK,eAAe;gBAClB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5D,YAAA,KAAK,UAAU;gBACb,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC5D,YAAA;gBACE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC7D,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpC,SAAA;KACF;IAED,WAAW,GAAA;QACT,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACvC;;gHApEU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,2KCRhC,+nGAoGA,EAAA,MAAA,EAAA,CAAA,y7DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD5Fa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,iBAAiB,EAAA,QAAA,EAAA,+nGAAA,EAAA,MAAA,EAAA,CAAA,y7DAAA,CAAA,EAAA,CAAA;6FAKlB,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;;;MEGK,YAAY,CAAA;IAavB,WAAoB,CAAA,MAAc,EAAU,EAAc,EAAA;QAAtC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAAU,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAZjD,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;QAEzC,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;QAC3B,IAAO,CAAA,OAAA,GAAW,EAAE,CAAC;QAErB,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;QACvB,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;QACvB,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QACjB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEjB,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;KAEoC;IAE9D,eAAe,GAAA;QACb,IAAI,CAAC,WAAW,EAAE,CAAC;;AAGnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AACxE,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;AAC7C,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACnD;IAGD,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAEO,WAAW,GAAA;QACjB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC7B,SAAA;KACF;IACM,IAAI,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;KAClC;AAED,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;IAGD,cAAc,GAAA;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,MAAM,qBAAqB,GACzB,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC;;AAG3D,QAAA,IACE,qBAAqB,GAAG,IAAI,CAAC,kBAAkB;YAC/C,qBAAqB,GAAG,EAAE,EAC1B;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC9B,SAAA;;AAEI,aAAA,IAAI,qBAAqB,GAAG,IAAI,CAAC,kBAAkB,EAAE;AACxD,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,kBAAkB,GAAG,qBAAqB,CAAC;KACjD;;yGApEU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,0LCdzB,0tCAwCA,EAAA,MAAA,EAAA,CAAA,4dAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD1Ba,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;+BACE,SAAS,EAAA,QAAA,EAAA,0tCAAA,EAAA,MAAA,EAAA,CAAA,4dAAA,CAAA,EAAA,CAAA;sHAKV,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBA6BN,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,CAAA;gBAoB7B,cAAc,EAAA,CAAA;sBADb,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,CAAA;;;ME7CtB,wBAAwB,CAAA;AALrC,IAAA,WAAA,GAAA;QAMW,IAAI,CAAA,IAAA,GAAU,EAAE,CAAC;QACjB,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;AAMzB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ,CAAC;AACzC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAQ,CAAC;AAiHtD,KAAA;AA/GC,IAAA,IAAI,gBAAgB,GAAA;;;;;;;;;;;;;;;QAgBlB,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,QAAQ,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AACrC,gBAAA,KAAK,YAAY;oBACf,OAAO;AACL,wBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,uBAAuB;wBAClD,WAAW,EACT,IAAI,CAAC,iBAAiB;4BACtB,mEAAmE;AACrE,wBAAA,IAAI,EAAE,GAAG;AACT,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,wBAAA,OAAO,EAAE,cAAc;AACvB,wBAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,cAAc;AAC3D,wBAAA,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,iBAAiB;qBACnE,CAAC;;;;;;;;;;;;;AAeJ,gBAAA,KAAK,cAAc;oBACjB,OAAO;AACL,wBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,aAAa;wBACxC,WAAW,EACT,IAAI,CAAC,iBAAiB;4BACtB,mCAAmC;AACrC,wBAAA,IAAI,EAAE,IAAI;;;AAGV,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,mBAAmB;;qBAEjE,CAAC;AACJ,gBAAA,KAAK,cAAc;oBACjB,OAAO;AACL,wBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,uBAAuB;wBAClD,WAAW,EACT,IAAI,CAAC,iBAAiB;4BACtB,2DAA2D;AAC7D,wBAAA,IAAI,EAAE,IAAI;;;AAGV,wBAAA,SAAS,EAAE,eAAe;AAC1B,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,sBAAsB;;qBAEpE,CAAC;AAEJ,gBAAA;AACE,oBAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAClC,aAAA;AACF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAChC;IAEO,gBAAgB,GAAA;QACtB,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,kBAAkB;AAC7C,YAAA,WAAW,EACT,IAAI,CAAC,iBAAiB,IAAI,oCAAoC;AAChE,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,SAAS,EAAE,eAAe;AAC1B,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,iBAAiB;YAC9D,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;SAC9C,CAAC;KACH;;IAGD,oBAAoB,GAAA;AAClB,QAAA,QACE,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AACtB,YAAA,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,QAAQ,CAClE,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CACjC,EACD;KACH;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;KAC7B;;qHAzHU,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,6VCjBrC,41GA+FA,EAAA,MAAA,EAAA,CAAA,kVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD9Ea,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;+BACE,sBAAsB,EAAA,QAAA,EAAA,41GAAA,EAAA,MAAA,EAAA,CAAA,kVAAA,CAAA,EAAA,CAAA;8BAKvB,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,mBAAmB,EAAA,CAAA;sBAA3B,KAAK;gBAEI,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBACG,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MEdI,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAJhB,uBAAuB,EAAE,mBAAmB,EAAE,YAAY,EAAE,wBAAwB,CACzF,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,uBAAuB,EAAE,mBAAmB,EAAE,YAAY,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEnF,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHrB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAGX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,uBAAuB,EAAE,mBAAmB,EAAE,YAAY,EAAE,wBAAwB,CAAC;oBACpG,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,uBAAuB,EAAE,mBAAmB,EAAE,YAAY,EAAE,wBAAwB,CAAC;AAChG,iBAAA,CAAA;;;MCNY,qBAAqB,CAAA;AAEhC,IAAA,WAAA,GAAA,GAAiB;;kHAFN,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACJD;;AAEG;AAQH;;ACVA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"tudu-components.mjs","sources":["../../../projects/tudu-components/src/lib/tudu-components.component.ts","../../../projects/tudu-components/src/lib/components/card-layout/card-layout.component.ts","../../../projects/tudu-components/src/lib/components/card-layout/card-layout.component.html","../../../projects/tudu-components/src/lib/components/nav/nav.component.ts","../../../projects/tudu-components/src/lib/components/nav/nav.component.html","../../../projects/tudu-components/src/lib/components/fallback-message/fallback-message.component.ts","../../../projects/tudu-components/src/lib/components/fallback-message/fallback-message.component.html","../../../projects/tudu-components/src/lib/tudu-components.module.ts","../../../projects/tudu-components/src/lib/tudu-components.service.ts","../../../projects/tudu-components/src/public-api.ts","../../../projects/tudu-components/src/tudu-components.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-tudu-components',\n template: `\n <p>\n tudu-components works!sss\n </p>\n `,\n styles: [\n ]\n})\nexport class TuduComponentsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'lib-card-layout',\n templateUrl: './card-layout.component.html',\n styleUrls: ['./card-layout.component.css'],\n})\nexport class CardLayoutComponent implements OnInit {\n @Input() statusPedido: string = '';\n @Input() cardTemplateIndicator: number = 0; // 1 para serviço, 2 para candidatura\n @Input() hideHeader: boolean = false; // 1 para serviço, 2 para candidatura\n\n tags: string[] = ['Residencial', 'Urgente', 'Elétrica'];\n\n statusOptions = [\n { class: 'status-active', text: 'Ativo', icon: 'fa-circle' },\n { class: 'status-pending', text: 'Em andamento', icon: 'fa-spinner' },\n { class: 'status-completed', text: 'Concluído', icon: 'fa-check' },\n { class: 'status-cancelled', text: 'Cancelado', icon: 'fa-times' },\n ];\n\n currentStatus = this.statusOptions[0];\n private statusInterval: any;\n flowIndicator: string = '1';\n\n constructor(private route: Router) {\n this.route.events.subscribe(() => {\n if (this.route.url.includes('budgets')) {\n this.flowIndicator = 'budgets';\n console.log('asdasdadsasda', this.flowIndicator);\n }\n });\n }\n\n ngOnInit() {\n let index = 0;\n this.statusInterval = setInterval(() => {\n index = (index + 1) % this.statusOptions.length;\n this.currentStatus = this.statusOptions[index];\n }, 3000);\n\n console.log('cardTemplateIndicator', this.cardTemplateIndicator);\n }\n\n get badgeStyles(): { [key: string]: string } {\n const status = this.statusPedido?.toLowerCase();\n\n switch (status) {\n case 'finalizado':\n return { backgroundColor: '#4caf5020', color: '#4caf50' }; // verde suave\n case 'concluido':\n return { backgroundColor: '#0096881c', color: '#009688' }; // teal\n case 'cancelado':\n return { backgroundColor: '#ff52521c', color: '#ff5252' }; // vermelho claro\n case 'publicado':\n return { backgroundColor: '#0096ff1c', color: '#25a5ff' }; // azul suave\n case 'recusado':\n return { backgroundColor: '#ff52521c', color: '#ff5252' }; // vermelho claro\n case 'em negociacao':\n return { backgroundColor: '#ffab251f', color: '#ff9800' }; // laranja suave\n case 'pendente':\n return { backgroundColor: '#9a1fad1c', color: '#7e57c2' }; // roxo claro\n default:\n return { backgroundColor: '#e0e0e01c', color: '#757575' }; // cinza padrão\n }\n }\n\n ngOnDestroy() {\n if (this.statusInterval) {\n clearInterval(this.statusInterval);\n }\n }\n\n verDetalhes() {\n alert('Abrir detalhes do serviço...');\n }\n}\n","<div\n class=\"service-card rounded-xl shadow-md overflow-hidden bg-white hover:shadow-lg transition-all duration-300 relative mb-5\"\n>\n <!-- HEADER -->\n <div\n [class.force-show]=\"!hideHeader\"\n class=\"service-card-header flex items-center justify-between p-3 border-b border-gray-200\"\n >\n <div class=\"flex items-center gap-3\">\n <div class=\"icon-style\">\n <ng-content select=\"[service-icon]\"></ng-content>\n </div>\n <div class=\"flex flex-col\">\n <div class=\"flex items-center gap-3\">\n <div class=\"service-title truncate w-full\">\n <ng-content select=\"[service-title]\"></ng-content>\n </div>\n <div class=\"\">\n <ng-content select=\"[details-btn]\"></ng-content>\n </div>\n </div>\n <div\n class=\"whitespace-nowrap overflow-hidden text-ellipsis\"\n style=\"font-size: 12px; color: var(--tab-link)\"\n >\n <ng-content select=\"[service-address]\"></ng-content>\n </div>\n </div>\n </div>\n </div>\n\n <!-- BODY -->\n <div class=\"service-card-body p-4 space-y-3\">\n <div>\n <div\n class=\"flex flex-col items-start gap-3 border-b border-gray-100 pb-3 mb-3\"\n *ngIf=\"cardTemplateIndicator === 1\"\n >\n <div class=\"flex justify-between w-full pb-2\">\n <div class=\"status-badge\" [ngStyle]=\"badgeStyles\">\n <ng-content select=\"[status-badge]\"></ng-content>\n </div>\n\n <div\n class=\"text-xs text-gray-50 font-semibold\"\n style=\"\n background-color: #d3d3d32c;\n color: grey;\n border-radius: 25px;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 4px 10px;\n \"\n >\n <ng-content select=\"[order-number]\"></ng-content>\n </div>\n </div>\n\n <div class=\"flex flex-wrap gap-2 items-center\">\n <ng-content select=\"[filter-tag]\"></ng-content>\n </div>\n </div>\n\n <div class=\"fw-semibold\" *ngIf=\"statusPedido === 'finalizado'\">\n <ng-content select=\"[conclusion-date]\"></ng-content>\n </div>\n </div>\n <ng-content select=\"[info-row]\"></ng-content>\n\n <ng-content select=\"[description]\"></ng-content>\n </div>\n\n <!-- FOOTER -->\n\n <div\n class=\"service-card-footer flex justify-center items-center p-3 border-t border-gray-100 bg-gray-50 gap-1\"\n >\n <div class=\"col-6\">\n <ng-content select=\"[main-btn]\"></ng-content>\n </div>\n <div\n class=\"fw-semibold col-6\"\n style=\"display: flex; justify-content: flex-end\"\n >\n <ng-content select=\"[price]\"></ng-content>\n </div>\n </div>\n <!-- <div\n \n class=\"flex row justify-between items-center p-3 border-t border-gray-100 bg-gray-50\"\n >\n <div class=\"col-6\">\n <ng-content select=\"[main-btn]\"></ng-content>\n </div>\n <div class=\"col-6\">\n <ng-content select=\"[price]\"></ng-content>\n </div>\n </div> -->\n</div>\n","import {\n Component,\n ElementRef,\n HostListener,\n Input,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'lib-nav',\n templateUrl: './nav.component.html',\n styleUrls: ['./nav.component.css'],\n})\nexport class NavComponent implements OnInit {\n @Input() changeNavColor: boolean = false;\n\n openClose: boolean = false;\n message: string = '';\n\n lastScrollPosition = 0;\n isHeaderVisible = true;\n headerHeight = 0;\n isMobile = false;\n\n hasOffer: boolean = false;\n\n constructor(private router: Router, private el: ElementRef) {}\n\n ngAfterViewInit() {\n this.checkMobile();\n\n // Obtém a altura do header-menu após a view ser inicializada\n const headerMenu = this.el.nativeElement.querySelector('[header-menu]');\n if (headerMenu) {\n this.headerHeight = headerMenu.offsetHeight;\n }\n }\n\n ngOnInit(): void {\n this.hasOffer = this.router.url.includes('offer');\n }\n\n @HostListener('window:resize')\n onResize() {\n this.checkMobile();\n }\n\n private checkMobile() {\n this.isMobile = window.innerWidth < 768; // 768px é o breakpoint padrão do Tailwind para md\n if (!this.isMobile) {\n this.isHeaderVisible = true; // Garante que fique visível em desktop\n }\n }\n public menu() {\n this.openClose = !this.openClose;\n }\n\n receiveMessage(event: string) {\n this.message = event;\n }\n\n @HostListener('window:scroll', [])\n onWindowScroll() {\n if (!this.isMobile) return;\n\n const currentScrollPosition =\n window.pageYOffset || document.documentElement.scrollTop;\n\n // Scroll DOWN - esconde o header\n if (\n currentScrollPosition > this.lastScrollPosition &&\n currentScrollPosition > 50\n ) {\n this.isHeaderVisible = false;\n }\n // Scroll UP - mostra o header\n else if (currentScrollPosition < this.lastScrollPosition) {\n this.isHeaderVisible = true;\n }\n\n this.lastScrollPosition = currentScrollPosition;\n }\n}\n","<!-- Overlay -->\n<div\n *ngIf=\"openClose\"\n (click)=\"openClose = false\"\n class=\"fixed inset-0 bg-black bg-opacity-40 z-40 md:hidden\"\n></div>\n\n<!-- Navbar Container -->\n<div\n class=\"fixed top-0 left-0 right-0 z-50 shadow-none transition-transform duration-300 ease-out \"\n [class.-translate-y-full]=\"!isHeaderVisible\"\n [style.backgroundColor]=\"\n changeNavColor ? 'var(--primary)' : 'var(--primary)'\n \"\n>\n <!-- Main Navbar -->\n <div class=\"w-full\">\n <div class=\"mx-auto px-2 h-16 flex items-center justify-between\">\n <!-- Left Content -->\n <div class=\"flex-1 flex justify-start\">\n <ng-content select=\"[left-content]\"></ng-content>\n </div>\n\n <!-- Center Content -->\n <div class=\"flex-1 flex justify-center\">\n <ng-content select=\"[central-content]\"></ng-content>\n </div>\n\n <!-- Right Content -->\n <div class=\"flex-1\" style=\"display: flex; justify-content: flex-end\">\n <ng-content select=\"[right-content]\"></ng-content>\n </div>\n </div>\n </div>\n\n <!-- Header Menu (Submenu) -->\n <div header-menu class=\"w-full hr-nav\">\n <ng-content select=\"[header-menu]\"></ng-content>\n </div>\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\ninterface EmptyStateConfig {\n title: string;\n description: string;\n icon: string;\n iconColor: string;\n bgColor: string;\n primaryActionText?: string;\n secondaryActionText?: string;\n}\n\n@Component({\n selector: 'lib-fallback-message',\n templateUrl: './fallback-message.component.html',\n styleUrls: ['./fallback-message.component.css'],\n})\nexport class FallbackMessageComponent {\n @Input() card: any[] = [];\n @Input() statusPedido: string = '';\n @Input() customTitle?: string;\n @Input() customDescription?: string;\n @Input() primaryActionText?: string;\n @Input() secondaryActionText?: string;\n @Input() hideBtn?: boolean = false;\n\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n\n get emptyStateConfig(): EmptyStateConfig {\n // Se não há propostas\n // if (this.card.length === 0) {\n // return {\n // title: 'Nenhuma Proposta',\n // description:\n // 'Você ainda não possui negociações ou propostas recebidas.',\n // icon: '📄',\n // iconColor: 'text-gray-500',\n // bgColor: 'bg-gray-100',\n // primaryActionText: this.primaryActionText || 'Anúnciar Grátis',\n // secondaryActionText: this.secondaryActionText,\n // };\n // }\n\n // Se há status de pedido\n if (this.statusPedido) {\n switch (this.statusPedido.toLowerCase()) {\n case 'finalizado':\n return {\n title: this.customTitle || 'Serviço Concluído! 🎉',\n description:\n this.customDescription ||\n 'O serviço foi finalizado com sucesso. Agradecemos pela confiança!',\n icon: '✅',\n iconColor: 'text-green-500',\n bgColor: 'bg-green-100',\n primaryActionText: this.primaryActionText || 'Ver Detalhes',\n secondaryActionText: this.secondaryActionText || 'Avaliar Serviço',\n };\n\n // case 'cancelado':\n // return {\n // title: this.customTitle || 'Serviço Cancelado',\n // description:\n // this.customDescription ||\n // 'O serviço foi cancelado pelo prestador. Você pode buscar outros profissionais disponíveis.',\n // icon: '❌',\n // iconColor: 'text-red-500',\n // bgColor: 'bg-red-100',\n // primaryActionText: this.primaryActionText || 'Buscar Profissionais',\n // secondaryActionText: this.secondaryActionText || 'Voltar ao Início',\n // };\n\n case 'sem servicos':\n return {\n title: this.customTitle || 'Sem serviço',\n description:\n this.customDescription || 'Não há serviços disponíveis aqui.',\n icon: '📄',\n // iconColor: 'text-yellow-500',\n // bgColor: 'bg-yellow-100',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Procurar serviços',\n // secondaryActionText: this.secondaryActionText || 'Meus Anúncios',\n };\n case 'indisponivel':\n return {\n title: this.customTitle || 'Proposta Indisponível',\n description:\n this.customDescription ||\n 'Esta proposta não está mais disponível para visualização.',\n icon: '📄',\n // iconColor: 'text-yellow-500',\n // bgColor: 'bg-yellow-100',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Ver Outras Propostas',\n // secondaryActionText: this.secondaryActionText || 'Meus Anúncios',\n };\n\n default:\n return this.getDefaultConfig();\n }\n }\n\n return this.getDefaultConfig();\n }\n\n private getDefaultConfig(): EmptyStateConfig {\n return {\n title: this.customTitle || 'Nenhuma Proposta',\n description:\n this.customDescription || 'Você ainda não possui negociações.',\n icon: '📄',\n iconColor: 'text-gray-500',\n bgColor: 'bg-gray-100',\n primaryActionText: this.primaryActionText || 'Anúnciar Grátis',\n secondaryActionText: this.secondaryActionText,\n };\n }\n\n // Método para determinar se deve mostrar o componente\n shouldShowEmptyState(): boolean {\n return (\n this.card.length === 0 ||\n ['finalizado', 'cancelado', 'indisponível', 'indisponivel'].includes(\n this.statusPedido?.toLowerCase()\n )\n );\n }\n\n onPrimaryAction() {\n this.primaryAction.emit();\n }\n\n onSecondaryAction() {\n this.secondaryAction.emit();\n }\n}\n","<div *ngIf=\"shouldShowEmptyState()\" class=\"empty-state-container\">\n <div\n class=\"empty-state-card max-w-md mx-auto bg-white shadow-xl rounded-3xl p-8 border border-gray-100\"\n >\n <!-- Ícone dinâmico -->\n <div class=\"empty-state-icon mb-6 flex justify-center\">\n <div class=\"relative w-32 h-32 flex items-center justify-center\">\n <div [class]=\"emptyStateConfig.iconColor\" class=\"z-10\">\n <div class=\"text-xl leading-none\" style=\"font-size: 4rem\">\n {{ emptyStateConfig.icon }}\n </div>\n </div>\n\n <div class=\"absolute inset-0 flex items-center justify-center\">\n <div\n [class]=\"emptyStateConfig.bgColor\"\n class=\"w-full h-full rounded-full opacity-50 flex-shrink-0\"\n ></div>\n </div>\n </div>\n </div>\n\n <!-- Conteúdo da mensagem -->\n <div class=\"empty-state-content text-center space-y-4\">\n <!-- Título -->\n <h3 class=\"text-2xl font-bold text-gray-900 mb-2\">\n {{ emptyStateConfig.title }}\n </h3>\n\n <!-- Descrição -->\n <p class=\"text-gray-600 text-lg leading-relaxed px-4\">\n {{ emptyStateConfig.description }}\n </p>\n\n <!-- Informações adicionais baseadas no status -->\n <div *ngIf=\"statusPedido === 'finalizado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-green-50 text-green-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-check-circle\"></i>\n <span class=\"font-medium\">Serviço avaliado e finalizado</span>\n </div>\n </div>\n\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-4\">\n <div\n class=\"inline-flex items-center gap-2 bg-red-50 text-red-700 px-4 py-2 rounded-full\"\n >\n <i class=\"fas fa-exclamation-circle\"></i>\n <span class=\"font-medium\">Cancelado pelo prestador do serviço</span>\n </div>\n </div>\n </div>\n\n <!-- Ações -->\n <div class=\"mt-8 flex flex-col sm:flex-row gap-4 justify-center\">\n <!-- Ação Primária -->\n <button\n *ngIf=\"hideBtn\"\n (click)=\"onPrimaryAction()\"\n [ngClass]=\"{\n 'bg-green-600 hover:bg-green-700': statusPedido === 'finalizado',\n 'bg-red-600 hover:bg-red-700': statusPedido === 'cancelado',\n 'bg-blue-600 ':\n statusPedido === 'indisponível' || statusPedido === 'indisponivel',\n 'bg-primary-600 hover:bg-primary-700': card.length === 0\n }\"\n class=\"col-12 btn btn-primary\"\n >\n {{ emptyStateConfig.primaryActionText }}\n </button>\n\n <!-- Ação Secundária -->\n <button\n *ngIf=\"emptyStateConfig.secondaryActionText\"\n (click)=\"onSecondaryAction()\"\n class=\"col-12 btn btn-outline-primary\"\n >\n {{ emptyStateConfig.secondaryActionText }}\n </button>\n </div>\n\n <!-- Link de ajuda (opcional) -->\n <div *ngIf=\"statusPedido === 'cancelado'\" class=\"mt-6 text-center\">\n <a\n href=\"#\"\n class=\"text-sm text-blue-600 hover:text-blue-800 hover:underline\"\n >\n <i class=\"fas fa-question-circle mr-2\"></i>\n Precisa de ajuda? Entre em contato com o suporte\n </a>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TuduComponentsComponent } from './tudu-components.component';\nimport { CommonModule } from '@angular/common';\nimport { CardLayoutComponent } from '../lib/components/card-layout/card-layout.component';\nimport { NavComponent } from './components/nav/nav.component';\nimport { FallbackMessageComponent } from './components/fallback-message/fallback-message.component';\n\n@NgModule({\n declarations: [TuduComponentsComponent, CardLayoutComponent, NavComponent, FallbackMessageComponent],\n imports: [CommonModule],\n exports: [TuduComponentsComponent, CardLayoutComponent, NavComponent, FallbackMessageComponent],\n})\nexport class TuduComponentsModule {}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TuduComponentsService {\n\n constructor() { }\n}\n","/*\n * Public API Surface of tudu-components\n */\nexport * from './lib/tudu-components.component';\nexport * from './lib/tudu-components.module'; // ← Se criou este módulo\n\nexport * from './lib/components/card-layout/card-layout.component';\nexport * from './lib/components/nav/nav.component';\nexport * from './lib/components/fallback-message/fallback-message.component';\nexport * from './lib/tudu-components.service';\n// export * from './lib/card-layout.module'; // ← Ou se usou CardLayoutModule\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ export declare class FallbackMessageComponent {
|
|
|
16
16
|
customDescription?: string;
|
|
17
17
|
primaryActionText?: string;
|
|
18
18
|
secondaryActionText?: string;
|
|
19
|
+
hideBtn?: boolean;
|
|
19
20
|
primaryAction: EventEmitter<void>;
|
|
20
21
|
secondaryAction: EventEmitter<void>;
|
|
21
22
|
get emptyStateConfig(): EmptyStateConfig;
|
|
@@ -24,6 +25,6 @@ export declare class FallbackMessageComponent {
|
|
|
24
25
|
onPrimaryAction(): void;
|
|
25
26
|
onSecondaryAction(): void;
|
|
26
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<FallbackMessageComponent, never>;
|
|
27
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FallbackMessageComponent, "lib-fallback-message", never, { "card": "card"; "statusPedido": "statusPedido"; "customTitle": "customTitle"; "customDescription": "customDescription"; "primaryActionText": "primaryActionText"; "secondaryActionText": "secondaryActionText"; }, { "primaryAction": "primaryAction"; "secondaryAction": "secondaryAction"; }, never, never, false>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FallbackMessageComponent, "lib-fallback-message", never, { "card": "card"; "statusPedido": "statusPedido"; "customTitle": "customTitle"; "customDescription": "customDescription"; "primaryActionText": "primaryActionText"; "secondaryActionText": "secondaryActionText"; "hideBtn": "hideBtn"; }, { "primaryAction": "primaryAction"; "secondaryAction": "secondaryAction"; }, never, never, false>;
|
|
28
29
|
}
|
|
29
30
|
export {};
|