@cerca/design-system 1.0.0
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/README.md +390 -0
- package/fesm2022/cerca-design-system.mjs +831 -0
- package/fesm2022/cerca-design-system.mjs.map +1 -0
- package/package.json +25 -0
- package/types/cerca-design-system.d.ts +331 -0
|
@@ -0,0 +1,831 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, signal, computed, Input, Component, forwardRef, EventEmitter, Output, ContentChild, HostListener, inject, HostBinding } from '@angular/core';
|
|
3
|
+
import * as i1$2 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i1 from 'ng-zorro-antd/button';
|
|
6
|
+
import { NzButtonModule } from 'ng-zorro-antd/button';
|
|
7
|
+
import * as i3$1 from 'ng-zorro-antd/icon';
|
|
8
|
+
import { NzIconModule } from 'ng-zorro-antd/icon';
|
|
9
|
+
import * as i2 from 'ng-zorro-antd/core/transition-patch';
|
|
10
|
+
import * as i3 from 'ng-zorro-antd/core/wave';
|
|
11
|
+
import * as i1$1 from '@angular/forms';
|
|
12
|
+
import { FormsModule, NG_VALUE_ACCESSOR, FormBuilder, Validators, ReactiveFormsModule } from '@angular/forms';
|
|
13
|
+
import * as i2$1 from 'ng-zorro-antd/input';
|
|
14
|
+
import { NzInputModule } from 'ng-zorro-antd/input';
|
|
15
|
+
import { NzSelectComponent, NzOptionComponent } from 'ng-zorro-antd/select';
|
|
16
|
+
import * as i1$3 from 'ng-zorro-antd/card';
|
|
17
|
+
import { NzCardModule } from 'ng-zorro-antd/card';
|
|
18
|
+
import { Subject, Subscription } from 'rxjs';
|
|
19
|
+
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
20
|
+
import { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
|
|
21
|
+
import * as i2$2 from 'ng-zorro-antd/alert';
|
|
22
|
+
import { NzAlertModule } from 'ng-zorro-antd/alert';
|
|
23
|
+
import * as i4 from 'ng-zorro-antd/checkbox';
|
|
24
|
+
import { NzCheckboxModule } from 'ng-zorro-antd/checkbox';
|
|
25
|
+
import { NzFormDirective, NzFormControlComponent, NzFormLabelComponent, NzFormItemComponent } from 'ng-zorro-antd/form';
|
|
26
|
+
|
|
27
|
+
class CcButtonComponent {
|
|
28
|
+
constructor() {
|
|
29
|
+
this.variant = input('primary', ...(ngDevMode ? [{ debugName: "variant" }] : []));
|
|
30
|
+
this.type = input('button', ...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
31
|
+
this._disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
|
|
32
|
+
this.loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
33
|
+
this.icon = input(undefined, ...(ngDevMode ? [{ debugName: "icon" }] : []));
|
|
34
|
+
this.size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
35
|
+
this.nzType = computed(() => {
|
|
36
|
+
const variantMap = {
|
|
37
|
+
'primary': 'primary',
|
|
38
|
+
'secondary': 'default',
|
|
39
|
+
'ghost': 'text',
|
|
40
|
+
'outline': 'dashed'
|
|
41
|
+
};
|
|
42
|
+
return variantMap[this.variant()] || 'default';
|
|
43
|
+
}, ...(ngDevMode ? [{ debugName: "nzType" }] : []));
|
|
44
|
+
}
|
|
45
|
+
set disabled(value) { this._disabled.set(value); }
|
|
46
|
+
get disabled() { return this._disabled(); }
|
|
47
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: CcButtonComponent, isStandalone: true, selector: "cc-button", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<button nz-button [nzType]=\"nzType()\" [nzLoading]=\"loading()\" [nzSize]=\"size()\" [disabled]=\"disabled\" [type]=\"type()\"\r\n class=\"cerca-btn\">\r\n @if (icon(); as iconName) {\r\n <span nz-icon [nzType]=\"$any(iconName)\"></span>\r\n }\r\n <ng-content></ng-content>\r\n</button>", styles: [".cerca-btn{min-height:44px;min-width:44px;font-family:var(--font-family-base);font-weight:var(--btn-font-weight, var(--font-weight-medium));border-radius:var(--btn-radius, var(--radius-md));transition:all .2s cubic-bezier(.4,0,.2,1)}.cerca-btn:focus-visible{box-shadow:0 0 0 3px var(--color-focus-ring);outline:none}.cerca-btn:hover:not(:disabled){transform:translateY(-1px)}.cerca-btn:active:not(:disabled){transform:translateY(0)}:host ::ng-deep .ant-btn-primary.cerca-btn{background-color:var(--btn-bg-primary, var(--color-brand));border-color:var(--btn-bg-primary, var(--color-brand));box-shadow:var(--btn-shadow-default, var(--shadow-sm))}:host ::ng-deep .ant-btn-primary.cerca-btn:hover:not(:disabled){background-color:var(--color-brand-hover);border-color:var(--color-brand-hover);box-shadow:var(--btn-shadow-hover, var(--shadow-md))}:host ::ng-deep .ant-btn-default.cerca-btn{background-color:var(--color-bg-primary);color:var(--color-brand);border-color:var(--color-border-strong)}:host ::ng-deep .ant-btn-default.cerca-btn:hover:not(:disabled){background-color:var(--color-bg-secondary);border-color:var(--color-brand);color:var(--color-brand)}:host ::ng-deep .ant-btn-text.cerca-btn{color:var(--color-text-secondary)}:host ::ng-deep .ant-btn-text.cerca-btn:hover:not(:disabled){background-color:var(--color-bg-secondary);color:var(--color-brand)}:host ::ng-deep .ant-btn-dashed.cerca-btn{color:var(--color-brand);border-color:var(--color-brand)}:host ::ng-deep .ant-btn-dashed.cerca-btn:hover:not(:disabled){background-color:var(--color-bg-secondary);border-color:var(--color-brand-hover);color:var(--color-brand-hover)}:host ::ng-deep .cerca-btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i1.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i2.ɵNzTransitionPatchDirective, selector: "[nz-button], [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i3.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }] }); }
|
|
49
|
+
}
|
|
50
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcButtonComponent, decorators: [{
|
|
51
|
+
type: Component,
|
|
52
|
+
args: [{ selector: 'cc-button', standalone: true, imports: [CommonModule, NzButtonModule, NzIconModule], template: "<button nz-button [nzType]=\"nzType()\" [nzLoading]=\"loading()\" [nzSize]=\"size()\" [disabled]=\"disabled\" [type]=\"type()\"\r\n class=\"cerca-btn\">\r\n @if (icon(); as iconName) {\r\n <span nz-icon [nzType]=\"$any(iconName)\"></span>\r\n }\r\n <ng-content></ng-content>\r\n</button>", styles: [".cerca-btn{min-height:44px;min-width:44px;font-family:var(--font-family-base);font-weight:var(--btn-font-weight, var(--font-weight-medium));border-radius:var(--btn-radius, var(--radius-md));transition:all .2s cubic-bezier(.4,0,.2,1)}.cerca-btn:focus-visible{box-shadow:0 0 0 3px var(--color-focus-ring);outline:none}.cerca-btn:hover:not(:disabled){transform:translateY(-1px)}.cerca-btn:active:not(:disabled){transform:translateY(0)}:host ::ng-deep .ant-btn-primary.cerca-btn{background-color:var(--btn-bg-primary, var(--color-brand));border-color:var(--btn-bg-primary, var(--color-brand));box-shadow:var(--btn-shadow-default, var(--shadow-sm))}:host ::ng-deep .ant-btn-primary.cerca-btn:hover:not(:disabled){background-color:var(--color-brand-hover);border-color:var(--color-brand-hover);box-shadow:var(--btn-shadow-hover, var(--shadow-md))}:host ::ng-deep .ant-btn-default.cerca-btn{background-color:var(--color-bg-primary);color:var(--color-brand);border-color:var(--color-border-strong)}:host ::ng-deep .ant-btn-default.cerca-btn:hover:not(:disabled){background-color:var(--color-bg-secondary);border-color:var(--color-brand);color:var(--color-brand)}:host ::ng-deep .ant-btn-text.cerca-btn{color:var(--color-text-secondary)}:host ::ng-deep .ant-btn-text.cerca-btn:hover:not(:disabled){background-color:var(--color-bg-secondary);color:var(--color-brand)}:host ::ng-deep .ant-btn-dashed.cerca-btn{color:var(--color-brand);border-color:var(--color-brand)}:host ::ng-deep .ant-btn-dashed.cerca-btn:hover:not(:disabled){background-color:var(--color-bg-secondary);border-color:var(--color-brand-hover);color:var(--color-brand-hover)}:host ::ng-deep .cerca-btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}\n"] }]
|
|
53
|
+
}], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], disabled: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
56
|
+
|
|
57
|
+
class CcInputComponent {
|
|
58
|
+
constructor() {
|
|
59
|
+
this.type = input('text', ...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
60
|
+
this.placeholder = input('', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
61
|
+
this.label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
62
|
+
this.error = input(false, ...(ngDevMode ? [{ debugName: "error" }] : []));
|
|
63
|
+
this._disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
|
|
64
|
+
this.size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
65
|
+
this.prefix = input(undefined, ...(ngDevMode ? [{ debugName: "prefix" }] : []));
|
|
66
|
+
this.suffix = input(undefined, ...(ngDevMode ? [{ debugName: "suffix" }] : []));
|
|
67
|
+
this.value = '';
|
|
68
|
+
this.passwordVisible = signal(false, ...(ngDevMode ? [{ debugName: "passwordVisible" }] : []));
|
|
69
|
+
this.onChange = () => { };
|
|
70
|
+
this.onTouched = () => { };
|
|
71
|
+
this.inputType = computed(() => {
|
|
72
|
+
if (this.type() === 'password') {
|
|
73
|
+
return this.passwordVisible() ? 'text' : 'password';
|
|
74
|
+
}
|
|
75
|
+
return this.type();
|
|
76
|
+
}, ...(ngDevMode ? [{ debugName: "inputType" }] : []));
|
|
77
|
+
}
|
|
78
|
+
set disabled(value) { this._disabled.set(value); }
|
|
79
|
+
get disabled() { return this._disabled(); }
|
|
80
|
+
onInputChange(event) {
|
|
81
|
+
const target = event.target;
|
|
82
|
+
this.value = target.value;
|
|
83
|
+
this.onChange(this.value);
|
|
84
|
+
this.onTouched();
|
|
85
|
+
}
|
|
86
|
+
togglePasswordVisibility() {
|
|
87
|
+
if (this.type() === 'password') {
|
|
88
|
+
this.passwordVisible.update(visible => !visible);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
writeValue(value) {
|
|
92
|
+
this.value = value || '';
|
|
93
|
+
}
|
|
94
|
+
registerOnChange(fn) {
|
|
95
|
+
this.onChange = fn;
|
|
96
|
+
}
|
|
97
|
+
registerOnTouched(fn) {
|
|
98
|
+
this.onTouched = fn;
|
|
99
|
+
}
|
|
100
|
+
setDisabledState(isDisabled) {
|
|
101
|
+
this._disabled.set(isDisabled);
|
|
102
|
+
}
|
|
103
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
104
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: CcInputComponent, isStandalone: true, selector: "cc-input", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, error: { classPropertyName: "error", publicName: "error", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
105
|
+
{
|
|
106
|
+
provide: NG_VALUE_ACCESSOR,
|
|
107
|
+
useExisting: forwardRef(() => CcInputComponent),
|
|
108
|
+
multi: true
|
|
109
|
+
}
|
|
110
|
+
], ngImport: i0, template: "@if (label()) {\r\n<label class=\"input-label\">{{ label() }}</label>\r\n}\r\n\r\n<nz-input-group [class.has-error]=\"$any(error())\" [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"suffixTemplate\">\r\n <input nz-input [type]=\"inputType()\" [placeholder]=\"$any(placeholder())\" [disabled]=\"disabled\" [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\" (blur)=\"onTouched()\" [nzSize]=\"$any(size())\" />\r\n</nz-input-group>\r\n\r\n<ng-template #prefixTemplate>\r\n @if (prefix()) {\r\n <span nz-icon [nzType]=\"$any(prefix())\"></span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #suffixTemplate>\r\n @if (type() === 'password') {\r\n <span nz-icon [nzType]=\"passwordVisible() ? 'eye-invisible' : 'eye'\" (click)=\"togglePasswordVisibility()\"\r\n class=\"password-toggle\"></span>\r\n }\r\n @if (type() !== 'password' && suffix()) {\r\n <span nz-icon [nzType]=\"$any(suffix())\"></span>\r\n }\r\n</ng-template>", styles: [":host{display:block;width:100%}.input-label{display:block;margin-bottom:8px;font-size:14px;color:#262626;font-weight:500}.password-toggle{cursor:pointer;color:#00000073}.password-toggle:hover{color:#000000d9}nz-input-group{width:100%}.has-error ::ng-deep .ant-input,.has-error ::ng-deep .ant-input-affix-wrapper{border-color:#ff4d4f}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i2$1.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzVariant", "nzSize", "nzStepperless", "nzStatus", "disabled", "readonly"], exportAs: ["nzInput"] }, { kind: "component", type: i2$1.NzInputGroupComponent, selector: "nz-input-group", inputs: ["nzAddOnBeforeIcon", "nzAddOnAfterIcon", "nzPrefixIcon", "nzSuffixIcon", "nzAddOnBefore", "nzAddOnAfter", "nzPrefix", "nzStatus", "nzSuffix", "nzSize", "nzSearch"], exportAs: ["nzInputGroup"] }, { kind: "directive", type: i2$1.NzInputGroupWhitSuffixOrPrefixDirective, selector: "nz-input-group[nzSuffix], nz-input-group[nzPrefix]" }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }] }); }
|
|
111
|
+
}
|
|
112
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcInputComponent, decorators: [{
|
|
113
|
+
type: Component,
|
|
114
|
+
args: [{ selector: 'cc-input', standalone: true, imports: [
|
|
115
|
+
CommonModule,
|
|
116
|
+
FormsModule,
|
|
117
|
+
NzInputModule,
|
|
118
|
+
NzIconModule
|
|
119
|
+
], providers: [
|
|
120
|
+
{
|
|
121
|
+
provide: NG_VALUE_ACCESSOR,
|
|
122
|
+
useExisting: forwardRef(() => CcInputComponent),
|
|
123
|
+
multi: true
|
|
124
|
+
}
|
|
125
|
+
], template: "@if (label()) {\r\n<label class=\"input-label\">{{ label() }}</label>\r\n}\r\n\r\n<nz-input-group [class.has-error]=\"$any(error())\" [nzPrefix]=\"prefixTemplate\" [nzSuffix]=\"suffixTemplate\">\r\n <input nz-input [type]=\"inputType()\" [placeholder]=\"$any(placeholder())\" [disabled]=\"disabled\" [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\" (blur)=\"onTouched()\" [nzSize]=\"$any(size())\" />\r\n</nz-input-group>\r\n\r\n<ng-template #prefixTemplate>\r\n @if (prefix()) {\r\n <span nz-icon [nzType]=\"$any(prefix())\"></span>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #suffixTemplate>\r\n @if (type() === 'password') {\r\n <span nz-icon [nzType]=\"passwordVisible() ? 'eye-invisible' : 'eye'\" (click)=\"togglePasswordVisibility()\"\r\n class=\"password-toggle\"></span>\r\n }\r\n @if (type() !== 'password' && suffix()) {\r\n <span nz-icon [nzType]=\"$any(suffix())\"></span>\r\n }\r\n</ng-template>", styles: [":host{display:block;width:100%}.input-label{display:block;margin-bottom:8px;font-size:14px;color:#262626;font-weight:500}.password-toggle{cursor:pointer;color:#00000073}.password-toggle:hover{color:#000000d9}nz-input-group{width:100%}.has-error ::ng-deep .ant-input,.has-error ::ng-deep .ant-input-affix-wrapper{border-color:#ff4d4f}\n"] }]
|
|
126
|
+
}], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], error: [{ type: i0.Input, args: [{ isSignal: true, alias: "error", required: false }] }], disabled: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], suffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffix", required: false }] }] } });
|
|
129
|
+
|
|
130
|
+
class CcSelectComponent {
|
|
131
|
+
constructor() {
|
|
132
|
+
this.options = input([], ...(ngDevMode ? [{ debugName: "options" }] : []));
|
|
133
|
+
this.placeholder = input('Seleccionar opción', ...(ngDevMode ? [{ debugName: "placeholder" }] : []));
|
|
134
|
+
this.label = input('', ...(ngDevMode ? [{ debugName: "label" }] : []));
|
|
135
|
+
this.size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : []));
|
|
136
|
+
this.allowClear = input(true, ...(ngDevMode ? [{ debugName: "allowClear" }] : []));
|
|
137
|
+
this.showSearch = input(false, ...(ngDevMode ? [{ debugName: "showSearch" }] : []));
|
|
138
|
+
this._disabled = signal(false, ...(ngDevMode ? [{ debugName: "_disabled" }] : []));
|
|
139
|
+
this.onChange = () => { };
|
|
140
|
+
this.onTouched = () => { };
|
|
141
|
+
}
|
|
142
|
+
set disabled(value) { this._disabled.set(value); }
|
|
143
|
+
get disabled() { return this._disabled(); }
|
|
144
|
+
onValueChange(value) {
|
|
145
|
+
this.value = value;
|
|
146
|
+
this.onChange(value);
|
|
147
|
+
this.onTouched();
|
|
148
|
+
}
|
|
149
|
+
writeValue(value) {
|
|
150
|
+
this.value = value;
|
|
151
|
+
}
|
|
152
|
+
registerOnChange(fn) {
|
|
153
|
+
this.onChange = fn;
|
|
154
|
+
}
|
|
155
|
+
registerOnTouched(fn) {
|
|
156
|
+
this.onTouched = fn;
|
|
157
|
+
}
|
|
158
|
+
setDisabledState(isDisabled) {
|
|
159
|
+
this._disabled.set(isDisabled);
|
|
160
|
+
}
|
|
161
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
162
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: CcSelectComponent, isStandalone: true, selector: "cc-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, allowClear: { classPropertyName: "allowClear", publicName: "allowClear", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null } }, providers: [
|
|
163
|
+
{
|
|
164
|
+
provide: NG_VALUE_ACCESSOR,
|
|
165
|
+
useExisting: forwardRef(() => CcSelectComponent),
|
|
166
|
+
multi: true
|
|
167
|
+
}
|
|
168
|
+
], ngImport: i0, template: "<div class=\"cc-select-wrapper\">\r\n <nz-select class=\"cerca-select\" [nzSize]=\"$any(size())\" [nzPlaceHolder]=\"$any(placeholder())\"\r\n [nzDisabled]=\"disabled\" [nzAllowClear]=\"$any(allowClear())\" [nzShowSearch]=\"$any(showSearch())\"\r\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\r\n <nz-option *ngFor=\"let option of options()\" [nzValue]=\"option.value\" [nzLabel]=\"option.label\">\r\n </nz-option>\r\n </nz-select>\r\n</div>", styles: [".cc-select-wrapper{width:100%}:host ::ng-deep .cerca-select{width:100%}:host ::ng-deep .cerca-select .ant-select-selector{min-height:44px!important;border-radius:var(--radius-md)!important;font-family:var(--font-family-base)!important;transition:all .2s cubic-bezier(.4,0,.2,1)!important}:host ::ng-deep .cerca-select .ant-select-selector:focus,:host ::ng-deep .cerca-select .ant-select-selector:focus-within{box-shadow:0 0 0 3px var(--color-focus-ring)!important;border-color:var(--color-brand)!important}:host ::ng-deep .cerca-select:hover .ant-select-selector{border-color:var(--color-brand)!important}:host ::ng-deep .cerca-select.ant-select-disabled .ant-select-selector{background-color:var(--color-bg-secondary)!important;cursor:not-allowed!important;opacity:.7!important}:host ::ng-deep .ant-select-dropdown{border-radius:var(--radius-md)!important;box-shadow:var(--shadow-lg)!important}:host ::ng-deep .ant-select-dropdown .ant-select-item{min-height:40px!important;padding:var(--space-2) var(--space-3)!important;transition:background-color .15s ease!important}:host ::ng-deep .ant-select-dropdown .ant-select-item:hover{background-color:var(--color-bg-hover)!important}:host ::ng-deep .ant-select-dropdown .ant-select-item.ant-select-item-option-selected{background-color:var(--color-brand-subtle)!important;color:var(--color-brand)!important;font-weight:var(--font-weight-medium)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzVariant", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzPrefix", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus", "nzOnClear"], exportAs: ["nzSelect"] }, { kind: "component", type: NzOptionComponent, selector: "nz-option", inputs: ["nzTitle", "nzLabel", "nzValue", "nzKey", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }] }); }
|
|
169
|
+
}
|
|
170
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcSelectComponent, decorators: [{
|
|
171
|
+
type: Component,
|
|
172
|
+
args: [{ selector: 'cc-select', standalone: true, imports: [CommonModule, FormsModule, NzSelectComponent, NzOptionComponent], providers: [
|
|
173
|
+
{
|
|
174
|
+
provide: NG_VALUE_ACCESSOR,
|
|
175
|
+
useExisting: forwardRef(() => CcSelectComponent),
|
|
176
|
+
multi: true
|
|
177
|
+
}
|
|
178
|
+
], template: "<div class=\"cc-select-wrapper\">\r\n <nz-select class=\"cerca-select\" [nzSize]=\"$any(size())\" [nzPlaceHolder]=\"$any(placeholder())\"\r\n [nzDisabled]=\"disabled\" [nzAllowClear]=\"$any(allowClear())\" [nzShowSearch]=\"$any(showSearch())\"\r\n [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\">\r\n <nz-option *ngFor=\"let option of options()\" [nzValue]=\"option.value\" [nzLabel]=\"option.label\">\r\n </nz-option>\r\n </nz-select>\r\n</div>", styles: [".cc-select-wrapper{width:100%}:host ::ng-deep .cerca-select{width:100%}:host ::ng-deep .cerca-select .ant-select-selector{min-height:44px!important;border-radius:var(--radius-md)!important;font-family:var(--font-family-base)!important;transition:all .2s cubic-bezier(.4,0,.2,1)!important}:host ::ng-deep .cerca-select .ant-select-selector:focus,:host ::ng-deep .cerca-select .ant-select-selector:focus-within{box-shadow:0 0 0 3px var(--color-focus-ring)!important;border-color:var(--color-brand)!important}:host ::ng-deep .cerca-select:hover .ant-select-selector{border-color:var(--color-brand)!important}:host ::ng-deep .cerca-select.ant-select-disabled .ant-select-selector{background-color:var(--color-bg-secondary)!important;cursor:not-allowed!important;opacity:.7!important}:host ::ng-deep .ant-select-dropdown{border-radius:var(--radius-md)!important;box-shadow:var(--shadow-lg)!important}:host ::ng-deep .ant-select-dropdown .ant-select-item{min-height:40px!important;padding:var(--space-2) var(--space-3)!important;transition:background-color .15s ease!important}:host ::ng-deep .ant-select-dropdown .ant-select-item:hover{background-color:var(--color-bg-hover)!important}:host ::ng-deep .ant-select-dropdown .ant-select-item.ant-select-item-option-selected{background-color:var(--color-brand-subtle)!important;color:var(--color-brand)!important;font-weight:var(--font-weight-medium)!important}\n"] }]
|
|
179
|
+
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], allowClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowClear", required: false }] }], showSearch: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSearch", required: false }] }], disabled: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}] } });
|
|
182
|
+
|
|
183
|
+
class CcBadgeComponent {
|
|
184
|
+
constructor() {
|
|
185
|
+
this.variant = 'neutral';
|
|
186
|
+
this.type = 'subtle';
|
|
187
|
+
}
|
|
188
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
189
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcBadgeComponent, isStandalone: true, selector: "cc-badge", inputs: { variant: "variant", type: "type" }, ngImport: i0, template: "<span class=\"cc-badge\" [ngClass]=\"[variant, type]\">\r\n <ng-content></ng-content>\r\n</span>", styles: [".cc-badge{display:inline-flex;align-items:center;justify-content:center;padding:var(--badge-padding-v) var(--badge-padding-h);border-radius:var(--badge-radius);font-size:var(--badge-font-size);font-weight:var(--badge-font-weight);line-height:1;white-space:nowrap;border:1px solid transparent}.cc-badge.success.filled{background-color:var(--color-success-500);color:#fff}.cc-badge.success.subtle{background-color:var(--badge-success-bg);color:var(--badge-success-text);border-color:var(--badge-success-border)}.cc-badge.success.outline{background-color:transparent;color:var(--badge-success-text);border-color:var(--badge-success-border)}.cc-badge.warning.filled{background-color:var(--color-warning-500);color:#fff}.cc-badge.warning.subtle{background-color:var(--badge-warning-bg);color:var(--badge-warning-text);border-color:var(--badge-warning-border)}.cc-badge.warning.outline{background-color:transparent;color:var(--badge-warning-text);border-color:var(--badge-warning-border)}.cc-badge.error.filled{background-color:var(--color-error-500);color:#fff}.cc-badge.error.subtle{background-color:var(--badge-error-bg);color:var(--badge-error-text);border-color:var(--badge-error-border)}.cc-badge.error.outline{background-color:transparent;color:var(--badge-error-text);border-color:var(--badge-error-border)}.cc-badge.info.filled{background-color:var(--color-info-500);color:#fff}.cc-badge.info.subtle{background-color:var(--badge-info-bg);color:var(--badge-info-text);border-color:var(--badge-info-border)}.cc-badge.info.outline{background-color:transparent;color:var(--badge-info-text);border-color:var(--badge-info-border)}.cc-badge.neutral.filled{background-color:var(--color-text-primary);color:var(--color-bg-primary)}.cc-badge.neutral.subtle{background-color:var(--badge-neutral-bg);color:var(--badge-neutral-text);border-color:var(--badge-neutral-border)}.cc-badge.neutral.outline{background-color:transparent;color:var(--badge-neutral-text);border-color:var(--badge-neutral-border)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
190
|
+
}
|
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcBadgeComponent, decorators: [{
|
|
192
|
+
type: Component,
|
|
193
|
+
args: [{ selector: 'cc-badge', standalone: true, imports: [CommonModule], template: "<span class=\"cc-badge\" [ngClass]=\"[variant, type]\">\r\n <ng-content></ng-content>\r\n</span>", styles: [".cc-badge{display:inline-flex;align-items:center;justify-content:center;padding:var(--badge-padding-v) var(--badge-padding-h);border-radius:var(--badge-radius);font-size:var(--badge-font-size);font-weight:var(--badge-font-weight);line-height:1;white-space:nowrap;border:1px solid transparent}.cc-badge.success.filled{background-color:var(--color-success-500);color:#fff}.cc-badge.success.subtle{background-color:var(--badge-success-bg);color:var(--badge-success-text);border-color:var(--badge-success-border)}.cc-badge.success.outline{background-color:transparent;color:var(--badge-success-text);border-color:var(--badge-success-border)}.cc-badge.warning.filled{background-color:var(--color-warning-500);color:#fff}.cc-badge.warning.subtle{background-color:var(--badge-warning-bg);color:var(--badge-warning-text);border-color:var(--badge-warning-border)}.cc-badge.warning.outline{background-color:transparent;color:var(--badge-warning-text);border-color:var(--badge-warning-border)}.cc-badge.error.filled{background-color:var(--color-error-500);color:#fff}.cc-badge.error.subtle{background-color:var(--badge-error-bg);color:var(--badge-error-text);border-color:var(--badge-error-border)}.cc-badge.error.outline{background-color:transparent;color:var(--badge-error-text);border-color:var(--badge-error-border)}.cc-badge.info.filled{background-color:var(--color-info-500);color:#fff}.cc-badge.info.subtle{background-color:var(--badge-info-bg);color:var(--badge-info-text);border-color:var(--badge-info-border)}.cc-badge.info.outline{background-color:transparent;color:var(--badge-info-text);border-color:var(--badge-info-border)}.cc-badge.neutral.filled{background-color:var(--color-text-primary);color:var(--color-bg-primary)}.cc-badge.neutral.subtle{background-color:var(--badge-neutral-bg);color:var(--badge-neutral-text);border-color:var(--badge-neutral-border)}.cc-badge.neutral.outline{background-color:transparent;color:var(--badge-neutral-text);border-color:var(--badge-neutral-border)}\n"] }]
|
|
194
|
+
}], propDecorators: { variant: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], type: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}] } });
|
|
199
|
+
|
|
200
|
+
class CcLabelComponent {
|
|
201
|
+
constructor() {
|
|
202
|
+
this.text = '';
|
|
203
|
+
this.for = '';
|
|
204
|
+
this.required = false;
|
|
205
|
+
this.error = false;
|
|
206
|
+
}
|
|
207
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
208
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcLabelComponent, isStandalone: true, selector: "cc-label", inputs: { text: "text", for: "for", required: "required", error: "error" }, ngImport: i0, template: "<label [attr.for]=\"for\" class=\"cc-label\" [class.has-error]=\"error\">\r\n {{ text }}\r\n <span *ngIf=\"required\" class=\"required-indicator\" aria-hidden=\"true\">*</span>\r\n</label>", styles: [".cc-label{display:block;font-size:var(--label-font-size);font-weight:var(--label-font-weight);color:var(--label-color);margin-bottom:var(--label-margin-bottom);-webkit-user-select:none;user-select:none}.cc-label .required-indicator{color:var(--label-required-color);margin-left:var(--space-0-5)}.cc-label.has-error{color:var(--color-error-600)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
209
|
+
}
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcLabelComponent, decorators: [{
|
|
211
|
+
type: Component,
|
|
212
|
+
args: [{ selector: 'cc-label', standalone: true, imports: [CommonModule], template: "<label [attr.for]=\"for\" class=\"cc-label\" [class.has-error]=\"error\">\r\n {{ text }}\r\n <span *ngIf=\"required\" class=\"required-indicator\" aria-hidden=\"true\">*</span>\r\n</label>", styles: [".cc-label{display:block;font-size:var(--label-font-size);font-weight:var(--label-font-weight);color:var(--label-color);margin-bottom:var(--label-margin-bottom);-webkit-user-select:none;user-select:none}.cc-label .required-indicator{color:var(--label-required-color);margin-left:var(--space-0-5)}.cc-label.has-error{color:var(--color-error-600)}\n"] }]
|
|
213
|
+
}], propDecorators: { text: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], for: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], required: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], error: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}] } });
|
|
222
|
+
|
|
223
|
+
class CcIconComponent {
|
|
224
|
+
constructor() {
|
|
225
|
+
this.name = '';
|
|
226
|
+
this.size = 'md';
|
|
227
|
+
this.color = 'currentColor';
|
|
228
|
+
}
|
|
229
|
+
get iconClass() {
|
|
230
|
+
return `icon-${this.size}`;
|
|
231
|
+
}
|
|
232
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
233
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcIconComponent, isStandalone: true, selector: "cc-icon", inputs: { name: "name", size: "size", color: "color" }, ngImport: i0, template: "<i class=\"cc-icon\" [ngClass]=\"iconClass\" [style.color]=\"color\" aria-hidden=\"true\">\r\n {{ name }}\r\n</i>", styles: [".cc-icon{display:inline-flex;align-items:center;justify-content:center;font-family:Material Symbols Outlined;font-weight:400;font-style:normal;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}.cc-icon.icon-xs{font-size:16px;width:16px;height:16px}.cc-icon.icon-sm{font-size:20px;width:20px;height:20px}.cc-icon.icon-md{font-size:24px;width:24px;height:24px}.cc-icon.icon-lg{font-size:32px;width:32px;height:32px}.cc-icon.icon-xl{font-size:40px;width:40px;height:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
234
|
+
}
|
|
235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcIconComponent, decorators: [{
|
|
236
|
+
type: Component,
|
|
237
|
+
args: [{ selector: 'cc-icon', standalone: true, imports: [CommonModule], template: "<i class=\"cc-icon\" [ngClass]=\"iconClass\" [style.color]=\"color\" aria-hidden=\"true\">\r\n {{ name }}\r\n</i>", styles: [".cc-icon{display:inline-flex;align-items:center;justify-content:center;font-family:Material Symbols Outlined;font-weight:400;font-style:normal;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}.cc-icon.icon-xs{font-size:16px;width:16px;height:16px}.cc-icon.icon-sm{font-size:20px;width:20px;height:20px}.cc-icon.icon-md{font-size:24px;width:24px;height:24px}.cc-icon.icon-lg{font-size:32px;width:32px;height:32px}.cc-icon.icon-xl{font-size:40px;width:40px;height:40px}\n"] }]
|
|
238
|
+
}], propDecorators: { name: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}], size: [{
|
|
241
|
+
type: Input
|
|
242
|
+
}], color: [{
|
|
243
|
+
type: Input
|
|
244
|
+
}] } });
|
|
245
|
+
|
|
246
|
+
class CcCardComponent {
|
|
247
|
+
constructor() {
|
|
248
|
+
this.title = input('', ...(ngDevMode ? [{ debugName: "title" }] : []));
|
|
249
|
+
this.extra = input(undefined, ...(ngDevMode ? [{ debugName: "extra" }] : []));
|
|
250
|
+
this.loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
251
|
+
this.bordered = input(true, ...(ngDevMode ? [{ debugName: "bordered" }] : []));
|
|
252
|
+
this.padding = input('24px', ...(ngDevMode ? [{ debugName: "padding" }] : []));
|
|
253
|
+
}
|
|
254
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
255
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: CcCardComponent, isStandalone: true, selector: "cc-card", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, extra: { classPropertyName: "extra", publicName: "extra", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<nz-card [nzTitle]=\"$any(title())\" [nzExtra]=\"extra()\" [nzLoading]=\"$any(loading())\" [nzBordered]=\"$any(bordered())\">\r\n <ng-content></ng-content>\r\n</nz-card>", styles: [":host ::ng-deep .cerca-card{border-radius:var(--radius-lg)!important;box-shadow:var(--shadow-md)!important;transition:all .2s cubic-bezier(.4,0,.2,1)!important}:host ::ng-deep .cerca-card .ant-card-head{border-bottom-color:var(--color-border-subtle)!important;font-family:var(--font-family-base)!important;font-weight:var(--font-weight-semibold)!important}:host ::ng-deep .cerca-card.ant-card-hoverable:hover{box-shadow:var(--shadow-lg)!important;transform:translateY(-2px)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: NzCardModule }, { kind: "component", type: i1$3.NzCardComponent, selector: "nz-card", inputs: ["nzBordered", "nzLoading", "nzHoverable", "nzBodyStyle", "nzCover", "nzActions", "nzType", "nzSize", "nzTitle", "nzExtra"], exportAs: ["nzCard"] }] }); }
|
|
256
|
+
}
|
|
257
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcCardComponent, decorators: [{
|
|
258
|
+
type: Component,
|
|
259
|
+
args: [{ selector: 'cc-card', standalone: true, imports: [CommonModule, NzCardModule], template: "<nz-card [nzTitle]=\"$any(title())\" [nzExtra]=\"extra()\" [nzLoading]=\"$any(loading())\" [nzBordered]=\"$any(bordered())\">\r\n <ng-content></ng-content>\r\n</nz-card>", styles: [":host ::ng-deep .cerca-card{border-radius:var(--radius-lg)!important;box-shadow:var(--shadow-md)!important;transition:all .2s cubic-bezier(.4,0,.2,1)!important}:host ::ng-deep .cerca-card .ant-card-head{border-bottom-color:var(--color-border-subtle)!important;font-family:var(--font-family-base)!important;font-weight:var(--font-weight-semibold)!important}:host ::ng-deep .cerca-card.ant-card-hoverable:hover{box-shadow:var(--shadow-lg)!important;transform:translateY(-2px)!important}\n"] }]
|
|
260
|
+
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], extra: [{ type: i0.Input, args: [{ isSignal: true, alias: "extra", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }] } });
|
|
261
|
+
|
|
262
|
+
class CcFormFieldComponent {
|
|
263
|
+
constructor() {
|
|
264
|
+
this.label = '';
|
|
265
|
+
this.hint = '';
|
|
266
|
+
this.errorMessage = null;
|
|
267
|
+
this.required = false;
|
|
268
|
+
this.error = false;
|
|
269
|
+
this.for = '';
|
|
270
|
+
}
|
|
271
|
+
get hasError() {
|
|
272
|
+
return !!this.errorMessage;
|
|
273
|
+
}
|
|
274
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
275
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcFormFieldComponent, isStandalone: true, selector: "cc-form-field", inputs: { label: "label", hint: "hint", errorMessage: "errorMessage", required: "required", error: "error", for: "for" }, ngImport: i0, template: "<div class=\"cc-form-field\" [class.has-error]=\"hasError\">\r\n <cc-label *ngIf=\"label\" [text]=\"label\" [for]=\"for\" [required]=\"required\" [error]=\"hasError\">\r\n </cc-label>\r\n\r\n <div class=\"cc-form-field-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div class=\"cc-form-field-info\" *ngIf=\"hint || errorMessage\">\r\n <span class=\"cc-form-field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</span>\r\n <span class=\"cc-form-field-hint\" *ngIf=\"hint && !errorMessage\">{{ hint }}</span>\r\n </div>\r\n</div>", styles: [".cc-form-field{display:flex;flex-direction:column;margin-bottom:var(--form-field-margin-bottom);width:100%}.cc-form-field .cc-form-field-content{position:relative;display:flex;flex-direction:column}.cc-form-field .cc-form-field-info{margin-top:var(--form-field-message-margin);min-height:1.25rem}.cc-form-field .cc-form-field-error{color:var(--form-field-error-color);font-size:var(--form-field-message-font-size);font-weight:var(--font-weight-medium);display:block;animation:fadeIn .2s ease-out}.cc-form-field .cc-form-field-hint{color:var(--form-field-message-color);font-size:var(--form-field-message-font-size);display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CcLabelComponent, selector: "cc-label", inputs: ["text", "for", "required", "error"] }] }); }
|
|
276
|
+
}
|
|
277
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcFormFieldComponent, decorators: [{
|
|
278
|
+
type: Component,
|
|
279
|
+
args: [{ selector: 'cc-form-field', standalone: true, imports: [CommonModule, CcLabelComponent], template: "<div class=\"cc-form-field\" [class.has-error]=\"hasError\">\r\n <cc-label *ngIf=\"label\" [text]=\"label\" [for]=\"for\" [required]=\"required\" [error]=\"hasError\">\r\n </cc-label>\r\n\r\n <div class=\"cc-form-field-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div class=\"cc-form-field-info\" *ngIf=\"hint || errorMessage\">\r\n <span class=\"cc-form-field-error\" *ngIf=\"errorMessage\">{{ errorMessage }}</span>\r\n <span class=\"cc-form-field-hint\" *ngIf=\"hint && !errorMessage\">{{ hint }}</span>\r\n </div>\r\n</div>", styles: [".cc-form-field{display:flex;flex-direction:column;margin-bottom:var(--form-field-margin-bottom);width:100%}.cc-form-field .cc-form-field-content{position:relative;display:flex;flex-direction:column}.cc-form-field .cc-form-field-info{margin-top:var(--form-field-message-margin);min-height:1.25rem}.cc-form-field .cc-form-field-error{color:var(--form-field-error-color);font-size:var(--form-field-message-font-size);font-weight:var(--font-weight-medium);display:block;animation:fadeIn .2s ease-out}.cc-form-field .cc-form-field-hint{color:var(--form-field-message-color);font-size:var(--form-field-message-font-size);display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
280
|
+
}], propDecorators: { label: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], hint: [{
|
|
283
|
+
type: Input
|
|
284
|
+
}], errorMessage: [{
|
|
285
|
+
type: Input
|
|
286
|
+
}], required: [{
|
|
287
|
+
type: Input
|
|
288
|
+
}], error: [{
|
|
289
|
+
type: Input
|
|
290
|
+
}], for: [{
|
|
291
|
+
type: Input
|
|
292
|
+
}] } });
|
|
293
|
+
|
|
294
|
+
class CcSearchBarComponent {
|
|
295
|
+
constructor() {
|
|
296
|
+
this.placeholder = 'Buscar...';
|
|
297
|
+
this.debounce = 300;
|
|
298
|
+
this.loading = false;
|
|
299
|
+
this.variant = 'standalone';
|
|
300
|
+
this.search = new EventEmitter();
|
|
301
|
+
this.searchQuery = '';
|
|
302
|
+
this.searchSubject = new Subject();
|
|
303
|
+
this.subscription = new Subscription();
|
|
304
|
+
}
|
|
305
|
+
ngOnInit() {
|
|
306
|
+
this.subscription = this.searchSubject
|
|
307
|
+
.pipe(debounceTime(this.debounce), distinctUntilChanged())
|
|
308
|
+
.subscribe(query => {
|
|
309
|
+
this.search.emit(query);
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
onQueryChange() {
|
|
313
|
+
this.searchSubject.next(this.searchQuery);
|
|
314
|
+
}
|
|
315
|
+
clear() {
|
|
316
|
+
this.searchQuery = '';
|
|
317
|
+
this.onQueryChange();
|
|
318
|
+
}
|
|
319
|
+
ngOnDestroy() {
|
|
320
|
+
this.subscription.unsubscribe();
|
|
321
|
+
}
|
|
322
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcSearchBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
323
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcSearchBarComponent, isStandalone: true, selector: "cc-search-bar", inputs: { placeholder: "placeholder", debounce: "debounce", loading: "loading", variant: "variant" }, outputs: { search: "search" }, ngImport: i0, template: "<div class=\"cc-search-bar\" [ngClass]=\"variant\">\r\n <div class=\"cc-search-icon-wrapper\">\r\n <cc-icon name=\"search\" size=\"sm\" *ngIf=\"!loading\"></cc-icon>\r\n <div class=\"cc-search-loader\" *ngIf=\"loading\"></div>\r\n </div>\r\n\r\n <input type=\"text\" class=\"cc-search-input\" [placeholder]=\"placeholder\" [(ngModel)]=\"searchQuery\"\r\n (ngModelChange)=\"onQueryChange()\">\r\n\r\n <button class=\"cc-search-clear\" *ngIf=\"searchQuery && !loading\" (click)=\"clear()\" type=\"button\">\r\n <cc-icon name=\"close\" size=\"xs\"></cc-icon>\r\n </button>\r\n</div>", styles: [".cc-search-bar{display:flex;align-items:center;gap:var(--space-2);height:var(--input-height-md);padding:0 var(--space-3);border-radius:var(--radius-md);transition:all .15s ease-in-out;width:100%}.cc-search-bar.standalone{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);box-shadow:var(--shadow-sm)}.cc-search-bar.standalone:focus-within{border-color:var(--color-brand-primary);box-shadow:var(--shadow-focus)}.cc-search-bar.header{background-color:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff}.cc-search-bar.header .cc-search-input{color:#fff}.cc-search-bar.header .cc-search-input::placeholder{color:#fff9}.cc-search-bar.header .cc-search-icon-wrapper{color:#fffc}.cc-search-icon-wrapper{display:flex;color:var(--color-text-muted)}.cc-search-input{flex:1;border:none;background:transparent;font-size:var(--font-size-md);color:var(--color-text-primary);outline:none;padding:0}.cc-search-input::placeholder{color:var(--color-text-muted)}.cc-search-clear{display:flex;background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-full);transition:background-color .15s ease}.cc-search-clear:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.cc-search-loader{width:18px;height:18px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CcIconComponent, selector: "cc-icon", inputs: ["name", "size", "color"] }] }); }
|
|
324
|
+
}
|
|
325
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcSearchBarComponent, decorators: [{
|
|
326
|
+
type: Component,
|
|
327
|
+
args: [{ selector: 'cc-search-bar', standalone: true, imports: [CommonModule, FormsModule, CcIconComponent], template: "<div class=\"cc-search-bar\" [ngClass]=\"variant\">\r\n <div class=\"cc-search-icon-wrapper\">\r\n <cc-icon name=\"search\" size=\"sm\" *ngIf=\"!loading\"></cc-icon>\r\n <div class=\"cc-search-loader\" *ngIf=\"loading\"></div>\r\n </div>\r\n\r\n <input type=\"text\" class=\"cc-search-input\" [placeholder]=\"placeholder\" [(ngModel)]=\"searchQuery\"\r\n (ngModelChange)=\"onQueryChange()\">\r\n\r\n <button class=\"cc-search-clear\" *ngIf=\"searchQuery && !loading\" (click)=\"clear()\" type=\"button\">\r\n <cc-icon name=\"close\" size=\"xs\"></cc-icon>\r\n </button>\r\n</div>", styles: [".cc-search-bar{display:flex;align-items:center;gap:var(--space-2);height:var(--input-height-md);padding:0 var(--space-3);border-radius:var(--radius-md);transition:all .15s ease-in-out;width:100%}.cc-search-bar.standalone{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);box-shadow:var(--shadow-sm)}.cc-search-bar.standalone:focus-within{border-color:var(--color-brand-primary);box-shadow:var(--shadow-focus)}.cc-search-bar.header{background-color:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff}.cc-search-bar.header .cc-search-input{color:#fff}.cc-search-bar.header .cc-search-input::placeholder{color:#fff9}.cc-search-bar.header .cc-search-icon-wrapper{color:#fffc}.cc-search-icon-wrapper{display:flex;color:var(--color-text-muted)}.cc-search-input{flex:1;border:none;background:transparent;font-size:var(--font-size-md);color:var(--color-text-primary);outline:none;padding:0}.cc-search-input::placeholder{color:var(--color-text-muted)}.cc-search-clear{display:flex;background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-full);transition:background-color .15s ease}.cc-search-clear:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.cc-search-loader{width:18px;height:18px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}\n"] }]
|
|
328
|
+
}], propDecorators: { placeholder: [{
|
|
329
|
+
type: Input
|
|
330
|
+
}], debounce: [{
|
|
331
|
+
type: Input
|
|
332
|
+
}], loading: [{
|
|
333
|
+
type: Input
|
|
334
|
+
}], variant: [{
|
|
335
|
+
type: Input
|
|
336
|
+
}], search: [{
|
|
337
|
+
type: Output
|
|
338
|
+
}] } });
|
|
339
|
+
|
|
340
|
+
class CcHeaderComponent {
|
|
341
|
+
constructor() {
|
|
342
|
+
this.notificationsCount = 0;
|
|
343
|
+
this.showMenuButton = true;
|
|
344
|
+
this.hasLogoContent = true; // Added missing property
|
|
345
|
+
this.toggleSidebar = new EventEmitter();
|
|
346
|
+
this.userClick = new EventEmitter();
|
|
347
|
+
this.notificationClick = new EventEmitter();
|
|
348
|
+
this.userAction = new EventEmitter();
|
|
349
|
+
}
|
|
350
|
+
onUserClick() {
|
|
351
|
+
this.userClick.emit();
|
|
352
|
+
this.userAction.emit('profile');
|
|
353
|
+
}
|
|
354
|
+
get initials() {
|
|
355
|
+
if (!this.user?.name)
|
|
356
|
+
return '?';
|
|
357
|
+
return this.user.name
|
|
358
|
+
.split(' ')
|
|
359
|
+
.map(n => n[0])
|
|
360
|
+
.join('')
|
|
361
|
+
.toUpperCase()
|
|
362
|
+
.slice(0, 2);
|
|
363
|
+
}
|
|
364
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
365
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcHeaderComponent, isStandalone: true, selector: "cc-header", inputs: { user: "user", notificationsCount: "notificationsCount", showMenuButton: "showMenuButton", hasLogoContent: "hasLogoContent" }, outputs: { toggleSidebar: "toggleSidebar", userClick: "userClick", notificationClick: "notificationClick", userAction: "userAction" }, ngImport: i0, template: "<header class=\"cc-header\">\r\n <div class=\"cc-header-left\">\r\n <button *ngIf=\"showMenuButton\" class=\"cc-header-menu-btn\" (click)=\"toggleSidebar.emit()\" type=\"button\">\r\n <cc-icon name=\"menu\" size=\"md\"></cc-icon>\r\n </button>\r\n\r\n <div class=\"cc-header-logo\">\r\n <ng-content select=\"[logo]\"></ng-content>\r\n <span class=\"cc-header-logo-fallback\" *ngIf=\"!hasLogoContent\">\r\n CERCA\r\n </span>\r\n </div>\r\n\r\n <div class=\"cc-header-breadcrumb\">\r\n <ng-content select=\"[breadcrumb]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"cc-header-right\">\r\n <button class=\"cc-header-action-btn\" (click)=\"notificationClick.emit()\">\r\n <cc-icon name=\"notifications\" size=\"md\"></cc-icon>\r\n <cc-badge *ngIf=\"notificationsCount > 0\" variant=\"error\" type=\"filled\" class=\"cc-header-badge\">\r\n {{ notificationsCount > 99 ? '99+' : notificationsCount }}\r\n </cc-badge>\r\n </button>\r\n\r\n <div class=\"cc-header-divider\"></div>\r\n\r\n <div class=\"cc-header-user\" (click)=\"onUserClick()\" *ngIf=\"user\">\r\n <div class=\"cc-header-user-info\">\r\n <span class=\"cc-header-user-name\">{{ user.name }}</span>\r\n <span class=\"cc-header-user-role\">{{ user.role }}</span>\r\n </div>\r\n\r\n <div class=\"cc-header-avatar\">\r\n <img *ngIf=\"user.avatarUrl\" [src]=\"user.avatarUrl\" [alt]=\"user.name\">\r\n <span *ngIf=\"!user.avatarUrl\">{{ initials }}</span>\r\n </div>\r\n\r\n <cc-icon name=\"expand_more\" size=\"sm\" class=\"cc-header-user-arrow\"></cc-icon>\r\n </div>\r\n </div>\r\n</header>", styles: [":root,[data-theme=light]{--color-bg-primary: #FFFFFF;--color-bg-secondary: #FAFAF9;--color-text-primary: #1C1917;--color-text-secondary: #57534E;--color-text-muted: #A8A29E;--color-border-subtle: #E7E5E4;--color-border-strong: #D6D3D1;--color-brand: #0284C7;--color-brand-hover: #0369A1;--color-focus-ring: rgba(2, 132, 199, .2);--color-success: #10B981;--color-danger: #F43F5E;--surface-glass-bg: rgba(255, 255, 255, .7);--surface-glass-border: rgba(255, 255, 255, .3);--surface-glass-blur: 12px;--surface-glass-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1);--font-heading-xl: 32px;--font-heading-lg: 24px;--font-heading-md: 20px;--font-body-lg: 18px;--font-body-md: 16px;--font-caption: 12px;--font-family-base: Inter, sans-serif;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 14px;--radius-xl: 18px;--radius-full: 9999px;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 32px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: calc(var(--space-4) * 2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .12)}[data-theme=dark]{--color-bg-primary: #1C1917;--color-bg-secondary: #292524;--color-text-primary: #FFFFFF;--color-text-secondary: #A8A29E;--color-text-muted: #78716C;--color-border-subtle: #44403C;--color-border-strong: #57534E;--color-brand: #0EA5E9;--color-brand-hover: #7DD3FC;--color-focus-ring: rgba(59, 130, 246, .5);--surface-glass-bg: rgba(15, 23, 42, .8);--surface-glass-border: rgba(255, 255, 255, .1);--surface-glass-blur: 16px;--surface-glass-shadow: 0 10px 15px -3px rgba(0, 0, 0, .3)}:root{--h1-size: var(--font-size-h1);--h1-weight: var(--font-weight-semibold);--h2-size: var(--font-size-h2);--h2-weight: var(--font-weight-semibold);--h3-size: var(--font-size-h3);--h3-weight: var(--font-weight-semibold);--body-size: var(--font-size-body);--body-weight: var(--font-weight-regular);--sm-size: var(--font-size-sm);--sm-weight: var(--font-weight-regular);--caption-size: var(--font-size-caption);--caption-weight: var(--font-weight-regular)}:root{--btn-height-md: 44px;--btn-radius: var(--radius-md);--btn-font-weight: var(--font-weight-medium);--btn-bg-primary: var(--color-brand);--btn-text-primary: #FFFFFF;--btn-shadow-default: var(--shadow-sm);--btn-shadow-hover: var(--shadow-md);--btn-transition: .15s ease;--btn-focus-ring: 0 0 0 2px var(--color-focus-ring)}:root{--card-bg: var(--color-bg-primary);--card-radius: var(--radius-lg);--card-shadow: var(--shadow-sm);--card-shadow-hover: var(--shadow-md)}:root{--input-height-md: 44px;--input-bg: var(--color-bg-primary);--input-radius: var(--radius-md);--input-border-default: var(--color-border-subtle);--input-border-hover: var(--color-border-strong);--input-border-focus: var(--color-brand);--input-border-error: var(--color-danger);--input-transition: .12s ease-in-out;--input-focus-ring: 0 0 0 3px var(--color-focus-ring);--input-error-ring: 0 0 0 3px rgba(239, 68, 68, .15)}.cc-badge-tokens{--badge-radius: var(--radius-sm);--badge-padding-v: var(--space-1);--badge-padding-h: var(--space-2);--badge-font-size: var(--font-size-xs);--badge-font-weight: var(--font-weight-medium);--badge-success-bg: #D1FAE5;--badge-success-text: #065F46;--badge-success-border: #A7F3D0;--badge-warning-bg: #FEF3C7;--badge-warning-text: #92400E;--badge-warning-border: #FDE68A;--badge-error-bg: #FFE4E6;--badge-error-text: #9F1239;--badge-error-border: #FECDD3;--badge-info-bg: var(--color-info-50);--badge-info-text: var(--color-info-700);--badge-info-border: var(--color-info-200);--badge-neutral-bg: #F5F5F4;--badge-neutral-text: #44403C;--badge-neutral-border: #E7E5E4}.cc-label-tokens{--label-font-size: var(--font-size-sm);--label-font-weight: var(--font-weight-medium);--label-color: var(--color-text-secondary);--label-required-color: var(--color-error-500);--label-margin-bottom: var(--space-2)}.cc-select-tokens{--select-bg: var(--color-bg-primary);--select-border: var(--color-border-subtle);--select-border-hover: var(--color-border-strong);--select-border-focus: var(--color-brand-primary);--select-shadow-focus: var(--shadow-focus);--select-radius: var(--radius-md);--select-height: 44px;--select-padding-h: var(--space-4);--select-dropdown-bg: var(--color-bg-primary);--select-dropdown-shadow: var(--shadow-md);--select-dropdown-max-height: 240px;--select-option-padding: var(--space-3) var(--space-4);--select-option-hover: var(--color-bg-secondary);--select-option-selected-bg: var(--color-brand-50);--select-option-selected-text: var(--color-brand-primary)}.cc-form-field-tokens{--form-field-margin-bottom: var(--space-6);--form-field-label-margin: var(--space-2);--form-field-message-margin: var(--space-1);--form-field-message-font-size: var(--font-size-xs);--form-field-message-color: var(--color-text-muted);--form-field-error-color: var(--color-error-600)}.cc-header-tokens{--header-height: 72px;--header-bg: #FFFFFF;--header-border-color: #F5F5F4;--header-padding: 0 var(--space-6);--header-shadow: 0 1px 2px rgba(0, 0, 0, .05);--header-z-index: 100;--header-logo-height: 32px;--header-user-gap: var(--space-4)}.cc-sidebar-tokens{--sidebar-width: 280px;--sidebar-collapsed-width: 80px;--sidebar-bg: #1C1917;--sidebar-border-color: #292524;--sidebar-padding: var(--space-4);--sidebar-z-index: 101;--sidebar-transition: width .3s cubic-bezier(.4, 0, .2, 1);--sidebar-item-height: 48px;--sidebar-item-radius: var(--radius-lg);--sidebar-item-padding: 0 var(--space-4);--sidebar-item-gap: var(--space-3);--sidebar-accent-color: #0EA5E9;--sidebar-text-color: #FFFFFF;--sidebar-text-muted: #A8A29E}.cc-data-table-tokens{--table-bg: var(--color-bg-primary);--table-header-bg: var(--color-bg-secondary);--table-border-color: var(--color-border-subtle);--table-header-color: var(--color-text-muted);--table-row-hover: rgba(var(--color-brand-primary-rgb), .04);--table-cell-padding: var(--space-4);--table-font-size: var(--font-size-sm);--table-radius: var(--radius-lg)}.cc-modal-tokens{--modal-bg: var(--color-bg-primary);--modal-overlay-bg: rgba(0, 0, 0, .5);--modal-radius: var(--radius-xl);--modal-shadow: var(--shadow-xl);--modal-z-index: 1000;--modal-header-padding: var(--space-6);--modal-body-padding: var(--space-6);--modal-footer-padding: var(--space-4) var(--space-6);--modal-sm-width: 400px;--modal-md-width: 600px;--modal-lg-width: 900px}.cc-header{height:var(--header-height);background:var(--surface-glass-bg);backdrop-filter:blur(var(--surface-glass-blur));-webkit-backdrop-filter:blur(var(--surface-glass-blur));border-bottom:1px solid var(--surface-glass-border);padding:var(--header-padding);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:var(--surface-glass-shadow);transition:all .3s ease}.cc-header-left,.cc-header-right{display:flex;align-items:center;gap:var(--space-4)}.cc-header-menu-btn{background:transparent;border:none;color:var(--color-text-primary);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-md);display:flex;transition:background-color .15s ease}.cc-header-menu-btn:hover{background-color:var(--color-bg-secondary)}@media(min-width:1024px){.cc-header-menu-btn{display:none}}.cc-header-logo{display:flex;align-items:center;height:var(--header-logo-height)}.cc-header-logo .cc-header-logo-fallback{font-weight:var(--font-weight-bold);font-size:var(--font-size-xl);letter-spacing:-.025em;color:var(--color-brand-primary)}.cc-header-action-btn{position:relative;background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-full);display:flex;transition:all .15s ease}.cc-header-action-btn:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.cc-header-action-btn .cc-header-badge{position:absolute;top:4px;right:4px;font-size:10px;padding:2px 4px;min-width:16px;height:16px;display:flex;align-items:center;justify-content:center}.cc-header-divider{width:1px;height:24px;background-color:var(--color-border-subtle);margin:0 var(--space-2)}.cc-header-user{display:flex;align-items:center;gap:var(--space-3);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-lg);transition:background-color .15s ease}.cc-header-user:hover{background-color:var(--color-bg-secondary)}.cc-header-user-info{display:none;flex-direction:column;text-align:right}@media(min-width:768px){.cc-header-user-info{display:flex}}.cc-header-user-info .cc-header-user-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:1.2}.cc-header-user-info .cc-header-user-role{font-size:var(--font-size-xs);color:var(--color-text-muted)}.cc-header-avatar{width:36px;height:36px;border-radius:var(--radius-full);background:#0ea5e9;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);overflow:hidden;box-shadow:0 0 0 2px var(--header-bg),0 0 0 4px var(--color-border-subtle)}.cc-header-avatar img{width:100%;height:100%;object-fit:cover}.cc-header-user-arrow{color:var(--color-text-muted)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CcIconComponent, selector: "cc-icon", inputs: ["name", "size", "color"] }, { kind: "component", type: CcBadgeComponent, selector: "cc-badge", inputs: ["variant", "type"] }] }); }
|
|
366
|
+
}
|
|
367
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcHeaderComponent, decorators: [{
|
|
368
|
+
type: Component,
|
|
369
|
+
args: [{ selector: 'cc-header', standalone: true, imports: [CommonModule, CcIconComponent, CcBadgeComponent], template: "<header class=\"cc-header\">\r\n <div class=\"cc-header-left\">\r\n <button *ngIf=\"showMenuButton\" class=\"cc-header-menu-btn\" (click)=\"toggleSidebar.emit()\" type=\"button\">\r\n <cc-icon name=\"menu\" size=\"md\"></cc-icon>\r\n </button>\r\n\r\n <div class=\"cc-header-logo\">\r\n <ng-content select=\"[logo]\"></ng-content>\r\n <span class=\"cc-header-logo-fallback\" *ngIf=\"!hasLogoContent\">\r\n CERCA\r\n </span>\r\n </div>\r\n\r\n <div class=\"cc-header-breadcrumb\">\r\n <ng-content select=\"[breadcrumb]\"></ng-content>\r\n </div>\r\n </div>\r\n\r\n <div class=\"cc-header-right\">\r\n <button class=\"cc-header-action-btn\" (click)=\"notificationClick.emit()\">\r\n <cc-icon name=\"notifications\" size=\"md\"></cc-icon>\r\n <cc-badge *ngIf=\"notificationsCount > 0\" variant=\"error\" type=\"filled\" class=\"cc-header-badge\">\r\n {{ notificationsCount > 99 ? '99+' : notificationsCount }}\r\n </cc-badge>\r\n </button>\r\n\r\n <div class=\"cc-header-divider\"></div>\r\n\r\n <div class=\"cc-header-user\" (click)=\"onUserClick()\" *ngIf=\"user\">\r\n <div class=\"cc-header-user-info\">\r\n <span class=\"cc-header-user-name\">{{ user.name }}</span>\r\n <span class=\"cc-header-user-role\">{{ user.role }}</span>\r\n </div>\r\n\r\n <div class=\"cc-header-avatar\">\r\n <img *ngIf=\"user.avatarUrl\" [src]=\"user.avatarUrl\" [alt]=\"user.name\">\r\n <span *ngIf=\"!user.avatarUrl\">{{ initials }}</span>\r\n </div>\r\n\r\n <cc-icon name=\"expand_more\" size=\"sm\" class=\"cc-header-user-arrow\"></cc-icon>\r\n </div>\r\n </div>\r\n</header>", styles: [":root,[data-theme=light]{--color-bg-primary: #FFFFFF;--color-bg-secondary: #FAFAF9;--color-text-primary: #1C1917;--color-text-secondary: #57534E;--color-text-muted: #A8A29E;--color-border-subtle: #E7E5E4;--color-border-strong: #D6D3D1;--color-brand: #0284C7;--color-brand-hover: #0369A1;--color-focus-ring: rgba(2, 132, 199, .2);--color-success: #10B981;--color-danger: #F43F5E;--surface-glass-bg: rgba(255, 255, 255, .7);--surface-glass-border: rgba(255, 255, 255, .3);--surface-glass-blur: 12px;--surface-glass-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1);--font-heading-xl: 32px;--font-heading-lg: 24px;--font-heading-md: 20px;--font-body-lg: 18px;--font-body-md: 16px;--font-caption: 12px;--font-family-base: Inter, sans-serif;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 14px;--radius-xl: 18px;--radius-full: 9999px;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 32px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: calc(var(--space-4) * 2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .12)}[data-theme=dark]{--color-bg-primary: #1C1917;--color-bg-secondary: #292524;--color-text-primary: #FFFFFF;--color-text-secondary: #A8A29E;--color-text-muted: #78716C;--color-border-subtle: #44403C;--color-border-strong: #57534E;--color-brand: #0EA5E9;--color-brand-hover: #7DD3FC;--color-focus-ring: rgba(59, 130, 246, .5);--surface-glass-bg: rgba(15, 23, 42, .8);--surface-glass-border: rgba(255, 255, 255, .1);--surface-glass-blur: 16px;--surface-glass-shadow: 0 10px 15px -3px rgba(0, 0, 0, .3)}:root{--h1-size: var(--font-size-h1);--h1-weight: var(--font-weight-semibold);--h2-size: var(--font-size-h2);--h2-weight: var(--font-weight-semibold);--h3-size: var(--font-size-h3);--h3-weight: var(--font-weight-semibold);--body-size: var(--font-size-body);--body-weight: var(--font-weight-regular);--sm-size: var(--font-size-sm);--sm-weight: var(--font-weight-regular);--caption-size: var(--font-size-caption);--caption-weight: var(--font-weight-regular)}:root{--btn-height-md: 44px;--btn-radius: var(--radius-md);--btn-font-weight: var(--font-weight-medium);--btn-bg-primary: var(--color-brand);--btn-text-primary: #FFFFFF;--btn-shadow-default: var(--shadow-sm);--btn-shadow-hover: var(--shadow-md);--btn-transition: .15s ease;--btn-focus-ring: 0 0 0 2px var(--color-focus-ring)}:root{--card-bg: var(--color-bg-primary);--card-radius: var(--radius-lg);--card-shadow: var(--shadow-sm);--card-shadow-hover: var(--shadow-md)}:root{--input-height-md: 44px;--input-bg: var(--color-bg-primary);--input-radius: var(--radius-md);--input-border-default: var(--color-border-subtle);--input-border-hover: var(--color-border-strong);--input-border-focus: var(--color-brand);--input-border-error: var(--color-danger);--input-transition: .12s ease-in-out;--input-focus-ring: 0 0 0 3px var(--color-focus-ring);--input-error-ring: 0 0 0 3px rgba(239, 68, 68, .15)}.cc-badge-tokens{--badge-radius: var(--radius-sm);--badge-padding-v: var(--space-1);--badge-padding-h: var(--space-2);--badge-font-size: var(--font-size-xs);--badge-font-weight: var(--font-weight-medium);--badge-success-bg: #D1FAE5;--badge-success-text: #065F46;--badge-success-border: #A7F3D0;--badge-warning-bg: #FEF3C7;--badge-warning-text: #92400E;--badge-warning-border: #FDE68A;--badge-error-bg: #FFE4E6;--badge-error-text: #9F1239;--badge-error-border: #FECDD3;--badge-info-bg: var(--color-info-50);--badge-info-text: var(--color-info-700);--badge-info-border: var(--color-info-200);--badge-neutral-bg: #F5F5F4;--badge-neutral-text: #44403C;--badge-neutral-border: #E7E5E4}.cc-label-tokens{--label-font-size: var(--font-size-sm);--label-font-weight: var(--font-weight-medium);--label-color: var(--color-text-secondary);--label-required-color: var(--color-error-500);--label-margin-bottom: var(--space-2)}.cc-select-tokens{--select-bg: var(--color-bg-primary);--select-border: var(--color-border-subtle);--select-border-hover: var(--color-border-strong);--select-border-focus: var(--color-brand-primary);--select-shadow-focus: var(--shadow-focus);--select-radius: var(--radius-md);--select-height: 44px;--select-padding-h: var(--space-4);--select-dropdown-bg: var(--color-bg-primary);--select-dropdown-shadow: var(--shadow-md);--select-dropdown-max-height: 240px;--select-option-padding: var(--space-3) var(--space-4);--select-option-hover: var(--color-bg-secondary);--select-option-selected-bg: var(--color-brand-50);--select-option-selected-text: var(--color-brand-primary)}.cc-form-field-tokens{--form-field-margin-bottom: var(--space-6);--form-field-label-margin: var(--space-2);--form-field-message-margin: var(--space-1);--form-field-message-font-size: var(--font-size-xs);--form-field-message-color: var(--color-text-muted);--form-field-error-color: var(--color-error-600)}.cc-header-tokens{--header-height: 72px;--header-bg: #FFFFFF;--header-border-color: #F5F5F4;--header-padding: 0 var(--space-6);--header-shadow: 0 1px 2px rgba(0, 0, 0, .05);--header-z-index: 100;--header-logo-height: 32px;--header-user-gap: var(--space-4)}.cc-sidebar-tokens{--sidebar-width: 280px;--sidebar-collapsed-width: 80px;--sidebar-bg: #1C1917;--sidebar-border-color: #292524;--sidebar-padding: var(--space-4);--sidebar-z-index: 101;--sidebar-transition: width .3s cubic-bezier(.4, 0, .2, 1);--sidebar-item-height: 48px;--sidebar-item-radius: var(--radius-lg);--sidebar-item-padding: 0 var(--space-4);--sidebar-item-gap: var(--space-3);--sidebar-accent-color: #0EA5E9;--sidebar-text-color: #FFFFFF;--sidebar-text-muted: #A8A29E}.cc-data-table-tokens{--table-bg: var(--color-bg-primary);--table-header-bg: var(--color-bg-secondary);--table-border-color: var(--color-border-subtle);--table-header-color: var(--color-text-muted);--table-row-hover: rgba(var(--color-brand-primary-rgb), .04);--table-cell-padding: var(--space-4);--table-font-size: var(--font-size-sm);--table-radius: var(--radius-lg)}.cc-modal-tokens{--modal-bg: var(--color-bg-primary);--modal-overlay-bg: rgba(0, 0, 0, .5);--modal-radius: var(--radius-xl);--modal-shadow: var(--shadow-xl);--modal-z-index: 1000;--modal-header-padding: var(--space-6);--modal-body-padding: var(--space-6);--modal-footer-padding: var(--space-4) var(--space-6);--modal-sm-width: 400px;--modal-md-width: 600px;--modal-lg-width: 900px}.cc-header{height:var(--header-height);background:var(--surface-glass-bg);backdrop-filter:blur(var(--surface-glass-blur));-webkit-backdrop-filter:blur(var(--surface-glass-blur));border-bottom:1px solid var(--surface-glass-border);padding:var(--header-padding);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100;box-shadow:var(--surface-glass-shadow);transition:all .3s ease}.cc-header-left,.cc-header-right{display:flex;align-items:center;gap:var(--space-4)}.cc-header-menu-btn{background:transparent;border:none;color:var(--color-text-primary);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-md);display:flex;transition:background-color .15s ease}.cc-header-menu-btn:hover{background-color:var(--color-bg-secondary)}@media(min-width:1024px){.cc-header-menu-btn{display:none}}.cc-header-logo{display:flex;align-items:center;height:var(--header-logo-height)}.cc-header-logo .cc-header-logo-fallback{font-weight:var(--font-weight-bold);font-size:var(--font-size-xl);letter-spacing:-.025em;color:var(--color-brand-primary)}.cc-header-action-btn{position:relative;background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-full);display:flex;transition:all .15s ease}.cc-header-action-btn:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.cc-header-action-btn .cc-header-badge{position:absolute;top:4px;right:4px;font-size:10px;padding:2px 4px;min-width:16px;height:16px;display:flex;align-items:center;justify-content:center}.cc-header-divider{width:1px;height:24px;background-color:var(--color-border-subtle);margin:0 var(--space-2)}.cc-header-user{display:flex;align-items:center;gap:var(--space-3);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-lg);transition:background-color .15s ease}.cc-header-user:hover{background-color:var(--color-bg-secondary)}.cc-header-user-info{display:none;flex-direction:column;text-align:right}@media(min-width:768px){.cc-header-user-info{display:flex}}.cc-header-user-info .cc-header-user-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:1.2}.cc-header-user-info .cc-header-user-role{font-size:var(--font-size-xs);color:var(--color-text-muted)}.cc-header-avatar{width:36px;height:36px;border-radius:var(--radius-full);background:#0ea5e9;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:var(--font-weight-bold);font-size:var(--font-size-sm);overflow:hidden;box-shadow:0 0 0 2px var(--header-bg),0 0 0 4px var(--color-border-subtle)}.cc-header-avatar img{width:100%;height:100%;object-fit:cover}.cc-header-user-arrow{color:var(--color-text-muted)}\n"] }]
|
|
370
|
+
}], propDecorators: { user: [{
|
|
371
|
+
type: Input
|
|
372
|
+
}], notificationsCount: [{
|
|
373
|
+
type: Input
|
|
374
|
+
}], showMenuButton: [{
|
|
375
|
+
type: Input
|
|
376
|
+
}], hasLogoContent: [{
|
|
377
|
+
type: Input
|
|
378
|
+
}], toggleSidebar: [{
|
|
379
|
+
type: Output
|
|
380
|
+
}], userClick: [{
|
|
381
|
+
type: Output
|
|
382
|
+
}], notificationClick: [{
|
|
383
|
+
type: Output
|
|
384
|
+
}], userAction: [{
|
|
385
|
+
type: Output
|
|
386
|
+
}] } });
|
|
387
|
+
|
|
388
|
+
class CcSidebarComponent {
|
|
389
|
+
constructor() {
|
|
390
|
+
this.menuItems = [];
|
|
391
|
+
this.collapsed = false;
|
|
392
|
+
this.activeRoute = '';
|
|
393
|
+
this.navigate = new EventEmitter();
|
|
394
|
+
this.toggleCollapse = new EventEmitter();
|
|
395
|
+
}
|
|
396
|
+
onItemClick(item) {
|
|
397
|
+
this.navigate.emit(item);
|
|
398
|
+
}
|
|
399
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcSidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
400
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcSidebarComponent, isStandalone: true, selector: "cc-sidebar", inputs: { menuItems: "menuItems", collapsed: "collapsed", activeRoute: "activeRoute" }, outputs: { navigate: "navigate", toggleCollapse: "toggleCollapse" }, ngImport: i0, template: "<aside class=\"cc-sidebar\" [class.collapsed]=\"collapsed\">\r\n <div class=\"cc-sidebar-header\">\r\n <div class=\"cc-sidebar-logo\">\r\n <ng-content select=\"[logo]\"></ng-content>\r\n </div>\r\n <button class=\"cc-sidebar-toggle\" (click)=\"toggleCollapse.emit()\" type=\"button\">\r\n <cc-icon [name]=\"collapsed ? 'chevron_right' : 'chevron_left'\" size=\"sm\"></cc-icon>\r\n </button>\r\n </div>\r\n\r\n <nav class=\"cc-sidebar-nav\">\r\n <div class=\"cc-sidebar-group\" *ngFor=\"let item of menuItems\">\r\n <a class=\"cc-sidebar-item\" [routerLink]=\"item.route\" routerLinkActive=\"active\"\r\n [routerLinkActiveOptions]=\"{ exact: item.exact || false }\" [title]=\"collapsed ? item.label : ''\"\r\n (click)=\"onItemClick(item)\">\r\n\r\n <cc-icon [name]=\"item.icon\" size=\"md\" class=\"cc-sidebar-item-icon\"></cc-icon>\r\n <span class=\"cc-sidebar-item-label\" *ngIf=\"!collapsed\">{{ item.label }}</span>\r\n\r\n <span class=\"cc-sidebar-item-badge\" *ngIf=\"item.badge && !collapsed\">\r\n {{ item.badge }}\r\n </span>\r\n </a>\r\n </div>\r\n </nav>\r\n\r\n <div class=\"cc-sidebar-footer\">\r\n <ng-content select=\"[footer]\"></ng-content>\r\n </div>\r\n</aside>", styles: [":root,[data-theme=light]{--color-bg-primary: #FFFFFF;--color-bg-secondary: #FAFAF9;--color-text-primary: #1C1917;--color-text-secondary: #57534E;--color-text-muted: #A8A29E;--color-border-subtle: #E7E5E4;--color-border-strong: #D6D3D1;--color-brand: #0284C7;--color-brand-hover: #0369A1;--color-focus-ring: rgba(2, 132, 199, .2);--color-success: #10B981;--color-danger: #F43F5E;--surface-glass-bg: rgba(255, 255, 255, .7);--surface-glass-border: rgba(255, 255, 255, .3);--surface-glass-blur: 12px;--surface-glass-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1);--font-heading-xl: 32px;--font-heading-lg: 24px;--font-heading-md: 20px;--font-body-lg: 18px;--font-body-md: 16px;--font-caption: 12px;--font-family-base: Inter, sans-serif;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 14px;--radius-xl: 18px;--radius-full: 9999px;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 32px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: calc(var(--space-4) * 2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .12)}[data-theme=dark]{--color-bg-primary: #1C1917;--color-bg-secondary: #292524;--color-text-primary: #FFFFFF;--color-text-secondary: #A8A29E;--color-text-muted: #78716C;--color-border-subtle: #44403C;--color-border-strong: #57534E;--color-brand: #0EA5E9;--color-brand-hover: #7DD3FC;--color-focus-ring: rgba(59, 130, 246, .5);--surface-glass-bg: rgba(15, 23, 42, .8);--surface-glass-border: rgba(255, 255, 255, .1);--surface-glass-blur: 16px;--surface-glass-shadow: 0 10px 15px -3px rgba(0, 0, 0, .3)}:root{--h1-size: var(--font-size-h1);--h1-weight: var(--font-weight-semibold);--h2-size: var(--font-size-h2);--h2-weight: var(--font-weight-semibold);--h3-size: var(--font-size-h3);--h3-weight: var(--font-weight-semibold);--body-size: var(--font-size-body);--body-weight: var(--font-weight-regular);--sm-size: var(--font-size-sm);--sm-weight: var(--font-weight-regular);--caption-size: var(--font-size-caption);--caption-weight: var(--font-weight-regular)}:root{--btn-height-md: 44px;--btn-radius: var(--radius-md);--btn-font-weight: var(--font-weight-medium);--btn-bg-primary: var(--color-brand);--btn-text-primary: #FFFFFF;--btn-shadow-default: var(--shadow-sm);--btn-shadow-hover: var(--shadow-md);--btn-transition: .15s ease;--btn-focus-ring: 0 0 0 2px var(--color-focus-ring)}:root{--card-bg: var(--color-bg-primary);--card-radius: var(--radius-lg);--card-shadow: var(--shadow-sm);--card-shadow-hover: var(--shadow-md)}:root{--input-height-md: 44px;--input-bg: var(--color-bg-primary);--input-radius: var(--radius-md);--input-border-default: var(--color-border-subtle);--input-border-hover: var(--color-border-strong);--input-border-focus: var(--color-brand);--input-border-error: var(--color-danger);--input-transition: .12s ease-in-out;--input-focus-ring: 0 0 0 3px var(--color-focus-ring);--input-error-ring: 0 0 0 3px rgba(239, 68, 68, .15)}.cc-badge-tokens{--badge-radius: var(--radius-sm);--badge-padding-v: var(--space-1);--badge-padding-h: var(--space-2);--badge-font-size: var(--font-size-xs);--badge-font-weight: var(--font-weight-medium);--badge-success-bg: #D1FAE5;--badge-success-text: #065F46;--badge-success-border: #A7F3D0;--badge-warning-bg: #FEF3C7;--badge-warning-text: #92400E;--badge-warning-border: #FDE68A;--badge-error-bg: #FFE4E6;--badge-error-text: #9F1239;--badge-error-border: #FECDD3;--badge-info-bg: var(--color-info-50);--badge-info-text: var(--color-info-700);--badge-info-border: var(--color-info-200);--badge-neutral-bg: #F5F5F4;--badge-neutral-text: #44403C;--badge-neutral-border: #E7E5E4}.cc-label-tokens{--label-font-size: var(--font-size-sm);--label-font-weight: var(--font-weight-medium);--label-color: var(--color-text-secondary);--label-required-color: var(--color-error-500);--label-margin-bottom: var(--space-2)}.cc-select-tokens{--select-bg: var(--color-bg-primary);--select-border: var(--color-border-subtle);--select-border-hover: var(--color-border-strong);--select-border-focus: var(--color-brand-primary);--select-shadow-focus: var(--shadow-focus);--select-radius: var(--radius-md);--select-height: 44px;--select-padding-h: var(--space-4);--select-dropdown-bg: var(--color-bg-primary);--select-dropdown-shadow: var(--shadow-md);--select-dropdown-max-height: 240px;--select-option-padding: var(--space-3) var(--space-4);--select-option-hover: var(--color-bg-secondary);--select-option-selected-bg: var(--color-brand-50);--select-option-selected-text: var(--color-brand-primary)}.cc-form-field-tokens{--form-field-margin-bottom: var(--space-6);--form-field-label-margin: var(--space-2);--form-field-message-margin: var(--space-1);--form-field-message-font-size: var(--font-size-xs);--form-field-message-color: var(--color-text-muted);--form-field-error-color: var(--color-error-600)}.cc-header-tokens{--header-height: 72px;--header-bg: #FFFFFF;--header-border-color: #F5F5F4;--header-padding: 0 var(--space-6);--header-shadow: 0 1px 2px rgba(0, 0, 0, .05);--header-z-index: 100;--header-logo-height: 32px;--header-user-gap: var(--space-4)}.cc-sidebar-tokens{--sidebar-width: 280px;--sidebar-collapsed-width: 80px;--sidebar-bg: #1C1917;--sidebar-border-color: #292524;--sidebar-padding: var(--space-4);--sidebar-z-index: 101;--sidebar-transition: width .3s cubic-bezier(.4, 0, .2, 1);--sidebar-item-height: 48px;--sidebar-item-radius: var(--radius-lg);--sidebar-item-padding: 0 var(--space-4);--sidebar-item-gap: var(--space-3);--sidebar-accent-color: #0EA5E9;--sidebar-text-color: #FFFFFF;--sidebar-text-muted: #A8A29E}.cc-data-table-tokens{--table-bg: var(--color-bg-primary);--table-header-bg: var(--color-bg-secondary);--table-border-color: var(--color-border-subtle);--table-header-color: var(--color-text-muted);--table-row-hover: rgba(var(--color-brand-primary-rgb), .04);--table-cell-padding: var(--space-4);--table-font-size: var(--font-size-sm);--table-radius: var(--radius-lg)}.cc-modal-tokens{--modal-bg: var(--color-bg-primary);--modal-overlay-bg: rgba(0, 0, 0, .5);--modal-radius: var(--radius-xl);--modal-shadow: var(--shadow-xl);--modal-z-index: 1000;--modal-header-padding: var(--space-6);--modal-body-padding: var(--space-6);--modal-footer-padding: var(--space-4) var(--space-6);--modal-sm-width: 400px;--modal-md-width: 600px;--modal-lg-width: 900px}.cc-sidebar{width:var(--sidebar-width);height:100vh;background:var(--neutral-900)}@supports (backdrop-filter: blur(1px)){.cc-sidebar{background:var(--surface-glass-bg);backdrop-filter:blur(var(--surface-glass-blur));-webkit-backdrop-filter:blur(var(--surface-glass-blur))}}.cc-sidebar{border-right:1px solid var(--surface-glass-border);display:flex;flex-direction:column;transition:var(--sidebar-transition);overflow-x:hidden;position:sticky;top:0;z-index:110}.cc-sidebar.collapsed{width:var(--sidebar-collapsed-width)}.cc-sidebar.collapsed .cc-sidebar-header{padding:var(--space-4) 0;justify-content:center}.cc-sidebar.collapsed .cc-sidebar-logo{display:none}.cc-sidebar.collapsed .cc-sidebar-toggle{position:static}.cc-sidebar.collapsed .cc-sidebar-item{justify-content:center;padding:0}.cc-sidebar-header{height:var(--header-height);padding:0 var(--space-6);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--surface-glass-border);position:relative;background:transparent}.cc-sidebar-logo{display:flex;align-items:center}.cc-sidebar-toggle{background:var(--color-bg-secondary);border:1px solid var(--color-border-subtle);color:var(--color-text-muted);width:24px;height:24px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;cursor:pointer;position:absolute;right:-12px;top:calc(var(--header-height) / 2 - 12px);z-index:2;transition:all .15s ease}.cc-sidebar-toggle:hover{background-color:var(--color-brand);border-color:var(--color-brand);color:#fff}.cc-sidebar-nav{flex:1;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);overflow-y:auto}.cc-sidebar-item{height:48px;padding:0 var(--space-4);display:flex;align-items:center;gap:var(--space-3);border-radius:var(--radius-lg);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.cc-sidebar-item:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.cc-sidebar-item.active{background-color:var(--color-brand);color:#fff;box-shadow:0 4px 12px rgba(var(--brand-600),.2)}.cc-sidebar-item.active .cc-sidebar-item-icon{color:#fff}.cc-sidebar-item.active:after{content:\"\";position:absolute;left:-4px;top:25%;height:50%;width:4px;background:#fff;border-radius:0 4px 4px 0}.cc-sidebar-item-icon{flex-shrink:0;color:inherit;font-size:24px}.cc-sidebar-item-label{white-space:nowrap;opacity:1;transition:opacity .2s ease}.cc-sidebar-item-badge{margin-left:auto;background-color:var(--color-danger);color:#fff;font-size:var(--font-size-xs);padding:2px 6px;border-radius:var(--radius-full)}.cc-sidebar-footer{padding:var(--space-4);border-top:1px solid var(--surface-glass-border)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: CcIconComponent, selector: "cc-icon", inputs: ["name", "size", "color"] }] }); }
|
|
401
|
+
}
|
|
402
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcSidebarComponent, decorators: [{
|
|
403
|
+
type: Component,
|
|
404
|
+
args: [{ selector: 'cc-sidebar', standalone: true, imports: [CommonModule, RouterLink, RouterLinkActive, CcIconComponent], template: "<aside class=\"cc-sidebar\" [class.collapsed]=\"collapsed\">\r\n <div class=\"cc-sidebar-header\">\r\n <div class=\"cc-sidebar-logo\">\r\n <ng-content select=\"[logo]\"></ng-content>\r\n </div>\r\n <button class=\"cc-sidebar-toggle\" (click)=\"toggleCollapse.emit()\" type=\"button\">\r\n <cc-icon [name]=\"collapsed ? 'chevron_right' : 'chevron_left'\" size=\"sm\"></cc-icon>\r\n </button>\r\n </div>\r\n\r\n <nav class=\"cc-sidebar-nav\">\r\n <div class=\"cc-sidebar-group\" *ngFor=\"let item of menuItems\">\r\n <a class=\"cc-sidebar-item\" [routerLink]=\"item.route\" routerLinkActive=\"active\"\r\n [routerLinkActiveOptions]=\"{ exact: item.exact || false }\" [title]=\"collapsed ? item.label : ''\"\r\n (click)=\"onItemClick(item)\">\r\n\r\n <cc-icon [name]=\"item.icon\" size=\"md\" class=\"cc-sidebar-item-icon\"></cc-icon>\r\n <span class=\"cc-sidebar-item-label\" *ngIf=\"!collapsed\">{{ item.label }}</span>\r\n\r\n <span class=\"cc-sidebar-item-badge\" *ngIf=\"item.badge && !collapsed\">\r\n {{ item.badge }}\r\n </span>\r\n </a>\r\n </div>\r\n </nav>\r\n\r\n <div class=\"cc-sidebar-footer\">\r\n <ng-content select=\"[footer]\"></ng-content>\r\n </div>\r\n</aside>", styles: [":root,[data-theme=light]{--color-bg-primary: #FFFFFF;--color-bg-secondary: #FAFAF9;--color-text-primary: #1C1917;--color-text-secondary: #57534E;--color-text-muted: #A8A29E;--color-border-subtle: #E7E5E4;--color-border-strong: #D6D3D1;--color-brand: #0284C7;--color-brand-hover: #0369A1;--color-focus-ring: rgba(2, 132, 199, .2);--color-success: #10B981;--color-danger: #F43F5E;--surface-glass-bg: rgba(255, 255, 255, .7);--surface-glass-border: rgba(255, 255, 255, .3);--surface-glass-blur: 12px;--surface-glass-shadow: 0 4px 6px -1px rgba(0, 0, 0, .1);--font-heading-xl: 32px;--font-heading-lg: 24px;--font-heading-md: 20px;--font-body-lg: 18px;--font-body-md: 16px;--font-caption: 12px;--font-family-base: Inter, sans-serif;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 14px;--radius-xl: 18px;--radius-full: 9999px;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 32px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: calc(var(--space-4) * 2);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .12)}[data-theme=dark]{--color-bg-primary: #1C1917;--color-bg-secondary: #292524;--color-text-primary: #FFFFFF;--color-text-secondary: #A8A29E;--color-text-muted: #78716C;--color-border-subtle: #44403C;--color-border-strong: #57534E;--color-brand: #0EA5E9;--color-brand-hover: #7DD3FC;--color-focus-ring: rgba(59, 130, 246, .5);--surface-glass-bg: rgba(15, 23, 42, .8);--surface-glass-border: rgba(255, 255, 255, .1);--surface-glass-blur: 16px;--surface-glass-shadow: 0 10px 15px -3px rgba(0, 0, 0, .3)}:root{--h1-size: var(--font-size-h1);--h1-weight: var(--font-weight-semibold);--h2-size: var(--font-size-h2);--h2-weight: var(--font-weight-semibold);--h3-size: var(--font-size-h3);--h3-weight: var(--font-weight-semibold);--body-size: var(--font-size-body);--body-weight: var(--font-weight-regular);--sm-size: var(--font-size-sm);--sm-weight: var(--font-weight-regular);--caption-size: var(--font-size-caption);--caption-weight: var(--font-weight-regular)}:root{--btn-height-md: 44px;--btn-radius: var(--radius-md);--btn-font-weight: var(--font-weight-medium);--btn-bg-primary: var(--color-brand);--btn-text-primary: #FFFFFF;--btn-shadow-default: var(--shadow-sm);--btn-shadow-hover: var(--shadow-md);--btn-transition: .15s ease;--btn-focus-ring: 0 0 0 2px var(--color-focus-ring)}:root{--card-bg: var(--color-bg-primary);--card-radius: var(--radius-lg);--card-shadow: var(--shadow-sm);--card-shadow-hover: var(--shadow-md)}:root{--input-height-md: 44px;--input-bg: var(--color-bg-primary);--input-radius: var(--radius-md);--input-border-default: var(--color-border-subtle);--input-border-hover: var(--color-border-strong);--input-border-focus: var(--color-brand);--input-border-error: var(--color-danger);--input-transition: .12s ease-in-out;--input-focus-ring: 0 0 0 3px var(--color-focus-ring);--input-error-ring: 0 0 0 3px rgba(239, 68, 68, .15)}.cc-badge-tokens{--badge-radius: var(--radius-sm);--badge-padding-v: var(--space-1);--badge-padding-h: var(--space-2);--badge-font-size: var(--font-size-xs);--badge-font-weight: var(--font-weight-medium);--badge-success-bg: #D1FAE5;--badge-success-text: #065F46;--badge-success-border: #A7F3D0;--badge-warning-bg: #FEF3C7;--badge-warning-text: #92400E;--badge-warning-border: #FDE68A;--badge-error-bg: #FFE4E6;--badge-error-text: #9F1239;--badge-error-border: #FECDD3;--badge-info-bg: var(--color-info-50);--badge-info-text: var(--color-info-700);--badge-info-border: var(--color-info-200);--badge-neutral-bg: #F5F5F4;--badge-neutral-text: #44403C;--badge-neutral-border: #E7E5E4}.cc-label-tokens{--label-font-size: var(--font-size-sm);--label-font-weight: var(--font-weight-medium);--label-color: var(--color-text-secondary);--label-required-color: var(--color-error-500);--label-margin-bottom: var(--space-2)}.cc-select-tokens{--select-bg: var(--color-bg-primary);--select-border: var(--color-border-subtle);--select-border-hover: var(--color-border-strong);--select-border-focus: var(--color-brand-primary);--select-shadow-focus: var(--shadow-focus);--select-radius: var(--radius-md);--select-height: 44px;--select-padding-h: var(--space-4);--select-dropdown-bg: var(--color-bg-primary);--select-dropdown-shadow: var(--shadow-md);--select-dropdown-max-height: 240px;--select-option-padding: var(--space-3) var(--space-4);--select-option-hover: var(--color-bg-secondary);--select-option-selected-bg: var(--color-brand-50);--select-option-selected-text: var(--color-brand-primary)}.cc-form-field-tokens{--form-field-margin-bottom: var(--space-6);--form-field-label-margin: var(--space-2);--form-field-message-margin: var(--space-1);--form-field-message-font-size: var(--font-size-xs);--form-field-message-color: var(--color-text-muted);--form-field-error-color: var(--color-error-600)}.cc-header-tokens{--header-height: 72px;--header-bg: #FFFFFF;--header-border-color: #F5F5F4;--header-padding: 0 var(--space-6);--header-shadow: 0 1px 2px rgba(0, 0, 0, .05);--header-z-index: 100;--header-logo-height: 32px;--header-user-gap: var(--space-4)}.cc-sidebar-tokens{--sidebar-width: 280px;--sidebar-collapsed-width: 80px;--sidebar-bg: #1C1917;--sidebar-border-color: #292524;--sidebar-padding: var(--space-4);--sidebar-z-index: 101;--sidebar-transition: width .3s cubic-bezier(.4, 0, .2, 1);--sidebar-item-height: 48px;--sidebar-item-radius: var(--radius-lg);--sidebar-item-padding: 0 var(--space-4);--sidebar-item-gap: var(--space-3);--sidebar-accent-color: #0EA5E9;--sidebar-text-color: #FFFFFF;--sidebar-text-muted: #A8A29E}.cc-data-table-tokens{--table-bg: var(--color-bg-primary);--table-header-bg: var(--color-bg-secondary);--table-border-color: var(--color-border-subtle);--table-header-color: var(--color-text-muted);--table-row-hover: rgba(var(--color-brand-primary-rgb), .04);--table-cell-padding: var(--space-4);--table-font-size: var(--font-size-sm);--table-radius: var(--radius-lg)}.cc-modal-tokens{--modal-bg: var(--color-bg-primary);--modal-overlay-bg: rgba(0, 0, 0, .5);--modal-radius: var(--radius-xl);--modal-shadow: var(--shadow-xl);--modal-z-index: 1000;--modal-header-padding: var(--space-6);--modal-body-padding: var(--space-6);--modal-footer-padding: var(--space-4) var(--space-6);--modal-sm-width: 400px;--modal-md-width: 600px;--modal-lg-width: 900px}.cc-sidebar{width:var(--sidebar-width);height:100vh;background:var(--neutral-900)}@supports (backdrop-filter: blur(1px)){.cc-sidebar{background:var(--surface-glass-bg);backdrop-filter:blur(var(--surface-glass-blur));-webkit-backdrop-filter:blur(var(--surface-glass-blur))}}.cc-sidebar{border-right:1px solid var(--surface-glass-border);display:flex;flex-direction:column;transition:var(--sidebar-transition);overflow-x:hidden;position:sticky;top:0;z-index:110}.cc-sidebar.collapsed{width:var(--sidebar-collapsed-width)}.cc-sidebar.collapsed .cc-sidebar-header{padding:var(--space-4) 0;justify-content:center}.cc-sidebar.collapsed .cc-sidebar-logo{display:none}.cc-sidebar.collapsed .cc-sidebar-toggle{position:static}.cc-sidebar.collapsed .cc-sidebar-item{justify-content:center;padding:0}.cc-sidebar-header{height:var(--header-height);padding:0 var(--space-6);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--surface-glass-border);position:relative;background:transparent}.cc-sidebar-logo{display:flex;align-items:center}.cc-sidebar-toggle{background:var(--color-bg-secondary);border:1px solid var(--color-border-subtle);color:var(--color-text-muted);width:24px;height:24px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;cursor:pointer;position:absolute;right:-12px;top:calc(var(--header-height) / 2 - 12px);z-index:2;transition:all .15s ease}.cc-sidebar-toggle:hover{background-color:var(--color-brand);border-color:var(--color-brand);color:#fff}.cc-sidebar-nav{flex:1;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);overflow-y:auto}.cc-sidebar-item{height:48px;padding:0 var(--space-4);display:flex;align-items:center;gap:var(--space-3);border-radius:var(--radius-lg);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:all .2s cubic-bezier(.4,0,.2,1);position:relative}.cc-sidebar-item:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.cc-sidebar-item.active{background-color:var(--color-brand);color:#fff;box-shadow:0 4px 12px rgba(var(--brand-600),.2)}.cc-sidebar-item.active .cc-sidebar-item-icon{color:#fff}.cc-sidebar-item.active:after{content:\"\";position:absolute;left:-4px;top:25%;height:50%;width:4px;background:#fff;border-radius:0 4px 4px 0}.cc-sidebar-item-icon{flex-shrink:0;color:inherit;font-size:24px}.cc-sidebar-item-label{white-space:nowrap;opacity:1;transition:opacity .2s ease}.cc-sidebar-item-badge{margin-left:auto;background-color:var(--color-danger);color:#fff;font-size:var(--font-size-xs);padding:2px 6px;border-radius:var(--radius-full)}.cc-sidebar-footer{padding:var(--space-4);border-top:1px solid var(--surface-glass-border)}\n"] }]
|
|
405
|
+
}], propDecorators: { menuItems: [{
|
|
406
|
+
type: Input
|
|
407
|
+
}], collapsed: [{
|
|
408
|
+
type: Input
|
|
409
|
+
}], activeRoute: [{
|
|
410
|
+
type: Input
|
|
411
|
+
}], navigate: [{
|
|
412
|
+
type: Output
|
|
413
|
+
}], toggleCollapse: [{
|
|
414
|
+
type: Output
|
|
415
|
+
}] } });
|
|
416
|
+
|
|
417
|
+
class CcDataTableComponent {
|
|
418
|
+
constructor() {
|
|
419
|
+
this.data = [];
|
|
420
|
+
this.columns = [];
|
|
421
|
+
this.loading = false;
|
|
422
|
+
this.showSearch = true;
|
|
423
|
+
this.searchPlaceholder = 'Buscar en la tabla...';
|
|
424
|
+
this.rowClick = new EventEmitter();
|
|
425
|
+
this.search = new EventEmitter();
|
|
426
|
+
this.actionClick = new EventEmitter();
|
|
427
|
+
}
|
|
428
|
+
get skeletonRows() {
|
|
429
|
+
return Array(5).fill(0);
|
|
430
|
+
}
|
|
431
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcDataTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
432
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcDataTableComponent, isStandalone: true, selector: "cc-data-table", inputs: { data: "data", columns: "columns", loading: "loading", showSearch: "showSearch", searchPlaceholder: "searchPlaceholder" }, outputs: { rowClick: "rowClick", search: "search", actionClick: "actionClick" }, queries: [{ propertyName: "customCellTemplate", first: true, predicate: ["customCell"], descendants: true }, { propertyName: "rowActionsTemplate", first: true, predicate: ["rowActions"], descendants: true }], ngImport: i0, template: "<div class=\"cc-data-table-container\">\r\n <div class=\"cc-data-table-wrapper\">\r\n <table class=\"cc-data-table\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let col of columns\">\r\n {{ col.label }}\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let row of data\">\r\n <td *ngFor=\"let col of columns\">\r\n {{ row[col.key] }}\r\n </td>\r\n </tr>\r\n\r\n <tr *ngIf=\"data.length === 0\">\r\n <td [attr.colspan]=\"columns.length\">\r\n No se encontraron resultados\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>", styles: [".cc-data-table-container{display:flex;flex-direction:column;gap:var(--space-4);width:100%}.cc-data-table-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4)}.cc-data-table-wrapper{background-color:var(--table-bg);border:1px solid var(--table-border-color);border-radius:var(--table-radius);overflow:hidden;box-shadow:var(--shadow-sm)}.cc-data-table{width:100%;border-collapse:collapse;text-align:left;font-size:var(--table-font-size)}.cc-data-table thead{background-color:var(--color-bg-secondary)}.cc-data-table thead th{padding:var(--space-4) var(--space-6);font-weight:var(--font-weight-bold);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border-subtle)}.cc-data-table thead th.sortable{cursor:pointer}.cc-data-table thead th.sortable:hover{color:var(--color-text-primary)}.cc-data-table tbody tr{border-bottom:1px solid var(--color-border-subtle);transition:all .2s ease;cursor:pointer;height:52px}.cc-data-table tbody tr:last-child{border-bottom:none}.cc-data-table tbody tr:hover{background-color:rgba(var(--brand-600),.02)}.cc-data-table tbody tr:hover td{color:var(--color-brand)}.cc-data-table tbody tr.active{background-color:var(--color-bg-secondary);box-shadow:inset 3px 0 0 0 var(--color-brand)}.cc-data-table tbody td{padding:var(--space-3) var(--space-6);color:var(--color-text-primary);font-size:var(--font-size-sm)}.cc-table-th-content{display:flex;align-items:center;gap:var(--space-2)}.cc-table-empty-content{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);color:var(--color-text-muted);gap:var(--space-4)}.cc-table-empty-content p{font-size:var(--font-size-lg);font-weight:var(--font-weight-medium)}.cc-table-skeleton-bar{height:12px;background:linear-gradient(90deg,var(--color-bg-secondary) 25%,var(--color-border-subtle) 50%,var(--color-bg-secondary) 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;border-radius:var(--radius-sm);width:100%}@keyframes loading-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
433
|
+
}
|
|
434
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcDataTableComponent, decorators: [{
|
|
435
|
+
type: Component,
|
|
436
|
+
args: [{ selector: 'cc-data-table', standalone: true, imports: [CommonModule], template: "<div class=\"cc-data-table-container\">\r\n <div class=\"cc-data-table-wrapper\">\r\n <table class=\"cc-data-table\">\r\n <thead>\r\n <tr>\r\n <th *ngFor=\"let col of columns\">\r\n {{ col.label }}\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let row of data\">\r\n <td *ngFor=\"let col of columns\">\r\n {{ row[col.key] }}\r\n </td>\r\n </tr>\r\n\r\n <tr *ngIf=\"data.length === 0\">\r\n <td [attr.colspan]=\"columns.length\">\r\n No se encontraron resultados\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>", styles: [".cc-data-table-container{display:flex;flex-direction:column;gap:var(--space-4);width:100%}.cc-data-table-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4)}.cc-data-table-wrapper{background-color:var(--table-bg);border:1px solid var(--table-border-color);border-radius:var(--table-radius);overflow:hidden;box-shadow:var(--shadow-sm)}.cc-data-table{width:100%;border-collapse:collapse;text-align:left;font-size:var(--table-font-size)}.cc-data-table thead{background-color:var(--color-bg-secondary)}.cc-data-table thead th{padding:var(--space-4) var(--space-6);font-weight:var(--font-weight-bold);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border-subtle)}.cc-data-table thead th.sortable{cursor:pointer}.cc-data-table thead th.sortable:hover{color:var(--color-text-primary)}.cc-data-table tbody tr{border-bottom:1px solid var(--color-border-subtle);transition:all .2s ease;cursor:pointer;height:52px}.cc-data-table tbody tr:last-child{border-bottom:none}.cc-data-table tbody tr:hover{background-color:rgba(var(--brand-600),.02)}.cc-data-table tbody tr:hover td{color:var(--color-brand)}.cc-data-table tbody tr.active{background-color:var(--color-bg-secondary);box-shadow:inset 3px 0 0 0 var(--color-brand)}.cc-data-table tbody td{padding:var(--space-3) var(--space-6);color:var(--color-text-primary);font-size:var(--font-size-sm)}.cc-table-th-content{display:flex;align-items:center;gap:var(--space-2)}.cc-table-empty-content{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);color:var(--color-text-muted);gap:var(--space-4)}.cc-table-empty-content p{font-size:var(--font-size-lg);font-weight:var(--font-weight-medium)}.cc-table-skeleton-bar{height:12px;background:linear-gradient(90deg,var(--color-bg-secondary) 25%,var(--color-border-subtle) 50%,var(--color-bg-secondary) 75%);background-size:200% 100%;animation:loading-shimmer 1.5s infinite;border-radius:var(--radius-sm);width:100%}@keyframes loading-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"] }]
|
|
437
|
+
}], propDecorators: { data: [{
|
|
438
|
+
type: Input
|
|
439
|
+
}], columns: [{
|
|
440
|
+
type: Input
|
|
441
|
+
}], loading: [{
|
|
442
|
+
type: Input
|
|
443
|
+
}], showSearch: [{
|
|
444
|
+
type: Input
|
|
445
|
+
}], searchPlaceholder: [{
|
|
446
|
+
type: Input
|
|
447
|
+
}], rowClick: [{
|
|
448
|
+
type: Output
|
|
449
|
+
}], search: [{
|
|
450
|
+
type: Output
|
|
451
|
+
}], actionClick: [{
|
|
452
|
+
type: Output
|
|
453
|
+
}], customCellTemplate: [{
|
|
454
|
+
type: ContentChild,
|
|
455
|
+
args: ['customCell']
|
|
456
|
+
}], rowActionsTemplate: [{
|
|
457
|
+
type: ContentChild,
|
|
458
|
+
args: ['rowActions']
|
|
459
|
+
}] } });
|
|
460
|
+
|
|
461
|
+
class CcModalComponent {
|
|
462
|
+
constructor() {
|
|
463
|
+
this.isOpen = false;
|
|
464
|
+
this.title = '';
|
|
465
|
+
this.size = 'md';
|
|
466
|
+
this.closeOnOverlay = true;
|
|
467
|
+
this.showFooter = true;
|
|
468
|
+
this.close = new EventEmitter();
|
|
469
|
+
}
|
|
470
|
+
onOverlayClick(event) {
|
|
471
|
+
if (this.closeOnOverlay && event.target.classList.contains('cc-modal-overlay')) {
|
|
472
|
+
this.close.emit();
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
onEscape() {
|
|
476
|
+
if (this.isOpen) {
|
|
477
|
+
this.close.emit();
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
481
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcModalComponent, isStandalone: true, selector: "cc-modal", inputs: { isOpen: "isOpen", title: "title", size: "size", closeOnOverlay: "closeOnOverlay", showFooter: "showFooter" }, outputs: { close: "close" }, host: { listeners: { "document:keydown.escape": "onEscape()" } }, ngImport: i0, template: "<div class=\"cc-modal-overlay\" *ngIf=\"isOpen\" (click)=\"onOverlayClick($event)\">\r\n\r\n <div class=\"cc-modal\" [ngClass]=\"'size-' + size\" role=\"dialog\" aria-modal=\"true\">\r\n\r\n <header class=\"cc-modal-header\">\r\n <h3 class=\"cc-modal-title\">{{ title }}</h3>\r\n <button class=\"cc-modal-close\" (click)=\"close.emit()\" type=\"button\">\r\n <cc-icon name=\"close\" size=\"md\"></cc-icon>\r\n </button>\r\n </header>\r\n\r\n <div class=\"cc-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <footer class=\"cc-modal-footer\" *ngIf=\"showFooter\">\r\n <ng-content select=\"[footer]\"></ng-content>\r\n </footer>\r\n </div>\r\n</div>", styles: [".cc-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:var(--modal-overlay-bg);display:flex;align-items:center;justify-content:center;z-index:var(--modal-z-index);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:var(--space-4)}.cc-modal{background-color:var(--modal-bg);border-radius:var(--modal-radius);box-shadow:var(--modal-shadow);display:flex;flex-direction:column;max-height:90vh;width:100%;animation:modalScaleUp .2s ease-out;overflow:hidden}.cc-modal.size-sm{max-width:var(--modal-sm-width)}.cc-modal.size-md{max-width:var(--modal-md-width)}.cc-modal.size-lg{max-width:var(--modal-lg-width)}.cc-modal-header{padding:var(--modal-header-padding);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--color-border-subtle)}.cc-modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0}.cc-modal-close{background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-md);display:flex;transition:all .15s ease}.cc-modal-close:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.cc-modal-body{padding:var(--modal-body-padding);overflow-y:auto;flex:1}.cc-modal-footer{padding:var(--modal-footer-padding);border-top:1px solid var(--color-border-subtle);display:flex;justify-content:flex-end;gap:var(--space-3);background-color:var(--color-bg-secondary)}@keyframes modalScaleUp{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CcIconComponent, selector: "cc-icon", inputs: ["name", "size", "color"] }] }); }
|
|
482
|
+
}
|
|
483
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcModalComponent, decorators: [{
|
|
484
|
+
type: Component,
|
|
485
|
+
args: [{ selector: 'cc-modal', standalone: true, imports: [CommonModule, CcIconComponent], template: "<div class=\"cc-modal-overlay\" *ngIf=\"isOpen\" (click)=\"onOverlayClick($event)\">\r\n\r\n <div class=\"cc-modal\" [ngClass]=\"'size-' + size\" role=\"dialog\" aria-modal=\"true\">\r\n\r\n <header class=\"cc-modal-header\">\r\n <h3 class=\"cc-modal-title\">{{ title }}</h3>\r\n <button class=\"cc-modal-close\" (click)=\"close.emit()\" type=\"button\">\r\n <cc-icon name=\"close\" size=\"md\"></cc-icon>\r\n </button>\r\n </header>\r\n\r\n <div class=\"cc-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <footer class=\"cc-modal-footer\" *ngIf=\"showFooter\">\r\n <ng-content select=\"[footer]\"></ng-content>\r\n </footer>\r\n </div>\r\n</div>", styles: [".cc-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:var(--modal-overlay-bg);display:flex;align-items:center;justify-content:center;z-index:var(--modal-z-index);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:var(--space-4)}.cc-modal{background-color:var(--modal-bg);border-radius:var(--modal-radius);box-shadow:var(--modal-shadow);display:flex;flex-direction:column;max-height:90vh;width:100%;animation:modalScaleUp .2s ease-out;overflow:hidden}.cc-modal.size-sm{max-width:var(--modal-sm-width)}.cc-modal.size-md{max-width:var(--modal-md-width)}.cc-modal.size-lg{max-width:var(--modal-lg-width)}.cc-modal-header{padding:var(--modal-header-padding);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--color-border-subtle)}.cc-modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0}.cc-modal-close{background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-md);display:flex;transition:all .15s ease}.cc-modal-close:hover{background-color:var(--color-bg-secondary);color:var(--color-text-primary)}.cc-modal-body{padding:var(--modal-body-padding);overflow-y:auto;flex:1}.cc-modal-footer{padding:var(--modal-footer-padding);border-top:1px solid var(--color-border-subtle);display:flex;justify-content:flex-end;gap:var(--space-3);background-color:var(--color-bg-secondary)}@keyframes modalScaleUp{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}\n"] }]
|
|
486
|
+
}], propDecorators: { isOpen: [{
|
|
487
|
+
type: Input
|
|
488
|
+
}], title: [{
|
|
489
|
+
type: Input
|
|
490
|
+
}], size: [{
|
|
491
|
+
type: Input
|
|
492
|
+
}], closeOnOverlay: [{
|
|
493
|
+
type: Input
|
|
494
|
+
}], showFooter: [{
|
|
495
|
+
type: Input
|
|
496
|
+
}], close: [{
|
|
497
|
+
type: Output
|
|
498
|
+
}], onEscape: [{
|
|
499
|
+
type: HostListener,
|
|
500
|
+
args: ['document:keydown.escape']
|
|
501
|
+
}] } });
|
|
502
|
+
|
|
503
|
+
class CcLoginComponent {
|
|
504
|
+
constructor() {
|
|
505
|
+
this.fb = inject(FormBuilder);
|
|
506
|
+
this.title = 'Bienvenido';
|
|
507
|
+
this.subtitle = 'Inicia sesión para continuar';
|
|
508
|
+
this.loading = false;
|
|
509
|
+
this.errorMessage = null;
|
|
510
|
+
this.supportEmail = 'soporte@cerca.com.co';
|
|
511
|
+
this.forgotPasswordLabel = '¿Olvidaste tu clave?';
|
|
512
|
+
this.loginSubmit = new EventEmitter();
|
|
513
|
+
this.forgotPasswordClick = new EventEmitter();
|
|
514
|
+
this.loginForm = this.fb.group({
|
|
515
|
+
email: ['', [Validators.required, Validators.email]],
|
|
516
|
+
password: ['', [Validators.required]],
|
|
517
|
+
remember: [true]
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
submitForm() {
|
|
521
|
+
if (this.loginForm.valid) {
|
|
522
|
+
const { email, password, remember } = this.loginForm.getRawValue();
|
|
523
|
+
this.loginSubmit.emit({ email: email, password: password, remember: remember });
|
|
524
|
+
}
|
|
525
|
+
else {
|
|
526
|
+
Object.values(this.loginForm.controls).forEach(control => {
|
|
527
|
+
if (control.invalid) {
|
|
528
|
+
control.markAsDirty();
|
|
529
|
+
control.updateValueAndValidity({ onlySelf: true });
|
|
530
|
+
}
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
fieldInvalid(field) {
|
|
535
|
+
const control = this.loginForm.get(field);
|
|
536
|
+
return (control && control.invalid && (control.dirty || control.touched)) || false;
|
|
537
|
+
}
|
|
538
|
+
onForgotPassword() {
|
|
539
|
+
this.forgotPasswordClick.emit();
|
|
540
|
+
}
|
|
541
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcLoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
542
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.4", type: CcLoginComponent, isStandalone: true, selector: "cc-login", inputs: { title: "title", titleAccent: "titleAccent", subtitle: "subtitle", logoUrl: "logoUrl", icon: "icon", loading: "loading", errorMessage: "errorMessage", supportEmail: "supportEmail", recoverPasswordUrl: "recoverPasswordUrl", forgotPasswordLabel: "forgotPasswordLabel" }, outputs: { loginSubmit: "loginSubmit", forgotPasswordClick: "forgotPasswordClick" }, ngImport: i0, template: "<div class=\"login-container\">\r\n <div class=\"login-card\">\r\n <div class=\"login-header\">\r\n @if (logoUrl) {\r\n <img [src]=\"logoUrl\" alt=\"Logo\" class=\"logo\" />\r\n } @else if (icon) {\r\n <div class=\"logo-box\">\r\n <span nz-icon [nzType]=\"icon\" nzTheme=\"fill\"></span>\r\n </div>\r\n }\r\n <h2 class=\"title\">\r\n {{ title }}\r\n @if (titleAccent) {\r\n <span class=\"accent\">{{ titleAccent }}</span>\r\n }\r\n </h2>\r\n <p class=\"subtitle text-uppercase\">{{ subtitle }}</p>\r\n </div>\r\n\r\n @if (errorMessage) {\r\n <nz-alert nzType=\"error\" [nzMessage]=\"errorMessage\" nzShowIcon class=\"error-alert\"></nz-alert>\r\n }\r\n\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submitForm()\" class=\"login-form\">\r\n <div class=\"form-group\">\r\n <cc-input formControlName=\"email\" placeholder=\"correo@ejemplo.com\" label=\"Correo Electr\u00F3nico\"\r\n type=\"email\" prefix=\"mail\" [error]=\"fieldInvalid('email')\">\r\n </cc-input>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <cc-input formControlName=\"password\" placeholder=\"********\" label=\"Contrase\u00F1a\" type=\"password\"\r\n prefix=\"lock\" [error]=\"fieldInvalid('password')\">\r\n </cc-input>\r\n </div>\r\n\r\n <div class=\"form-actions-row\">\r\n <label nz-checkbox formControlName=\"remember\">Recordarme</label>\r\n @if (recoverPasswordUrl) {\r\n <a [href]=\"recoverPasswordUrl\" class=\"forgot-password\">{{ forgotPasswordLabel }}</a>\r\n } @else {\r\n <a class=\"forgot-password\" (click)=\"forgotPasswordClick.emit()\">{{ forgotPasswordLabel }}</a>\r\n }\r\n </div>\r\n\r\n <cc-button [loading]=\"loading\" variant=\"primary\" type=\"submit\" class=\"submit-button\"\r\n [disabled]=\"loginForm.invalid || loading\">\r\n Iniciar Sesi\u00F3n\r\n </cc-button>\r\n </form>\r\n\r\n <div class=\"login-footer\">\r\n <p>\u00BFNecesitas ayuda? Contacta a <a [href]=\"'mailto:' + supportEmail\">{{ supportEmail }}</a></p>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:block;height:100%;width:100%}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;width:100vw;overflow:hidden;background:radial-gradient(circle at top left,#0284c7,#001529);padding:1rem;box-sizing:border-box}.login-card{width:100%;max-width:380px;padding:24px;background:#fff;border-radius:8px;box-shadow:0 12px 48px #0000004d;animation:fadeIn .5s ease-out}.login-header{text-align:center;margin-bottom:24px}.login-header .logo-box{width:40px;height:40px;background:#0284c7;color:#fff;font-size:20px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px}.login-header .logo{max-height:60px;margin-bottom:1rem;object-fit:contain}.login-header .title{font-size:20px;font-weight:700;color:#001529;margin:0;line-height:1.2}.login-header .title .accent{color:#0284c7;font-style:italic}.login-header .subtitle{font-size:10px;letter-spacing:2px;color:#8c8c8c;margin-top:4px}.error-alert{margin-bottom:16px;border-radius:4px}.login-form{display:flex;flex-direction:column;gap:16px}.form-group{display:flex;flex-direction:column;gap:4px}.error-message{color:#ff4d4f;font-size:12px;margin-top:2px;animation:slideDown .2s ease-out}.form-actions-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-bottom:8px}.form-actions-row ::ng-deep .ant-checkbox-wrapper span{color:#000000d9}.form-actions-row .forgot-password{color:#0284c7;text-decoration:none;cursor:pointer}.form-actions-row .forgot-password:hover{color:#0050b3;text-decoration:underline}.submit-button{width:100%;margin-top:8px}.submit-button ::ng-deep button{width:100%;height:36px;font-size:14px;font-weight:600;border-radius:4px}.login-footer{margin-top:24px;text-align:center;color:#bfbfbf;font-size:10px}.login-footer p{margin:2px 0}.login-footer a{color:#8c8c8c;text-decoration:none}.login-footer a:hover{color:#0284c7}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CcInputComponent, selector: "cc-input", inputs: ["type", "placeholder", "label", "error", "disabled", "size", "prefix", "suffix"] }, { kind: "component", type: CcButtonComponent, selector: "cc-button", inputs: ["variant", "type", "disabled", "loading", "icon", "size"] }, { kind: "ngmodule", type: NzAlertModule }, { kind: "component", type: i2$2.NzAlertComponent, selector: "nz-alert", inputs: ["nzAction", "nzCloseText", "nzIconType", "nzMessage", "nzDescription", "nzType", "nzCloseable", "nzShowIcon", "nzBanner", "nzNoAnimation", "nzIcon"], outputs: ["nzOnClose"], exportAs: ["nzAlert"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3$1.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzCheckboxModule }, { kind: "component", type: i4.NzCheckboxComponent, selector: "[nz-checkbox]", inputs: ["nzValue", "nzAutoFocus", "nzDisabled", "nzIndeterminate", "nzChecked", "nzId", "nzName"], outputs: ["nzCheckedChange"], exportAs: ["nzCheckbox"] }] }); }
|
|
543
|
+
}
|
|
544
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcLoginComponent, decorators: [{
|
|
545
|
+
type: Component,
|
|
546
|
+
args: [{ selector: 'cc-login', standalone: true, imports: [
|
|
547
|
+
CommonModule,
|
|
548
|
+
ReactiveFormsModule,
|
|
549
|
+
CcInputComponent,
|
|
550
|
+
CcButtonComponent,
|
|
551
|
+
NzAlertModule,
|
|
552
|
+
NzIconModule,
|
|
553
|
+
NzCheckboxModule,
|
|
554
|
+
NzFormDirective,
|
|
555
|
+
NzFormControlComponent,
|
|
556
|
+
NzFormLabelComponent,
|
|
557
|
+
NzFormItemComponent
|
|
558
|
+
], template: "<div class=\"login-container\">\r\n <div class=\"login-card\">\r\n <div class=\"login-header\">\r\n @if (logoUrl) {\r\n <img [src]=\"logoUrl\" alt=\"Logo\" class=\"logo\" />\r\n } @else if (icon) {\r\n <div class=\"logo-box\">\r\n <span nz-icon [nzType]=\"icon\" nzTheme=\"fill\"></span>\r\n </div>\r\n }\r\n <h2 class=\"title\">\r\n {{ title }}\r\n @if (titleAccent) {\r\n <span class=\"accent\">{{ titleAccent }}</span>\r\n }\r\n </h2>\r\n <p class=\"subtitle text-uppercase\">{{ subtitle }}</p>\r\n </div>\r\n\r\n @if (errorMessage) {\r\n <nz-alert nzType=\"error\" [nzMessage]=\"errorMessage\" nzShowIcon class=\"error-alert\"></nz-alert>\r\n }\r\n\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"submitForm()\" class=\"login-form\">\r\n <div class=\"form-group\">\r\n <cc-input formControlName=\"email\" placeholder=\"correo@ejemplo.com\" label=\"Correo Electr\u00F3nico\"\r\n type=\"email\" prefix=\"mail\" [error]=\"fieldInvalid('email')\">\r\n </cc-input>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <cc-input formControlName=\"password\" placeholder=\"********\" label=\"Contrase\u00F1a\" type=\"password\"\r\n prefix=\"lock\" [error]=\"fieldInvalid('password')\">\r\n </cc-input>\r\n </div>\r\n\r\n <div class=\"form-actions-row\">\r\n <label nz-checkbox formControlName=\"remember\">Recordarme</label>\r\n @if (recoverPasswordUrl) {\r\n <a [href]=\"recoverPasswordUrl\" class=\"forgot-password\">{{ forgotPasswordLabel }}</a>\r\n } @else {\r\n <a class=\"forgot-password\" (click)=\"forgotPasswordClick.emit()\">{{ forgotPasswordLabel }}</a>\r\n }\r\n </div>\r\n\r\n <cc-button [loading]=\"loading\" variant=\"primary\" type=\"submit\" class=\"submit-button\"\r\n [disabled]=\"loginForm.invalid || loading\">\r\n Iniciar Sesi\u00F3n\r\n </cc-button>\r\n </form>\r\n\r\n <div class=\"login-footer\">\r\n <p>\u00BFNecesitas ayuda? Contacta a <a [href]=\"'mailto:' + supportEmail\">{{ supportEmail }}</a></p>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{display:block;height:100%;width:100%}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;width:100vw;overflow:hidden;background:radial-gradient(circle at top left,#0284c7,#001529);padding:1rem;box-sizing:border-box}.login-card{width:100%;max-width:380px;padding:24px;background:#fff;border-radius:8px;box-shadow:0 12px 48px #0000004d;animation:fadeIn .5s ease-out}.login-header{text-align:center;margin-bottom:24px}.login-header .logo-box{width:40px;height:40px;background:#0284c7;color:#fff;font-size:20px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px}.login-header .logo{max-height:60px;margin-bottom:1rem;object-fit:contain}.login-header .title{font-size:20px;font-weight:700;color:#001529;margin:0;line-height:1.2}.login-header .title .accent{color:#0284c7;font-style:italic}.login-header .subtitle{font-size:10px;letter-spacing:2px;color:#8c8c8c;margin-top:4px}.error-alert{margin-bottom:16px;border-radius:4px}.login-form{display:flex;flex-direction:column;gap:16px}.form-group{display:flex;flex-direction:column;gap:4px}.error-message{color:#ff4d4f;font-size:12px;margin-top:2px;animation:slideDown .2s ease-out}.form-actions-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;margin-bottom:8px}.form-actions-row ::ng-deep .ant-checkbox-wrapper span{color:#000000d9}.form-actions-row .forgot-password{color:#0284c7;text-decoration:none;cursor:pointer}.form-actions-row .forgot-password:hover{color:#0050b3;text-decoration:underline}.submit-button{width:100%;margin-top:8px}.submit-button ::ng-deep button{width:100%;height:36px;font-size:14px;font-weight:600;border-radius:4px}.login-footer{margin-top:24px;text-align:center;color:#bfbfbf;font-size:10px}.login-footer p{margin:2px 0}.login-footer a{color:#8c8c8c;text-decoration:none}.login-footer a:hover{color:#0284c7}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
559
|
+
}], propDecorators: { title: [{
|
|
560
|
+
type: Input
|
|
561
|
+
}], titleAccent: [{
|
|
562
|
+
type: Input
|
|
563
|
+
}], subtitle: [{
|
|
564
|
+
type: Input
|
|
565
|
+
}], logoUrl: [{
|
|
566
|
+
type: Input
|
|
567
|
+
}], icon: [{
|
|
568
|
+
type: Input
|
|
569
|
+
}], loading: [{
|
|
570
|
+
type: Input
|
|
571
|
+
}], errorMessage: [{
|
|
572
|
+
type: Input
|
|
573
|
+
}], supportEmail: [{
|
|
574
|
+
type: Input
|
|
575
|
+
}], recoverPasswordUrl: [{
|
|
576
|
+
type: Input
|
|
577
|
+
}], forgotPasswordLabel: [{
|
|
578
|
+
type: Input
|
|
579
|
+
}], loginSubmit: [{
|
|
580
|
+
type: Output
|
|
581
|
+
}], forgotPasswordClick: [{
|
|
582
|
+
type: Output
|
|
583
|
+
}] } });
|
|
584
|
+
|
|
585
|
+
class CcContainerComponent {
|
|
586
|
+
constructor() {
|
|
587
|
+
this.fluid = false;
|
|
588
|
+
this.size = 'xl';
|
|
589
|
+
}
|
|
590
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
591
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcContainerComponent, isStandalone: true, selector: "cc-container", inputs: { fluid: "fluid", size: "size" }, ngImport: i0, template: "<div class=\"cc-container\" [class.cc-container-fluid]=\"fluid\" [ngClass]=\"'size-' + size\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".cc-container{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--space-4);padding-left:var(--space-4)}@media(min-width:768px){.cc-container{padding-right:var(--space-6);padding-left:var(--space-6)}}@media(min-width:1280px){.cc-container{padding-right:var(--space-8);padding-left:var(--space-8)}}.cc-container.cc-container-fluid{max-width:none!important}.cc-container.size-sm{max-width:640px}.cc-container.size-md{max-width:768px}.cc-container.size-lg{max-width:1024px}.cc-container.size-xl{max-width:1280px}.cc-container.size-2xl{max-width:1536px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
592
|
+
}
|
|
593
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcContainerComponent, decorators: [{
|
|
594
|
+
type: Component,
|
|
595
|
+
args: [{ selector: 'cc-container', standalone: true, imports: [CommonModule], template: "<div class=\"cc-container\" [class.cc-container-fluid]=\"fluid\" [ngClass]=\"'size-' + size\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".cc-container{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--space-4);padding-left:var(--space-4)}@media(min-width:768px){.cc-container{padding-right:var(--space-6);padding-left:var(--space-6)}}@media(min-width:1280px){.cc-container{padding-right:var(--space-8);padding-left:var(--space-8)}}.cc-container.cc-container-fluid{max-width:none!important}.cc-container.size-sm{max-width:640px}.cc-container.size-md{max-width:768px}.cc-container.size-lg{max-width:1024px}.cc-container.size-xl{max-width:1280px}.cc-container.size-2xl{max-width:1536px}\n"] }]
|
|
596
|
+
}], propDecorators: { fluid: [{
|
|
597
|
+
type: Input
|
|
598
|
+
}], size: [{
|
|
599
|
+
type: Input
|
|
600
|
+
}] } });
|
|
601
|
+
|
|
602
|
+
class CcStackComponent {
|
|
603
|
+
constructor() {
|
|
604
|
+
this.gap = input(4, ...(ngDevMode ? [{ debugName: "gap" }] : []));
|
|
605
|
+
this.align = input('stretch', ...(ngDevMode ? [{ debugName: "align" }] : []));
|
|
606
|
+
this.justify = input('start', ...(ngDevMode ? [{ debugName: "justify" }] : []));
|
|
607
|
+
}
|
|
608
|
+
get gapStyle() {
|
|
609
|
+
const g = this.gap();
|
|
610
|
+
return typeof g === 'number' ? `var(--space-${g})` : g;
|
|
611
|
+
}
|
|
612
|
+
get alignStyle() {
|
|
613
|
+
const map = { start: 'flex-start', center: 'center', end: 'flex-end', stretch: 'stretch' };
|
|
614
|
+
return map[this.align()];
|
|
615
|
+
}
|
|
616
|
+
get justifyStyle() {
|
|
617
|
+
const map = { start: 'flex-start', center: 'center', end: 'flex-end', between: 'space-between' };
|
|
618
|
+
const j = this.justify();
|
|
619
|
+
if (j === 'between')
|
|
620
|
+
return 'space-between';
|
|
621
|
+
return map[j] || 'flex-start';
|
|
622
|
+
}
|
|
623
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcStackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
624
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: CcStackComponent, isStandalone: true, selector: "cc-stack", inputs: { gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.gap": "this.gapStyle", "style.align-items": "this.alignStyle", "style.justify-content": "this.justifyStyle" } }, ngImport: i0, template: "<ng-content></ng-content>", styles: [":host{display:flex;flex-direction:column;width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
625
|
+
}
|
|
626
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcStackComponent, decorators: [{
|
|
627
|
+
type: Component,
|
|
628
|
+
args: [{ selector: 'cc-stack', standalone: true, imports: [CommonModule], template: "<ng-content></ng-content>", styles: [":host{display:flex;flex-direction:column;width:100%}\n"] }]
|
|
629
|
+
}], propDecorators: { gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], gapStyle: [{
|
|
630
|
+
type: HostBinding,
|
|
631
|
+
args: ['style.gap']
|
|
632
|
+
}], alignStyle: [{
|
|
633
|
+
type: HostBinding,
|
|
634
|
+
args: ['style.align-items']
|
|
635
|
+
}], justifyStyle: [{
|
|
636
|
+
type: HostBinding,
|
|
637
|
+
args: ['style.justify-content']
|
|
638
|
+
}] } });
|
|
639
|
+
|
|
640
|
+
class CcGridComponent {
|
|
641
|
+
constructor() {
|
|
642
|
+
this.cols = 1;
|
|
643
|
+
this.gap = 4;
|
|
644
|
+
}
|
|
645
|
+
get classes() {
|
|
646
|
+
return [
|
|
647
|
+
`cc-grid-cols-${this.cols}`,
|
|
648
|
+
this.colsMd ? `cc-grid-cols-md-${this.colsMd}` : '',
|
|
649
|
+
this.colsLg ? `cc-grid-cols-lg-${this.colsLg}` : '',
|
|
650
|
+
`cc-grid-gap-${this.gap}`
|
|
651
|
+
].filter(Boolean).join(' ');
|
|
652
|
+
}
|
|
653
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
654
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcGridComponent, isStandalone: true, selector: "cc-grid", inputs: { cols: "cols", colsMd: "colsMd", colsLg: "colsLg", gap: "gap" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<div class=\"cc-grid\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".cc-grid{display:grid;width:100%}.cc-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.cc-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cc-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cc-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cc-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.cc-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.cc-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.cc-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.cc-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.cc-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.cc-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.cc-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}@media(min-width:768px){.cc-grid-cols-md-1{grid-template-columns:repeat(1,minmax(0,1fr))}.cc-grid-cols-md-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cc-grid-cols-md-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cc-grid-cols-md-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cc-grid-cols-md-5{grid-template-columns:repeat(5,minmax(0,1fr))}.cc-grid-cols-md-6{grid-template-columns:repeat(6,minmax(0,1fr))}.cc-grid-cols-md-7{grid-template-columns:repeat(7,minmax(0,1fr))}.cc-grid-cols-md-8{grid-template-columns:repeat(8,minmax(0,1fr))}.cc-grid-cols-md-9{grid-template-columns:repeat(9,minmax(0,1fr))}.cc-grid-cols-md-10{grid-template-columns:repeat(10,minmax(0,1fr))}.cc-grid-cols-md-11{grid-template-columns:repeat(11,minmax(0,1fr))}.cc-grid-cols-md-12{grid-template-columns:repeat(12,minmax(0,1fr))}}@media(min-width:1024px){.cc-grid-cols-lg-1{grid-template-columns:repeat(1,minmax(0,1fr))}.cc-grid-cols-lg-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cc-grid-cols-lg-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cc-grid-cols-lg-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cc-grid-cols-lg-5{grid-template-columns:repeat(5,minmax(0,1fr))}.cc-grid-cols-lg-6{grid-template-columns:repeat(6,minmax(0,1fr))}.cc-grid-cols-lg-7{grid-template-columns:repeat(7,minmax(0,1fr))}.cc-grid-cols-lg-8{grid-template-columns:repeat(8,minmax(0,1fr))}.cc-grid-cols-lg-9{grid-template-columns:repeat(9,minmax(0,1fr))}.cc-grid-cols-lg-10{grid-template-columns:repeat(10,minmax(0,1fr))}.cc-grid-cols-lg-11{grid-template-columns:repeat(11,minmax(0,1fr))}.cc-grid-cols-lg-12{grid-template-columns:repeat(12,minmax(0,1fr))}}.cc-grid-gap-1{gap:var(--space-1)}.cc-grid-gap-2{gap:var(--space-2)}.cc-grid-gap-3{gap:var(--space-3)}.cc-grid-gap-4{gap:var(--space-4)}.cc-grid-gap-5{gap:var(--space-5)}.cc-grid-gap-6{gap:var(--space-6)}.cc-grid-gap-7{gap:var(--space-7)}.cc-grid-gap-8{gap:var(--space-8)}.cc-grid-gap-9{gap:var(--space-9)}.cc-grid-gap-10{gap:var(--space-10)}.cc-grid-gap-11{gap:var(--space-11)}.cc-grid-gap-12{gap:var(--space-12)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
655
|
+
}
|
|
656
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcGridComponent, decorators: [{
|
|
657
|
+
type: Component,
|
|
658
|
+
args: [{ selector: 'cc-grid', standalone: true, imports: [CommonModule], template: "<div class=\"cc-grid\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".cc-grid{display:grid;width:100%}.cc-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.cc-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cc-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cc-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cc-grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.cc-grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.cc-grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.cc-grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.cc-grid-cols-9{grid-template-columns:repeat(9,minmax(0,1fr))}.cc-grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.cc-grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.cc-grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}@media(min-width:768px){.cc-grid-cols-md-1{grid-template-columns:repeat(1,minmax(0,1fr))}.cc-grid-cols-md-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cc-grid-cols-md-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cc-grid-cols-md-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cc-grid-cols-md-5{grid-template-columns:repeat(5,minmax(0,1fr))}.cc-grid-cols-md-6{grid-template-columns:repeat(6,minmax(0,1fr))}.cc-grid-cols-md-7{grid-template-columns:repeat(7,minmax(0,1fr))}.cc-grid-cols-md-8{grid-template-columns:repeat(8,minmax(0,1fr))}.cc-grid-cols-md-9{grid-template-columns:repeat(9,minmax(0,1fr))}.cc-grid-cols-md-10{grid-template-columns:repeat(10,minmax(0,1fr))}.cc-grid-cols-md-11{grid-template-columns:repeat(11,minmax(0,1fr))}.cc-grid-cols-md-12{grid-template-columns:repeat(12,minmax(0,1fr))}}@media(min-width:1024px){.cc-grid-cols-lg-1{grid-template-columns:repeat(1,minmax(0,1fr))}.cc-grid-cols-lg-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cc-grid-cols-lg-3{grid-template-columns:repeat(3,minmax(0,1fr))}.cc-grid-cols-lg-4{grid-template-columns:repeat(4,minmax(0,1fr))}.cc-grid-cols-lg-5{grid-template-columns:repeat(5,minmax(0,1fr))}.cc-grid-cols-lg-6{grid-template-columns:repeat(6,minmax(0,1fr))}.cc-grid-cols-lg-7{grid-template-columns:repeat(7,minmax(0,1fr))}.cc-grid-cols-lg-8{grid-template-columns:repeat(8,minmax(0,1fr))}.cc-grid-cols-lg-9{grid-template-columns:repeat(9,minmax(0,1fr))}.cc-grid-cols-lg-10{grid-template-columns:repeat(10,minmax(0,1fr))}.cc-grid-cols-lg-11{grid-template-columns:repeat(11,minmax(0,1fr))}.cc-grid-cols-lg-12{grid-template-columns:repeat(12,minmax(0,1fr))}}.cc-grid-gap-1{gap:var(--space-1)}.cc-grid-gap-2{gap:var(--space-2)}.cc-grid-gap-3{gap:var(--space-3)}.cc-grid-gap-4{gap:var(--space-4)}.cc-grid-gap-5{gap:var(--space-5)}.cc-grid-gap-6{gap:var(--space-6)}.cc-grid-gap-7{gap:var(--space-7)}.cc-grid-gap-8{gap:var(--space-8)}.cc-grid-gap-9{gap:var(--space-9)}.cc-grid-gap-10{gap:var(--space-10)}.cc-grid-gap-11{gap:var(--space-11)}.cc-grid-gap-12{gap:var(--space-12)}\n"] }]
|
|
659
|
+
}], propDecorators: { cols: [{
|
|
660
|
+
type: Input
|
|
661
|
+
}], colsMd: [{
|
|
662
|
+
type: Input
|
|
663
|
+
}], colsLg: [{
|
|
664
|
+
type: Input
|
|
665
|
+
}], gap: [{
|
|
666
|
+
type: Input
|
|
667
|
+
}], classes: [{
|
|
668
|
+
type: HostBinding,
|
|
669
|
+
args: ['class']
|
|
670
|
+
}] } });
|
|
671
|
+
|
|
672
|
+
class CcInlineComponent {
|
|
673
|
+
constructor() {
|
|
674
|
+
this.gap = input(4, ...(ngDevMode ? [{ debugName: "gap" }] : []));
|
|
675
|
+
this.align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : []));
|
|
676
|
+
this.justify = input('start', ...(ngDevMode ? [{ debugName: "justify" }] : []));
|
|
677
|
+
this.wrap = input(false, ...(ngDevMode ? [{ debugName: "wrap" }] : []));
|
|
678
|
+
}
|
|
679
|
+
get gapStyle() {
|
|
680
|
+
const g = this.gap();
|
|
681
|
+
return typeof g === 'number' ? `var(--space-${g})` : g;
|
|
682
|
+
}
|
|
683
|
+
get alignStyle() {
|
|
684
|
+
const map = { start: 'flex-start', center: 'center', end: 'flex-end', baseline: 'baseline' };
|
|
685
|
+
return map[this.align()];
|
|
686
|
+
}
|
|
687
|
+
get justifyStyle() {
|
|
688
|
+
const map = { start: 'flex-start', center: 'center', end: 'flex-end', between: 'space-between', around: 'space-around' };
|
|
689
|
+
return map[this.justify()];
|
|
690
|
+
}
|
|
691
|
+
get wrapStyle() {
|
|
692
|
+
return this.wrap() ? 'wrap' : 'nowrap';
|
|
693
|
+
}
|
|
694
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcInlineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
695
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.4", type: CcInlineComponent, isStandalone: true, selector: "cc-inline", inputs: { gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, justify: { classPropertyName: "justify", publicName: "justify", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--inline-gap": "this.gapStyle", "style.--inline-align": "this.alignStyle", "style.--inline-justify": "this.justifyStyle", "style.--inline-wrap": "this.wrapStyle" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:var(--inline-wrap, nowrap);align-items:var(--inline-align, center);justify-content:var(--inline-justify, flex-start);gap:var(--inline-gap, var(--space-4))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
696
|
+
}
|
|
697
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcInlineComponent, decorators: [{
|
|
698
|
+
type: Component,
|
|
699
|
+
args: [{ selector: 'cc-inline', standalone: true, imports: [CommonModule], template: '<ng-content></ng-content>', styles: [":host{display:flex;flex-direction:row;flex-wrap:var(--inline-wrap, nowrap);align-items:var(--inline-align, center);justify-content:var(--inline-justify, flex-start);gap:var(--inline-gap, var(--space-4))}\n"] }]
|
|
700
|
+
}], propDecorators: { gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], justify: [{ type: i0.Input, args: [{ isSignal: true, alias: "justify", required: false }] }], wrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrap", required: false }] }], gapStyle: [{
|
|
701
|
+
type: HostBinding,
|
|
702
|
+
args: ['style.--inline-gap']
|
|
703
|
+
}], alignStyle: [{
|
|
704
|
+
type: HostBinding,
|
|
705
|
+
args: ['style.--inline-align']
|
|
706
|
+
}], justifyStyle: [{
|
|
707
|
+
type: HostBinding,
|
|
708
|
+
args: ['style.--inline-justify']
|
|
709
|
+
}], wrapStyle: [{
|
|
710
|
+
type: HostBinding,
|
|
711
|
+
args: ['style.--inline-wrap']
|
|
712
|
+
}] } });
|
|
713
|
+
|
|
714
|
+
class CcAdminLayoutComponent {
|
|
715
|
+
constructor() {
|
|
716
|
+
this.menuItems = [];
|
|
717
|
+
this.notificationsCount = 0;
|
|
718
|
+
this.isSidebarCollapsed = false;
|
|
719
|
+
this.isMobileMenuOpen = false;
|
|
720
|
+
}
|
|
721
|
+
toggleSidebar() {
|
|
722
|
+
this.isSidebarCollapsed = !this.isSidebarCollapsed;
|
|
723
|
+
}
|
|
724
|
+
toggleMobileMenu() {
|
|
725
|
+
this.isMobileMenuOpen = !this.isMobileMenuOpen;
|
|
726
|
+
}
|
|
727
|
+
onNavItemClick(item) {
|
|
728
|
+
if (this.isMobileMenuOpen) {
|
|
729
|
+
this.isMobileMenuOpen = false;
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
onUserAction(action) {
|
|
733
|
+
console.log('User action:', action);
|
|
734
|
+
}
|
|
735
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcAdminLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
736
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcAdminLayoutComponent, isStandalone: true, selector: "cc-admin-layout", inputs: { user: "user", menuItems: "menuItems", notificationsCount: "notificationsCount" }, ngImport: i0, template: "<div class=\"cc-admin-layout\" [class.sidebar-collapsed]=\"isSidebarCollapsed\">\r\n\r\n <cc-sidebar class=\"cc-admin-sidebar\" [class.mobile-open]=\"isMobileMenuOpen\" [menuItems]=\"menuItems\"\r\n [collapsed]=\"isSidebarCollapsed\" (toggleCollapse)=\"toggleSidebar()\" (navigate)=\"onNavItemClick($event)\">\r\n </cc-sidebar>\r\n\r\n <div class=\"cc-admin-main\">\r\n <cc-header [user]=\"user\" [notificationsCount]=\"notificationsCount\" (toggleSidebar)=\"toggleMobileMenu()\"\r\n (userAction)=\"onUserAction($event)\">\r\n </cc-header>\r\n\r\n <main class=\"cc-admin-content\">\r\n <div class=\"cc-admin-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n </main>\r\n </div>\r\n\r\n <!-- Overlay para m\u00F3vil -->\r\n <div class=\"cc-admin-overlay\" *ngIf=\"isMobileMenuOpen\" (click)=\"isMobileMenuOpen = false\"></div>\r\n</div>", styles: [".cc-admin-layout{display:flex;min-height:100vh;background-color:var(--color-bg-secondary);--sidebar-width: 280px;--sidebar-collapsed-width: 80px}.cc-admin-layout.sidebar-collapsed{--sidebar-width: var(--sidebar-collapsed-width)}.cc-admin-sidebar{position:fixed;inset-y:0;left:0;z-index:40;width:var(--sidebar-width);transition:width .3s cubic-bezier(.4,0,.2,1);box-shadow:4px 0 24px #0000000d}.cc-admin-sidebar.mobile-open{display:block;box-shadow:var(--shadow-xl)}.cc-admin-main{flex:1;display:flex;flex-direction:column;min-width:0;padding-left:0;transition:padding-left .3s cubic-bezier(.4,0,.2,1)}@media(min-width:1024px){.cc-admin-main{padding-left:var(--sidebar-width)}}.cc-admin-content{flex:1;padding:var(--space-6) var(--space-4);background-color:var(--color-bg-secondary);min-height:calc(100vh - var(--header-height))}@media(min-width:1024px){.cc-admin-content{padding:var(--space-8) var(--space-6)}}.cc-admin-content-container{max-width:1280px;margin:0 auto;width:100%}.cc-admin-overlay{position:fixed;inset:0;background-color:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:30}@media(min-width:1024px){.cc-admin-overlay{display:none}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CcHeaderComponent, selector: "cc-header", inputs: ["user", "notificationsCount", "showMenuButton", "hasLogoContent"], outputs: ["toggleSidebar", "userClick", "notificationClick", "userAction"] }, { kind: "component", type: CcSidebarComponent, selector: "cc-sidebar", inputs: ["menuItems", "collapsed", "activeRoute"], outputs: ["navigate", "toggleCollapse"] }] }); }
|
|
737
|
+
}
|
|
738
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcAdminLayoutComponent, decorators: [{
|
|
739
|
+
type: Component,
|
|
740
|
+
args: [{ selector: 'cc-admin-layout', standalone: true, imports: [CommonModule, CcHeaderComponent, CcSidebarComponent, RouterOutlet], template: "<div class=\"cc-admin-layout\" [class.sidebar-collapsed]=\"isSidebarCollapsed\">\r\n\r\n <cc-sidebar class=\"cc-admin-sidebar\" [class.mobile-open]=\"isMobileMenuOpen\" [menuItems]=\"menuItems\"\r\n [collapsed]=\"isSidebarCollapsed\" (toggleCollapse)=\"toggleSidebar()\" (navigate)=\"onNavItemClick($event)\">\r\n </cc-sidebar>\r\n\r\n <div class=\"cc-admin-main\">\r\n <cc-header [user]=\"user\" [notificationsCount]=\"notificationsCount\" (toggleSidebar)=\"toggleMobileMenu()\"\r\n (userAction)=\"onUserAction($event)\">\r\n </cc-header>\r\n\r\n <main class=\"cc-admin-content\">\r\n <div class=\"cc-admin-content-container\">\r\n <ng-content></ng-content>\r\n </div>\r\n </main>\r\n </div>\r\n\r\n <!-- Overlay para m\u00F3vil -->\r\n <div class=\"cc-admin-overlay\" *ngIf=\"isMobileMenuOpen\" (click)=\"isMobileMenuOpen = false\"></div>\r\n</div>", styles: [".cc-admin-layout{display:flex;min-height:100vh;background-color:var(--color-bg-secondary);--sidebar-width: 280px;--sidebar-collapsed-width: 80px}.cc-admin-layout.sidebar-collapsed{--sidebar-width: var(--sidebar-collapsed-width)}.cc-admin-sidebar{position:fixed;inset-y:0;left:0;z-index:40;width:var(--sidebar-width);transition:width .3s cubic-bezier(.4,0,.2,1);box-shadow:4px 0 24px #0000000d}.cc-admin-sidebar.mobile-open{display:block;box-shadow:var(--shadow-xl)}.cc-admin-main{flex:1;display:flex;flex-direction:column;min-width:0;padding-left:0;transition:padding-left .3s cubic-bezier(.4,0,.2,1)}@media(min-width:1024px){.cc-admin-main{padding-left:var(--sidebar-width)}}.cc-admin-content{flex:1;padding:var(--space-6) var(--space-4);background-color:var(--color-bg-secondary);min-height:calc(100vh - var(--header-height))}@media(min-width:1024px){.cc-admin-content{padding:var(--space-8) var(--space-6)}}.cc-admin-content-container{max-width:1280px;margin:0 auto;width:100%}.cc-admin-overlay{position:fixed;inset:0;background-color:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:30}@media(min-width:1024px){.cc-admin-overlay{display:none}}\n"] }]
|
|
741
|
+
}], propDecorators: { user: [{
|
|
742
|
+
type: Input
|
|
743
|
+
}], menuItems: [{
|
|
744
|
+
type: Input
|
|
745
|
+
}], notificationsCount: [{
|
|
746
|
+
type: Input
|
|
747
|
+
}] } });
|
|
748
|
+
|
|
749
|
+
class CcAuthLayoutComponent {
|
|
750
|
+
constructor() {
|
|
751
|
+
this.backgroundType = 'gradient';
|
|
752
|
+
}
|
|
753
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcAuthLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
754
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcAuthLayoutComponent, isStandalone: true, selector: "cc-auth-layout", inputs: { backgroundType: "backgroundType" }, ngImport: i0, template: "<div class=\"cc-auth-layout\" [ngClass]=\"'bg-' + backgroundType\">\r\n <div class=\"cc-auth-container\">\r\n <div class=\"cc-auth-card\">\r\n <div class=\"cc-auth-logo\">\r\n <!-- Espacio para logo -->\r\n <div class=\"cc-auth-logo-placeholder\">CERCA</div>\r\n </div>\r\n\r\n <div class=\"cc-auth-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".cc-auth-layout{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.cc-auth-layout.bg-gradient{background:radial-gradient(circle at top left,var(--color-brand-900),var(--neutral-900))}.cc-auth-layout.bg-simple{background-color:var(--color-bg-secondary)}.cc-auth-container{width:100%;max-width:440px}.cc-auth-card{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-2xl);padding:var(--space-8);box-shadow:var(--shadow-2xl)}.cc-auth-logo{display:flex;justify-content:center;margin-bottom:var(--space-8)}.cc-auth-logo .cc-auth-logo-placeholder{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-brand-600);letter-spacing:-.05em}.cc-auth-content{display:flex;flex-direction:column;gap:var(--space-6)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
755
|
+
}
|
|
756
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcAuthLayoutComponent, decorators: [{
|
|
757
|
+
type: Component,
|
|
758
|
+
args: [{ selector: 'cc-auth-layout', standalone: true, imports: [CommonModule], template: "<div class=\"cc-auth-layout\" [ngClass]=\"'bg-' + backgroundType\">\r\n <div class=\"cc-auth-container\">\r\n <div class=\"cc-auth-card\">\r\n <div class=\"cc-auth-logo\">\r\n <!-- Espacio para logo -->\r\n <div class=\"cc-auth-logo-placeholder\">CERCA</div>\r\n </div>\r\n\r\n <div class=\"cc-auth-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".cc-auth-layout{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.cc-auth-layout.bg-gradient{background:radial-gradient(circle at top left,var(--color-brand-900),var(--neutral-900))}.cc-auth-layout.bg-simple{background-color:var(--color-bg-secondary)}.cc-auth-container{width:100%;max-width:440px}.cc-auth-card{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-2xl);padding:var(--space-8);box-shadow:var(--shadow-2xl)}.cc-auth-logo{display:flex;justify-content:center;margin-bottom:var(--space-8)}.cc-auth-logo .cc-auth-logo-placeholder{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-brand-600);letter-spacing:-.05em}.cc-auth-content{display:flex;flex-direction:column;gap:var(--space-6)}\n"] }]
|
|
759
|
+
}], propDecorators: { backgroundType: [{
|
|
760
|
+
type: Input
|
|
761
|
+
}] } });
|
|
762
|
+
|
|
763
|
+
class CcDashboardTemplateComponent {
|
|
764
|
+
constructor() {
|
|
765
|
+
this.title = 'Escritorio';
|
|
766
|
+
}
|
|
767
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcDashboardTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
768
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcDashboardTemplateComponent, isStandalone: true, selector: "cc-dashboard-template", inputs: { title: "title", subtitle: "subtitle" }, ngImport: i0, template: "<div class=\"cc-dashboard-template\">\r\n <header class=\"cc-dashboard-header\">\r\n <cc-stack [gap]=\"1\">\r\n <h1 class=\"cc-dashboard-title\">{{ title }}</h1>\r\n <p class=\"cc-dashboard-subtitle\" *ngIf=\"subtitle\">{{ subtitle }}</p>\r\n </cc-stack>\r\n <div class=\"cc-dashboard-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n <cc-grid [cols]=\"1\" [colsMd]=\"2\" [colsLg]=\"4\" [gap]=\"6\" class=\"cc-dashboard-metrics\">\r\n <ng-content select=\"[metrics]\"></ng-content>\r\n </cc-grid>\r\n\r\n <cc-grid [cols]=\"1\" [colsLg]=\"3\" [gap]=\"6\" class=\"cc-dashboard-main\">\r\n <div class=\"cc-dashboard-primary-content\">\r\n <ng-content select=\"[main-content]\"></ng-content>\r\n </div>\r\n <aside class=\"cc-dashboard-secondary-content\">\r\n <ng-content select=\"[sidebar-content]\"></ng-content>\r\n </aside>\r\n </cc-grid>\r\n</div>", styles: [".cc-dashboard-template{display:flex;flex-direction:column;gap:var(--space-8)}.cc-dashboard-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4)}.cc-dashboard-title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:1}.cc-dashboard-subtitle{color:var(--color-text-muted);font-size:var(--font-size-md)}.cc-dashboard-metrics{margin-bottom:var(--space-4)}@media(min-width:1024px){.cc-dashboard-primary-content{grid-column:span 2}}.cc-dashboard-secondary-content{display:flex;flex-direction:column;gap:var(--space-6)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CcGridComponent, selector: "cc-grid", inputs: ["cols", "colsMd", "colsLg", "gap"] }, { kind: "component", type: CcStackComponent, selector: "cc-stack", inputs: ["gap", "align", "justify"] }] }); }
|
|
769
|
+
}
|
|
770
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcDashboardTemplateComponent, decorators: [{
|
|
771
|
+
type: Component,
|
|
772
|
+
args: [{ selector: 'cc-dashboard-template', standalone: true, imports: [CommonModule, CcGridComponent, CcStackComponent], template: "<div class=\"cc-dashboard-template\">\r\n <header class=\"cc-dashboard-header\">\r\n <cc-stack [gap]=\"1\">\r\n <h1 class=\"cc-dashboard-title\">{{ title }}</h1>\r\n <p class=\"cc-dashboard-subtitle\" *ngIf=\"subtitle\">{{ subtitle }}</p>\r\n </cc-stack>\r\n <div class=\"cc-dashboard-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n <cc-grid [cols]=\"1\" [colsMd]=\"2\" [colsLg]=\"4\" [gap]=\"6\" class=\"cc-dashboard-metrics\">\r\n <ng-content select=\"[metrics]\"></ng-content>\r\n </cc-grid>\r\n\r\n <cc-grid [cols]=\"1\" [colsLg]=\"3\" [gap]=\"6\" class=\"cc-dashboard-main\">\r\n <div class=\"cc-dashboard-primary-content\">\r\n <ng-content select=\"[main-content]\"></ng-content>\r\n </div>\r\n <aside class=\"cc-dashboard-secondary-content\">\r\n <ng-content select=\"[sidebar-content]\"></ng-content>\r\n </aside>\r\n </cc-grid>\r\n</div>", styles: [".cc-dashboard-template{display:flex;flex-direction:column;gap:var(--space-8)}.cc-dashboard-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4)}.cc-dashboard-title{font-size:var(--font-size-3xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:1}.cc-dashboard-subtitle{color:var(--color-text-muted);font-size:var(--font-size-md)}.cc-dashboard-metrics{margin-bottom:var(--space-4)}@media(min-width:1024px){.cc-dashboard-primary-content{grid-column:span 2}}.cc-dashboard-secondary-content{display:flex;flex-direction:column;gap:var(--space-6)}\n"] }]
|
|
773
|
+
}], propDecorators: { title: [{
|
|
774
|
+
type: Input
|
|
775
|
+
}], subtitle: [{
|
|
776
|
+
type: Input
|
|
777
|
+
}] } });
|
|
778
|
+
|
|
779
|
+
class CcListPageTemplateComponent {
|
|
780
|
+
constructor() {
|
|
781
|
+
this.title = '';
|
|
782
|
+
this.hasFilters = true; // Added missing property
|
|
783
|
+
}
|
|
784
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcListPageTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
785
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcListPageTemplateComponent, isStandalone: true, selector: "cc-list-page-template", inputs: { title: "title", description: "description", hasFilters: "hasFilters" }, queries: [{ propertyName: "filtersTemplate", first: true, predicate: ["filters"], descendants: true }], ngImport: i0, template: "<div class=\"cc-list-page\">\r\n <header class=\"cc-page-header\">\r\n <cc-stack [gap]=\"1\">\r\n <h1 class=\"cc-page-title\">{{ title }}</h1>\r\n <p class=\"cc-page-description\" *ngIf=\"description\">{{ description }}</p>\r\n </cc-stack>\r\n <div class=\"cc-page-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n <section class=\"cc-page-filters\" *ngIf=\"hasFilters\">\r\n <ng-content select=\"[filters]\"></ng-content>\r\n </section>\r\n\r\n <main class=\"cc-page-main\">\r\n <ng-content select=\"[table]\"></ng-content>\r\n </main>\r\n\r\n <footer class=\"cc-page-footer\">\r\n <ng-content select=\"[pagination]\"></ng-content>\r\n </footer>\r\n</div>", styles: [".cc-list-page{display:flex;flex-direction:column;gap:var(--space-6)}.cc-page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-2)}.cc-page-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:1.2}.cc-page-description{color:var(--color-text-muted);font-size:var(--font-size-sm)}.cc-page-filters{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-xl);padding:var(--space-4)}.cc-page-main{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-sm)}.cc-page-footer{display:flex;justify-content:flex-end;margin-top:var(--space-2)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CcStackComponent, selector: "cc-stack", inputs: ["gap", "align", "justify"] }] }); }
|
|
786
|
+
}
|
|
787
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcListPageTemplateComponent, decorators: [{
|
|
788
|
+
type: Component,
|
|
789
|
+
args: [{ selector: 'cc-list-page-template', standalone: true, imports: [CommonModule, CcStackComponent], template: "<div class=\"cc-list-page\">\r\n <header class=\"cc-page-header\">\r\n <cc-stack [gap]=\"1\">\r\n <h1 class=\"cc-page-title\">{{ title }}</h1>\r\n <p class=\"cc-page-description\" *ngIf=\"description\">{{ description }}</p>\r\n </cc-stack>\r\n <div class=\"cc-page-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n <section class=\"cc-page-filters\" *ngIf=\"hasFilters\">\r\n <ng-content select=\"[filters]\"></ng-content>\r\n </section>\r\n\r\n <main class=\"cc-page-main\">\r\n <ng-content select=\"[table]\"></ng-content>\r\n </main>\r\n\r\n <footer class=\"cc-page-footer\">\r\n <ng-content select=\"[pagination]\"></ng-content>\r\n </footer>\r\n</div>", styles: [".cc-list-page{display:flex;flex-direction:column;gap:var(--space-6)}.cc-page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-2)}.cc-page-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:1.2}.cc-page-description{color:var(--color-text-muted);font-size:var(--font-size-sm)}.cc-page-filters{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-xl);padding:var(--space-4)}.cc-page-main{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-sm)}.cc-page-footer{display:flex;justify-content:flex-end;margin-top:var(--space-2)}\n"] }]
|
|
790
|
+
}], propDecorators: { title: [{
|
|
791
|
+
type: Input
|
|
792
|
+
}], description: [{
|
|
793
|
+
type: Input
|
|
794
|
+
}], hasFilters: [{
|
|
795
|
+
type: Input
|
|
796
|
+
}], filtersTemplate: [{
|
|
797
|
+
type: ContentChild,
|
|
798
|
+
args: ['filters']
|
|
799
|
+
}] } });
|
|
800
|
+
|
|
801
|
+
class CcFormPageTemplateComponent {
|
|
802
|
+
constructor() {
|
|
803
|
+
this.title = '';
|
|
804
|
+
this.loading = false;
|
|
805
|
+
}
|
|
806
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcFormPageTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
807
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.4", type: CcFormPageTemplateComponent, isStandalone: true, selector: "cc-form-page-template", inputs: { title: "title", backUrl: "backUrl", loading: "loading" }, ngImport: i0, template: "<div class=\"cc-form-page\">\r\n <header class=\"cc-form-page-header\">\r\n <cc-stack [gap]=\"1\">\r\n <div class=\"cc-form-page-nav\">\r\n <ng-content select=\"[back-button]\"></ng-content>\r\n </div>\r\n <h1 class=\"cc-form-page-title\">{{ title }}</h1>\r\n </cc-stack>\r\n <div class=\"cc-form-page-actions-header\">\r\n <ng-content select=\"[header-actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n <main class=\"cc-form-page-main\">\r\n <div class=\"cc-form-page-card\">\r\n <ng-content select=\"[form-content]\"></ng-content>\r\n </div>\r\n </main>\r\n\r\n <footer class=\"cc-form-page-footer\">\r\n <ng-content select=\"[form-actions]\"></ng-content>\r\n </footer>\r\n\r\n <div class=\"cc-form-page-loading-overlay\" *ngIf=\"loading\">\r\n <div class=\"cc-form-page-spinner\"></div>\r\n </div>\r\n</div>", styles: [".cc-form-page{display:flex;flex-direction:column;gap:var(--space-6);position:relative;min-height:100%}.cc-form-page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-2)}.cc-form-page-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.cc-form-page-main{flex:1}.cc-form-page-card{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-2xl);padding:var(--space-6);box-shadow:var(--shadow-sm)}@media(min-width:768px){.cc-form-page-card{padding:var(--space-8)}}.cc-form-page-footer{background-color:var(--color-bg-primary);border-top:1px solid var(--color-border-subtle);padding:var(--space-4) var(--space-6);margin:0 calc(var(--space-6) * -1);display:flex;justify-content:flex-end;gap:var(--space-4);border-bottom-left-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl)}.cc-form-page-loading-overlay{position:absolute;inset:0;background-color:#ffffffbf;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;border-radius:var(--radius-2xl)}.cc-form-page-spinner{width:40px;height:40px;border:3px solid var(--color-border-subtle);border-top-color:var(--color-brand-600);border-radius:50%;animation:cc-spin .8s linear infinite}@keyframes cc-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CcStackComponent, selector: "cc-stack", inputs: ["gap", "align", "justify"] }] }); }
|
|
808
|
+
}
|
|
809
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: CcFormPageTemplateComponent, decorators: [{
|
|
810
|
+
type: Component,
|
|
811
|
+
args: [{ selector: 'cc-form-page-template', standalone: true, imports: [CommonModule, CcStackComponent], template: "<div class=\"cc-form-page\">\r\n <header class=\"cc-form-page-header\">\r\n <cc-stack [gap]=\"1\">\r\n <div class=\"cc-form-page-nav\">\r\n <ng-content select=\"[back-button]\"></ng-content>\r\n </div>\r\n <h1 class=\"cc-form-page-title\">{{ title }}</h1>\r\n </cc-stack>\r\n <div class=\"cc-form-page-actions-header\">\r\n <ng-content select=\"[header-actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n <main class=\"cc-form-page-main\">\r\n <div class=\"cc-form-page-card\">\r\n <ng-content select=\"[form-content]\"></ng-content>\r\n </div>\r\n </main>\r\n\r\n <footer class=\"cc-form-page-footer\">\r\n <ng-content select=\"[form-actions]\"></ng-content>\r\n </footer>\r\n\r\n <div class=\"cc-form-page-loading-overlay\" *ngIf=\"loading\">\r\n <div class=\"cc-form-page-spinner\"></div>\r\n </div>\r\n</div>", styles: [".cc-form-page{display:flex;flex-direction:column;gap:var(--space-6);position:relative;min-height:100%}.cc-form-page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-2)}.cc-form-page-title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.cc-form-page-main{flex:1}.cc-form-page-card{background-color:var(--color-bg-primary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-2xl);padding:var(--space-6);box-shadow:var(--shadow-sm)}@media(min-width:768px){.cc-form-page-card{padding:var(--space-8)}}.cc-form-page-footer{background-color:var(--color-bg-primary);border-top:1px solid var(--color-border-subtle);padding:var(--space-4) var(--space-6);margin:0 calc(var(--space-6) * -1);display:flex;justify-content:flex-end;gap:var(--space-4);border-bottom-left-radius:var(--radius-2xl);border-bottom-right-radius:var(--radius-2xl)}.cc-form-page-loading-overlay{position:absolute;inset:0;background-color:#ffffffbf;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;border-radius:var(--radius-2xl)}.cc-form-page-spinner{width:40px;height:40px;border:3px solid var(--color-border-subtle);border-top-color:var(--color-brand-600);border-radius:50%;animation:cc-spin .8s linear infinite}@keyframes cc-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
812
|
+
}], propDecorators: { title: [{
|
|
813
|
+
type: Input
|
|
814
|
+
}], backUrl: [{
|
|
815
|
+
type: Input
|
|
816
|
+
}], loading: [{
|
|
817
|
+
type: Input
|
|
818
|
+
}] } });
|
|
819
|
+
|
|
820
|
+
// Atoms
|
|
821
|
+
|
|
822
|
+
/*
|
|
823
|
+
* Public API Surface of @cerca/design-system
|
|
824
|
+
*/
|
|
825
|
+
|
|
826
|
+
/**
|
|
827
|
+
* Generated bundle index. Do not edit.
|
|
828
|
+
*/
|
|
829
|
+
|
|
830
|
+
export { CcAdminLayoutComponent, CcAuthLayoutComponent, CcBadgeComponent, CcButtonComponent, CcCardComponent, CcContainerComponent, CcDashboardTemplateComponent, CcDataTableComponent, CcFormFieldComponent, CcFormPageTemplateComponent, CcGridComponent, CcHeaderComponent, CcIconComponent, CcInlineComponent, CcInputComponent, CcLabelComponent, CcListPageTemplateComponent, CcLoginComponent, CcModalComponent, CcSearchBarComponent, CcSelectComponent, CcSidebarComponent, CcStackComponent };
|
|
831
|
+
//# sourceMappingURL=cerca-design-system.mjs.map
|