@cerca/design-system 1.0.2 → 1.0.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cerca-design-system.mjs","sources":["../../../libs/design-system/src/lib/design-system.ts","../../../libs/design-system/src/lib/core/registries/field-renderer.registry.ts","../../../libs/design-system/src/lib/core/registries/validator.registry.ts","../../../libs/design-system/src/lib/atoms/icons/icon.component.ts","../../../libs/design-system/src/lib/atoms/icons/icon.component.html","../../../libs/design-system/src/lib/organisms/modal/modal.component.ts","../../../libs/design-system/src/lib/organisms/modal/modal.component.html","../../../libs/design-system/src/lib/engines/form/form-engine.service.ts","../../../libs/design-system/src/lib/atoms/input/input.component.ts","../../../libs/design-system/src/lib/atoms/input/input.component.html","../../../libs/design-system/src/lib/atoms/select/select.component.ts","../../../libs/design-system/src/lib/atoms/select/select.component.html","../../../libs/design-system/src/lib/atoms/switch/switch.component.ts","../../../libs/design-system/src/lib/atoms/switch/switch.component.html","../../../libs/design-system/src/lib/engines/form/dynamic-field.component.ts","../../../libs/design-system/src/lib/engines/form/dynamic-layout.component.ts","../../../libs/design-system/src/lib/atoms/loading/loading.component.ts","../../../libs/design-system/src/lib/atoms/loading/loading.component.html","../../../libs/design-system/src/lib/atoms/button/button.component.ts","../../../libs/design-system/src/lib/atoms/button/button.component.html","../../../libs/design-system/src/lib/templates/form-section/form-section.component.ts","../../../libs/design-system/src/lib/engines/form/form-renderer/form-renderer.component.ts","../../../libs/design-system/src/lib/engines/form/form-engine.component.ts","../../../libs/design-system/src/lib/core/services/modal.ts","../../../libs/design-system/src/lib/engines/table/table-engine.component.ts","../../../libs/design-system/src/lib/atoms/badges/badge.component.ts","../../../libs/design-system/src/lib/atoms/badges/badge.component.html","../../../libs/design-system/src/lib/atoms/labels/label.component.ts","../../../libs/design-system/src/lib/atoms/labels/label.component.html","../../../libs/design-system/src/lib/molecules/admin-section-card/admin-section-card.component.ts","../../../libs/design-system/src/lib/molecules/admin-section-card/admin-section-card.component.html","../../../libs/design-system/src/lib/molecules/admin-section-card/admin-section-card.resources.ts","../../../libs/design-system/src/lib/molecules/card/card.component.ts","../../../libs/design-system/src/lib/molecules/card/card.component.html","../../../libs/design-system/src/lib/molecules/card/card.resources.ts","../../../libs/design-system/src/lib/molecules/modal-trigger/modal-trigger.ts","../../../libs/design-system/src/lib/molecules/modal-trigger/modal-trigger.html","../../../libs/design-system/src/lib/molecules/description-header/description-header.component.ts","../../../libs/design-system/src/lib/molecules/description-header/description-header.component.html","../../../libs/design-system/src/lib/molecules/description-header/description-header.resources.ts","../../../libs/design-system/src/lib/molecules/form-field/form-field.component.ts","../../../libs/design-system/src/lib/molecules/form-field/form-field.component.html","../../../libs/design-system/src/lib/molecules/form-field/form-field.resources.ts","../../../libs/design-system/src/lib/molecules/modal-trigger/modal-trigger.resources.ts","../../../libs/design-system/src/lib/molecules/search-bar/search-bar.component.ts","../../../libs/design-system/src/lib/molecules/search-bar/search-bar.component.html","../../../libs/design-system/src/lib/molecules/search-bar/search-bar.resources.ts","../../../libs/design-system/src/lib/molecules/stat-card/stat-card.resources.ts","../../../libs/design-system/src/lib/molecules/stat-card/stat-card.component.ts","../../../libs/design-system/src/lib/molecules/stat-card/stat-card.component.html","../../../libs/design-system/src/lib/organisms/data-table/data-table.component.ts","../../../libs/design-system/src/lib/organisms/data-table/data-table.component.html","../../../libs/design-system/src/lib/organisms/data-table/data-table.resources.ts","../../../libs/design-system/src/lib/organisms/header/header.component.ts","../../../libs/design-system/src/lib/organisms/header/header.component.html","../../../libs/design-system/src/lib/organisms/header/header.resources.ts","../../../libs/design-system/src/lib/organisms/login/login.component.ts","../../../libs/design-system/src/lib/organisms/login/login.component.html","../../../libs/design-system/src/lib/organisms/login/login.component.resources.ts","../../../libs/design-system/src/lib/organisms/modal/modal.resources.ts","../../../libs/design-system/src/lib/organisms/sidebar/sidebar.component.ts","../../../libs/design-system/src/lib/organisms/sidebar/sidebar.component.html","../../../libs/design-system/src/lib/organisms/sidebar/sidebar.resources.ts","../../../libs/design-system/src/lib/organisms/table/table.component.ts","../../../libs/design-system/src/lib/organisms/table/table.component.html","../../../libs/design-system/src/lib/organisms/table/table.resources.ts","../../../libs/design-system/src/lib/organisms/doc-viewer/doc-viewer.component.ts","../../../libs/design-system/src/lib/organisms/doc-viewer/doc-viewer.component.html","../../../libs/design-system/src/lib/organisms/doc-viewer/doc-viewer.resources.ts","../../../libs/design-system/src/lib/templates/admin-layout/admin-layout.component.ts","../../../libs/design-system/src/lib/templates/admin-layout/admin-layout.component.html","../../../libs/design-system/src/lib/templates/admin-layout/admin-layout.resources.ts","../../../libs/design-system/src/lib/templates/auth-layout/auth-layout.component.ts","../../../libs/design-system/src/lib/templates/auth-layout/auth-layout.component.html","../../../libs/design-system/src/lib/templates/auth-layout/auth-layout.resources.ts","../../../libs/design-system/src/lib/layout/grid/grid.component.ts","../../../libs/design-system/src/lib/layout/grid/grid.component.html","../../../libs/design-system/src/lib/layout/stack/stack.component.ts","../../../libs/design-system/src/lib/layout/stack/stack.component.html","../../../libs/design-system/src/lib/templates/dashboard-template/dashboard-template.component.ts","../../../libs/design-system/src/lib/templates/dashboard-template/dashboard-template.component.html","../../../libs/design-system/src/lib/templates/dashboard-template/dashboard-template.resources.ts","../../../libs/design-system/src/lib/templates/documentation-wrapper/documentation-wrapper.component.ts","../../../libs/design-system/src/lib/templates/documentation-wrapper/documentation-wrapper.resources.ts","../../../libs/design-system/src/lib/templates/form-layout/form-layout.component.ts","../../../libs/design-system/src/lib/templates/form-layout/form-layout.resources.ts","../../../libs/design-system/src/lib/templates/form-page-template/form-page-template.component.ts","../../../libs/design-system/src/lib/templates/form-page-template/form-page-template.component.html","../../../libs/design-system/src/lib/templates/form-page-template/form-page-template.resources.ts","../../../libs/design-system/src/lib/templates/form-section/form-section.resources.ts","../../../libs/design-system/src/lib/templates/list-page-template/list-page-template.component.ts","../../../libs/design-system/src/lib/templates/list-page-template/list-page-template.component.html","../../../libs/design-system/src/lib/templates/list-page-template/list-page-template.resources.ts","../../../libs/design-system/src/public-api.ts","../../../libs/design-system/src/cerca-design-system.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ad-design-system',\r\n imports: [],\r\n template: `\r\n <p>\r\n design-system works!\r\n </p>\r\n `,\r\n styles: ``,\r\n})\r\nexport class DesignSystem {\r\n\r\n}\r\n","\r\nimport { Injectable, Type } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FieldRendererRegistry {\r\n private renderers = new Map<string, Type<any>>();\r\n\r\n register(key: string, component: Type<any>): void {\r\n if (this.renderers.has(key)) {\r\n console.warn(`Renderer for key '${key}' is already registered. Overwriting.`);\r\n }\r\n this.renderers.set(key, component);\r\n }\r\n\r\n get(key: string): Type<any> | undefined {\r\n return this.renderers.get(key);\r\n }\r\n\r\n has(key: string): boolean {\r\n return this.renderers.has(key);\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { ValidatorFn, Validators } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ValidatorRegistry {\r\n private validators = new Map<string, (args?: any) => ValidatorFn>();\r\n\r\n constructor() {\r\n this.registerDefaults();\r\n }\r\n\r\n private registerDefaults() {\r\n this.register('required', () => Validators.required);\r\n this.register('email', () => Validators.email);\r\n this.register('min', (min: number) => Validators.min(min));\r\n this.register('max', (max: number) => Validators.max(max));\r\n this.register('minLength', (len: number) => Validators.minLength(len));\r\n this.register('maxLength', (len: number) => Validators.maxLength(len));\r\n this.register('pattern', (pattern: string | RegExp) => Validators.pattern(pattern));\r\n }\r\n\r\n register(key: string, factory: (args?: any) => ValidatorFn): void {\r\n this.validators.set(key, factory);\r\n }\r\n\r\n get(key: string, args?: any): ValidatorFn | null {\r\n const factory = this.validators.get(key);\r\n if (!factory) {\r\n console.warn(`Validator '${key}' not found.`);\r\n return null;\r\n }\r\n return factory(args);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './icon.component.html',\r\n styleUrls: ['./icon.component.scss']\r\n})\r\nexport class AdIconComponent {\r\n @Input() name: string = '';\r\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\r\n @Input() color: string = 'currentColor';\r\n\r\n get sizeClass(): string {\r\n switch (this.size) {\r\n case 'xs': return 'w-3 h-3 text-xs';\r\n case 'sm': return 'w-4 h-4 text-base';\r\n case 'md': return 'w-5 h-5 text-xl';\r\n case 'lg': return 'w-6 h-6 text-2xl';\r\n case 'xl': return 'w-8 h-8 text-3xl';\r\n default: return 'w-5 h-5 text-xl';\r\n }\r\n }\r\n}\r\n","@if (name === 'user') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z\" />\r\n</svg>\r\n} @else if (name === 'lock') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z\" />\r\n</svg>\r\n} @else if (name === 'eye') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\" />\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" />\r\n</svg>\r\n} @else if (name === 'plus') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\" />\r\n</svg>\r\n} @else if (name === 'download') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\" />\r\n</svg>\r\n} @else if (name === 'eye-invisible') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\" />\r\n</svg>\r\n} @else {\r\n<!-- Fallback -->\r\n<span class=\"material-icons-outlined ad-icon\" [ngClass]=\"sizeClass\">{{ name }}</span>\r\n}","import { Component, input, output, HostListener, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { ModalResource } from './modal.resources';\r\n\r\n@Component({\r\n selector: 'ad-modal',\r\n standalone: true,\r\n imports: [CommonModule, AdIconComponent],\r\n templateUrl: './modal.component.html',\r\n styleUrls: ['./modal.component.scss']\r\n})\r\nexport class AdModalComponent {\r\n resource = input.required<ModalResource>();\r\n\r\n isOpen = computed(() => this.resource().isOpen ?? false);\r\n title = computed(() => this.resource().title ?? '');\r\n accentedTitle = computed(() => this.resource().accentedTitle);\r\n size = computed(() => this.resource().size ?? 'md');\r\n closeOnOverlay = computed(() => this.resource().closeOnOverlay ?? true);\r\n showFooter = computed(() => this.resource().showFooter ?? true);\r\n\r\n close = output<void>();\r\n\r\n onOverlayClick(event: MouseEvent) {\r\n if (this.closeOnOverlay() && (event.target as HTMLElement).classList.contains('ad-modal-overlay')) {\r\n this.close.emit();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onEscape() {\r\n if (this.isOpen()) {\r\n this.close.emit();\r\n }\r\n }\r\n}\r\n","@if (isOpen()){\r\n<div class=\"ad-modal-overlay\" (click)=\"onOverlayClick($event)\">\r\n\r\n <div class=\"ad-modal\" [ngClass]=\"'size-' + size()\" role=\"dialog\" aria-modal=\"true\">\r\n\r\n <header class=\"ad-modal-header\">\r\n <h3 class=\"ad-modal-title\">\r\n {{ title() }}\r\n @if (accentedTitle()) {\r\n <span class=\"accent-text\">{{ accentedTitle() }}</span>\r\n }\r\n </h3>\r\n <button class=\"ad-modal-close\" (click)=\"close.emit()\" type=\"button\">\r\n <ad-icon name=\"close\" size=\"md\"></ad-icon>\r\n </button>\r\n </header>\r\n\r\n <div class=\"ad-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (showFooter()){\r\n <footer class=\"ad-modal-footer\">\r\n <ng-content select=\"[footer]\"></ng-content>\r\n </footer>\r\n }\r\n </div>\r\n</div>\r\n}","\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { FormSchema, FieldSchema, LayoutSchema } from '../../core/models/form-schema.model';\r\nimport { ValidatorRegistry } from '../../core/registries/validator.registry';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormEngineService {\r\n private fb = inject(FormBuilder);\r\n private validatorRegistry = inject(ValidatorRegistry); // Assuming this exists or mocking behavior\r\n\r\n createFormGroup(schema: FormSchema, model: any = {}): FormGroup {\r\n const group: any = {};\r\n\r\n // Support Legacy Sections\r\n if (schema.sections) {\r\n schema.sections.forEach(section => {\r\n this.processFields(section.fields, group, model);\r\n });\r\n }\r\n\r\n // Support New Recursive Fields\r\n if (schema.fields) {\r\n this.processRecursiveFields(schema.fields, group, model);\r\n }\r\n\r\n return this.fb.group(group);\r\n }\r\n\r\n private processFields(fields: FieldSchema[], group: any, model: any) {\r\n fields.forEach(field => {\r\n this.addFieldToGroup(field, group, model);\r\n });\r\n }\r\n\r\n private processRecursiveFields(nodes: (FieldSchema | LayoutSchema)[], group: any, model: any) {\r\n nodes.forEach(node => {\r\n if ('children' in node && node.children) {\r\n this.processRecursiveFields(node.children, group, model);\r\n } else {\r\n // It's a field\r\n this.addFieldToGroup(node as FieldSchema, group, model);\r\n }\r\n });\r\n }\r\n\r\n private addFieldToGroup(field: FieldSchema, group: any, model: any) {\r\n // Handle name/key alias\r\n const fieldName = field.name || field.key;\r\n if (!fieldName) return; // Skip if no name\r\n\r\n const validators = field.validators || [];\r\n\r\n // Handle required shortcut\r\n if (field.required || field.props?.['required']) {\r\n validators.push(Validators.required);\r\n }\r\n\r\n const initialValue = model[fieldName] !== undefined ? model[fieldName] : (field.defaultValue !== undefined ? field.defaultValue : null);\r\n const state = { value: initialValue, disabled: field.disabled };\r\n\r\n group[fieldName] = [state, validators];\r\n }\r\n}\r\n","import { Component, input, forwardRef, signal, computed, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { AdIconComponent } from '../icons/icon.component';\r\n\r\n@Component({\r\n selector: 'ad-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AdIconComponent\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdInputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdInputComponent implements ControlValueAccessor {\r\n type = input<string>('text');\r\n placeholder = input<string>('');\r\n label = input<string>('');\r\n error = input<boolean>(false);\r\n rows = input<number>(3);\r\n\r\n _disabled = signal<boolean>(false);\r\n @Input() set disabled(value: boolean) { this._disabled.set(value); }\r\n get disabled() { return this._disabled(); }\r\n\r\n size = input<'large' | 'default' | 'small'>('small');\r\n prefix = input<string | undefined>(undefined);\r\n suffix = input<string | undefined>(undefined);\r\n\r\n value: string = '';\r\n passwordVisible = signal<boolean>(false);\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n inputType = computed(() => {\r\n if (this.type() === 'password') {\r\n return this.passwordVisible() ? 'text' : 'password';\r\n }\r\n return this.type();\r\n });\r\n\r\n onInputChange(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n this.value = target.value;\r\n this.onChange(this.value);\r\n this.onTouched();\r\n }\r\n\r\n togglePasswordVisibility(): void {\r\n if (this.type() === 'password') {\r\n this.passwordVisible.update(visible => !visible);\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n }\r\n}\r\n","@if (label()) {\r\n<label class=\"block text-sm font-medium leading-6 text-slate-900 mb-2\">{{ label() }}</label>\r\n}\r\n\r\n<div class=\"flex items-center w-full rounded-md border border-slate-300 bg-white px-3 py-1.5 shadow-sm transition-all focus-within:border-cerca-primary\"\r\n [class.bg-slate-50]=\"disabled\" [class.text-slate-500]=\"disabled\" [class.cursor-not-allowed]=\"disabled\"\r\n [class.border-cerca-alert]=\"error()\" [class.text-cerca-alert-text]=\"error()\"\r\n [class.focus-within:border-cerca-alert]=\"error()\">\r\n\r\n @if (prefix()) {\r\n <span class=\"mr-2 flex items-center\" [class.text-slate-500]=\"!error()\" [class.text-cerca-alert-text]=\"error()\">\r\n <ad-icon [name]=\"prefix()!\" size=\"sm\"></ad-icon>\r\n </span>\r\n }\r\n\r\n @if (type() === 'textarea') {\r\n <textarea [rows]=\"rows()\" [placeholder]=\"placeholder()\" [disabled]=\"disabled\" [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\" (blur)=\"onTouched()\"\r\n class=\"block w-full border-0 p-0 text-slate-900 placeholder:text-slate-400 focus:ring-0 outline-none sm:text-sm sm:leading-6 bg-transparent disabled:cursor-not-allowed resize-none\"></textarea>\r\n } @else {\r\n <input [type]=\"inputType()\" [placeholder]=\"placeholder()\" [disabled]=\"disabled\" [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\" (blur)=\"onTouched()\"\r\n class=\"block w-full border-0 p-0 text-slate-900 placeholder:text-slate-400 focus:ring-0 outline-none sm:text-sm sm:leading-6 bg-transparent disabled:cursor-not-allowed\" />\r\n }\r\n\r\n @if (type() === 'password') {\r\n <button type=\"button\" (click)=\"togglePasswordVisibility()\"\r\n class=\"ml-2 text-slate-500 hover:text-slate-700 focus:outline-none cursor-pointer\">\r\n <ad-icon [name]=\"passwordVisible() ? 'eye-invisible' : 'eye'\" size=\"sm\"></ad-icon>\r\n </button>\r\n }\r\n\r\n @if (type() !== 'password' && suffix()) {\r\n <span class=\"ml-2 text-slate-500 flex items-center\">\r\n <ad-icon [name]=\"suffix()!\" size=\"sm\"></ad-icon>\r\n </span>\r\n }\r\n</div>","import { Component, input, signal, forwardRef, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\nexport interface SelectOption {\r\n label: string;\r\n value: any;\r\n}\r\n@Component({\r\n selector: 'ad-select',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdSelectComponent implements ControlValueAccessor {\r\n options = input<SelectOption[]>([]);\r\n placeholder = input<string>('Seleccionar opción');\r\n label = input<string>('');\r\n size = input<'large' | 'default' | 'small'>('default');\r\n allowClear = input<boolean>(true);\r\n showSearch = input<boolean>(false);\r\n\r\n _disabled = signal<boolean>(false);\r\n @Input() set disabled(value: boolean) { this._disabled.set(value); }\r\n get disabled() { return this._disabled(); }\r\n\r\n value: any;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n onValueChange(value: any): void {\r\n this.value = value;\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n }\r\n}\r\n","<div class=\"w-full\">\r\n @if (label()) {\r\n <label class=\"block text-sm font-medium leading-6 text-slate-900 mb-2\">{{ label() }}</label>\r\n }\r\n <div class=\"relative\">\r\n <select [disabled]=\"disabled\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" (blur)=\"onTouched()\"\r\n class=\"block w-full rounded-md border-0 py-1.5 pl-3 pr-10 text-slate-900 shadow-sm ring-1 ring-inset ring-slate-300 focus:ring-2 focus:ring-inset focus:ring-sky-600 sm:text-sm sm:leading-6 bg-white disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed\">\r\n @if (placeholder()) {\r\n <option [ngValue]=\"null\" disabled selected>{{ placeholder() }}</option>\r\n }\r\n @if (allowClear()) {\r\n <option [ngValue]=\"null\">-- Seleccionar --</option>\r\n }\r\n @for (option of options(); track option.value) {\r\n <option [ngValue]=\"option.value\">{{ option.label }}</option>\r\n }\r\n </select>\r\n </div>\r\n</div>","import { Component, input, signal, forwardRef, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\nexport interface SwitchOption {\r\n label: string;\r\n value: boolean;\r\n}\r\n@Component({\r\n selector: 'ad-switch',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdSwitchComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdSwitchComponent implements ControlValueAccessor {\r\n options = input<SwitchOption[]>([\r\n { label: 'Inactivo', value: false },\r\n { label: 'Activo', value: true }\r\n ]);\r\n\r\n _disabled = signal<boolean>(false);\r\n @Input() set disabled(value: boolean) { this._disabled.set(value); }\r\n get disabled() { return this._disabled(); }\r\n\r\n value: boolean = false;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n /**\r\n * Get the current label based on the switch value\r\n */\r\n get currentLabel(): string {\r\n const option = this.options().find(opt => opt.value === this.value);\r\n return option?.label || '';\r\n }\r\n\r\n toggle(): void {\r\n if (this.disabled) return;\r\n this.onValueChange(!this.value);\r\n }\r\n\r\n onValueChange(value: boolean): void {\r\n this.value = value;\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: boolean): void {\r\n this.value = value ?? false;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n }\r\n}\r\n","<div class=\"ad-switch-container\">\r\n <div class=\"flex items-center gap-3\">\r\n <button type=\"button\"\r\n class=\"relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-sky-600 focus:ring-offset-2\"\r\n [class.bg-sky-600]=\"value\" [class.bg-slate-200]=\"!value\" [class.opacity-50]=\"disabled\"\r\n [class.cursor-not-allowed]=\"disabled\" (click)=\"toggle()\" [attr.aria-checked]=\"value\" role=\"switch\">\r\n\r\n <span class=\"sr-only\">{{ currentLabel }}</span>\r\n\r\n <span aria-hidden=\"true\"\r\n class=\"pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out\"\r\n [class.translate-x-5]=\"value\" [class.translate-x-0]=\"!value\">\r\n </span>\r\n </button>\r\n\r\n @if (currentLabel) {\r\n <span class=\"text-sm font-medium text-slate-700 dark:text-slate-200\" [class.opacity-50]=\"disabled\">{{\r\n currentLabel }}</span>\r\n }\r\n </div>\r\n</div>","import { Component, input, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldSchema } from '../../core/models/form-schema.model';\r\nimport { FieldRendererRegistry } from '../../core/registries/field-renderer.registry';\r\nimport { AdInputComponent } from '../../atoms/input/input.component';\r\nimport { AdSelectComponent } from '../../atoms/select/select.component';\r\nimport { AdSwitchComponent } from '../../atoms/switch/switch.component';\r\n\r\n@Component({\r\n selector: 'ad-dynamic-field',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, AdInputComponent, AdSelectComponent, AdSwitchComponent],\r\n template: `\r\n <div class=\"mb-4\" [formGroup]=\"form()\">\r\n <!-- Label -->\r\n @if (renderType !== 'checkbox' && renderType !== 'switch' && field().label) {\r\n <label [for]=\"controlName\" class=\"block text-sm font-medium leading-6 text-slate-900 dark:text-slate-200 mb-2\">\r\n {{ field().label }}\r\n @if (isRequired) { <span class=\"text-cerca-rose\">*</span> }\r\n </label>\r\n }\r\n\r\n <!-- Control -->\r\n <div class=\"relative\">\r\n @switch (renderType) {\r\n @case ('input') {\r\n <ad-input\r\n [formControlName]=\"controlName\"\r\n [placeholder]=\"placeholder\"\r\n [type]=\"field().props?.['type'] || 'text'\"\r\n [prefix]=\"field().props?.['prefix']\"\r\n [suffix]=\"field().props?.['suffix']\"\r\n [disabled]=\"field().disabled || false\">\r\n </ad-input>\r\n }\r\n @case ('text-input') {\r\n <ad-input\r\n [formControlName]=\"controlName\"\r\n [placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [prefix]=\"field().props?.['prefix']\"\r\n [suffix]=\"field().props?.['suffix']\"\r\n [disabled]=\"field().disabled || false\">\r\n </ad-input>\r\n }\r\n @case ('number-input') {\r\n <ad-input\r\n [formControlName]=\"controlName\"\r\n [placeholder]=\"placeholder\"\r\n type=\"number\"\r\n [prefix]=\"field().props?.['prefix']\"\r\n [suffix]=\"field().props?.['suffix']\"\r\n [disabled]=\"field().disabled || false\">\r\n </ad-input>\r\n }\r\n @case ('textarea') {\r\n <ad-input\r\n [formControlName]=\"controlName\"\r\n type=\"textarea\"\r\n [placeholder]=\"placeholder\"\r\n [rows]=\"rows\"\r\n [disabled]=\"field().disabled || false\">\r\n </ad-input>\r\n }\r\n @case ('select') {\r\n <ad-select\r\n [formControlName]=\"controlName\"\r\n [options]=\"field().options || []\"\r\n [placeholder]=\"placeholder\">\r\n </ad-select>\r\n }\r\n @case ('select-input') {\r\n <ad-select\r\n [formControlName]=\"controlName\"\r\n [options]=\"field().options || []\"\r\n [placeholder]=\"placeholder\">\r\n </ad-select>\r\n }\r\n @case ('switch') {\r\n <ad-switch\r\n [formControlName]=\"controlName\"\r\n [options]=\"getSwitchOptions()\">\r\n </ad-switch>\r\n }\r\n @case ('custom') {\r\n @if (getRenderer(controlName); as component) {\r\n <ng-container *ngComponentOutlet=\"component\"></ng-container>\r\n } @else {\r\n <p class=\"text-sm text-red-500\">No renderer found for {{ controlName }}</p>\r\n }\r\n }\r\n @default {\r\n <p class=\"text-sm text-red-500\">Unsupported field type: {{ renderType }}</p>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Errors -->\r\n @if (hasError()) {\r\n <p class=\"mt-2 text-sm text-cerca-rose\">\r\n @if (getError('required')) { Campo requerido }\r\n @if (getError('email')) { Email inválido }\r\n @if (getError('min')) { Valor mínimo no alcanzado }\r\n </p>\r\n }\r\n </div>\r\n `\r\n})\r\nexport class DynamicFieldComponent {\r\n field = input.required<FieldSchema>();\r\n form = input.required<FormGroup>();\r\n\r\n registry = inject(FieldRendererRegistry);\r\n\r\n get controlName(): string {\r\n return this.field().name || this.field().key || '';\r\n }\r\n\r\n get renderType(): string {\r\n return this.field().rendererKey || this.field().type || 'input';\r\n }\r\n\r\n get placeholder(): string {\r\n return this.field().placeholder || this.field().nzConfig?.nzProps?.placeholder || '';\r\n }\r\n\r\n get isRequired(): boolean {\r\n return this.field().required || !!this.field().validators?.some(v => v.name === 'required');\r\n }\r\n\r\n get rows(): number {\r\n return this.field().props?.['rows'] || this.field().nzConfig?.nzProps?.rows || 3;\r\n }\r\n\r\n getRenderer(key: string) {\r\n return this.registry.get(key);\r\n }\r\n\r\n getSwitchOptions() {\r\n const f = this.field();\r\n const checked = f.props?.['checkedChildren'] || 'Activo';\r\n const unchecked = f.props?.['unCheckedChildren'] || 'Inactivo';\r\n return [{ label: unchecked, value: false }, { label: checked, value: true }];\r\n }\r\n\r\n hasError() {\r\n const control = this.form().get(this.controlName);\r\n return control?.invalid && (control?.dirty || control?.touched);\r\n }\r\n\r\n getError(code: string) {\r\n const control = this.form().get(this.controlName);\r\n return control?.errors?.[code];\r\n }\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldSchema } from '../../core/models/form-schema.model';\r\nimport { DynamicFieldComponent } from './dynamic-field.component';\r\n\r\n@Component({\r\n selector: 'ad-dynamic-layout',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n DynamicFieldComponent\r\n ],\r\n template: `\r\n <div [class]=\"field().gridClass || 'col-span-12'\">\r\n <ad-dynamic-field [field]=\"field()\" [form]=\"form()\"></ad-dynamic-field>\r\n </div>\r\n `\r\n})\r\nexport class DynamicLayoutComponent {\r\n field = input.required<FieldSchema>();\r\n form = input.required<FormGroup>();\r\n}\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-loading',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './loading.component.html'\r\n})\r\nexport class AdLoadingComponent {\r\n size = input<'sm' | 'md' | 'lg'>('md');\r\n color = input<string>('text-sky-600');\r\n\r\n computedClasses = computed(() => {\r\n let sizeClass = 'h-5 w-5';\r\n switch (this.size()) {\r\n case 'sm': sizeClass = 'h-4 w-4'; break;\r\n case 'lg': sizeClass = 'h-8 w-8'; break;\r\n }\r\n return `animate-spin ${sizeClass} ${this.color()}`;\r\n });\r\n}\r\n","<svg [class]=\"computedClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\">\r\n </path>\r\n</svg>","import { Component, input, computed, Input, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdIconComponent } from '../icons/icon.component';\r\nimport { AdLoadingComponent } from '../loading/loading.component';\r\n\r\ntype ButtonType = 'primary' | 'default' | 'dashed' | 'text' | 'link';\r\n\r\n@Component({\r\n selector: 'ad-button',\r\n standalone: true,\r\n imports: [CommonModule, AdIconComponent, AdLoadingComponent],\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss']\r\n})\r\nexport class AdButtonComponent {\r\n variant = input<'primary' | 'secondary' | 'ghost' | 'outline' | 'danger'>('primary');\r\n type = input<'button' | 'submit' | 'reset'>('button');\r\n\r\n _disabled = signal<boolean>(false);\r\n @Input() set disabled(value: boolean) { this._disabled.set(value); }\r\n get disabled() { return this._disabled(); }\r\n\r\n loading = input<boolean>(false);\r\n icon = input<string | undefined>(undefined);\r\n size = input<'large' | 'default' | 'small'>('default');\r\n block = input<boolean>(false);\r\n\r\n computedClasses = computed(() => {\r\n const baseClasses = 'ad-btn inline-flex items-center justify-center gap-2 rounded-lg font-medium transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed';\r\n const displayClass = this.block() ? 'w-full flex' : 'inline-flex';\r\n\r\n const sizeClasses = {\r\n 'small': 'px-3 py-1.5 text-xs',\r\n 'default': 'px-4 py-2 text-sm',\r\n 'large': 'px-6 py-3 text-base'\r\n };\r\n\r\n const variantClasses = {\r\n 'primary': 'bg-cerca-primary text-white hover:bg-cerca-primary-hover active:bg-cerca-primary-active focus-visible:ring-cerca-primary shadow-sm',\r\n 'secondary': 'bg-white text-cerca-secondary border border-slate-300 hover:bg-slate-50 focus-visible:ring-slate-500 shadow-sm',\r\n 'ghost': 'text-cerca-secondary hover:bg-slate-100 focus-visible:ring-slate-500',\r\n 'outline': 'border-2 border-cerca-primary text-cerca-primary hover:bg-cerca-primary-light focus-visible:ring-cerca-primary',\r\n 'danger': 'bg-cerca-alert text-white hover:bg-red-600 focus-visible:ring-cerca-alert shadow-sm'\r\n };\r\n\r\n return `${baseClasses.replace('inline-flex', '')} ${displayClass} ${sizeClasses[this.size()]} ${variantClasses[this.variant()] || variantClasses['primary']}`;\r\n });\r\n}\r\n","<button [class]=\"computedClasses()\" [disabled]=\"disabled\" [type]=\"type()\">\r\n @if (loading()) {\r\n <ad-loading size=\"sm\" color=\"text-current\"></ad-loading>\r\n }\r\n @if (icon() && !loading()) {\r\n <ad-icon [name]=\"icon()!\" [size]=\"size() === 'small' ? 'sm' : size() === 'large' ? 'lg' : 'md'\"></ad-icon>\r\n }\r\n <ng-content></ng-content>\r\n</button>","import { Component, input, ViewEncapsulation, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormSectionResource } from './form-section.resources';\r\n\r\n@Component({\r\n selector: 'ad-form-section',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n <div class=\"bg-white rounded-lg shadow-sm border border-stone-200 dark:border-cerca-primary dark:bg-cerca-navy h-full flex flex-col transition-colors duration-300\">\r\n \r\n @if (title()) {\r\n <div class=\"px-6 py-4 border-b border-stone-100 dark:border-cerca-primary-hover\">\r\n <h3 class=\"text-lg font-semibold text-stone-800 dark:text-white\">{{ title() }}</h3>\r\n </div>\r\n }\r\n\r\n <div class=\"p-6 flex-1 space-y-4\">\r\n @if (loading()) {\r\n <div class=\"animate-pulse space-y-4\">\r\n <div class=\"h-4 bg-stone-200 dark:bg-stone-700 rounded w-3/4\"></div>\r\n <div class=\"h-10 bg-stone-100 dark:bg-stone-800 rounded\"></div>\r\n <div class=\"h-4 bg-stone-200 dark:bg-stone-700 rounded w-1/2\"></div>\r\n <div class=\"h-24 bg-stone-100 dark:bg-stone-800 rounded\"></div>\r\n </div>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n '[class]': 'hostClasses()'\r\n }\r\n})\r\nexport class AdFormSectionComponent {\r\n resource = input.required<FormSectionResource>();\r\n title = computed(() => this.resource().title);\r\n cols = computed(() => this.resource().cols ?? 12);\r\n loading = computed(() => this.resource().loading ?? false);\r\n\r\n // Map for safe Tailwind class detection\r\n readonly colSpanMap: Record<number, string> = {\r\n 1: 'md:col-span-1',\r\n 2: 'md:col-span-2',\r\n 3: 'md:col-span-3',\r\n 4: 'md:col-span-4',\r\n 5: 'md:col-span-5',\r\n 6: 'md:col-span-6',\r\n 7: 'md:col-span-7',\r\n 8: 'md:col-span-8',\r\n 9: 'md:col-span-9',\r\n 10: 'md:col-span-10',\r\n 11: 'md:col-span-11',\r\n 12: 'md:col-span-12'\r\n };\r\n\r\n hostClasses = computed(() => {\r\n const colClass = this.colSpanMap[this.cols()] || 'md:col-span-12';\r\n return `block ${colClass}`;\r\n });\r\n}\r\n","import { Component, input, inject, forwardRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldSchema, LayoutSchema } from '../../../core/models/form-schema.model';\r\nimport { DynamicLayoutComponent } from '../dynamic-layout.component';\r\nimport { AdFormSectionComponent } from '../../../templates/form-section/form-section.component';\r\n\r\n@Component({\r\n selector: 'ad-form-renderer',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n DynamicLayoutComponent, // Renders individual fields (leaf nodes)\r\n AdFormSectionComponent, // Renders 'card'\r\n forwardRef(() => AdFormRendererComponent)\r\n ],\r\n template: `\r\n @for (node of nodes(); track $any(node).key || $any(node).name || $index) {\r\n \r\n @if (isLayout(node)) {\r\n <!-- Recursive Layout Rendering -->\r\n @switch (node.layoutType) {\r\n \r\n @case ('row') {\r\n <div class=\"grid grid-cols-1 md:grid-cols-12 gap-6 items-start w-full md:col-span-12\">\r\n <ad-form-renderer [nodes]=\"node.children || []\" [form]=\"form()\"></ad-form-renderer>\r\n </div>\r\n }\r\n\r\n @case ('col') {\r\n <!-- 'col' wraps content in a div with grid classes. -->\r\n <div [class]=\"getGridClass(node.layoutProps)\">\r\n <ad-form-renderer [nodes]=\"node.children || []\" [form]=\"form()\"></ad-form-renderer>\r\n </div>\r\n }\r\n\r\n @case ('card') {\r\n <!-- For card, we might want to also use the grid class on the wrapper? \r\n AdFormSection uses 'cols' input to generate wrapper class.\r\n We should probably update AdFormSection to accept full class string or improve mapping.\r\n But AdFormSection just uses cols Input -> md:col-span-X.\r\n Let's keep legacy behavior for card if simple span, or enhance AdFormSection later.\r\n Actually, card usually sits inside a 'col'. If card is direct child of row, it needs width.\r\n Usage in schema: \r\n row -> children: [ { layoutType: 'col', children: [ { layoutType: 'card' } ] } ]\r\n So card is inside col (which has width). Card itself usually takes full width of parent.\r\n Wait, AdFormSection has [cols] input. Default 12.\r\n If card is inside a col (which is e.g. span 8), then card should be span 12 (100% of parent).\r\n The schema in demo has card INSIDE col.\r\n So card shouldn't need sizing props if it's 100%.\r\n But if card is direct child of row?\r\n Safest is to let card be 12 (100% of container). \r\n If User put card directly in row, they might expect it to size.\r\n But let's assume standard pattern: Row -> Col -> Card.\r\n -->\r\n <ad-form-section [resource]=\"{ title: node.layoutProps?.title, cols: 12 }\">\r\n <ad-form-renderer [nodes]=\"node.children || []\" [form]=\"form()\"></ad-form-renderer>\r\n </ad-form-section>\r\n }\r\n \r\n @case ('stack') {\r\n <div class=\"flex flex-col\" [style.gap.px]=\"node.layoutProps?.gap || 0\">\r\n <ad-form-renderer [nodes]=\"node.children || []\" [form]=\"form()\"></ad-form-renderer>\r\n </div>\r\n }\r\n\r\n @default {\r\n <!-- Fallback for unknown layout: render children directly -->\r\n <!-- Explicitly cast to unknown then LayoutSchema to access children safely in default block -->\r\n <ad-form-renderer [nodes]=\"asLayout(node).children || []\" [form]=\"form()\"></ad-form-renderer>\r\n }\r\n }\r\n } @else {\r\n <!-- Leaf Node: Field -->\r\n <!-- Fields use getGridClass to support layoutProps: { span: X } directly on the field -->\r\n <div [class]=\"getGridClass(node.layoutProps)\">\r\n <ad-dynamic-layout [field]=\"asField(node)\" [form]=\"form()\"></ad-dynamic-layout>\r\n </div>\r\n }\r\n }\r\n `,\r\n host: {\r\n style: 'display: contents'\r\n }\r\n})\r\nexport class AdFormRendererComponent {\r\n // Maps for safe Tailwind class detection (JIT compatible)\r\n readonly mdColSpanMap: Record<number, string> = {\r\n 1: 'md:col-span-1',\r\n 2: 'md:col-span-2',\r\n 3: 'md:col-span-3',\r\n 4: 'md:col-span-4',\r\n 5: 'md:col-span-5',\r\n 6: 'md:col-span-6',\r\n 7: 'md:col-span-7',\r\n 8: 'md:col-span-8',\r\n 9: 'md:col-span-9',\r\n 10: 'md:col-span-10',\r\n 11: 'md:col-span-11',\r\n 12: 'md:col-span-12'\r\n };\r\n\r\n readonly lgColSpanMap: Record<number, string> = {\r\n 1: 'lg:col-span-1',\r\n 2: 'lg:col-span-2',\r\n 3: 'lg:col-span-3',\r\n 4: 'lg:col-span-4',\r\n 5: 'lg:col-span-5',\r\n 6: 'lg:col-span-6',\r\n 7: 'lg:col-span-7',\r\n 8: 'lg:col-span-8',\r\n 9: 'lg:col-span-9',\r\n 10: 'lg:col-span-10',\r\n 11: 'lg:col-span-11',\r\n 12: 'lg:col-span-12'\r\n };\r\n\r\n readonly xlColSpanMap: Record<number, string> = {\r\n 1: 'xl:col-span-1',\r\n 2: 'xl:col-span-2',\r\n 3: 'xl:col-span-3',\r\n 4: 'xl:col-span-4',\r\n 5: 'xl:col-span-5',\r\n 6: 'xl:col-span-6',\r\n 7: 'xl:col-span-7',\r\n 8: 'xl:col-span-8',\r\n 9: 'xl:col-span-9',\r\n 10: 'xl:col-span-10',\r\n 11: 'xl:col-span-11',\r\n 12: 'xl:col-span-12'\r\n };\r\n\r\n getGridClass(props: any): string {\r\n const classes: string[] = [];\r\n\r\n // Base Span (Mobile/Default) mapped to MD because our grid starts at MD\r\n if (props?.span) {\r\n classes.push(this.mdColSpanMap[props.span] || 'md:col-span-12');\r\n } else {\r\n classes.push('md:col-span-12'); // Default full width\r\n }\r\n\r\n // LG Override\r\n if (props?.lg) {\r\n classes.push(this.lgColSpanMap[props.lg]);\r\n }\r\n\r\n // XL Override\r\n if (props?.xl) {\r\n classes.push(this.xlColSpanMap[props.xl]);\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n nodes = input.required<(FieldSchema | LayoutSchema)[]>();\r\n form = input.required<FormGroup>();\r\n\r\n isLayout(node: FieldSchema | LayoutSchema): node is LayoutSchema {\r\n return 'layoutType' in node && !!(node as any).children;\r\n }\r\n\r\n asField(node: FieldSchema | LayoutSchema): FieldSchema {\r\n return node as FieldSchema;\r\n }\r\n\r\n asLayout(node: FieldSchema | LayoutSchema): LayoutSchema {\r\n return node as LayoutSchema;\r\n }\r\n\r\n trackByFn(index: number, item: any) {\r\n return item.key || item.name || index;\r\n }\r\n}\r\n","import { Component, input, output, inject, OnInit, effect, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormSchema, FieldSchema, SectionSchema } from '../../core/models/form-schema.model';\r\nimport { FormEngineService } from './form-engine.service';\r\nimport { DynamicLayoutComponent } from './dynamic-layout.component';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdFormRendererComponent } from './form-renderer/form-renderer.component';\r\n\r\n@Component({\r\n selector: 'ad-form-engine',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, DynamicLayoutComponent, AdButtonComponent, AdFormRendererComponent],\r\n template: `\r\n @if (form()) {\r\n <form [formGroup]=\"form()\" class=\"space-y-6\" (ngSubmit)=\"submit()\">\r\n \r\n <!-- NEW: Recursive Schema Rendering -->\r\n @if (schema().fields) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-12 gap-6 w-full\">\r\n <ad-form-renderer [nodes]=\"schema().fields!\" [form]=\"form()\"></ad-form-renderer>\r\n </div>\r\n }\r\n\r\n <!-- LEGACY: Sections Rendering (Fallback) -->\r\n @if (!schema().fields && schema().sections) {\r\n @for (section of schema().sections; track $index) {\r\n <div [class]=\"section.gridClass || 'grid grid-cols-12 gap-6'\">\r\n @if (section.title) {\r\n <div class=\"col-span-12\">\r\n <h3 class=\"text-lg font-medium leading-6 text-slate-900\">{{ section.title }}</h3>\r\n @if (section.description) {\r\n <p class=\"mt-1 text-sm text-slate-500\">{{ section.description }}</p>\r\n }\r\n </div>\r\n }\r\n \r\n @for (field of section.fields; track field.key) {\r\n <ad-dynamic-layout [field]=\"field\" [form]=\"form()\"></ad-dynamic-layout>\r\n }\r\n </div>\r\n }\r\n }\r\n\r\n <!-- Actions -->\r\n <div class=\"flex justify-end gap-x-4\">\r\n @if (showCancel()) {\r\n <ad-button variant=\"secondary\" type=\"button\" (click)=\"onCancel()\">{{ schema().cancelLabel || 'Cancelar' }}</ad-button>\r\n }\r\n @if (showSubmit()) {\r\n <ad-button variant=\"primary\" type=\"submit\">{{ schema().submitLabel || 'Guardar' }}</ad-button>\r\n }\r\n </div>\r\n </form>\r\n }\r\n `\r\n})\r\nexport class FormEngineComponent implements OnInit {\r\n // Inputs (Signals)\r\n schema = input.required<FormSchema>();\r\n model = input<any>({});\r\n showCancel = input<boolean>(false);\r\n showSubmit = input<boolean>(true);\r\n\r\n // Outputs\r\n formSubmit = output<any>();\r\n formCancel = output<void>();\r\n\r\n // Dependencies\r\n private engineService = inject(FormEngineService);\r\n\r\n // State\r\n form = computed(() => {\r\n const schema = this.schema();\r\n const model = this.model();\r\n // Note: model availability in computed might be tricky if model updates later.\r\n // But createFormGroup usually runs once. \r\n // Better: create form once, then patch.\r\n if (!schema) return new FormGroup({});\r\n return this.engineService.createFormGroup(schema, model);\r\n });\r\n\r\n constructor() {\r\n // Effect to patch value when model changes AFTER form creation\r\n effect(() => {\r\n const currentModel = this.model();\r\n const currentForm = this.form();\r\n if (currentForm && currentModel && Object.keys(currentModel).length > 0) {\r\n currentForm.patchValue(currentModel);\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n submit() {\r\n const f = this.form();\r\n if (f.valid) {\r\n this.formSubmit.emit(f.value);\r\n } else {\r\n Object.values(f.controls).forEach(control => {\r\n if (control.invalid) {\r\n control.markAsDirty();\r\n control.updateValueAndValidity({ onlySelf: true });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCancel() {\r\n this.formCancel.emit();\r\n }\r\n}\r\n","import {\r\n Injectable,\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n Component,\r\n signal,\r\n computed\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ScreenResource } from '../models/screen-resource.model';\r\nimport { AdModalComponent } from '../../organisms/modal/modal.component';\r\nimport { FormEngineComponent } from '../../engines/form/form-engine.component';\r\n\r\n@Component({\r\n selector: 'ad-modal-wrapper',\r\n standalone: true,\r\n imports: [CommonModule, AdModalComponent, FormEngineComponent],\r\n template: `\r\n <ad-modal \r\n [resource]=\"modalResource()\"\r\n (close)=\"onClose()\">\r\n \r\n @if (resource.type === 'form' && resource.formConfig) {\r\n <ad-form-engine \r\n [schema]=\"resource.formConfig\" \r\n [model]=\"data\"\r\n [showCancel]=\"true\"\r\n (formSubmit)=\"onSubmit($event)\"\r\n (formCancel)=\"onClose()\">\r\n </ad-form-engine>\r\n } @else {\r\n <div class=\"p-6 text-center text-slate-500\">\r\n Renderer para el tipo \"{{ resource.type }}\" no implementado en el modal.\r\n </div>\r\n }\r\n </ad-modal>\r\n `\r\n})\r\nexport class AdModalWrapperComponent {\r\n resource!: ScreenResource;\r\n data: any = {};\r\n\r\n isOpen = signal(true);\r\n\r\n modalResource = computed(() => ({\r\n isOpen: this.isOpen(),\r\n title: this.resource?.title,\r\n size: 'md' as const,\r\n showFooter: false\r\n }));\r\n private resultSubject = new Subject<any>();\r\n result$ = this.resultSubject.asObservable();\r\n\r\n onClose() {\r\n this.isOpen.set(false);\r\n this.resultSubject.next(null);\r\n this.resultSubject.complete();\r\n }\r\n\r\n onSubmit(result: any) {\r\n this.isOpen.set(false);\r\n this.resultSubject.next(result);\r\n this.resultSubject.complete();\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdModalService {\r\n constructor(\r\n private appRef: ApplicationRef,\r\n private injector: EnvironmentInjector\r\n ) { }\r\n\r\n open(resource: ScreenResource, data?: any): Observable<any> {\r\n const componentRef: ComponentRef<AdModalWrapperComponent> = createComponent(AdModalWrapperComponent, {\r\n environmentInjector: this.injector\r\n });\r\n\r\n // Set inputs\r\n componentRef.instance.resource = resource;\r\n if (data) componentRef.instance.data = data;\r\n\r\n // Attach to ApplicationRef so change detection works\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n // Append to DOM\r\n const domElement = (componentRef.hostView as any).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElement);\r\n\r\n // Cleanup on complete\r\n componentRef.instance.result$.subscribe({\r\n complete: () => {\r\n // Small delay to allow Angular modal to animate its close state\r\n setTimeout(() => {\r\n this.appRef.detachView(componentRef.hostView);\r\n componentRef.destroy();\r\n }, 300);\r\n }\r\n });\r\n\r\n return componentRef.instance.result$;\r\n }\r\n}\r\n","import { Component, input, output, computed, EventEmitter } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableSchema, TableColumn, TableAction } from '../../core/models/table-schema.model';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\n\r\n@Component({\r\n selector: 'ad-table-engine',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent, AdIconComponent],\r\n template: `\r\n <div class=\"flow-root\">\r\n <div class=\"-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8\">\r\n <div class=\"inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8\">\r\n <div class=\"relative\">\r\n @if (loading()) {\r\n <div class=\"absolute inset-0 bg-white/50 z-10 flex items-center justify-center\">\r\n <svg class=\"animate-spin h-8 w-8 text-sky-600\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\r\n </svg>\r\n </div>\r\n }\r\n \r\n <table class=\"min-w-full divide-y divide-slate-300\">\r\n <thead>\r\n <tr>\r\n <!-- Checkbox Column if selectable (Future) -->\r\n \r\n @for (column of displayColumns(); track column.key) {\r\n <th scope=\"col\" \r\n class=\"py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-slate-900 sm:pl-0\"\r\n [style.width]=\"column.width || 'auto'\">\r\n {{ column.label }}\r\n </th>\r\n }\r\n @if (hasActions()) {\r\n <th scope=\"col\" class=\"relative py-3.5 pl-3 pr-4 sm:pr-0\">\r\n <span class=\"sr-only\">Acciones</span>\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody class=\"divide-y divide-slate-200 bg-white\">\r\n @for (item of data(); track item) {\r\n <tr>\r\n @for (column of displayColumns(); track column.key) {\r\n <td class=\"whitespace-nowrap py-4 pl-4 pr-3 text-sm text-slate-500 sm:pl-0\">\r\n <!-- Simple rendering for now. Registry support can be added here -->\r\n {{ item[column.key] }}\r\n </td>\r\n }\r\n @if (hasActions()) {\r\n <td class=\"whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-0\">\r\n <div class=\"flex justify-end gap-2\">\r\n @for (act of getActions(); track act.action) {\r\n <ad-button \r\n [variant]=\"mapVariant(act.color)\" \r\n size=\"small\"\r\n (click)=\"onActionClick(act.action, item)\">\r\n @if (act.icon) {\r\n <ad-icon [name]=\"act.icon\" class=\"mr-1\"></ad-icon>\r\n }\r\n {{ act.label }}\r\n </ad-button>\r\n }\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n @if (data().length === 0 && !loading()) {\r\n <tr>\r\n <td [attr.colspan]=\"displayColumns().length + (hasActions() ? 1 : 0)\" class=\"py-8 text-center text-sm text-slate-500\">\r\n No hay datos disponibles\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Pagination -->\r\n <div class=\"flex items-center justify-between border-t border-slate-200 bg-white px-4 py-3 sm:px-6 mt-4\">\r\n <!-- Simplified Pagination for brevity, can be expanded -->\r\n <div class=\"flex flex-1 justify-between sm:hidden\">\r\n <ad-button variant=\"secondary\" [disabled]=\"pageIndex() === 1\" (click)=\"onPageChange(pageIndex() - 1)\">Anterior</ad-button>\r\n <ad-button variant=\"secondary\" [disabled]=\"pageIndex() * pageSize() >= total()\" (click)=\"onPageChange(pageIndex() + 1)\">Siguiente</ad-button>\r\n </div>\r\n <div class=\"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between\">\r\n <div>\r\n <p class=\"text-sm text-slate-700\">\r\n Mostrando <span class=\"font-medium\">{{ (pageIndex() - 1) * pageSize() + 1 }}</span> a <span class=\"font-medium\">{{ Math.min(pageIndex() * pageSize(), total()) }}</span> de <span class=\"font-medium\">{{ total() }}</span> resultados\r\n </p>\r\n </div>\r\n <div>\r\n <nav class=\"isolate inline-flex -space-x-px rounded-md shadow-sm\" aria-label=\"Pagination\">\r\n <ad-button variant=\"secondary\" class=\"rounded-l-md\" [disabled]=\"pageIndex() === 1\" (click)=\"onPageChange(pageIndex() - 1)\">Ant</ad-button>\r\n <ad-button variant=\"secondary\" class=\"rounded-r-md\" [disabled]=\"pageIndex() * pageSize() >= total()\" (click)=\"onPageChange(pageIndex() + 1)\">Sig</ad-button>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class TableEngineComponent {\r\n // Signals\r\n schema = input.required<TableSchema>(); // Optional if using columns directly, but Schema approach implies passing the whole schema object usually.\r\n // Actually, keeping flexible to support both direct cols or schema.\r\n // Let's support independent inputs for now to match old API but strict typed.\r\n\r\n // Re-defining inputs to match Core Schema\r\n columns = input<TableColumn[]>([]);\r\n data = input<any[]>([]);\r\n loading = input<boolean>(false);\r\n total = input<number>(0);\r\n pageSize = input<number>(10);\r\n pageIndex = input<number>(1);\r\n actions = input<TableAction[]>([]); // Parameterized actions\r\n\r\n queryParamsChange = output<any>();\r\n action = output<{ action: string, data: any }>();\r\n\r\n protected Math = Math;\r\n\r\n displayColumns = computed(() => {\r\n // Filter visible if property exists, or default true\r\n // CoreTableColumn doesn't have is_v displayColumns = computed(() => {\r\n // Use schema columns if available, otherwise fallback to columns input\r\n return this.schema().columns || this.columns();\r\n });\r\n\r\n hasActions = computed(() => {\r\n const schemaActions = this.schema().actions || [];\r\n const inputActions = this.actions();\r\n return schemaActions.length > 0 || inputActions.length > 0;\r\n });\r\n\r\n // Helper to get combined actions\r\n getActions = computed(() => {\r\n const schemaActions = this.schema().actions || [];\r\n const inputActions = this.actions();\r\n return [...schemaActions, ...inputActions];\r\n });\r\n\r\n mapVariant(color?: string): 'primary' | 'secondary' | 'ghost' | 'danger' {\r\n if (color === 'primary') return 'primary';\r\n if (color === 'secondary') return 'secondary';\r\n if (color === 'danger') return 'danger';\r\n return 'ghost';\r\n }\r\n\r\n onPageChange(newPageIndex: number) {\r\n if (newPageIndex < 1 || (newPageIndex - 1) * this.pageSize() >= this.total()) return;\r\n\r\n this.queryParamsChange.emit({\r\n pageIndex: newPageIndex,\r\n pageSize: this.pageSize(),\r\n sort: [],\r\n filter: []\r\n });\r\n }\r\n\r\n onActionClick(action: string, data: any) {\r\n this.action.emit({ action, data });\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport type BadgeVariant = 'success' | 'warning' | 'error' | 'info' | 'neutral';\r\nexport type BadgeType = 'filled' | 'subtle' | 'outline';\r\n\r\n@Component({\r\n selector: 'ad-badge',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './badge.component.html',\r\n styleUrls: ['./badge.component.scss']\r\n})\r\nexport class AdBadgeComponent {\r\n @Input() variant: BadgeVariant = 'neutral';\r\n @Input() type: BadgeType = 'subtle';\r\n}\r\n","<span class=\"ad-badge\" [ngClass]=\"[variant, type]\">\r\n <ng-content></ng-content>\r\n</span>","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-label',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './label.component.html',\r\n styleUrls: ['./label.component.scss']\r\n})\r\nexport class AdLabelComponent {\r\n @Input() text: string = '';\r\n @Input() for: string = '';\r\n @Input() required: boolean = false;\r\n @Input() error: boolean = false;\r\n}\r\n","<label [attr.for]=\"for\" class=\"ad-label\" [class.has-error]=\"error\">\r\n {{ text }}\r\n <span *ngIf=\"required\" class=\"required-indicator\" aria-hidden=\"true\">*</span>\r\n</label>","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdminSectionCardResource } from './admin-section-card.resources';\r\n\r\n@Component({\r\n selector: 'ad-admin-section-card',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent],\r\n templateUrl: './admin-section-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AdminSectionCardComponent {\r\n // Input Resource\r\n resource = input.required<AdminSectionCardResource>();\r\n\r\n title = computed(() => this.resource().title);\r\n accentedTitle = computed(() => this.resource().accentedTitle);\r\n cardAction = computed(() => this.resource().action);\r\n loading = computed(() => this.resource().loading ?? false);\r\n\r\n // Outputs\r\n action = output<void>();\r\n\r\n onAction() {\r\n if (!this.loading()) {\r\n this.action.emit();\r\n // Also call the callback if it exists\r\n this.cardAction()?.['onClick']?.();\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"bg-white dark:bg-cerca-primary-active rounded-xl shadow-sm border border-slate-200 dark:border-cerca-primary hover:shadow-md transition-shadow duration-300 overflow-hidden\">\r\n <!-- Header -->\r\n <div\r\n class=\"px-6 py-4 border-b border-slate-100 dark:border-cerca-primary flex justify-between items-center bg-slate-50/50 dark:bg-cerca-primary/50\">\r\n <!-- Title Section -->\r\n <div class=\"flex items-center gap-2\">\r\n <h2 class=\"text-lg font-medium text-cerca-secondary dark:text-slate-300\">\r\n {{ title() }} <span class=\"accent-text font-bold\">{{ accentedTitle() }}</span>\r\n </h2>\r\n </div>\r\n\r\n <!-- Actions -->\r\n @if (cardAction()?.label) {\r\n <ad-button (click)=\"onAction()\" [disabled]=\"loading()\" [loading]=\"loading()\" [icon]=\"cardAction()?.icon\">\r\n {{ cardAction()?.label }}\r\n </ad-button>\r\n }\r\n </div>\r\n\r\n <!-- Content Slot -->\r\n <div class=\"p-6 bg-slate-50 dark:bg-cerca-primary/20 text-cerca-secondary dark:text-slate-300\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const AdminSectionCardActionSchema = z.object({\r\n label: z.string(),\r\n icon: z.string().optional(),\r\n onClick: z.custom<() => void>().optional(),\r\n});\r\n\r\nexport const AdminSectionCardResourceSchema = z.object({\r\n title: z.string(),\r\n accentedTitle: z.string(),\r\n action: AdminSectionCardActionSchema.optional(),\r\n loading: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type AdminSectionCardAction = z.infer<typeof AdminSectionCardActionSchema>;\r\nexport type AdminSectionCardResource = z.infer<typeof AdminSectionCardResourceSchema>;\r\n","import { Component, input, output, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdLoadingComponent } from '../../atoms/loading/loading.component';\r\nimport { CardResource } from './card.resources';\r\n\r\n@Component({\r\n selector: 'ad-card',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent, AdLoadingComponent],\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss']\r\n})\r\nexport class AdCardComponent {\r\n resource = input.required<CardResource>();\r\n\r\n title = computed(() => this.resource().title);\r\n accentedTitle = computed(() => this.resource().accentedTitle);\r\n actionLabel = computed(() => this.resource().actionLabel);\r\n actionIcon = computed(() => this.resource().actionIcon || 'plus');\r\n loading = computed(() => this.resource().loading || false);\r\n bordered = computed(() => this.resource().bordered ?? true);\r\n\r\n // Convert padding to string if it's a number (e.g., 24 -> '24px')\r\n paddingStyle = computed(() => {\r\n const p = this.resource().padding;\r\n if (typeof p === 'number') return `${p}px`;\r\n return p || '24px';\r\n });\r\n\r\n action = output<void>();\r\n}\r\n","<div class=\"bg-white overflow-hidden rounded-lg transition-all duration-200\" [class.shadow-md]=\"bordered()\"\r\n [class.border]=\"bordered()\" [class.border-slate-200]=\"bordered()\" [class.shadow-none]=\"!bordered()\">\r\n\r\n @if (title() || actionLabel()) {\r\n <div class=\"px-4 py-3 sm:px-6 relative flex justify-between items-center min-h-[48px]\">\r\n <!-- Title -->\r\n <h3 class=\"text-lg font-bold text-slate-900 flex items-center\">\r\n {{ title() }}\r\n @if (accentedTitle()) {\r\n <span class=\"accent-text\">\r\n {{ accentedTitle() }}\r\n </span>\r\n }\r\n </h3>\r\n\r\n <!-- Action -->\r\n @if (actionLabel()) {\r\n <ad-button variant=\"primary\" [icon]=\"actionIcon()\" (click)=\"action.emit()\">\r\n {{ actionLabel() }}\r\n </ad-button>\r\n }\r\n\r\n <!-- Gradient bottom border for header -->\r\n <div class=\"absolute bottom-0 left-0 w-full h-[1px] bg-gradient-to-r from-sky-600 to-sky-400\"></div>\r\n </div>\r\n }\r\n\r\n <div class=\"px-4 py-5 sm:p-6\" [class.opacity-50]=\"loading()\">\r\n @if (loading()) {\r\n <div class=\"flex justify-center py-10\">\r\n <ad-loading size=\"lg\"></ad-loading>\r\n </div>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const CardResourceSchema = z.object({\r\n title: z.string(),\r\n accentedTitle: z.string().optional(),\r\n actionLabel: z.string().optional(),\r\n actionIcon: z.string().default('plus').optional(),\r\n loading: z.boolean().default(false).optional(),\r\n bordered: z.boolean().default(true).optional(),\r\n padding: z.union([z.string(), z.number()]).default('24px').optional(),\r\n});\r\n\r\nexport type CardResource = z.infer<typeof CardResourceSchema>;\r\n","import { Component, ChangeDetectionStrategy, input, output, inject, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ScreenResource } from '../../core/models/screen-resource.model';\r\nimport { AdModalService } from '../../core/services/modal';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { ModalTriggerResource } from './modal-trigger.resources';\r\n\r\n@Component({\r\n selector: 'ad-modal-trigger',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent],\r\n templateUrl: './modal-trigger.html',\r\n styleUrl: './modal-trigger.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AdModalTriggerComponent {\r\n // Inputs (Signals) based on US-DEV-007\r\n resource = input.required<ModalTriggerResource>();\r\n\r\n screenResource = computed(() => this.resource().resource);\r\n data = computed(() => this.resource().data);\r\n triggerLabel = computed(() => this.resource().triggerLabel);\r\n triggerIcon = computed(() => this.resource().triggerIcon);\r\n loading = computed(() => this.resource().loading || false);\r\n variant = computed(() => this.resource().variant || 'primary');\r\n disabled = computed(() => this.resource().disabled || false);\r\n\r\n // Outputs\r\n confirm = output<any>();\r\n cancel = output<void>();\r\n\r\n private modalService = inject(AdModalService);\r\n\r\n openModal() {\r\n this.modalService.open(this.screenResource(), this.data()).subscribe(result => {\r\n if (result) {\r\n this.confirm.emit(result);\r\n } else {\r\n this.cancel.emit();\r\n }\r\n });\r\n }\r\n}\r\n","<!-- Botón Disparador -->\r\n<ad-button (click)=\"openModal()\" [variant]=\"variant()\" [disabled]=\"disabled()\" [loading]=\"loading()\"\r\n [icon]=\"triggerIcon()\" [size]=\"'default'\">\r\n {{ triggerLabel() }}\r\n</ad-button>","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { DescriptionHeaderResource, DescriptionHeaderButton } from './description-header.resources';\r\nimport { AdModalTriggerComponent } from '../modal-trigger/modal-trigger';\r\nimport { ModalTriggerResource } from '../modal-trigger/modal-trigger.resources';\r\n/**\r\n * Componente Molecular Description Header\r\n * \r\n * Molécula que compone múltiples átomos (títulos, botones, iconos) para\r\n * crear un header descriptivo reutilizable con títulos acentuados,\r\n * subtítulos y botones de acción dinámicos.\r\n * \r\n * @example\r\n * ```html\r\n * <ad-description-header [resource]=\"headerResource\"></ad-description-header>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'ad-description-header',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent, AdModalTriggerComponent],\r\n templateUrl: './description-header.component.html',\r\n styleUrls: ['./description-header.component.scss']\r\n})\r\nexport class AdDescriptionHeaderComponent {\r\n /** Recurso de configuración del header */\r\n resource = input.required<DescriptionHeaderResource>();\r\n\r\n title = computed(() => this.resource().title);\r\n accentedTitle = computed(() => this.resource().accentedTitle);\r\n subtitle = computed(() => this.resource().subtitle);\r\n buttons = computed(() => this.resource().buttons);\r\n showDivider = computed(() => this.resource().showDivider);\r\n\r\n getModalTriggerResource(button: DescriptionHeaderButton): ModalTriggerResource {\r\n return {\r\n resource: button.modalResource,\r\n data: button.modalData,\r\n triggerLabel: button.label,\r\n triggerIcon: button.icon,\r\n variant: button.variant,\r\n disabled: button.disabled\r\n };\r\n }\r\n\r\n /**\r\n * Maneja el clic en un botón\r\n * @param onClick Callback del botón\r\n */\r\n handleButtonClick(onClick: (() => void) | undefined): void {\r\n if (onClick) {\r\n onClick();\r\n }\r\n }\r\n\r\n /**\r\n * Maneja la confirmación de un modal\r\n * @param onConfirm Callback de confirmación\r\n * @param result Resultado del modal\r\n */\r\n handleModalConfirm(onConfirm: ((result: any) => void) | undefined, result: any): void {\r\n if (onConfirm) {\r\n onConfirm(result);\r\n }\r\n }\r\n\r\n /**\r\n * Maneja la cancelación de un modal\r\n * @param onCancel Callback de cancelación\r\n */\r\n handleModalCancel(onCancel: (() => void) | undefined): void {\r\n if (onCancel) {\r\n onCancel();\r\n }\r\n }\r\n}\r\n","<div class=\"premium-header-card\">\r\n <div class=\"header-main\">\r\n <div class=\"title-group\">\r\n <h1 class=\"premium-title\">\r\n {{ title() }}\r\n @if (accentedTitle()) {\r\n <span class=\"accent-text\">\r\n {{ accentedTitle() }}\r\n </span>\r\n }\r\n </h1>\r\n @if (subtitle()) {\r\n <p class=\"premium-subtitle\">\r\n {{ subtitle() }}\r\n </p>\r\n }\r\n </div>\r\n @if (buttons() && buttons()!.length > 0) {\r\n <div class=\"header-actions\">\r\n @for (button of buttons(); track $index) {\r\n @if (button.isModalTrigger && button.modalResource) {\r\n <ad-modal-trigger [resource]=\"getModalTriggerResource(button)\"\r\n (confirm)=\"handleModalConfirm(button.onModalConfirm, $event)\"\r\n (cancel)=\"handleModalCancel(button.onModalCancel)\">\r\n </ad-modal-trigger>\r\n } @else {\r\n <ad-button [variant]=\"button.variant || 'primary'\" [type]=\"button.type || 'button'\"\r\n [disabled]=\"button.disabled || false\" (click)=\"handleButtonClick(button.onClick)\" [icon]=\"button.icon\">\r\n {{ button.label }}\r\n </ad-button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- Divider is no longer needed with the card style -->\r\n@if (showDivider() && false) {\r\n<div class=\"ad-description-header__divider\"></div>\r\n}","import { z } from 'zod';\r\nimport { ScreenResource } from '../../core/models/screen-resource.model';\r\n\r\nexport const DescriptionHeaderButtonSchema = z.object({\r\n label: z.string(),\r\n variant: z.enum(['primary', 'secondary', 'ghost', 'outline', 'danger']).optional(),\r\n type: z.enum(['button', 'submit', 'reset']).optional(),\r\n icon: z.string().optional(),\r\n onClick: z.custom<() => void>().optional(),\r\n disabled: z.boolean().optional(),\r\n isModalTrigger: z.boolean().optional(),\r\n modalResource: z.custom<ScreenResource>().optional(),\r\n modalData: z.any().optional(),\r\n onModalConfirm: z.custom<(result: any) => void>().optional(),\r\n onModalCancel: z.custom<() => void>().optional(),\r\n});\r\n\r\nexport const DescriptionHeaderResourceSchema = z.object({\r\n title: z.string(),\r\n accentedTitle: z.string().optional(),\r\n subtitle: z.string().optional(),\r\n buttons: z.array(DescriptionHeaderButtonSchema).optional(),\r\n showDivider: z.boolean().optional(),\r\n});\r\n\r\nexport type DescriptionHeaderButton = z.infer<typeof DescriptionHeaderButtonSchema>;\r\nexport type DescriptionHeaderResource = z.infer<typeof DescriptionHeaderResourceSchema>;\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdLabelComponent } from '../../atoms/labels/label.component';\r\nimport { FormFieldResource } from './form-field.resources';\r\n\r\n@Component({\r\n selector: 'ad-form-field',\r\n standalone: true,\r\n imports: [CommonModule, AdLabelComponent],\r\n templateUrl: './form-field.component.html',\r\n styleUrls: ['./form-field.component.scss']\r\n})\r\nexport class AdFormFieldComponent {\r\n resource = input.required<FormFieldResource>();\r\n\r\n label = computed(() => this.resource().label || '');\r\n hint = computed(() => this.resource().hint || '');\r\n errorMessage = computed(() => this.resource().errorMessage || null);\r\n required = computed(() => this.resource().required || false);\r\n error = computed(() => this.resource().error || false);\r\n forAttr = computed(() => this.resource().for || '');\r\n\r\n hasError = computed(() => !!this.errorMessage());\r\n}\r\n","<div class=\"ad-form-field\" [class.has-error]=\"hasError()\">\r\n @if (label()) {\r\n <ad-label [text]=\"label()\" [for]=\"forAttr()\" [required]=\"required()\" [error]=\"hasError()\">\r\n </ad-label>\r\n }\r\n\r\n <div class=\"ad-form-field-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (hint() || errorMessage()) {\r\n <div class=\"ad-form-field-info\">\r\n @if (errorMessage()) {\r\n <span class=\"ad-form-field-error\">{{ errorMessage() }}</span>\r\n }\r\n @if (hint() && !errorMessage()) {\r\n <span class=\"ad-form-field-hint\">{{ hint() }}</span>\r\n }\r\n </div>\r\n }\r\n</div>","import { z } from 'zod';\r\n\r\nexport const FormFieldResourceSchema = z.object({\r\n label: z.string().optional(),\r\n hint: z.string().optional(),\r\n errorMessage: z.string().nullable().optional(),\r\n required: z.boolean().default(false).optional(),\r\n error: z.boolean().default(false).optional(),\r\n for: z.string().optional()\r\n});\r\n\r\nexport type FormFieldResource = z.infer<typeof FormFieldResourceSchema>;\r\n","import { z } from 'zod';\r\n\r\nexport const ModalTriggerResourceSchema = z.object({\r\n resource: z.any(), // Assuming ScreenResource for now\r\n data: z.any().optional(),\r\n triggerLabel: z.string(),\r\n triggerIcon: z.string().optional(),\r\n loading: z.boolean().default(false).optional(),\r\n variant: z.enum(['primary', 'secondary', 'ghost', 'outline', 'danger']).default('primary').optional(),\r\n disabled: z.boolean().default(false).optional()\r\n});\r\n\r\nexport type ModalTriggerResource = z.infer<typeof ModalTriggerResourceSchema>;\r\n","import { Component, input, output, OnInit, OnDestroy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { SearchBarResource } from './search-bar.resources';\r\nimport { computed } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ad-search-bar',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, AdIconComponent],\r\n templateUrl: './search-bar.component.html',\r\n styleUrls: ['./search-bar.component.scss']\r\n})\r\nexport class AdSearchBarComponent implements OnInit, OnDestroy {\r\n resource = input.required<SearchBarResource>();\r\n\r\n placeholder = computed(() => this.resource().placeholder || 'Buscar...');\r\n debounce = computed(() => this.resource().debounce ?? 300);\r\n loading = computed(() => this.resource().loading || false);\r\n variant = computed(() => this.resource().variant || 'standalone');\r\n\r\n search = output<string>();\r\n\r\n searchQuery: string = '';\r\n private searchSubject = new Subject<string>();\r\n private subscription: Subscription = new Subscription();\r\n\r\n ngOnInit() {\r\n this.subscription = this.searchSubject\r\n .pipe(\r\n debounceTime(this.debounce()),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(query => {\r\n this.search.emit(query);\r\n });\r\n }\r\n\r\n onQueryChange() {\r\n this.searchSubject.next(this.searchQuery);\r\n }\r\n\r\n clear() {\r\n this.searchQuery = '';\r\n this.onQueryChange();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","<div class=\"ad-search-bar\" [ngClass]=\"variant()\">\r\n <div class=\"ad-search-icon-wrapper\">\r\n @if (!loading()) {\r\n <ad-icon name=\"search\" size=\"sm\"></ad-icon>\r\n }\r\n @if (loading()) {\r\n <div class=\"ad-search-loader\"></div>\r\n }\r\n </div>\r\n\r\n <input type=\"text\" class=\"ad-search-input\" [placeholder]=\"placeholder()\" [(ngModel)]=\"searchQuery\"\r\n (ngModelChange)=\"onQueryChange()\">\r\n\r\n @if (searchQuery && !loading()) {\r\n <button class=\"ad-search-clear\" (click)=\"clear()\" type=\"button\">\r\n <ad-icon name=\"close\" size=\"xs\"></ad-icon>\r\n </button>\r\n }\r\n</div>","import { z } from 'zod';\r\n\r\nexport const SearchBarResourceSchema = z.object({\r\n placeholder: z.string().default('Buscar...').optional(),\r\n debounce: z.number().default(300).optional(),\r\n loading: z.boolean().default(false).optional(),\r\n variant: z.enum(['standalone', 'header']).default('standalone').optional(),\r\n});\r\n\r\nexport type SearchBarResource = z.infer<typeof SearchBarResourceSchema>;\r\n","import { z } from 'zod';\r\n\r\nexport const StatCardColorSchema = z.enum(['blue', 'green', 'red', 'yellow', 'purple', 'orange']);\r\n\r\nexport const StatCardResourceSchema = z.object({\r\n title: z.string(),\r\n value: z.union([z.string(), z.number()]),\r\n icon: z.string().optional(),\r\n color: StatCardColorSchema.optional(),\r\n loading: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type StatCardColor = z.infer<typeof StatCardColorSchema>;\r\nexport type StatCardResource = z.infer<typeof StatCardResourceSchema>;\r\n\r\nexport const STAT_CARD_COLOR_MAP: Record<StatCardColor, { bg: string; label: string }> = {\r\n blue: { bg: 'bg-blue-50', label: 'text-blue-500' },\r\n green: { bg: 'bg-green-50', label: 'text-green-500' },\r\n red: { bg: 'bg-red-50', label: 'text-red-500' },\r\n yellow: { bg: 'bg-yellow-50', label: 'text-yellow-600' },\r\n purple: { bg: 'bg-purple-50', label: 'text-purple-500' },\r\n orange: { bg: 'bg-orange-50', label: 'text-orange-500' },\r\n};\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { STAT_CARD_COLOR_MAP, StatCardResource } from './stat-card.resources';\r\n\r\n@Component({\r\n selector: 'ad-stat-card',\r\n standalone: true,\r\n imports: [NgClass, AdIconComponent],\r\n templateUrl: './stat-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AdStatCardComponent {\r\n resource = input.required<StatCardResource>();\r\n\r\n title = computed(() => this.resource().title);\r\n value = computed(() => this.resource().value);\r\n icon = computed(() => this.resource().icon);\r\n\r\n readonly colorClass = computed(() => {\r\n const color = this.resource().color ?? 'blue';\r\n return STAT_CARD_COLOR_MAP[color].bg;\r\n });\r\n\r\n readonly labelColorClass = computed(() => {\r\n const color = this.resource().color ?? 'blue';\r\n return STAT_CARD_COLOR_MAP[color].label;\r\n });\r\n\r\n readonly isLoading = computed(() => this.resource().loading ?? false);\r\n}\r\n","<div class=\"bg-white rounded-2xl shadow-sm border border-slate-100 p-4 min-w-[160px]\">\r\n <div class=\"rounded-xl p-4 flex flex-col gap-3\" [ngClass]=\"colorClass()\">\r\n\r\n <!-- Título -->\r\n <span class=\"text-[11px] font-semibold tracking-widest uppercase\" [ngClass]=\"labelColorClass()\">\r\n {{ title() }}\r\n </span>\r\n\r\n <!-- Icono + Valor (alineados a la derecha) -->\r\n @if (isLoading()) {\r\n <div class=\"h-9 w-20 rounded-lg animate-pulse opacity-30\" [ngClass]=\"labelColorClass()\"></div>\r\n } @else {\r\n <div class=\"flex items-center justify-between gap-2\">\r\n @if (icon()) {\r\n <ad-icon [name]=\"icon()!\" size=\"md\" [ngClass]=\"labelColorClass()\"></ad-icon>\r\n }\r\n <span class=\"text-3xl font-bold text-slate-800 leading-none ml-auto\">\r\n {{ value() }}\r\n </span>\r\n </div>\r\n }\r\n\r\n </div>\r\n</div>","import { Component, input, output, ContentChild, TemplateRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DataTableResource } from './data-table.resources';\r\nimport { computed } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ad-data-table',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './data-table.component.html',\r\n styleUrls: ['./data-table.component.scss']\r\n})\r\nexport class AdDataTableComponent {\r\n resource = input.required<DataTableResource>();\r\n\r\n data = computed(() => this.resource().data || []);\r\n columns = computed(() => this.resource().columns || []);\r\n loading = computed(() => this.resource().loading || false);\r\n showSearch = computed(() => this.resource().showSearch ?? true);\r\n searchPlaceholder = computed(() => this.resource().searchPlaceholder || 'Buscar en la tabla...');\r\n\r\n rowClick = output<any>();\r\n search = output<string>();\r\n actionClick = output<{ action: string, row: any }>();\r\n\r\n @ContentChild('customCell') customCellTemplate?: TemplateRef<any>;\r\n @ContentChild('rowActions') rowActionsTemplate?: TemplateRef<any>; // Fixed missing ContentChild\r\n\r\n get skeletonRows() {\r\n return Array(5).fill(0);\r\n }\r\n}\r\n","<div class=\"ad-data-table-container\">\r\n <div class=\"ad-data-table-wrapper\">\r\n <table class=\"ad-data-table\">\r\n <thead>\r\n <tr>\r\n @for (col of columns(); track col.key) {\r\n <th>\r\n {{ col.label }}\r\n </th>\r\n }\r\n </thead>\r\n\r\n <tbody>\r\n @for (row of data(); track $index) {\r\n <tr>\r\n @for (col of columns(); track col.key) {\r\n <td>\r\n {{ row[col.key] }}\r\n </td>\r\n }\r\n </tr>\r\n } @empty {\r\n <tr>\r\n <td [attr.colspan]=\"columns().length\">\r\n No se encontraron resultados\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const DataTableColumnSchema = z.object({\r\n key: z.string(),\r\n label: z.string(),\r\n type: z.enum(['text', 'number', 'date', 'badge', 'custom']).optional(),\r\n sortable: z.boolean().optional(),\r\n});\r\n\r\nexport type DataTableColumn = z.infer<typeof DataTableColumnSchema>;\r\n\r\nexport const DataTableResourceSchema = z.object({\r\n data: z.array(z.any()).default([]),\r\n columns: z.array(DataTableColumnSchema).default([]),\r\n loading: z.boolean().default(false).optional(),\r\n showSearch: z.boolean().default(true).optional(),\r\n searchPlaceholder: z.string().default('Buscar en la tabla...').optional(),\r\n});\r\n\r\nexport type DataTableResource = z.infer<typeof DataTableResourceSchema>;\r\n","import { Component, input, output, signal, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HeaderResource } from './header.resources';\r\n\r\n@Component({\r\n selector: 'ad-header',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './header.component.html',\r\n})\r\nexport class AdHeaderComponent {\r\n // Inputs\r\n resource = input.required<HeaderResource>();\r\n\r\n user = computed(() => this.resource().user);\r\n notificationsCount = computed(() => this.resource().notificationsCount ?? 0);\r\n\r\n // Outputs\r\n toggleSidebar = output<void>();\r\n toggleMobileMenu = output<void>();\r\n logout = output<void>();\r\n navigateProfile = output<void>();\r\n toggleTheme = output<boolean>();\r\n\r\n // State\r\n isUserMenuOpen = signal(false);\r\n isDarkMode = signal(false);\r\n\r\n onToggleSidebar() {\r\n this.toggleSidebar.emit();\r\n }\r\n\r\n onToggleMobileMenu() {\r\n this.toggleMobileMenu.emit();\r\n }\r\n\r\n toggleUserMenu() {\r\n this.isUserMenuOpen.update(v => !v);\r\n }\r\n\r\n closeUserMenu() {\r\n this.isUserMenuOpen.set(false);\r\n }\r\n\r\n onLogoutClick() {\r\n this.logout.emit();\r\n this.closeUserMenu();\r\n }\r\n\r\n onProfileClick() {\r\n this.navigateProfile.emit();\r\n this.closeUserMenu();\r\n }\r\n\r\n onToggleThemeClick() {\r\n this.isDarkMode.update(v => !v);\r\n const isDark = this.isDarkMode();\r\n\r\n if (isDark) {\r\n document.documentElement.classList.add('dark');\r\n } else {\r\n document.documentElement.classList.remove('dark');\r\n }\r\n\r\n this.toggleTheme.emit(isDark);\r\n this.closeUserMenu();\r\n }\r\n}\r\n","<header class=\"sticky top-0 z-20 flex items-center justify-between px-6 h-16 \r\n bg-white/80 backdrop-blur-xl border-b border-white/20\r\n shadow-[0_4px_30px_rgba(0,0,0,0.05)] transition-all duration-300\">\r\n <div class=\"flex items-center gap-4 flex-1\">\r\n <!-- Mobile Menu -->\r\n <button (click)=\"onToggleMobileMenu()\"\r\n class=\"md:hidden p-2 text-slate-600 hover:bg-slate-100 rounded-xl transition-all active:scale-95 shadow-sm bg-white border border-slate-100\">\r\n <span class=\"material-icons-outlined\">menu</span>\r\n </button>\r\n\r\n <!-- Desktop Toggle -->\r\n <button (click)=\"onToggleSidebar()\"\r\n class=\"hidden md:flex p-2 text-slate-600 hover:bg-slate-100 rounded-xl transition-all active:scale-95 shadow-sm bg-white border border-slate-100\">\r\n <span class=\"material-icons-outlined\">menu_open</span>\r\n </button>\r\n\r\n <!-- Search Bar -->\r\n <div\r\n class=\"relative flex items-center transition-all duration-300 w-48 md:w-64 focus-within:w-full focus-within:max-w-md\">\r\n <span\r\n class=\"material-icons-outlined absolute left-3 transition-colors text-slate-400 group-focus-within:text-blue-500\">search</span>\r\n <input type=\"text\" placeholder=\"Buscar en Cerca...\"\r\n class=\"w-full bg-slate-50 border border-slate-200 rounded-xl py-2 pl-10 pr-4 text-sm focus:outline-none focus:ring-4 focus:ring-blue-500/10 focus:bg-white transition-all shadow-inner placeholder:text-slate-400 text-slate-600\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Header Right -->\r\n <div class=\"flex items-center gap-3\">\r\n <!-- Notifications -->\r\n <button\r\n class=\"relative p-2.5 text-slate-500 hover:bg-slate-100 rounded-xl transition-all bg-white border border-slate-100 shadow-sm group\">\r\n <span class=\"material-icons-outlined group-hover:text-blue-500 transition-colors\">notifications</span>\r\n @if (notificationsCount() > 0) {\r\n <span class=\"absolute top-2 right-2 w-2.5 h-2.5 bg-red-500 rounded-full border-2 border-white\"></span>\r\n }\r\n </button>\r\n\r\n <div class=\"h-8 w-[1px] bg-slate-200 mx-1\"></div>\r\n\r\n <!-- User Profile -->\r\n <div class=\"flex items-center gap-3 pl-1 group cursor-pointer\" (click)=\"toggleUserMenu()\">\r\n <div class=\"text-right hidden sm:block\">\r\n <p class=\"text-sm font-bold text-slate-700 leading-none group-hover:text-blue-600 transition-colors\">\r\n {{ user().name }}</p>\r\n <p class=\"text-[10px] text-slate-400 font-bold mt-1 tracking-tighter uppercase\">{{ user().role\r\n }}</p>\r\n </div>\r\n <!-- Gradient Avatar -->\r\n <div\r\n class=\"h-10 w-10 rounded-xl bg-gradient-to-tr from-blue-600 to-blue-400 flex items-center justify-center text-white shadow-lg shadow-blue-200 transition-transform group-hover:scale-105\">\r\n @if (user().avatarUrl) {\r\n <img [src]=\"user().avatarUrl\" alt=\"Avatar\"\r\n class=\"h-full w-full rounded-xl object-cover opacity-90 hover:opacity-100\">\r\n } @else {\r\n <span class=\"material-icons-outlined text-sm\">person</span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown Menu (Existing logic) -->\r\n @if (isUserMenuOpen()) {\r\n <div class=\"fixed inset-0 z-40\" (click)=\"closeUserMenu()\"></div>\r\n <div\r\n class=\"absolute top-16 right-6 w-48 bg-white dark:bg-cerca-navy rounded-xl shadow-xl py-1 border border-slate-100 ring-1 ring-black ring-opacity-5 animate-fade-in-down z-50\">\r\n <button (click)=\"onProfileClick()\"\r\n class=\"w-full text-left px-4 py-2 text-sm text-slate-700 hover:bg-slate-50 hover:text-blue-600 transition-colors flex items-center font-medium\">\r\n <span class=\"material-icons-outlined text-lg mr-2\">person</span> Perfil\r\n </button>\r\n <button (click)=\"onToggleThemeClick()\"\r\n class=\"w-full text-left px-4 py-2 text-sm text-slate-700 hover:bg-slate-50 hover:text-blue-600 transition-colors flex items-center font-medium\">\r\n <span class=\"material-icons-outlined text-lg mr-2\">{{ isDarkMode() ? 'light_mode' : 'dark_mode'\r\n }}</span> {{ isDarkMode() ? 'Modo Claro' : 'Modo Oscuro' }}\r\n </button>\r\n <div class=\"border-t border-slate-100 my-1\"></div>\r\n <button (click)=\"onLogoutClick()\"\r\n class=\"w-full text-left px-4 py-2 text-sm text-rose-600 hover:bg-rose-50 transition-colors flex items-center font-medium\">\r\n <span class=\"material-icons-outlined text-lg mr-2\">logout</span> Cerrar Sesión\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</header>","import { z } from 'zod';\r\n\r\nexport const UserSchema = z.object({\r\n name: z.string(),\r\n role: z.string(),\r\n avatarUrl: z.string().optional(),\r\n});\r\n\r\nexport type User = z.infer<typeof UserSchema>;\r\n\r\nexport const HeaderResourceSchema = z.object({\r\n user: UserSchema,\r\n notificationsCount: z.number().default(0).optional(),\r\n});\r\n\r\nexport type HeaderResource = z.infer<typeof HeaderResourceSchema>;\r\n","import { Component, input, output, inject, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\r\nimport { AdInputComponent } from '../../atoms/input/input.component';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { LoginResource } from './login.component.resources';\r\n\r\n@Component({\r\n selector: 'ad-login',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n AdInputComponent,\r\n AdButtonComponent\r\n ],\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class AdLoginComponent {\r\n private fb = inject(FormBuilder);\r\n\r\n resource = input.required<LoginResource>();\r\n\r\n title = computed(() => this.resource().title ?? 'Bienvenido');\r\n titleAccent = computed(() => this.resource().titleAccent);\r\n subtitle = computed(() => this.resource().subtitle ?? 'Inicia sesión para continuar');\r\n logo = computed(() => this.resource().logo);\r\n icon = computed(() => this.resource().icon);\r\n loading = computed(() => this.resource().loading ?? false);\r\n errorMessage = computed(() => this.resource().errorMessage ?? null);\r\n supportEmail = computed(() => this.resource().supportEmail ?? 'soporte@cerca.com.co');\r\n recoverPasswordUrl = computed(() => this.resource().recoverPasswordUrl);\r\n forgotPasswordLabel = computed(() => this.resource().forgotPasswordLabel ?? '¿Olvidaste tu clave?');\r\n\r\n loginSubmit = output<{ email: string; password: string; remember: boolean }>();\r\n forgotPasswordClick = output<void>();\r\n\r\n loginForm = this.fb.group({\r\n email: ['', [Validators.required, Validators.email]],\r\n password: ['', [Validators.required]],\r\n remember: [true]\r\n });\r\n\r\n submitForm(): void {\r\n if (this.loginForm.valid) {\r\n const { email, password, remember } = this.loginForm.getRawValue();\r\n this.loginSubmit.emit({ email: email!, password: password!, remember: remember! });\r\n } else {\r\n Object.values(this.loginForm.controls).forEach(control => {\r\n if (control.invalid) {\r\n control.markAsDirty();\r\n control.updateValueAndValidity({ onlySelf: true });\r\n }\r\n });\r\n }\r\n }\r\n\r\n fieldInvalid(field: string): boolean {\r\n const control = this.loginForm.get(field);\r\n return (control && control.invalid && (control.dirty || control.touched)) || false;\r\n }\r\n\r\n}\r\n","<div class=\"w-full max-w-md space-y-8 bg-white p-8 rounded-xl shadow-lg border border-slate-100\">\r\n <div class=\"text-center\">\r\n @if (logo()) {\r\n <img [src]=\"logo()\" alt=\"Logo\" class=\"mx-auto h-12 w-auto\" />\r\n } @else if (icon()) {\r\n <div class=\"mx-auto h-12 w-12 flex items-center justify-center rounded-full bg-sky-100 text-sky-600\">\r\n <!-- Fallback icon or remove nz-icon -->\r\n <span class=\"text-2xl font-bold\">C</span>\r\n </div>\r\n }\r\n <h2 class=\"mt-6 text-3xl font-extrabold text-cerca-navy\">\r\n {{ title() }}\r\n @if (titleAccent()) {\r\n <span class=\"accent-text\">{{ titleAccent() }}</span>\r\n }\r\n </h2>\r\n <p class=\"mt-2 text-sm text-slate-600 uppercase tracking-wide\">{{ subtitle() }}</p>\r\n </div>\r\n\r\n @if (errorMessage()) {\r\n <div class=\"bg-red-50 border-l-4 border-red-500 p-4 mb-4 rounded-md\">\r\n <div class=\"flex\">\r\n <div class=\"ml-3\">\r\n <p class=\"text-sm text-red-700\">{{ errorMessage() }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <form [formGroup]=\"loginForm\" class=\"mt-8 space-y-6\" (ngSubmit)=\"submitForm()\">\r\n <div class=\"space-y-4\">\r\n <div class=\"form-group\">\r\n <ad-input formControlName=\"email\" placeholder=\"correo@ejemplo.com\" label=\"Correo Electrónico\"\r\n type=\"email\" prefix=\"user\" [error]=\"fieldInvalid('email')\">\r\n </ad-input>\r\n @if (fieldInvalid('email')) {\r\n <p class=\"mt-1 text-sm text-red-600\">\r\n @if (loginForm.get('email')?.hasError('required')) { El campo es requerido }\r\n @else { Ingrese un correo válido }\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <ad-input formControlName=\"password\" placeholder=\"********\" label=\"Contraseña\" type=\"password\"\r\n prefix=\"lock\" [error]=\"fieldInvalid('password')\">\r\n </ad-input>\r\n @if (fieldInvalid('password')) {\r\n <p class=\"mt-1 text-sm text-red-600\">\r\n La contraseña es requerida\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex items-center justify-between\">\r\n <div class=\"flex items-center\">\r\n <input id=\"remember-me\" formControlName=\"remember\" type=\"checkbox\"\r\n class=\"h-4 w-4 rounded border-slate-300 text-sky-600 focus:ring-sky-600\">\r\n <label for=\"remember-me\" class=\"ml-2 block text-sm text-slate-900\">Recordarme</label>\r\n </div>\r\n\r\n @if (recoverPasswordUrl()) {\r\n <a [href]=\"recoverPasswordUrl()\" class=\"text-sm font-medium text-sky-600 hover:text-sky-500\">\r\n {{ forgotPasswordLabel() }}\r\n </a>\r\n } @else {\r\n <a class=\"text-sm font-medium text-sky-600 hover:text-sky-500 cursor-pointer\"\r\n (click)=\"forgotPasswordClick.emit()\">\r\n {{ forgotPasswordLabel() }}\r\n </a>\r\n }\r\n </div>\r\n\r\n <div>\r\n <div>\r\n <ad-button [loading]=\"loading()\" variant=\"primary\" type=\"submit\" [block]=\"true\"\r\n class=\"w-full justify-center\" [disabled]=\"loginForm.invalid || loading()\">\r\n Iniciar Sesión\r\n </ad-button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <div class=\"mt-6 text-center text-xs text-slate-400\">\r\n <p>¿Necesitas ayuda? Contacta a <a [href]=\"'mailto:' + supportEmail()\"\r\n class=\"hover:text-sky-600 transition-colors\">{{ supportEmail() }}</a></p>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const LoginResourceSchema = z.object({\r\n title: z.string().default('Bienvenido').optional(),\r\n titleAccent: z.string().optional(),\r\n subtitle: z.string().default('Inicia sesión para continuar').optional(),\r\n logo: z.string().optional(),\r\n icon: z.string().optional(),\r\n loading: z.boolean().default(false).optional(),\r\n errorMessage: z.string().nullable().optional(),\r\n supportEmail: z.string().default('soporte@cerca.com.co').optional(),\r\n recoverPasswordUrl: z.string().optional(),\r\n forgotPasswordLabel: z.string().default('¿Olvidaste tu clave?').optional(),\r\n});\r\n\r\nexport type LoginResource = z.infer<typeof LoginResourceSchema>;\r\n","import { z } from 'zod';\r\n\r\nexport const ModalResourceSchema = z.object({\r\n isOpen: z.boolean().default(false).optional(),\r\n title: z.string().default('').optional(),\r\n accentedTitle: z.string().optional(),\r\n size: z.enum(['sm', 'md', 'lg']).default('md').optional(),\r\n closeOnOverlay: z.boolean().default(true).optional(),\r\n showFooter: z.boolean().default(true).optional()\r\n});\r\n\r\nexport type ModalResource = z.infer<typeof ModalResourceSchema>;\r\n","import { Component, ChangeDetectionStrategy, input, output, signal, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterLink, RouterLinkActive, Router } from '@angular/router';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { NavItem, SidebarResource } from './sidebar.resources';\r\n\r\n@Component({\r\n selector: 'ad-sidebar',\r\n standalone: true,\r\n imports: [CommonModule, RouterLink, RouterLinkActive, AdIconComponent], // Add AdIconComponent if available, otherwise just use logic\r\n templateUrl: './sidebar.component.html',\r\n styles: [`\r\n @keyframes slideDown {\r\n from { opacity: 0; transform: translateY(-5px); }\r\n to { opacity: 1; transform: translateY(0); }\r\n }\r\n .animate-slide-down {\r\n animation: slideDown 0.2s ease-out forwards;\r\n }\r\n `],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AdSidebarComponent {\r\n // Inputs as Signals\r\n resource = input.required<SidebarResource>();\r\n\r\n menuItems = computed(() => this.resource().menuItems);\r\n collapsed = computed(() => this.resource().collapsed ?? false);\r\n\r\n // Outputs\r\n toggleCollapse = output<void>();\r\n navigate = output<NavItem>();\r\n\r\n // State\r\n expandedItems = signal<Set<string>>(new Set());\r\n\r\n constructor(private router: Router) { }\r\n\r\n onItemClick(item: NavItem) {\r\n if (item.children && item.children.length > 0) {\r\n this.toggleSubmenu(item);\r\n } else if (item.route) {\r\n this.navigate.emit(item);\r\n }\r\n }\r\n\r\n toggleSubmenu(item: NavItem) {\r\n if (this.collapsed()) {\r\n this.toggleCollapse.emit(); // Expand sidebar if clicking a submenu parent while collapsed\r\n // layout logic usually handles this, but good to emit\r\n }\r\n\r\n this.expandedItems.update(current => {\r\n const newSet = new Set(current);\r\n if (newSet.has(item.label)) {\r\n newSet.delete(item.label);\r\n } else {\r\n newSet.add(item.label);\r\n }\r\n return newSet;\r\n });\r\n }\r\n\r\n isExpanded(item: NavItem): boolean {\r\n return this.expandedItems().has(item.label);\r\n }\r\n\r\n hasActiveChild(item: NavItem): boolean {\r\n if (!item.children) return false;\r\n return item.children.some((child: NavItem) => {\r\n if (child.route) {\r\n return this.router.isActive(child.route, {\r\n paths: 'subset',\r\n queryParams: 'ignored',\r\n fragment: 'ignored',\r\n matrixParams: 'ignored'\r\n });\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n onToggle() {\r\n this.toggleCollapse.emit();\r\n }\r\n}\r\n","<aside\r\n class=\"flex flex-col bg-[#002B5B] text-white transition-all duration-300 ease-in-out h-full z-30 shadow-[10px_0_40px_-15px_rgba(0,0,0,0.3)] border-r border-white/5\"\r\n [class.w-72]=\"!collapsed()\" [class.w-20]=\"collapsed()\">\r\n\r\n <!-- Logo Area -->\r\n <div\r\n class=\"p-4 flex items-center justify-center border-b border-white/5 h-20 transition-all duration-300 flex-shrink-0\">\r\n @if (collapsed()) {\r\n <!-- Isotipo (C) -->\r\n <div\r\n class=\"w-10 h-10 bg-blue-500 rounded-lg flex items-center justify-center font-bold text-lg shadow-lg animate-in fade-in zoom-in-75\">\r\n C\r\n </div>\r\n } @else {\r\n <!-- Logo Completo -->\r\n <div class=\"flex items-center gap-2 animate-in fade-in slide-in-from-left-4 duration-500\">\r\n <span class=\"text-xl font-bold tracking-tight text-blue-400\">Cerca</span>\r\n <span\r\n class=\"text-[9px] font-bold bg-white/10 px-1.5 py-0.5 rounded tracking-widest text-slate-300 border border-white/10\">ADMIN</span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Menu de Navegación -->\r\n <div\r\n class=\"flex-1 overflow-y-auto py-6 px-3 space-y-2 scrollbar-thin scrollbar-thumb-slate-700 scrollbar-track-transparent [&::-webkit-scrollbar]:hidden [-ms-overflow-style:'none'] [scrollbar-width:'none']\">\r\n @for (item of menuItems(); track item.label) {\r\n <!-- Group Header -->\r\n @if (item.isHeader && !collapsed()) {\r\n <h2 class=\"text-[10px] font-bold text-slate-400 tracking-[0.2em] px-4 mb-3 mt-6 uppercase opacity-70\">\r\n {{ item.label }}\r\n </h2>\r\n }\r\n\r\n @if (!item.isHeader) {\r\n <!-- Item Wrapper -->\r\n <div class=\"relative group px-1\">\r\n <!-- Standard Item or Parent -->\r\n @if (!item.children || item.children.length === 0) {\r\n <a [routerLink]=\"item.route\"\r\n [routerLinkActive]=\"['bg-[#0081C9]', 'text-white', 'shadow-[0_10px_20px_-5px_rgba(0,129,201,0.4)]']\"\r\n [routerLinkActiveOptions]=\"{ exact: item.exact || false }\" (click)=\"onItemClick(item)\"\r\n class=\"w-full flex items-center px-4 py-3 rounded-xl transition-all duration-300 group cursor-pointer text-slate-300 hover:bg-white/5 hover:text-white\"\r\n [class.justify-center]=\"collapsed()\" [class.justify-between]=\"!collapsed()\" #rla=\"routerLinkActive\">\r\n\r\n <div class=\"flex items-center gap-3\">\r\n <span class=\"transition-colors\" [class.text-white]=\"rla.isActive\"\r\n [class.text-slate-400]=\"!rla.isActive\" [class.group-hover:text-blue-300]=\"!rla.isActive\">\r\n <ad-icon [name]=\"item.icon!\" size=\"md\"></ad-icon>\r\n </span>\r\n @if (!collapsed()) {\r\n <span class=\"font-medium text-sm whitespace-nowrap\">{{ item.label }}</span>\r\n }\r\n </div>\r\n\r\n @if (item.badge && !collapsed()) {\r\n <span\r\n class=\"bg-[#4CC9FE] text-[#002B5B] text-[10px] font-bold h-5 w-5 flex items-center justify-center rounded-md shadow-sm\">\r\n {{ item.badge }}\r\n </span>\r\n }\r\n </a>\r\n } @else {\r\n <!-- Parent Item with Submenu -->\r\n <div (click)=\"toggleSubmenu(item)\"\r\n class=\"w-full flex items-center px-4 py-3 rounded-xl transition-all duration-300 cursor-pointer hover:bg-white/5 hover:text-white\"\r\n [class.bg-white/5]=\"isExpanded(item)\" [class.text-white]=\"isExpanded(item) && !hasActiveChild(item)\"\r\n [class.text-[#4CC9FE]]=\"hasActiveChild(item)\"\r\n [class.text-slate-300]=\"!isExpanded(item) && !hasActiveChild(item)\" [class.justify-center]=\"collapsed()\"\r\n [class.justify-between]=\"!collapsed()\">\r\n\r\n <div class=\"flex items-center gap-3\">\r\n <span class=\"transition-colors\" [class.text-white]=\"isExpanded(item) && !hasActiveChild(item)\"\r\n [class.text-[#4CC9FE]]=\"hasActiveChild(item)\"\r\n [class.text-slate-400]=\"!isExpanded(item) && !hasActiveChild(item)\"\r\n [class.group-hover:text-blue-300]=\"!isExpanded(item) && !hasActiveChild(item)\">\r\n <ad-icon [name]=\"item.icon!\" size=\"md\"></ad-icon>\r\n </span>\r\n @if (!collapsed()) {\r\n <span class=\"font-medium text-sm whitespace-nowrap\">{{ item.label }}</span>\r\n }\r\n </div>\r\n\r\n @if (!collapsed()) {\r\n <span class=\"transition-transform duration-300\" [class.rotate-180]=\"isExpanded(item)\">\r\n <span class=\"material-icons-outlined text-sm\">expand_more</span>\r\n </span>\r\n }\r\n </div>\r\n\r\n <!-- Submenu -->\r\n @if (isExpanded(item) && !collapsed()) {\r\n <ul class=\"mt-1 ml-9 border-l border-white/10 space-y-1 animate-slide-down\">\r\n @for (subItem of item.children; track subItem.route) {\r\n <li>\r\n <a [routerLink]=\"subItem.route\" [routerLinkActive]=\"['text-white', 'font-medium']\"\r\n [routerLinkActiveOptions]=\"{ exact: subItem.exact || false }\" (click)=\"onItemClick(subItem)\"\r\n class=\"w-full block text-left px-4 py-2 text-xs text-slate-400 hover:text-white transition-colors rounded-lg\">\r\n {{ subItem.label }}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n }\r\n\r\n <!-- Tooltip for collapsed state -->\r\n @if (collapsed()) {\r\n <div\r\n class=\"fixed left-20 ml-2 px-3 py-1.5 bg-slate-900 text-white text-xs rounded-md opacity-0 group-hover:opacity-100 pointer-events-none transition-all translate-x-[-10px] group-hover:translate-x-0 whitespace-nowrap z-50 shadow-2xl\">\r\n {{ item.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"p-4 border-t border-white/5 bg-black/10 transition-all duration-300\">\r\n <div class=\"flex items-center h-10 rounded-lg bg-white/5 border border-white/5 transition-all duration-300\"\r\n [class.justify-center]=\"collapsed()\" [class.px-4]=\"!collapsed()\">\r\n <span class=\"text-[10px] font-medium text-slate-400 tracking-widest uppercase whitespace-nowrap\">\r\n {{ collapsed() ? 'v2' : 'v2.0.0 Design' }}\r\n </span>\r\n </div>\r\n </div>\r\n</aside>","import { z } from 'zod';\r\n\r\nexport const NavItemSchema: z.ZodType<any> = z.lazy(() => z.object({\r\n label: z.string(),\r\n icon: z.string().optional(),\r\n route: z.string().optional(),\r\n badge: z.union([z.string(), z.number()]).optional(),\r\n badgeColor: z.string().optional(),\r\n exact: z.boolean().optional(),\r\n children: z.array(NavItemSchema).optional(),\r\n isHeader: z.boolean().optional(),\r\n}));\r\n\r\nexport type NavItem = z.infer<typeof NavItemSchema>;\r\n\r\nexport const SidebarResourceSchema = z.object({\r\n menuItems: z.array(NavItemSchema),\r\n collapsed: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type SidebarResource = z.infer<typeof SidebarResourceSchema>;\r\n","import {\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n signal,\r\n effect,\r\n inject\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableResource, AdTableColumn } from './table.resources';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs';\r\nimport { AdLoadingComponent } from '../../atoms/loading/loading.component';\r\nimport { DatePipe, CurrencyPipe, DecimalPipe, PercentPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-table',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, AdLoadingComponent],\r\n providers: [DatePipe, CurrencyPipe, DecimalPipe, PercentPipe],\r\n templateUrl: './table.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AdTableComponent implements OnInit, OnDestroy {\r\n resource = input.required<TableResource>();\r\n\r\n data = computed(() => this.resource().data);\r\n columns = computed(() => this.resource().columns);\r\n total = computed(() => this.resource().total);\r\n loading = computed(() => this.resource().loading ?? false);\r\n pageIndex = computed(() => this.resource().pageIndex ?? 1);\r\n pageSize = computed(() => this.resource().pageSize ?? 10);\r\n searchPlaceholder = computed(() => this.resource().searchPlaceholder ?? 'Buscar...');\r\n\r\n pageChange = output<number>();\r\n search = output<string>();\r\n\r\n searchInput = new FormControl('');\r\n private destroy$ = new Subject<void>();\r\n\r\n private datePipe = inject(DatePipe);\r\n private currencyPipe = inject(CurrencyPipe);\r\n private decimalPipe = inject(DecimalPipe);\r\n private percentPipe = inject(PercentPipe);\r\n\r\n totalPages = computed(() => Math.ceil(this.total() / this.pageSize()));\r\n isFirstPage = computed(() => this.pageIndex() === 1);\r\n isLastPage = computed(() => this.pageIndex() >= this.totalPages());\r\n\r\n ngOnInit(): void {\r\n this.searchInput.valueChanges\r\n .pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe((value) => {\r\n this.search.emit(value || '');\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n onPageChange(newPage: number): void {\r\n if (newPage >= 1 && newPage <= this.totalPages()) {\r\n this.pageChange.emit(newPage);\r\n }\r\n }\r\n\r\n getAlignClass(align?: 'left' | 'center' | 'right'): string {\r\n switch (align) {\r\n case 'center': return 'text-center';\r\n case 'right': return 'text-right';\r\n default: return 'text-left';\r\n }\r\n }\r\n\r\n getCellValue(row: any, col: AdTableColumn): any {\r\n const value = row[col.key];\r\n\r\n // 1. Prioritize function execution if context is available\r\n if (col.function_to_exec && this.resource().context) {\r\n const context = this.resource().context;\r\n if (typeof context[col.function_to_exec] === 'function') {\r\n return context[col.function_to_exec](row, col);\r\n }\r\n }\r\n\r\n // 2. Apply pipe if specified\r\n if (col.pipe_to_apply && value !== null && value !== undefined) {\r\n return this.applyPipe(value, col.pipe_to_apply);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private applyPipe(value: any, pipeConfig: string): any {\r\n const [pipeName, ...args] = pipeConfig.split(':');\r\n\r\n switch (pipeName.toLowerCase()) {\r\n case 'date':\r\n return this.datePipe.transform(value, args[0] || 'mediumDate');\r\n case 'currency':\r\n return this.currencyPipe.transform(value, args[0] || 'USD', args[1] || 'symbol', args[2]);\r\n case 'number':\r\n case 'decimal':\r\n return this.decimalPipe.transform(value, args[0]);\r\n case 'percent':\r\n return this.percentPipe.transform(value, args[0]);\r\n default:\r\n return value;\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-col h-full w-full bg-white rounded-xl shadow-sm border border-stone-200 overflow-hidden\">\r\n <!-- Header: Search & Actions -->\r\n <div class=\"flex items-center justify-between p-4 border-b border-stone-100 bg-stone-50/50 backdrop-blur-sm\">\r\n <div class=\"relative w-full max-w-sm group\">\r\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <svg class=\"h-4 w-4 text-stone-400 group-focus-within:text-sky-500 transition-colors\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </div>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"block w-full pl-10 pr-3 py-2 border border-stone-300 rounded-lg leading-5 bg-white placeholder-stone-400 focus:outline-none focus:placeholder-stone-300 focus:border-sky-500 focus:ring-1 focus:ring-sky-500 sm:text-sm transition-shadow duration-200\"\r\n [placeholder]=\"searchPlaceholder()\" />\r\n </div>\r\n <div class=\"ml-4 flex items-center\">\r\n <span\r\n class=\"text-xs font-medium text-stone-500 bg-stone-100 px-2 py-1 rounded-full border border-stone-200\">\r\n Total: <span class=\"text-stone-800 font-bold\">{{ total() }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Table Container -->\r\n <div class=\"flex-1 overflow-auto relative\">\r\n <!-- Loading Overlay -->\r\n @if (loading()) {\r\n <div class=\"absolute inset-0 z-10 bg-white/60 backdrop-blur-[1px] flex justify-center items-center\">\r\n <div class=\"flex items-center gap-2 px-4 py-2 bg-white rounded-lg shadow-lg border border-stone-100\">\r\n <ad-loading size=\"md\"></ad-loading>\r\n <span class=\"text-sm font-medium text-stone-600\">Cargando datos...</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <table class=\"min-w-full divide-y divide-stone-200\">\r\n <thead class=\"bg-stone-50 sticky top-0 z-0 is-header\">\r\n <tr>\r\n @for (col of columns(); track col.key) {\r\n <th scope=\"col\"\r\n class=\"px-6 py-3 text-xs font-semibold text-stone-500 uppercase tracking-wider whitespace-nowrap\"\r\n [style.width]=\"col.width\" [class]=\"getAlignClass(col.align)\">\r\n {{ col.label }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody class=\"bg-white divide-y divide-stone-100\">\r\n @if (data().length === 0 && !loading()) {\r\n <tr>\r\n <td [attr.colspan]=\"columns().length\" class=\"px-6 py-12 text-center\">\r\n <div class=\"flex flex-col items-center justify-center text-stone-400\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\" class=\"w-12 h-12 mb-3 opacity-50\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z\" />\r\n </svg>\r\n <p class=\"text-base font-medium text-stone-900\">Sin datos disponibles</p>\r\n <p class=\"text-sm\">No se encontraron registros para mostrar.</p>\r\n </div>\r\n </td>\r\n </tr>\r\n } @else {\r\n @for (row of data(); track row) {\r\n <tr class=\"hover:bg-sky-50/50 transition-colors duration-150 group\">\r\n @for (col of columns(); track col.key) {\r\n <td class=\"px-6 py-4 whitespace-nowrap text-sm text-stone-700 border-b border-transparent group-hover:border-sky-100\"\r\n [class]=\"getAlignClass(col.align)\">\r\n {{ getCellValue(row, col) }}\r\n </td>\r\n }\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Footer: Pagination -->\r\n <div class=\"bg-white px-4 py-3 flex items-center justify-between border-t border-stone-200 sm:px-6\">\r\n <div class=\"flex-1 flex justify-between sm:hidden\">\r\n <button [disabled]=\"isFirstPage()\" (click)=\"onPageChange(pageIndex() - 1)\"\r\n class=\"relative inline-flex items-center px-4 py-2 border border-stone-300 text-sm font-medium rounded-md text-stone-700 bg-white hover:bg-stone-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\">\r\n Anterior\r\n </button>\r\n <button [disabled]=\"isLastPage()\" (click)=\"onPageChange(pageIndex() + 1)\"\r\n class=\"ml-3 relative inline-flex items-center px-4 py-2 border border-stone-300 text-sm font-medium rounded-md text-stone-700 bg-white hover:bg-stone-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\">\r\n Siguiente\r\n </button>\r\n </div>\r\n <div class=\"hidden sm:flex-1 sm:flex sm:items-center sm:justify-between\">\r\n <div>\r\n <p class=\"text-sm text-stone-500\">\r\n Mostrando página <span class=\"font-medium text-stone-900\">{{ pageIndex() }}</span> de <span\r\n class=\"font-medium text-stone-900\">{{ totalPages() }}</span>\r\n </p>\r\n </div>\r\n <div>\r\n <nav class=\"relative z-0 inline-flex rounded-md shadow-sm -space-x-px\" aria-label=\"Pagination\">\r\n <button [disabled]=\"isFirstPage()\" (click)=\"onPageChange(pageIndex() - 1)\"\r\n class=\"relative inline-flex items-center px-2 py-2 rounded-l-md border border-stone-300 bg-white text-sm font-medium text-stone-500 hover:bg-stone-50 disabled:opacity-50 disabled:cursor-not-allowed focus:z-10 focus:outline-none focus:ring-1 focus:ring-sky-500 focus:border-sky-500 transition-colors\">\r\n <span class=\"sr-only\">Anterior</span>\r\n <!-- Heroicon: chevron-left -->\r\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n <button [disabled]=\"isLastPage()\" (click)=\"onPageChange(pageIndex() + 1)\"\r\n class=\"relative inline-flex items-center px-2 py-2 rounded-r-md border border-stone-300 bg-white text-sm font-medium text-stone-500 hover:bg-stone-50 disabled:opacity-50 disabled:cursor-not-allowed focus:z-10 focus:outline-none focus:ring-1 focus:ring-sky-500 focus:border-sky-500 transition-colors\">\r\n <span class=\"sr-only\">Siguiente</span>\r\n <!-- Heroicon: chevron-right -->\r\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const AdTableColumnSchema = z.object({\r\n key: z.string(),\r\n label: z.string(),\r\n width: z.string().optional(),\r\n align: z.enum(['left', 'center', 'right']).optional(),\r\n pipe_to_apply: z.string().optional(),\r\n function_to_exec: z.string().optional(),\r\n});\r\n\r\nexport type AdTableColumn = z.infer<typeof AdTableColumnSchema>;\r\n\r\nexport const TableResourceSchema = z.object({\r\n data: z.array(z.any()),\r\n columns: z.array(AdTableColumnSchema),\r\n total: z.number(),\r\n loading: z.boolean().default(false).optional(),\r\n pageIndex: z.number().default(1).optional(),\r\n pageSize: z.number().default(10).optional(),\r\n searchPlaceholder: z.string().default('Buscar...').optional(),\r\n context: z.any().optional(),\r\n});\r\n\r\nexport type TableResource = z.infer<typeof TableResourceSchema>;\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n signal,\r\n computed,\r\n ViewContainerRef,\r\n ViewChild,\r\n EnvironmentInjector,\r\n createComponent,\r\n effect,\r\n ChangeDetectionStrategy,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { DocViewerResource, ComponentVariant, DocTab } from './doc-viewer.resources';\r\n\r\n@Component({\r\n selector: 'ad-doc-viewer',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './doc-viewer.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AdDocViewerComponent implements AfterViewInit {\r\n // Inputs\r\n resource = input.required<DocViewerResource>();\r\n showCode = input<boolean>(true);\r\n showApi = input<boolean>(true);\r\n\r\n id = computed(() => this.resource().id);\r\n name = computed(() => this.resource().name);\r\n category = computed(() => this.resource().category);\r\n description = computed(() => this.resource().description);\r\n selector = computed(() => this.resource().selector);\r\n codeSnippet = computed(() => this.resource().codeSnippet);\r\n api = computed(() => this.resource().api);\r\n variants = computed(() => this.resource().variants);\r\n\r\n // Outputs\r\n tabChange = output<DocTab>();\r\n\r\n // Estado interno\r\n activeTab = signal<DocTab>('preview');\r\n activeVariant = signal<string>('');\r\n copied = signal<boolean>(false);\r\n viewReady = signal<boolean>(false);\r\n\r\n // Tabs disponibles\r\n readonly tabs = computed(() => [\r\n { id: 'preview' as DocTab, label: 'Preview' },\r\n ...(this.showApi() ? [{ id: 'api' as DocTab, label: 'API' }] : []),\r\n ...(this.showCode() ? [{ id: 'code' as DocTab, label: 'Código' }] : []),\r\n ]);\r\n\r\n @ViewChild('previewHost', { read: ViewContainerRef })\r\n previewHost!: ViewContainerRef;\r\n\r\n constructor(private readonly injector: EnvironmentInjector) {\r\n effect(() => {\r\n const res = this.resource();\r\n const tab = this.activeTab();\r\n // viewReady se activará en ngAfterViewInit\r\n if (this.viewReady() && tab === 'preview') {\r\n this.renderPreview(res);\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.viewReady.set(true);\r\n if (this.activeTab() === 'preview') {\r\n this.renderPreview(this.resource());\r\n }\r\n }\r\n\r\n setTab(tab: DocTab): void {\r\n this.activeTab.set(tab);\r\n this.tabChange.emit(tab);\r\n if (tab === 'preview') {\r\n // Pequeño delay para que el ViewChild esté disponible tras el @if\r\n setTimeout(() => this.renderPreview(this.resource()), 0);\r\n }\r\n }\r\n\r\n setVariant(variant: ComponentVariant): void {\r\n this.activeVariant.set(variant.label);\r\n this.renderPreview(this.resource(), variant.resource);\r\n }\r\n\r\n copyCode(): void {\r\n navigator.clipboard.writeText(this.resource().codeSnippet).then(() => {\r\n this.copied.set(true);\r\n setTimeout(() => this.copied.set(false), 2000);\r\n });\r\n }\r\n\r\n private renderPreview(\r\n res: DocViewerResource,\r\n overrideResource?: Record<string, unknown>\r\n ): void {\r\n if (!this.previewHost) return;\r\n this.previewHost.clear();\r\n try {\r\n const ref = createComponent(res.component as Parameters<typeof createComponent>[0], {\r\n environmentInjector: this.injector,\r\n elementInjector: this.previewHost.injector,\r\n });\r\n const inputs = overrideResource ?? res.previewResource ?? {};\r\n Object.entries(inputs).forEach(([key, val]) => {\r\n try { ref.setInput(key, val); } catch { /* input no encontrado, se ignora */ }\r\n });\r\n this.previewHost.insert(ref.hostView);\r\n } catch (e) {\r\n console.warn('[ad-doc-viewer] No se pudo renderizar el preview:', e);\r\n }\r\n }\r\n}\r\n","<section class=\"flex flex-col gap-6 p-6 bg-white rounded-2xl border border-stone-200 shadow-sm\">\r\n\r\n <!-- Header del componente -->\r\n <div class=\"flex items-start justify-between\">\r\n <div class=\"flex flex-col gap-1\">\r\n <div class=\"flex items-center gap-2 flex-wrap\">\r\n <span\r\n class=\"text-xs font-semibold px-2 py-0.5 rounded-full bg-sky-100 text-sky-700 uppercase tracking-wide\">\r\n {{ category() }}\r\n </span>\r\n <code class=\"text-xs px-2 py-0.5 rounded-md bg-stone-100 text-stone-600 font-mono\">\r\n {{ selector() }}\r\n </code>\r\n </div>\r\n <h2 class=\"text-xl font-bold text-stone-900 mt-1\">{{ name() }}</h2>\r\n <p class=\"text-sm text-stone-500 max-w-xl\">{{ description() }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Tabs de navegación -->\r\n <div class=\"flex gap-1 border-b border-stone-200\">\r\n @for (tab of tabs(); track tab.id) {\r\n <button\r\n class=\"px-4 py-2 text-sm font-medium transition-colors rounded-t-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-sky-500\"\r\n [class]=\"activeTab() === tab.id\r\n ? 'text-sky-600 border-b-2 border-sky-600 -mb-px bg-sky-50'\r\n : 'text-stone-500 hover:text-stone-700 hover:bg-stone-50'\" (click)=\"setTab(tab.id)\"\r\n [attr.aria-selected]=\"activeTab() === tab.id\" role=\"tab\">\r\n {{ tab.label }}\r\n </button>\r\n }\r\n </div>\r\n\r\n <!-- Panel: Preview -->\r\n @if (activeTab() === 'preview') {\r\n <div class=\"flex flex-col gap-4\">\r\n <!-- Canvas con fondo ajedrezado -->\r\n <div class=\"flex items-center justify-center min-h-40 rounded-xl border border-dashed border-stone-300\r\n p-8 overflow-auto\"\r\n style=\"background-image: linear-gradient(45deg, #f5f5f4 25%, transparent 25%, transparent 75%, #f5f5f4 75%, #f5f5f4), linear-gradient(45deg, #f5f5f4 25%, transparent 25%, transparent 75%, #f5f5f4 75%, #f5f5f4); background-size: 16px 16px; background-position: 0 0, 8px 8px;\">\r\n <ng-container #previewHost></ng-container>\r\n </div>\r\n\r\n <!-- Variantes -->\r\n @if (variants()?.length) {\r\n <div class=\"flex flex-wrap gap-2\">\r\n <span\r\n class=\"text-xs font-semibold text-stone-400 uppercase tracking-wider self-center mr-1\">Variante:</span>\r\n @for (variant of variants()!; track variant.label) {\r\n <button\r\n class=\"px-3 py-1.5 text-xs font-medium rounded-lg border transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-sky-500\"\r\n [class]=\"activeVariant() === variant.label\r\n ? 'bg-sky-600 border-sky-600 text-white shadow-sm'\r\n : 'border-stone-300 text-stone-600 hover:border-sky-400 hover:text-sky-600 bg-white'\"\r\n (click)=\"setVariant(variant)\">\r\n {{ variant.label }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Panel: API -->\r\n @if (activeTab() === 'api' && showApi()) {\r\n <div class=\"flex flex-col gap-6\">\r\n\r\n <!-- Inputs -->\r\n @if (api().inputs.length) {\r\n <div class=\"flex flex-col gap-2\">\r\n <h3 class=\"text-xs font-semibold text-stone-500 uppercase tracking-widest\">Inputs</h3>\r\n <div class=\"overflow-hidden rounded-xl border border-stone-200\">\r\n <table class=\"w-full text-sm\">\r\n <thead class=\"bg-stone-50 text-stone-500 text-left\">\r\n <tr>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Nombre</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Tipo</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Requerido</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Default</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Descripción</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (inp of api().inputs; track inp.name) {\r\n <tr class=\"border-t border-stone-100 hover:bg-stone-50 transition-colors\">\r\n <td class=\"px-4 py-3\">\r\n <code class=\"text-sky-600 font-mono text-xs\">{{ inp.name }}</code>\r\n </td>\r\n <td class=\"px-4 py-3\">\r\n <code class=\"text-emerald-600 font-mono text-xs\">{{ inp.type }}</code>\r\n </td>\r\n <td class=\"px-4 py-3\">\r\n @if (inp.required) {\r\n <span\r\n class=\"text-xs px-1.5 py-0.5 rounded-full bg-rose-100 text-rose-600 font-medium\">Sí</span>\r\n } @else {\r\n <span class=\"text-xs px-1.5 py-0.5 rounded-full bg-stone-100 text-stone-500\">No</span>\r\n }\r\n </td>\r\n <td class=\"px-4 py-3 text-stone-400 font-mono text-xs\">{{ inp.defaultValue || '—' }}</td>\r\n <td class=\"px-4 py-3 text-stone-600 text-xs\">{{ inp.description }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Outputs -->\r\n @if (api().outputs.length) {\r\n <div class=\"flex flex-col gap-2\">\r\n <h3 class=\"text-xs font-semibold text-stone-500 uppercase tracking-widest\">Outputs</h3>\r\n <div class=\"overflow-hidden rounded-xl border border-stone-200\">\r\n <table class=\"w-full text-sm\">\r\n <thead class=\"bg-stone-50 text-stone-500 text-left\">\r\n <tr>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Nombre</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Tipo de Evento</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Descripción</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (out of api().outputs; track out.name) {\r\n <tr class=\"border-t border-stone-100 hover:bg-stone-50 transition-colors\">\r\n <td class=\"px-4 py-3\">\r\n <code class=\"text-amber-600 font-mono text-xs\">({{ out.name }})</code>\r\n </td>\r\n <td class=\"px-4 py-3\">\r\n <code class=\"text-emerald-600 font-mono text-xs\">{{ out.eventType }}</code>\r\n </td>\r\n <td class=\"px-4 py-3 text-stone-600 text-xs\">{{ out.description }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!api().inputs.length && !api().outputs.length) {\r\n <p class=\"text-sm text-stone-400 italic\">No hay API documentada para este componente.</p>\r\n }\r\n\r\n </div>\r\n }\r\n\r\n <!-- Panel: Código -->\r\n @if (activeTab() === 'code' && showCode()) {\r\n <div class=\"relative rounded-xl overflow-hidden border border-stone-200\">\r\n <!-- Toolbar del bloque de código -->\r\n <div class=\"flex items-center justify-between px-4 py-2.5 bg-stone-800\">\r\n <span class=\"text-xs text-stone-400 font-mono uppercase tracking-wider\">HTML</span>\r\n <button\r\n class=\"text-xs flex items-center gap-1.5 transition-colors px-2 py-1 rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-sky-500\"\r\n [class]=\"copied() ? 'text-emerald-400 font-medium' : 'text-stone-400 hover:text-white'\"\r\n (click)=\"copyCode()\">\r\n @if (copied()) {\r\n <span>✓ Copiado</span>\r\n } @else {\r\n <span>Copiar</span>\r\n }\r\n </button>\r\n </div>\r\n <!-- Bloque de código -->\r\n <pre\r\n class=\"bg-stone-900 p-5 overflow-x-auto text-sm font-mono text-stone-200 leading-relaxed whitespace-pre m-0\">{{ codeSnippet() }}</pre>\r\n </div>\r\n }\r\n\r\n</section>","import { Type } from '@angular/core';\r\nimport { z } from 'zod';\r\n\r\nexport const ComponentApiInputSchema = z.object({\r\n name: z.string(),\r\n type: z.string(),\r\n required: z.boolean(),\r\n defaultValue: z.string(),\r\n description: z.string(),\r\n});\r\n\r\nexport const ComponentApiOutputSchema = z.object({\r\n name: z.string(),\r\n eventType: z.string(),\r\n description: z.string(),\r\n});\r\n\r\nexport const ComponentVariantSchema = z.object({\r\n label: z.string(),\r\n resource: z.record(z.string(), z.unknown()),\r\n});\r\n\r\nexport const DocViewerResourceSchema = z.object({\r\n /** Metadatos de identificación */\r\n id: z.string(),\r\n name: z.string(),\r\n category: z.enum(['atom', 'molecule', 'organism', 'template']),\r\n description: z.string(),\r\n\r\n /** Selector Angular del componente */\r\n selector: z.string(),\r\n\r\n /** Referencia al componente Angular para preview dinámico */\r\n component: z.custom<Type<unknown>>(),\r\n\r\n /** Ejemplo de código de integración (string) */\r\n codeSnippet: z.string(),\r\n\r\n /** API del componente */\r\n api: z.object({\r\n inputs: z.array(ComponentApiInputSchema),\r\n outputs: z.array(ComponentApiOutputSchema),\r\n }),\r\n\r\n /** Recurso de ejemplo pre-configurado para el preview (inputs individuales) */\r\n previewResource: z.record(z.string(), z.unknown()).optional(),\r\n\r\n /** Variantes (states) a mostrar en el preview */\r\n variants: z.array(ComponentVariantSchema).optional(),\r\n});\r\n\r\nexport type ComponentApiInput = z.infer<typeof ComponentApiInputSchema>;\r\nexport type ComponentApiOutput = z.infer<typeof ComponentApiOutputSchema>;\r\nexport type ComponentVariant = z.infer<typeof ComponentVariantSchema>;\r\nexport type DocViewerResource = z.infer<typeof DocViewerResourceSchema>;\r\n\r\nexport type DocTab = 'preview' | 'api' | 'code';\r\n","import { Component, input, output, signal, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { AdSidebarComponent } from '../../organisms/sidebar/sidebar.component';\r\nimport { AdCardComponent } from '../../../public-api';\r\nimport { AdHeaderComponent } from '../../organisms/header/header.component';\r\nimport { SidebarResource } from '../../organisms/sidebar/sidebar.resources';\r\nimport { AdminLayoutResource } from './admin-layout.resources';\r\n\r\n@Component({\r\n selector: 'ad-admin-layout',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterLink,\r\n RouterLinkActive,\r\n AdSidebarComponent,\r\n AdCardComponent,\r\n AdHeaderComponent\r\n ],\r\n templateUrl: './admin-layout.component.html',\r\n styleUrls: ['./admin-layout.component.scss']\r\n})\r\nexport class AdAdminLayoutComponent {\r\n // Inputs as Signals\r\n resource = input.required<AdminLayoutResource>();\r\n\r\n user = computed(() => this.resource().user);\r\n menuItems = computed(() => this.resource().menuItems);\r\n notificationsCount = computed(() => this.resource().notificationsCount ?? 0);\r\n\r\n // Derived Resources\r\n headerResource = computed(() => ({\r\n user: this.user(),\r\n notificationsCount: this.notificationsCount()\r\n }));\r\n\r\n sidebarResource = computed<SidebarResource>(() => ({\r\n menuItems: this.menuItems(),\r\n collapsed: this.isSidebarCollapsed()\r\n }));\r\n\r\n // Outputs\r\n logout = output<void>();\r\n navigateProfile = output<void>();\r\n toggleTheme = output<boolean>();\r\n\r\n // State Signals\r\n isMobileMenuOpen = signal(false);\r\n isSidebarCollapsed = signal(false);\r\n\r\n toggleMobileMenu() {\r\n this.isMobileMenuOpen.update(v => !v);\r\n }\r\n\r\n closeMobileMenu() {\r\n this.isMobileMenuOpen.set(false);\r\n }\r\n\r\n toggleSidebar() {\r\n this.isSidebarCollapsed.update(v => !v);\r\n }\r\n}\r\n","<div class=\"flex h-screen bg-[#F4F7FE] font-sans overflow-hidden transition-colors duration-300\">\r\n <!-- Sidebar -->\r\n <ad-sidebar class=\"hidden md:flex h-full z-30\" [resource]=\"sidebarResource()\" (toggleCollapse)=\"toggleSidebar()\">\r\n </ad-sidebar>\r\n\r\n <!-- Main Content Wrapper -->\r\n <div class=\"flex-1 flex flex-col relative overflow-hidden\">\r\n\r\n <!-- HEADER JOINING SIDEBAR AND CONTENT -->\r\n <ad-header [resource]=\"headerResource()\" (toggleSidebar)=\"toggleSidebar()\"\r\n (toggleMobileMenu)=\"toggleMobileMenu()\" (logout)=\"logout.emit()\" (navigateProfile)=\"navigateProfile.emit()\"\r\n (toggleTheme)=\"toggleTheme.emit($event)\">\r\n </ad-header>\r\n\r\n <!-- DASHBOARD CONTENT AREA / WRAPPER -->\r\n <main class=\"flex-1 overflow-y-auto p-6 md:p-10 bg-gradient-to-b from-white/50 to-transparent scroll-smooth\">\r\n <!-- The routed content will be projected here. \r\n The user's snippet had specific dashboard stats here.\r\n We provide the container, and the Router Outlet content (e.g. DashboardComponent) \r\n should implement the Grid/Cards.\r\n However, to match the \"Card on Canvas\" look for general pages, we can wrap the router outlet.\r\n -->\r\n <div class=\"max-w-7xl mx-auto h-full animate-fade-in-up\">\r\n <ad-card [resource]=\"{ title: '' }\">\r\n <ng-content></ng-content>\r\n </ad-card>\r\n </div>\r\n </main>\r\n\r\n <!-- Mobile Sidebar Overlay -->\r\n @if (isMobileMenuOpen()) {\r\n <div class=\"relative z-50 md:hidden\" role=\"dialog\" aria-modal=\"true\">\r\n <div class=\"fixed inset-0 bg-slate-900/80 transition-opacity backdrop-blur-sm\" (click)=\"closeMobileMenu()\">\r\n </div>\r\n <div class=\"fixed inset-0 flex\">\r\n <div\r\n class=\"relative flex w-full max-w-xs flex-1 flex-col bg-[#002B5B] pb-4 pt-5 transition-transform shadow-2xl\">\r\n <div class=\"flex items-center justify-between px-4 pb-4 border-b border-white/10\">\r\n <div class=\"flex items-center text-white\">\r\n <span class=\"text-xl font-bold tracking-tight\">Cerca</span>\r\n <span\r\n class=\"ml-2 text-[10px] font-bold bg-white/10 px-1.5 py-0.5 rounded tracking-widest text-slate-300 border border-white/10\">ADMIN</span>\r\n </div>\r\n <button (click)=\"closeMobileMenu()\" class=\"text-slate-400 hover:text-white\">\r\n <span class=\"material-icons-outlined\">close</span>\r\n </button>\r\n </div>\r\n <nav class=\"flex-1 overflow-y-auto px-4 py-6 space-y-2\">\r\n @for (item of menuItems(); track item.route) {\r\n <a [routerLink]=\"item.route\" (click)=\"closeMobileMenu()\"\r\n [routerLinkActive]=\"['bg-[#0081C9]', 'text-white', 'shadow-lg']\"\r\n [routerLinkActiveOptions]=\"{ exact: item.exact || false }\"\r\n class=\"group flex items-center px-4 py-3 text-sm font-medium text-slate-300 rounded-xl hover:bg-white/5 hover:text-white transition-all duration-200\">\r\n <span class=\"material-icons-outlined text-[20px] mr-3 transition-colors\"\r\n [class.text-white]=\"false\" [class.group-hover:text-blue-300]=\"true\">\r\n {{ item.icon }}\r\n </span>\r\n {{ item.label }}\r\n </a>\r\n }\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { z } from 'zod';\r\nimport { UserSchema } from '../../organisms/header/header.resources';\r\nimport { NavItemSchema } from '../../organisms/sidebar/sidebar.resources';\r\n\r\nexport const AdminLayoutResourceSchema = z.object({\r\n user: UserSchema,\r\n menuItems: z.array(NavItemSchema),\r\n notificationsCount: z.number().default(0).optional(),\r\n});\r\n\r\nexport type AdminLayoutResource = z.infer<typeof AdminLayoutResourceSchema>;\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AuthLayoutResource } from './auth-layout.resources';\r\n\r\n@Component({\r\n selector: 'ad-auth-layout',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './auth-layout.component.html',\r\n styleUrls: ['./auth-layout.component.scss']\r\n})\r\nexport class AdAuthLayoutComponent {\r\n resource = input.required<AuthLayoutResource>();\r\n backgroundType = computed(() => this.resource().backgroundType ?? 'gradient');\r\n}\r\n","<div class=\"ad-auth-layout\" [ngClass]=\"'bg-' + backgroundType()\">\r\n <div class=\"ad-auth-container\">\r\n <div class=\"ad-auth-card\">\r\n <div class=\"ad-auth-logo\">\r\n <!-- Espacio para logo -->\r\n <div class=\"ad-auth-logo-placeholder\">CERCA</div>\r\n </div>\r\n\r\n <div class=\"ad-auth-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const AuthLayoutResourceSchema = z.object({\r\n backgroundType: z.enum(['gradient', 'image', 'simple']).default('gradient').optional(),\r\n});\r\n\r\nexport type AuthLayoutResource = z.infer<typeof AuthLayoutResourceSchema>;\r\n","import { Component, Input, HostBinding } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-grid',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './grid.component.html',\r\n styleUrls: ['./grid.component.scss']\r\n})\r\nexport class AdGridComponent {\r\n @Input() cols: number = 1;\r\n @Input() colsMd?: number;\r\n @Input() colsLg?: number;\r\n @Input() gap: number = 4;\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return [\r\n `ad-grid-cols-${this.cols}`,\r\n this.colsMd ? `ad-grid-cols-md-${this.colsMd}` : '',\r\n this.colsLg ? `ad-grid-cols-lg-${this.colsLg}` : '',\r\n `ad-grid-gap-${this.gap}`\r\n ].filter(Boolean).join(' ');\r\n }\r\n}\r\n","<div class=\"ad-grid\">\r\n <ng-content></ng-content>\r\n</div>","import { Component, input, HostBinding, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-stack',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './stack.component.html',\r\n styleUrls: ['./stack.component.scss']\r\n})\r\nexport class AdStackComponent {\r\n gap = input<number | string>(4);\r\n align = input<'start' | 'center' | 'end' | 'stretch'>('stretch');\r\n justify = input<'start' | 'center' | 'end' | 'between'>('start');\r\n\r\n @HostBinding('style.gap')\r\n get gapStyle(): string {\r\n const g = this.gap();\r\n return typeof g === 'number' ? `var(--space-${g})` : g;\r\n }\r\n\r\n @HostBinding('style.align-items')\r\n get alignStyle(): string {\r\n const map = { start: 'flex-start', center: 'center', end: 'flex-end', stretch: 'stretch' };\r\n return map[this.align()];\r\n }\r\n\r\n @HostBinding('style.justify-content')\r\n get justifyStyle(): string {\r\n const map = { start: 'flex-start', center: 'center', end: 'flex-end', between: 'space-between' };\r\n const j = this.justify();\r\n if (j === 'between') return 'space-between';\r\n return (map as any)[j] || 'flex-start';\r\n }\r\n}\r\n","<ng-content></ng-content>","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdGridComponent } from '../../layout/grid/grid.component';\r\nimport { AdStackComponent } from '../../layout/stack/stack.component';\r\nimport { DashboardTemplateResource } from './dashboard-template.resources';\r\n\r\n@Component({\r\n selector: 'ad-dashboard-template',\r\n standalone: true,\r\n imports: [CommonModule, AdGridComponent, AdStackComponent],\r\n templateUrl: './dashboard-template.component.html',\r\n styleUrls: ['./dashboard-template.component.scss']\r\n})\r\nexport class AdDashboardTemplateComponent {\r\n resource = input.required<DashboardTemplateResource>();\r\n title = computed(() => this.resource().title ?? 'Escritorio');\r\n subtitle = computed(() => this.resource().subtitle);\r\n}\r\n","<div class=\"ad-dashboard-template\">\r\n <header class=\"ad-dashboard-header\">\r\n <ad-stack [gap]=\"1\">\r\n <h1 class=\"ad-dashboard-title\">{{ title() }}</h1>\r\n @if (subtitle()) {\r\n <p class=\"ad-dashboard-subtitle\">{{ subtitle() }}</p>\r\n }\r\n </ad-stack>\r\n <div class=\"ad-dashboard-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n <ad-grid [cols]=\"1\" [colsMd]=\"2\" [colsLg]=\"4\" [gap]=\"6\" class=\"ad-dashboard-metrics\">\r\n <ng-content select=\"[metrics]\"></ng-content>\r\n </ad-grid>\r\n\r\n <ad-grid [cols]=\"1\" [colsLg]=\"3\" [gap]=\"6\" class=\"ad-dashboard-main\">\r\n <div class=\"ad-dashboard-primary-content\">\r\n <ng-content select=\"[main-content]\"></ng-content>\r\n </div>\r\n <aside class=\"ad-dashboard-secondary-content\">\r\n <ng-content select=\"[sidebar-content]\"></ng-content>\r\n </aside>\r\n </ad-grid>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const DashboardTemplateResourceSchema = z.object({\r\n title: z.string().default('Escritorio').optional(),\r\n subtitle: z.string().optional(),\r\n});\r\n\r\nexport type DashboardTemplateResource = z.infer<typeof DashboardTemplateResourceSchema>;\r\n","import { Component, input, signal, ViewEncapsulation, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DocumentationWrapperResource } from './documentation-wrapper.resources';\r\n\r\n@Component({\r\n selector: 'ad-documentation-wrapper',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n <div class=\"space-y-6\">\r\n <!-- Header -->\r\n <div class=\"flex items-center justify-between border-b-2 border-stone-100 dark:border-cerca-primary-hover pb-2\">\r\n <h2 class=\"text-2xl font-bold text-stone-800 dark:text-white\">{{ title() }}</h2>\r\n @if (status() === 'new') {\r\n <span class=\"bg-emerald-100 text-emerald-800 text-xs font-medium px-2.5 py-0.5 rounded dark:bg-emerald-900 dark:text-emerald-300\">New</span>\r\n } @else if (status() === 'updated') {\r\n <span class=\"bg-sky-100 text-sky-800 text-xs font-medium px-2.5 py-0.5 rounded dark:bg-sky-900 dark:text-sky-300\">Updated</span>\r\n }\r\n </div>\r\n\r\n <!-- Description -->\r\n <div class=\"p-4 bg-yellow-50 border-l-4 border-yellow-400 text-stone-700 dark:bg-yellow-900/10 dark:text-yellow-100 dark:border-yellow-600\">\r\n <p>{{ description() }}</p>\r\n </div>\r\n\r\n <!-- Tabs -->\r\n <div class=\"border-b border-stone-200 dark:border-cerca-primary\">\r\n <nav class=\"-mb-px flex space-x-8\" aria-label=\"Tabs\">\r\n <button \r\n (click)=\"activeTab.set('preview')\"\r\n [class.border-sky-500]=\"activeTab() === 'preview'\"\r\n [class.text-sky-600]=\"activeTab() === 'preview'\"\r\n [class.dark:text-sky-400]=\"activeTab() === 'preview'\"\r\n [class.border-transparent]=\"activeTab() !== 'preview'\"\r\n [class.text-stone-500]=\"activeTab() !== 'preview'\"\r\n [class.hover:text-stone-700]=\"activeTab() !== 'preview'\"\r\n [class.hover:border-stone-300]=\"activeTab() !== 'preview'\"\r\n class=\"whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm transition-colors duration-200\">\r\n Preview\r\n </button>\r\n\r\n @if (code()) {\r\n <button \r\n (click)=\"activeTab.set('code')\"\r\n [class.border-sky-500]=\"activeTab() === 'code'\"\r\n [class.text-sky-600]=\"activeTab() === 'code'\"\r\n [class.dark:text-sky-400]=\"activeTab() === 'code'\"\r\n [class.border-transparent]=\"activeTab() !== 'code'\"\r\n [class.text-stone-500]=\"activeTab() !== 'code'\"\r\n [class.hover:text-stone-700]=\"activeTab() !== 'code'\"\r\n [class.hover:border-stone-300]=\"activeTab() !== 'code'\"\r\n class=\"whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm transition-colors duration-200\">\r\n Code\r\n </button>\r\n }\r\n\r\n @if (componentResource()) {\r\n <button \r\n (click)=\"activeTab.set('resource')\"\r\n [class.border-sky-500]=\"activeTab() === 'resource'\"\r\n [class.text-sky-600]=\"activeTab() === 'resource'\"\r\n [class.dark:text-sky-400]=\"activeTab() === 'resource'\"\r\n [class.border-transparent]=\"activeTab() !== 'resource'\"\r\n [class.text-stone-500]=\"activeTab() !== 'resource'\"\r\n [class.hover:text-stone-700]=\"activeTab() !== 'resource'\"\r\n [class.hover:border-stone-300]=\"activeTab() !== 'resource'\"\r\n class=\"whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm transition-colors duration-200\">\r\n Resource\r\n </button>\r\n }\r\n </nav>\r\n </div>\r\n\r\n <!-- Tab Content -->\r\n <div class=\"mt-4\">\r\n @switch (activeTab()) {\r\n @case ('preview') {\r\n <div class=\"p-6 bg-stone-50 rounded-lg border border-stone-200 dark:bg-cerca-primary-active dark:border-cerca-primary\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n @case ('code') {\r\n <div class=\"relative group\">\r\n <div class=\"absolute right-2 top-2 opacity-0 group-hover:opacity-100 transition-opacity\">\r\n <button (click)=\"copyToClipboard(code()!)\" class=\"p-1 rounded bg-stone-700 text-white hover:bg-stone-600 text-xs\">Copy</button>\r\n </div>\r\n <pre class=\"p-4 bg-stone-900 text-stone-50 rounded-lg overflow-x-auto text-sm font-mono leading-relaxed\"><code>{{ code() }}</code></pre>\r\n </div>\r\n }\r\n @case ('resource') {\r\n <div class=\"relative group\">\r\n <div class=\"absolute right-2 top-2 opacity-0 group-hover:opacity-100 transition-opacity\">\r\n <button (click)=\"copyToClipboard(componentResource()!)\" class=\"p-1 rounded bg-stone-700 text-white hover:bg-stone-600 text-xs\">Copy</button>\r\n </div>\r\n <pre class=\"p-4 bg-stone-900 text-stone-50 rounded-lg overflow-x-auto text-sm font-mono leading-relaxed\"><code>{{ componentResource() }}</code></pre>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AdDocumentationWrapperComponent {\r\n wrapperResource = input.required<DocumentationWrapperResource>({ alias: 'resource' });\r\n\r\n title = computed(() => this.wrapperResource().title);\r\n description = computed(() => this.wrapperResource().description);\r\n code = computed(() => this.wrapperResource().code);\r\n componentResource = computed(() => this.wrapperResource().componentResource);\r\n status = computed(() => this.wrapperResource().status ?? 'stable');\r\n\r\n activeTab = signal<'preview' | 'code' | 'resource'>('preview');\r\n\r\n copyToClipboard(text: string) {\r\n navigator.clipboard.writeText(text);\r\n // Could add toast notification here\r\n }\r\n}\r\n","import { z } from 'zod';\r\n\r\nexport const DocStatusSchema = z.enum(['new', 'updated', 'stable']);\r\nexport type DocStatus = z.infer<typeof DocStatusSchema>;\r\n\r\nexport const DocumentationWrapperResourceSchema = z.object({\r\n title: z.string(),\r\n description: z.string(),\r\n code: z.string().optional(),\r\n componentResource: z.string().optional(),\r\n status: z.enum(['new', 'updated', 'stable']).default('stable').optional(),\r\n});\r\n\r\nexport type DocumentationWrapperResource = z.infer<typeof DocumentationWrapperResourceSchema>;\r\n","import { Component, input, ViewEncapsulation, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormLayoutResource } from './form-layout.resources';\r\n\r\n@Component({\r\n selector: 'ad-form-layout',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n <form class=\"grid grid-cols-1 md:grid-cols-12 gap-6 items-start\">\r\n <ng-content></ng-content>\r\n\r\n <!-- Footer Actions -->\r\n <div class=\"md:col-span-12 mt-6 flex justify-end gap-3 border-t border-stone-200 dark:border-cerca-primary pt-6\">\r\n <ng-content select=\"[footer-actions]\"></ng-content>\r\n </div>\r\n </form>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AdFormLayoutComponent {\r\n resource = input.required<FormLayoutResource>();\r\n gap = computed(() => this.resource().gap ?? 'md');\r\n}\r\n","import { z } from 'zod';\r\n\r\nexport const FormLayoutResourceSchema = z.object({\r\n gap: z.enum(['sm', 'md', 'lg']).default('md').optional(),\r\n});\r\n\r\nexport type FormLayoutResource = z.infer<typeof FormLayoutResourceSchema>;\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdStackComponent } from '../../layout/stack/stack.component';\r\nimport { FormPageTemplateResource } from './form-page-template.resources';\r\n\r\n@Component({\r\n selector: 'ad-form-page-template',\r\n standalone: true,\r\n imports: [CommonModule, AdStackComponent],\r\n templateUrl: './form-page-template.component.html',\r\n styleUrls: ['./form-page-template.component.scss']\r\n})\r\nexport class AdFormPageTemplateComponent {\r\n resource = input.required<FormPageTemplateResource>();\r\n title = computed(() => this.resource().title ?? '');\r\n backUrl = computed(() => this.resource().backUrl);\r\n loading = computed(() => this.resource().loading ?? false);\r\n}\r\n","<div class=\"ad-form-page\">\r\n <header class=\"ad-form-page-header\">\r\n <ad-stack [gap]=\"1\">\r\n <div class=\"ad-form-page-nav\">\r\n <ng-content select=\"[back-button]\"></ng-content>\r\n </div>\r\n <h1 class=\"ad-form-page-title\">{{ title() }}</h1>\r\n </ad-stack>\r\n <div class=\"ad-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=\"ad-form-page-main\">\r\n <div class=\"ad-form-page-card\">\r\n <ng-content select=\"[form-content]\"></ng-content>\r\n </div>\r\n </main>\r\n\r\n <footer class=\"ad-form-page-footer\">\r\n <ng-content select=\"[form-actions]\"></ng-content>\r\n </footer>\r\n\r\n @if (loading()) {\r\n <div class=\"ad-form-page-loading-overlay\">\r\n <div class=\"ad-form-page-spinner\"></div>\r\n </div>\r\n }\r\n</div>","import { z } from 'zod';\r\n\r\nexport const FormPageTemplateResourceSchema = z.object({\r\n title: z.string().default(''),\r\n backUrl: z.string().optional(),\r\n loading: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type FormPageTemplateResource = z.infer<typeof FormPageTemplateResourceSchema>;\r\n","import { z } from 'zod';\r\n\r\nexport const FormSectionResourceSchema = z.object({\r\n title: z.string().optional(),\r\n cols: z.number().default(12).optional(),\r\n loading: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type FormSectionResource = z.infer<typeof FormSectionResourceSchema>;\r\n","import { Component, input, ContentChild, TemplateRef, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdStackComponent } from '../../layout/stack/stack.component';\r\nimport { ListPageTemplateResource } from './list-page-template.resources';\r\n\r\n@Component({\r\n selector: 'ad-list-page-template',\r\n standalone: true,\r\n imports: [CommonModule, AdStackComponent],\r\n templateUrl: './list-page-template.component.html',\r\n styleUrls: ['./list-page-template.component.scss']\r\n})\r\nexport class AdListPageTemplateComponent {\r\n resource = input.required<ListPageTemplateResource>();\r\n title = computed(() => this.resource().title ?? '');\r\n description = computed(() => this.resource().description);\r\n hasFilters = computed(() => this.resource().hasFilters ?? true);\r\n\r\n @ContentChild('filters') filtersTemplate?: TemplateRef<any>;\r\n}\r\n","<div class=\"ad-list-page\">\r\n <header class=\"ad-page-header\">\r\n <ad-stack [gap]=\"1\">\r\n <h1 class=\"ad-page-title\">{{ title() }}</h1>\r\n @if (description()) {\r\n <p class=\"ad-page-description\">{{ description() }}</p>\r\n }\r\n </ad-stack>\r\n <div class=\"ad-page-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n @if (hasFilters()) {\r\n <section class=\"ad-page-filters\">\r\n <ng-content select=\"[filters]\"></ng-content>\r\n </section>\r\n }\r\n\r\n <main class=\"ad-page-main\">\r\n <ng-content select=\"[table]\"></ng-content>\r\n </main>\r\n\r\n <footer class=\"ad-page-footer\">\r\n <ng-content select=\"[pagination]\"></ng-content>\r\n </footer>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const ListPageTemplateResourceSchema = z.object({\r\n title: z.string().default(''),\r\n description: z.string().optional(),\r\n hasFilters: z.boolean().default(true).optional(),\r\n});\r\n\r\nexport type ListPageTemplateResource = z.infer<typeof ListPageTemplateResourceSchema>;\r\n","/*\r\n * Public API Surface of design-system\r\n */\r\n\r\nexport * from './lib/design-system';\r\nexport * from './lib/core';\r\nexport * from './lib/engines/form/form-engine.component';\r\nexport * from './lib/engines/form/form-engine.service';\r\nexport * from './lib/engines/table/table-engine.component';\r\n\r\n// Atoms\r\nexport * from './lib/atoms/button/button.component';\r\nexport * from './lib/atoms/input/input.component';\r\nexport * from './lib/atoms/select/select.component';\r\nexport * from './lib/atoms/badges/badge.component';\r\nexport * from './lib/atoms/icons/icon.component';\r\nexport * from './lib/atoms/labels/label.component';\r\nexport * from './lib/atoms/loading/loading.component';\r\nexport * from './lib/atoms/switch/switch.component';\r\n\r\n// Molecules\r\nexport * from './lib/molecules/admin-section-card/admin-section-card.component';\r\nexport * from './lib/molecules/admin-section-card/admin-section-card.resources';\r\nexport * from './lib/molecules/card/card.component';\r\nexport * from './lib/molecules/card/card.resources';\r\nexport * from './lib/molecules/description-header/description-header.component';\r\nexport * from './lib/molecules/description-header/description-header.resources';\r\nexport * from './lib/molecules/form-field/form-field.component';\r\nexport * from './lib/molecules/form-field/form-field.resources';\r\nexport * from './lib/molecules/modal-trigger/modal-trigger';\r\nexport * from './lib/molecules/modal-trigger/modal-trigger.resources';\r\nexport * from './lib/molecules/search-bar/search-bar.component';\r\nexport * from './lib/molecules/search-bar/search-bar.resources';\r\nexport * from './lib/molecules/stat-card/stat-card.component';\r\nexport * from './lib/molecules/stat-card/stat-card.resources';\r\n\r\n// Organisms\r\nexport * from './lib/organisms/data-table/data-table.component';\r\nexport * from './lib/organisms/data-table/data-table.resources';\r\nexport * from './lib/organisms/header/header.component';\r\nexport * from './lib/organisms/header/header.resources';\r\nexport * from './lib/organisms/login/login.component';\r\nexport * from './lib/organisms/login/login.component.resources';\r\nexport * from './lib/organisms/modal/modal.component';\r\nexport * from './lib/organisms/modal/modal.resources';\r\nexport * from './lib/organisms/sidebar/sidebar.component';\r\nexport * from './lib/organisms/sidebar/sidebar.resources';\r\nexport * from './lib/organisms/table/table.component';\r\nexport * from './lib/organisms/table/table.resources';\r\nexport * from './lib/organisms/doc-viewer/doc-viewer.component';\r\nexport * from './lib/organisms/doc-viewer/doc-viewer.resources';\r\n\r\n// Templates\r\nexport * from './lib/templates/admin-layout/admin-layout.component';\r\nexport * from './lib/templates/admin-layout/admin-layout.resources';\r\nexport * from './lib/templates/auth-layout/auth-layout.component';\r\nexport * from './lib/templates/auth-layout/auth-layout.resources';\r\nexport * from './lib/templates/dashboard-template/dashboard-template.component';\r\nexport * from './lib/templates/dashboard-template/dashboard-template.resources';\r\nexport * from './lib/templates/documentation-wrapper/documentation-wrapper.component';\r\nexport * from './lib/templates/documentation-wrapper/documentation-wrapper.resources';\r\nexport * from './lib/templates/form-layout/form-layout.component';\r\nexport * from './lib/templates/form-layout/form-layout.resources';\r\nexport * from './lib/templates/form-page-template/form-page-template.component';\r\nexport * from './lib/templates/form-page-template/form-page-template.resources';\r\nexport * from './lib/templates/form-section/form-section.component';\r\nexport * from './lib/templates/form-section/form-section.resources';\r\nexport * from './lib/templates/list-page-template/list-page-template.component';\r\nexport * from './lib/templates/list-page-template/list-page-template.resources';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","debounceTime","distinctUntilChanged"],"mappings":"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"}
1
+ {"version":3,"file":"cerca-design-system.mjs","sources":["../../../libs/design-system/src/lib/design-system.ts","../../../libs/design-system/src/lib/core/registries/field-renderer.registry.ts","../../../libs/design-system/src/lib/core/registries/validator.registry.ts","../../../libs/design-system/src/lib/atoms/icons/icon.component.ts","../../../libs/design-system/src/lib/atoms/icons/icon.component.html","../../../libs/design-system/src/lib/organisms/modal/modal.component.ts","../../../libs/design-system/src/lib/organisms/modal/modal.component.html","../../../libs/design-system/src/lib/engines/form/form-engine.service.ts","../../../libs/design-system/src/lib/atoms/input/input.component.ts","../../../libs/design-system/src/lib/atoms/input/input.component.html","../../../libs/design-system/src/lib/atoms/select/select.component.ts","../../../libs/design-system/src/lib/atoms/select/select.component.html","../../../libs/design-system/src/lib/atoms/switch/switch.component.ts","../../../libs/design-system/src/lib/atoms/switch/switch.component.html","../../../libs/design-system/src/lib/engines/form/dynamic-field.component.ts","../../../libs/design-system/src/lib/engines/form/dynamic-layout.component.ts","../../../libs/design-system/src/lib/atoms/loading/loading.component.ts","../../../libs/design-system/src/lib/atoms/loading/loading.component.html","../../../libs/design-system/src/lib/atoms/button/button.component.ts","../../../libs/design-system/src/lib/atoms/button/button.component.html","../../../libs/design-system/src/lib/templates/form-section/form-section.component.ts","../../../libs/design-system/src/lib/engines/form/form-renderer/form-renderer.component.ts","../../../libs/design-system/src/lib/engines/form/form-engine.component.ts","../../../libs/design-system/src/lib/core/services/modal.ts","../../../libs/design-system/src/lib/engines/table/table-engine.component.ts","../../../libs/design-system/src/lib/atoms/badges/badge.component.ts","../../../libs/design-system/src/lib/atoms/badges/badge.component.html","../../../libs/design-system/src/lib/atoms/labels/label.component.ts","../../../libs/design-system/src/lib/atoms/labels/label.component.html","../../../libs/design-system/src/lib/molecules/admin-section-card/admin-section-card.component.ts","../../../libs/design-system/src/lib/molecules/admin-section-card/admin-section-card.component.html","../../../libs/design-system/src/lib/molecules/admin-section-card/admin-section-card.resources.ts","../../../libs/design-system/src/lib/molecules/card/card.component.ts","../../../libs/design-system/src/lib/molecules/card/card.component.html","../../../libs/design-system/src/lib/molecules/card/card.resources.ts","../../../libs/design-system/src/lib/molecules/modal-trigger/modal-trigger.ts","../../../libs/design-system/src/lib/molecules/modal-trigger/modal-trigger.html","../../../libs/design-system/src/lib/molecules/description-header/description-header.component.ts","../../../libs/design-system/src/lib/molecules/description-header/description-header.component.html","../../../libs/design-system/src/lib/molecules/description-header/description-header.resources.ts","../../../libs/design-system/src/lib/molecules/form-field/form-field.component.ts","../../../libs/design-system/src/lib/molecules/form-field/form-field.component.html","../../../libs/design-system/src/lib/molecules/form-field/form-field.resources.ts","../../../libs/design-system/src/lib/molecules/modal-trigger/modal-trigger.resources.ts","../../../libs/design-system/src/lib/molecules/search-bar/search-bar.component.ts","../../../libs/design-system/src/lib/molecules/search-bar/search-bar.component.html","../../../libs/design-system/src/lib/molecules/search-bar/search-bar.resources.ts","../../../libs/design-system/src/lib/molecules/stat-card/stat-card.resources.ts","../../../libs/design-system/src/lib/molecules/stat-card/stat-card.component.ts","../../../libs/design-system/src/lib/molecules/stat-card/stat-card.component.html","../../../libs/design-system/src/lib/organisms/data-table/data-table.component.ts","../../../libs/design-system/src/lib/organisms/data-table/data-table.component.html","../../../libs/design-system/src/lib/organisms/data-table/data-table.resources.ts","../../../libs/design-system/src/lib/organisms/header/header.component.ts","../../../libs/design-system/src/lib/organisms/header/header.component.html","../../../libs/design-system/src/lib/organisms/header/header.resources.ts","../../../libs/design-system/src/lib/organisms/login/login.component.ts","../../../libs/design-system/src/lib/organisms/login/login.component.html","../../../libs/design-system/src/lib/organisms/login/login.component.resources.ts","../../../libs/design-system/src/lib/organisms/modal/modal.resources.ts","../../../libs/design-system/src/lib/organisms/sidebar/sidebar.component.ts","../../../libs/design-system/src/lib/organisms/sidebar/sidebar.component.html","../../../libs/design-system/src/lib/organisms/sidebar/sidebar.resources.ts","../../../libs/design-system/src/lib/organisms/table/table.component.ts","../../../libs/design-system/src/lib/organisms/table/table.component.html","../../../libs/design-system/src/lib/organisms/table/table.resources.ts","../../../libs/design-system/src/lib/organisms/doc-viewer/doc-viewer.component.ts","../../../libs/design-system/src/lib/organisms/doc-viewer/doc-viewer.component.html","../../../libs/design-system/src/lib/organisms/doc-viewer/doc-viewer.resources.ts","../../../libs/design-system/src/lib/templates/admin-layout/admin-layout.component.ts","../../../libs/design-system/src/lib/templates/admin-layout/admin-layout.component.html","../../../libs/design-system/src/lib/templates/admin-layout/admin-layout.resources.ts","../../../libs/design-system/src/lib/templates/auth-layout/auth-layout.component.ts","../../../libs/design-system/src/lib/templates/auth-layout/auth-layout.component.html","../../../libs/design-system/src/lib/templates/auth-layout/auth-layout.resources.ts","../../../libs/design-system/src/lib/layout/grid/grid.component.ts","../../../libs/design-system/src/lib/layout/grid/grid.component.html","../../../libs/design-system/src/lib/layout/stack/stack.component.ts","../../../libs/design-system/src/lib/layout/stack/stack.component.html","../../../libs/design-system/src/lib/templates/dashboard-template/dashboard-template.component.ts","../../../libs/design-system/src/lib/templates/dashboard-template/dashboard-template.component.html","../../../libs/design-system/src/lib/templates/dashboard-template/dashboard-template.resources.ts","../../../libs/design-system/src/lib/templates/documentation-wrapper/documentation-wrapper.component.ts","../../../libs/design-system/src/lib/templates/documentation-wrapper/documentation-wrapper.resources.ts","../../../libs/design-system/src/lib/templates/form-layout/form-layout.component.ts","../../../libs/design-system/src/lib/templates/form-layout/form-layout.resources.ts","../../../libs/design-system/src/lib/templates/form-page-template/form-page-template.component.ts","../../../libs/design-system/src/lib/templates/form-page-template/form-page-template.component.html","../../../libs/design-system/src/lib/templates/form-page-template/form-page-template.resources.ts","../../../libs/design-system/src/lib/templates/form-section/form-section.resources.ts","../../../libs/design-system/src/lib/templates/list-page-template/list-page-template.component.ts","../../../libs/design-system/src/lib/templates/list-page-template/list-page-template.component.html","../../../libs/design-system/src/lib/templates/list-page-template/list-page-template.resources.ts","../../../libs/design-system/src/public-api.ts","../../../libs/design-system/src/cerca-design-system.ts"],"sourcesContent":["import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ad-design-system',\r\n imports: [],\r\n template: `\r\n <p>\r\n design-system works!\r\n </p>\r\n `,\r\n styles: ``,\r\n})\r\nexport class DesignSystem {\r\n\r\n}\r\n","\r\nimport { Injectable, Type } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FieldRendererRegistry {\r\n private renderers = new Map<string, Type<any>>();\r\n\r\n register(key: string, component: Type<any>): void {\r\n if (this.renderers.has(key)) {\r\n console.warn(`Renderer for key '${key}' is already registered. Overwriting.`);\r\n }\r\n this.renderers.set(key, component);\r\n }\r\n\r\n get(key: string): Type<any> | undefined {\r\n return this.renderers.get(key);\r\n }\r\n\r\n has(key: string): boolean {\r\n return this.renderers.has(key);\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\nimport { ValidatorFn, Validators } from '@angular/forms';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ValidatorRegistry {\r\n private validators = new Map<string, (args?: any) => ValidatorFn>();\r\n\r\n constructor() {\r\n this.registerDefaults();\r\n }\r\n\r\n private registerDefaults() {\r\n this.register('required', () => Validators.required);\r\n this.register('email', () => Validators.email);\r\n this.register('min', (min: number) => Validators.min(min));\r\n this.register('max', (max: number) => Validators.max(max));\r\n this.register('minLength', (len: number) => Validators.minLength(len));\r\n this.register('maxLength', (len: number) => Validators.maxLength(len));\r\n this.register('pattern', (pattern: string | RegExp) => Validators.pattern(pattern));\r\n }\r\n\r\n register(key: string, factory: (args?: any) => ValidatorFn): void {\r\n this.validators.set(key, factory);\r\n }\r\n\r\n get(key: string, args?: any): ValidatorFn | null {\r\n const factory = this.validators.get(key);\r\n if (!factory) {\r\n console.warn(`Validator '${key}' not found.`);\r\n return null;\r\n }\r\n return factory(args);\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-icon',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './icon.component.html',\r\n styleUrls: ['./icon.component.scss']\r\n})\r\nexport class AdIconComponent {\r\n @Input() name: string = '';\r\n @Input() size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\r\n @Input() color: string = 'currentColor';\r\n\r\n get sizeClass(): string {\r\n switch (this.size) {\r\n case 'xs': return 'w-3 h-3 text-xs';\r\n case 'sm': return 'w-4 h-4 text-base';\r\n case 'md': return 'w-5 h-5 text-xl';\r\n case 'lg': return 'w-6 h-6 text-2xl';\r\n case 'xl': return 'w-8 h-8 text-3xl';\r\n default: return 'w-5 h-5 text-xl';\r\n }\r\n }\r\n}\r\n","@if (name === 'user') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z\" />\r\n</svg>\r\n} @else if (name === 'lock') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z\" />\r\n</svg>\r\n} @else if (name === 'eye') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z\" />\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\" />\r\n</svg>\r\n} @else if (name === 'plus') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 4.5v15m7.5-7.5h-15\" />\r\n</svg>\r\n} @else if (name === 'download') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3\" />\r\n</svg>\r\n} @else if (name === 'eye-invisible') {\r\n<svg [class]=\"sizeClass\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88\" />\r\n</svg>\r\n} @else {\r\n<!-- Fallback -->\r\n<span class=\"material-icons-outlined ad-icon\" [ngClass]=\"sizeClass\">{{ name }}</span>\r\n}","import { Component, input, output, HostListener, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { ModalResource } from './modal.resources';\r\n\r\n@Component({\r\n selector: 'ad-modal',\r\n standalone: true,\r\n imports: [CommonModule, AdIconComponent],\r\n templateUrl: './modal.component.html',\r\n styleUrls: ['./modal.component.scss']\r\n})\r\nexport class AdModalComponent {\r\n resource = input.required<ModalResource>();\r\n\r\n isOpen = computed(() => this.resource().isOpen ?? false);\r\n title = computed(() => this.resource().title ?? '');\r\n accentedTitle = computed(() => this.resource().accentedTitle);\r\n size = computed(() => this.resource().size ?? 'md');\r\n closeOnOverlay = computed(() => this.resource().closeOnOverlay ?? true);\r\n showFooter = computed(() => this.resource().showFooter ?? true);\r\n\r\n close = output<void>();\r\n\r\n onOverlayClick(event: MouseEvent) {\r\n if (this.closeOnOverlay() && (event.target as HTMLElement).classList.contains('ad-modal-overlay')) {\r\n this.close.emit();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onEscape() {\r\n if (this.isOpen()) {\r\n this.close.emit();\r\n }\r\n }\r\n}\r\n","@if (isOpen()){\r\n<div class=\"ad-modal-overlay\" (click)=\"onOverlayClick($event)\">\r\n\r\n <div class=\"ad-modal\" [ngClass]=\"'size-' + size()\" role=\"dialog\" aria-modal=\"true\">\r\n\r\n <header class=\"ad-modal-header\">\r\n <h3 class=\"ad-modal-title\">\r\n {{ title() }}\r\n @if (accentedTitle()) {\r\n <span class=\"accent-text\">{{ accentedTitle() }}</span>\r\n }\r\n </h3>\r\n <button class=\"ad-modal-close\" (click)=\"close.emit()\" type=\"button\">\r\n <ad-icon name=\"close\" size=\"md\"></ad-icon>\r\n </button>\r\n </header>\r\n\r\n <div class=\"ad-modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n @if (showFooter()){\r\n <footer class=\"ad-modal-footer\">\r\n <ng-content select=\"[footer]\"></ng-content>\r\n </footer>\r\n }\r\n </div>\r\n</div>\r\n}","\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { FormSchema, FieldSchema, LayoutSchema } from '../../core/models/form-schema.model';\r\nimport { ValidatorRegistry } from '../../core/registries/validator.registry';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormEngineService {\r\n private fb = inject(FormBuilder);\r\n private validatorRegistry = inject(ValidatorRegistry); // Assuming this exists or mocking behavior\r\n\r\n createFormGroup(schema: FormSchema, model: any = {}): FormGroup {\r\n const group: any = {};\r\n\r\n // Support Legacy Sections\r\n if (schema.sections) {\r\n schema.sections.forEach(section => {\r\n this.processFields(section.fields, group, model);\r\n });\r\n }\r\n\r\n // Support New Recursive Fields\r\n if (schema.fields) {\r\n this.processRecursiveFields(schema.fields, group, model);\r\n }\r\n\r\n return this.fb.group(group);\r\n }\r\n\r\n private processFields(fields: FieldSchema[], group: any, model: any) {\r\n fields.forEach(field => {\r\n this.addFieldToGroup(field, group, model);\r\n });\r\n }\r\n\r\n private processRecursiveFields(nodes: (FieldSchema | LayoutSchema)[], group: any, model: any) {\r\n nodes.forEach(node => {\r\n if ('children' in node && node.children) {\r\n this.processRecursiveFields(node.children, group, model);\r\n } else {\r\n // It's a field\r\n this.addFieldToGroup(node as FieldSchema, group, model);\r\n }\r\n });\r\n }\r\n\r\n private addFieldToGroup(field: FieldSchema, group: any, model: any) {\r\n // Handle name/key alias\r\n const fieldName = field.name || field.key;\r\n if (!fieldName) return; // Skip if no name\r\n\r\n const validators = field.validators || [];\r\n\r\n // Handle required shortcut\r\n if (field.required || field.props?.['required']) {\r\n validators.push(Validators.required);\r\n }\r\n\r\n const initialValue = model[fieldName] !== undefined ? model[fieldName] : (field.defaultValue !== undefined ? field.defaultValue : null);\r\n const state = { value: initialValue, disabled: field.disabled };\r\n\r\n group[fieldName] = [state, validators];\r\n }\r\n}\r\n","import { Component, input, forwardRef, signal, computed, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { AdIconComponent } from '../icons/icon.component';\r\n\r\n@Component({\r\n selector: 'ad-input',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AdIconComponent\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdInputComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdInputComponent implements ControlValueAccessor {\r\n type = input<string>('text');\r\n placeholder = input<string>('');\r\n label = input<string>('');\r\n error = input<boolean>(false);\r\n rows = input<number>(3);\r\n\r\n _disabled = signal<boolean>(false);\r\n @Input() set disabled(value: boolean) { this._disabled.set(value); }\r\n get disabled() { return this._disabled(); }\r\n\r\n size = input<'large' | 'default' | 'small'>('small');\r\n prefix = input<string | undefined>(undefined);\r\n suffix = input<string | undefined>(undefined);\r\n\r\n value: string = '';\r\n passwordVisible = signal<boolean>(false);\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n inputType = computed(() => {\r\n if (this.type() === 'password') {\r\n return this.passwordVisible() ? 'text' : 'password';\r\n }\r\n return this.type();\r\n });\r\n\r\n onInputChange(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n this.value = target.value;\r\n this.onChange(this.value);\r\n this.onTouched();\r\n }\r\n\r\n togglePasswordVisibility(): void {\r\n if (this.type() === 'password') {\r\n this.passwordVisible.update(visible => !visible);\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n }\r\n}\r\n","@if (label()) {\r\n<label class=\"block text-sm font-medium leading-6 text-slate-900 mb-2\">{{ label() }}</label>\r\n}\r\n\r\n<div class=\"flex items-center w-full rounded-md border border-slate-300 bg-white px-3 py-1.5 shadow-sm transition-all focus-within:border-cerca-primary\"\r\n [class.bg-slate-50]=\"disabled\" [class.text-slate-500]=\"disabled\" [class.cursor-not-allowed]=\"disabled\"\r\n [class.border-cerca-alert]=\"error()\" [class.text-cerca-alert-text]=\"error()\"\r\n [class.focus-within:border-cerca-alert]=\"error()\">\r\n\r\n @if (prefix()) {\r\n <span class=\"mr-2 flex items-center\" [class.text-slate-500]=\"!error()\" [class.text-cerca-alert-text]=\"error()\">\r\n <ad-icon [name]=\"prefix()!\" size=\"sm\"></ad-icon>\r\n </span>\r\n }\r\n\r\n @if (type() === 'textarea') {\r\n <textarea [rows]=\"rows()\" [placeholder]=\"placeholder()\" [disabled]=\"disabled\" [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\" (blur)=\"onTouched()\"\r\n class=\"block w-full border-0 p-0 text-slate-900 placeholder:text-slate-400 focus:ring-0 outline-none sm:text-sm sm:leading-6 bg-transparent disabled:cursor-not-allowed resize-none\"></textarea>\r\n } @else {\r\n <input [type]=\"inputType()\" [placeholder]=\"placeholder()\" [disabled]=\"disabled\" [(ngModel)]=\"value\"\r\n (ngModelChange)=\"onChange($event)\" (blur)=\"onTouched()\"\r\n class=\"block w-full border-0 p-0 text-slate-900 placeholder:text-slate-400 focus:ring-0 outline-none sm:text-sm sm:leading-6 bg-transparent disabled:cursor-not-allowed\" />\r\n }\r\n\r\n @if (type() === 'password') {\r\n <button type=\"button\" (click)=\"togglePasswordVisibility()\"\r\n class=\"ml-2 text-slate-500 hover:text-slate-700 focus:outline-none cursor-pointer\">\r\n <ad-icon [name]=\"passwordVisible() ? 'eye-invisible' : 'eye'\" size=\"sm\"></ad-icon>\r\n </button>\r\n }\r\n\r\n @if (type() !== 'password' && suffix()) {\r\n <span class=\"ml-2 text-slate-500 flex items-center\">\r\n <ad-icon [name]=\"suffix()!\" size=\"sm\"></ad-icon>\r\n </span>\r\n }\r\n</div>","import { Component, input, signal, forwardRef, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\nexport interface SelectOption {\r\n label: string;\r\n value: any;\r\n}\r\n@Component({\r\n selector: 'ad-select',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdSelectComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdSelectComponent implements ControlValueAccessor {\r\n options = input<SelectOption[]>([]);\r\n placeholder = input<string>('Seleccionar opción');\r\n label = input<string>('');\r\n size = input<'large' | 'default' | 'small'>('default');\r\n allowClear = input<boolean>(true);\r\n showSearch = input<boolean>(false);\r\n\r\n _disabled = signal<boolean>(false);\r\n @Input() set disabled(value: boolean) { this._disabled.set(value); }\r\n get disabled() { return this._disabled(); }\r\n\r\n value: any;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n onValueChange(value: any): void {\r\n this.value = value;\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n }\r\n}\r\n","<div class=\"w-full\">\r\n @if (label()) {\r\n <label class=\"block text-sm font-medium leading-6 text-slate-900 mb-2\">{{ label() }}</label>\r\n }\r\n <div class=\"relative\">\r\n <select [disabled]=\"disabled\" [(ngModel)]=\"value\" (ngModelChange)=\"onValueChange($event)\" (blur)=\"onTouched()\"\r\n class=\"block w-full rounded-md border-0 py-1.5 pl-3 pr-10 text-slate-900 shadow-sm ring-1 ring-inset ring-slate-300 focus:ring-2 focus:ring-inset focus:ring-sky-600 sm:text-sm sm:leading-6 bg-white disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed\">\r\n @if (placeholder()) {\r\n <option [ngValue]=\"null\" disabled selected>{{ placeholder() }}</option>\r\n }\r\n @if (allowClear()) {\r\n <option [ngValue]=\"null\">-- Seleccionar --</option>\r\n }\r\n @for (option of options(); track option.value) {\r\n <option [ngValue]=\"option.value\">{{ option.label }}</option>\r\n }\r\n </select>\r\n </div>\r\n</div>","import { Component, input, signal, forwardRef, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\n\r\nexport interface SwitchOption {\r\n label: string;\r\n value: boolean;\r\n}\r\n@Component({\r\n selector: 'ad-switch',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AdSwitchComponent),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class AdSwitchComponent implements ControlValueAccessor {\r\n options = input<SwitchOption[]>([\r\n { label: 'Inactivo', value: false },\r\n { label: 'Activo', value: true }\r\n ]);\r\n\r\n _disabled = signal<boolean>(false);\r\n @Input() set disabled(value: boolean) { this._disabled.set(value); }\r\n get disabled() { return this._disabled(); }\r\n\r\n value: boolean = false;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n /**\r\n * Get the current label based on the switch value\r\n */\r\n get currentLabel(): string {\r\n const option = this.options().find(opt => opt.value === this.value);\r\n return option?.label || '';\r\n }\r\n\r\n toggle(): void {\r\n if (this.disabled) return;\r\n this.onValueChange(!this.value);\r\n }\r\n\r\n onValueChange(value: boolean): void {\r\n this.value = value;\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n\r\n writeValue(value: boolean): void {\r\n this.value = value ?? false;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n }\r\n}\r\n","<div class=\"ad-switch-container\">\r\n <div class=\"flex items-center gap-3\">\r\n <button type=\"button\"\r\n class=\"relative inline-flex h-6 w-11 flex-shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-sky-600 focus:ring-offset-2\"\r\n [class.bg-sky-600]=\"value\" [class.bg-slate-200]=\"!value\" [class.opacity-50]=\"disabled\"\r\n [class.cursor-not-allowed]=\"disabled\" (click)=\"toggle()\" [attr.aria-checked]=\"value\" role=\"switch\">\r\n\r\n <span class=\"sr-only\">{{ currentLabel }}</span>\r\n\r\n <span aria-hidden=\"true\"\r\n class=\"pointer-events-none inline-block h-5 w-5 transform rounded-full bg-white shadow ring-0 transition duration-200 ease-in-out\"\r\n [class.translate-x-5]=\"value\" [class.translate-x-0]=\"!value\">\r\n </span>\r\n </button>\r\n\r\n @if (currentLabel) {\r\n <span class=\"text-sm font-medium text-slate-700 dark:text-slate-200\" [class.opacity-50]=\"disabled\">{{\r\n currentLabel }}</span>\r\n }\r\n </div>\r\n</div>","import { Component, input, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldSchema } from '../../core/models/form-schema.model';\r\nimport { FieldRendererRegistry } from '../../core/registries/field-renderer.registry';\r\nimport { AdInputComponent } from '../../atoms/input/input.component';\r\nimport { AdSelectComponent } from '../../atoms/select/select.component';\r\nimport { AdSwitchComponent } from '../../atoms/switch/switch.component';\r\n\r\n@Component({\r\n selector: 'ad-dynamic-field',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, AdInputComponent, AdSelectComponent, AdSwitchComponent],\r\n template: `\r\n <div class=\"mb-4\" [formGroup]=\"form()\">\r\n <!-- Label -->\r\n @if (renderType !== 'checkbox' && renderType !== 'switch' && field().label) {\r\n <label [for]=\"controlName\" class=\"block text-sm font-medium leading-6 text-slate-900 dark:text-slate-200 mb-2\">\r\n {{ field().label }}\r\n @if (isRequired) { <span class=\"text-cerca-rose\">*</span> }\r\n </label>\r\n }\r\n\r\n <!-- Control -->\r\n <div class=\"relative\">\r\n @switch (renderType) {\r\n @case ('input') {\r\n <ad-input\r\n [formControlName]=\"controlName\"\r\n [placeholder]=\"placeholder\"\r\n [type]=\"field().props?.['type'] || 'text'\"\r\n [prefix]=\"field().props?.['prefix']\"\r\n [suffix]=\"field().props?.['suffix']\"\r\n [disabled]=\"field().disabled || false\">\r\n </ad-input>\r\n }\r\n @case ('text-input') {\r\n <ad-input\r\n [formControlName]=\"controlName\"\r\n [placeholder]=\"placeholder\"\r\n type=\"text\"\r\n [prefix]=\"field().props?.['prefix']\"\r\n [suffix]=\"field().props?.['suffix']\"\r\n [disabled]=\"field().disabled || false\">\r\n </ad-input>\r\n }\r\n @case ('number-input') {\r\n <ad-input\r\n [formControlName]=\"controlName\"\r\n [placeholder]=\"placeholder\"\r\n type=\"number\"\r\n [prefix]=\"field().props?.['prefix']\"\r\n [suffix]=\"field().props?.['suffix']\"\r\n [disabled]=\"field().disabled || false\">\r\n </ad-input>\r\n }\r\n @case ('textarea') {\r\n <ad-input\r\n [formControlName]=\"controlName\"\r\n type=\"textarea\"\r\n [placeholder]=\"placeholder\"\r\n [rows]=\"rows\"\r\n [disabled]=\"field().disabled || false\">\r\n </ad-input>\r\n }\r\n @case ('select') {\r\n <ad-select\r\n [formControlName]=\"controlName\"\r\n [options]=\"field().options || []\"\r\n [placeholder]=\"placeholder\">\r\n </ad-select>\r\n }\r\n @case ('select-input') {\r\n <ad-select\r\n [formControlName]=\"controlName\"\r\n [options]=\"field().options || []\"\r\n [placeholder]=\"placeholder\">\r\n </ad-select>\r\n }\r\n @case ('switch') {\r\n <ad-switch\r\n [formControlName]=\"controlName\"\r\n [options]=\"getSwitchOptions()\">\r\n </ad-switch>\r\n }\r\n @case ('custom') {\r\n @if (getRenderer(controlName); as component) {\r\n <ng-container *ngComponentOutlet=\"component\"></ng-container>\r\n } @else {\r\n <p class=\"text-sm text-red-500\">No renderer found for {{ controlName }}</p>\r\n }\r\n }\r\n @default {\r\n <p class=\"text-sm text-red-500\">Unsupported field type: {{ renderType }}</p>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Errors -->\r\n @if (hasError()) {\r\n <p class=\"mt-2 text-sm text-cerca-rose\">\r\n @if (getError('required')) { Campo requerido }\r\n @if (getError('email')) { Email inválido }\r\n @if (getError('min')) { Valor mínimo no alcanzado }\r\n </p>\r\n }\r\n </div>\r\n `\r\n})\r\nexport class DynamicFieldComponent {\r\n field = input.required<FieldSchema>();\r\n form = input.required<FormGroup>();\r\n\r\n registry = inject(FieldRendererRegistry);\r\n\r\n get controlName(): string {\r\n return this.field().name || this.field().key || '';\r\n }\r\n\r\n get renderType(): string {\r\n return this.field().rendererKey || this.field().type || 'input';\r\n }\r\n\r\n get placeholder(): string {\r\n return this.field().placeholder || this.field().nzConfig?.nzProps?.placeholder || '';\r\n }\r\n\r\n get isRequired(): boolean {\r\n return this.field().required || !!this.field().validators?.some(v => v.name === 'required');\r\n }\r\n\r\n get rows(): number {\r\n return this.field().props?.['rows'] || this.field().nzConfig?.nzProps?.rows || 3;\r\n }\r\n\r\n getRenderer(key: string) {\r\n return this.registry.get(key);\r\n }\r\n\r\n getSwitchOptions() {\r\n const f = this.field();\r\n const checked = f.props?.['checkedChildren'] || 'Activo';\r\n const unchecked = f.props?.['unCheckedChildren'] || 'Inactivo';\r\n return [{ label: unchecked, value: false }, { label: checked, value: true }];\r\n }\r\n\r\n hasError() {\r\n const control = this.form().get(this.controlName);\r\n return control?.invalid && (control?.dirty || control?.touched);\r\n }\r\n\r\n getError(code: string) {\r\n const control = this.form().get(this.controlName);\r\n return control?.errors?.[code];\r\n }\r\n}\r\n","import { Component, input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldSchema } from '../../core/models/form-schema.model';\r\nimport { DynamicFieldComponent } from './dynamic-field.component';\r\n\r\n@Component({\r\n selector: 'ad-dynamic-layout',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n DynamicFieldComponent\r\n ],\r\n template: `\r\n <div [class]=\"field().gridClass || 'col-span-12'\">\r\n <ad-dynamic-field [field]=\"field()\" [form]=\"form()\"></ad-dynamic-field>\r\n </div>\r\n `\r\n})\r\nexport class DynamicLayoutComponent {\r\n field = input.required<FieldSchema>();\r\n form = input.required<FormGroup>();\r\n}\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-loading',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './loading.component.html'\r\n})\r\nexport class AdLoadingComponent {\r\n size = input<'sm' | 'md' | 'lg'>('md');\r\n color = input<string>('text-sky-600');\r\n\r\n computedClasses = computed(() => {\r\n let sizeClass = 'h-5 w-5';\r\n switch (this.size()) {\r\n case 'sm': sizeClass = 'h-4 w-4'; break;\r\n case 'lg': sizeClass = 'h-8 w-8'; break;\r\n }\r\n return `animate-spin ${sizeClass} ${this.color()}`;\r\n });\r\n}\r\n","<svg [class]=\"computedClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\">\r\n </path>\r\n</svg>","import { Component, input, computed, Input, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdIconComponent } from '../icons/icon.component';\r\nimport { AdLoadingComponent } from '../loading/loading.component';\r\n\r\ntype ButtonType = 'primary' | 'default' | 'dashed' | 'text' | 'link';\r\n\r\n@Component({\r\n selector: 'ad-button',\r\n standalone: true,\r\n imports: [CommonModule, AdIconComponent, AdLoadingComponent],\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss']\r\n})\r\nexport class AdButtonComponent {\r\n variant = input<'primary' | 'secondary' | 'ghost' | 'outline' | 'danger'>('primary');\r\n type = input<'button' | 'submit' | 'reset'>('button');\r\n\r\n _disabled = signal<boolean>(false);\r\n @Input() set disabled(value: boolean) { this._disabled.set(value); }\r\n get disabled() { return this._disabled(); }\r\n\r\n loading = input<boolean>(false);\r\n icon = input<string | undefined>(undefined);\r\n size = input<'large' | 'default' | 'small'>('default');\r\n block = input<boolean>(false);\r\n\r\n computedClasses = computed(() => {\r\n const baseClasses = 'ad-btn inline-flex items-center justify-center gap-2 rounded-lg font-medium transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed';\r\n const displayClass = this.block() ? 'w-full flex' : 'inline-flex';\r\n\r\n const sizeClasses = {\r\n 'small': 'px-3 py-1.5 text-xs',\r\n 'default': 'px-4 py-2 text-sm',\r\n 'large': 'px-6 py-3 text-base'\r\n };\r\n\r\n const variantClasses = {\r\n 'primary': 'bg-cerca-primary text-white hover:bg-cerca-primary-hover active:bg-cerca-primary-active focus-visible:ring-cerca-primary shadow-sm',\r\n 'secondary': 'bg-white text-cerca-secondary border border-slate-300 hover:bg-slate-50 focus-visible:ring-slate-500 shadow-sm',\r\n 'ghost': 'text-cerca-secondary hover:bg-slate-100 focus-visible:ring-slate-500',\r\n 'outline': 'border-2 border-cerca-primary text-cerca-primary hover:bg-cerca-primary-light focus-visible:ring-cerca-primary',\r\n 'danger': 'bg-cerca-alert text-white hover:bg-red-600 focus-visible:ring-cerca-alert shadow-sm'\r\n };\r\n\r\n return `${baseClasses.replace('inline-flex', '')} ${displayClass} ${sizeClasses[this.size()]} ${variantClasses[this.variant()] || variantClasses['primary']}`;\r\n });\r\n}\r\n","<button [class]=\"computedClasses()\" [disabled]=\"disabled\" [type]=\"type()\">\r\n @if (loading()) {\r\n <ad-loading size=\"sm\" color=\"text-current\"></ad-loading>\r\n }\r\n @if (icon() && !loading()) {\r\n <ad-icon [name]=\"icon()!\" [size]=\"size() === 'small' ? 'sm' : size() === 'large' ? 'lg' : 'md'\"></ad-icon>\r\n }\r\n <ng-content></ng-content>\r\n</button>","import { Component, input, ViewEncapsulation, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormSectionResource } from './form-section.resources';\r\n\r\n@Component({\r\n selector: 'ad-form-section',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n <div class=\"bg-white rounded-lg shadow-sm border border-stone-200 dark:border-cerca-primary dark:bg-cerca-navy h-full flex flex-col transition-colors duration-300\">\r\n \r\n @if (title()) {\r\n <div class=\"px-6 py-4 border-b border-stone-100 dark:border-cerca-primary-hover\">\r\n <h3 class=\"text-lg font-semibold text-stone-800 dark:text-white\">{{ title() }}</h3>\r\n </div>\r\n }\r\n\r\n <div class=\"p-6 flex-1 space-y-4\">\r\n @if (loading()) {\r\n <div class=\"animate-pulse space-y-4\">\r\n <div class=\"h-4 bg-stone-200 dark:bg-stone-700 rounded w-3/4\"></div>\r\n <div class=\"h-10 bg-stone-100 dark:bg-stone-800 rounded\"></div>\r\n <div class=\"h-4 bg-stone-200 dark:bg-stone-700 rounded w-1/2\"></div>\r\n <div class=\"h-24 bg-stone-100 dark:bg-stone-800 rounded\"></div>\r\n </div>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n '[class]': 'hostClasses()'\r\n }\r\n})\r\nexport class AdFormSectionComponent {\r\n resource = input.required<FormSectionResource>();\r\n title = computed(() => this.resource().title);\r\n cols = computed(() => this.resource().cols ?? 12);\r\n loading = computed(() => this.resource().loading ?? false);\r\n\r\n // Map for safe Tailwind class detection\r\n readonly colSpanMap: Record<number, string> = {\r\n 1: 'md:col-span-1',\r\n 2: 'md:col-span-2',\r\n 3: 'md:col-span-3',\r\n 4: 'md:col-span-4',\r\n 5: 'md:col-span-5',\r\n 6: 'md:col-span-6',\r\n 7: 'md:col-span-7',\r\n 8: 'md:col-span-8',\r\n 9: 'md:col-span-9',\r\n 10: 'md:col-span-10',\r\n 11: 'md:col-span-11',\r\n 12: 'md:col-span-12'\r\n };\r\n\r\n hostClasses = computed(() => {\r\n const colClass = this.colSpanMap[this.cols()] || 'md:col-span-12';\r\n return `block ${colClass}`;\r\n });\r\n}\r\n","import { Component, input, inject, forwardRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FieldSchema, LayoutSchema } from '../../../core/models/form-schema.model';\r\nimport { DynamicLayoutComponent } from '../dynamic-layout.component';\r\nimport { AdFormSectionComponent } from '../../../templates/form-section/form-section.component';\r\n\r\n@Component({\r\n selector: 'ad-form-renderer',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n DynamicLayoutComponent, // Renders individual fields (leaf nodes)\r\n AdFormSectionComponent, // Renders 'card'\r\n forwardRef(() => AdFormRendererComponent)\r\n ],\r\n template: `\r\n @for (node of nodes(); track $any(node).key || $any(node).name || $index) {\r\n \r\n @if (isLayout(node)) {\r\n <!-- Recursive Layout Rendering -->\r\n @switch (node.layoutType) {\r\n \r\n @case ('row') {\r\n <div class=\"grid grid-cols-1 md:grid-cols-12 gap-6 items-start w-full md:col-span-12\">\r\n <ad-form-renderer [nodes]=\"node.children || []\" [form]=\"form()\"></ad-form-renderer>\r\n </div>\r\n }\r\n\r\n @case ('col') {\r\n <!-- 'col' wraps content in a div with grid classes. -->\r\n <div [class]=\"getGridClass(node.layoutProps)\">\r\n <ad-form-renderer [nodes]=\"node.children || []\" [form]=\"form()\"></ad-form-renderer>\r\n </div>\r\n }\r\n\r\n @case ('card') {\r\n <!-- For card, we might want to also use the grid class on the wrapper? \r\n AdFormSection uses 'cols' input to generate wrapper class.\r\n We should probably update AdFormSection to accept full class string or improve mapping.\r\n But AdFormSection just uses cols Input -> md:col-span-X.\r\n Let's keep legacy behavior for card if simple span, or enhance AdFormSection later.\r\n Actually, card usually sits inside a 'col'. If card is direct child of row, it needs width.\r\n Usage in schema: \r\n row -> children: [ { layoutType: 'col', children: [ { layoutType: 'card' } ] } ]\r\n So card is inside col (which has width). Card itself usually takes full width of parent.\r\n Wait, AdFormSection has [cols] input. Default 12.\r\n If card is inside a col (which is e.g. span 8), then card should be span 12 (100% of parent).\r\n The schema in demo has card INSIDE col.\r\n So card shouldn't need sizing props if it's 100%.\r\n But if card is direct child of row?\r\n Safest is to let card be 12 (100% of container). \r\n If User put card directly in row, they might expect it to size.\r\n But let's assume standard pattern: Row -> Col -> Card.\r\n -->\r\n <ad-form-section [resource]=\"{ title: node.layoutProps?.title, cols: 12 }\">\r\n <ad-form-renderer [nodes]=\"node.children || []\" [form]=\"form()\"></ad-form-renderer>\r\n </ad-form-section>\r\n }\r\n \r\n @case ('stack') {\r\n <div class=\"flex flex-col\" [style.gap.px]=\"node.layoutProps?.gap || 0\">\r\n <ad-form-renderer [nodes]=\"node.children || []\" [form]=\"form()\"></ad-form-renderer>\r\n </div>\r\n }\r\n\r\n @default {\r\n <!-- Fallback for unknown layout: render children directly -->\r\n <!-- Explicitly cast to unknown then LayoutSchema to access children safely in default block -->\r\n <ad-form-renderer [nodes]=\"asLayout(node).children || []\" [form]=\"form()\"></ad-form-renderer>\r\n }\r\n }\r\n } @else {\r\n <!-- Leaf Node: Field -->\r\n <!-- Fields use getGridClass to support layoutProps: { span: X } directly on the field -->\r\n <div [class]=\"getGridClass(node.layoutProps)\">\r\n <ad-dynamic-layout [field]=\"asField(node)\" [form]=\"form()\"></ad-dynamic-layout>\r\n </div>\r\n }\r\n }\r\n `,\r\n host: {\r\n style: 'display: contents'\r\n }\r\n})\r\nexport class AdFormRendererComponent {\r\n // Maps for safe Tailwind class detection (JIT compatible)\r\n readonly mdColSpanMap: Record<number, string> = {\r\n 1: 'md:col-span-1',\r\n 2: 'md:col-span-2',\r\n 3: 'md:col-span-3',\r\n 4: 'md:col-span-4',\r\n 5: 'md:col-span-5',\r\n 6: 'md:col-span-6',\r\n 7: 'md:col-span-7',\r\n 8: 'md:col-span-8',\r\n 9: 'md:col-span-9',\r\n 10: 'md:col-span-10',\r\n 11: 'md:col-span-11',\r\n 12: 'md:col-span-12'\r\n };\r\n\r\n readonly lgColSpanMap: Record<number, string> = {\r\n 1: 'lg:col-span-1',\r\n 2: 'lg:col-span-2',\r\n 3: 'lg:col-span-3',\r\n 4: 'lg:col-span-4',\r\n 5: 'lg:col-span-5',\r\n 6: 'lg:col-span-6',\r\n 7: 'lg:col-span-7',\r\n 8: 'lg:col-span-8',\r\n 9: 'lg:col-span-9',\r\n 10: 'lg:col-span-10',\r\n 11: 'lg:col-span-11',\r\n 12: 'lg:col-span-12'\r\n };\r\n\r\n readonly xlColSpanMap: Record<number, string> = {\r\n 1: 'xl:col-span-1',\r\n 2: 'xl:col-span-2',\r\n 3: 'xl:col-span-3',\r\n 4: 'xl:col-span-4',\r\n 5: 'xl:col-span-5',\r\n 6: 'xl:col-span-6',\r\n 7: 'xl:col-span-7',\r\n 8: 'xl:col-span-8',\r\n 9: 'xl:col-span-9',\r\n 10: 'xl:col-span-10',\r\n 11: 'xl:col-span-11',\r\n 12: 'xl:col-span-12'\r\n };\r\n\r\n getGridClass(props: any): string {\r\n const classes: string[] = [];\r\n\r\n // Base Span (Mobile/Default) mapped to MD because our grid starts at MD\r\n if (props?.span) {\r\n classes.push(this.mdColSpanMap[props.span] || 'md:col-span-12');\r\n } else {\r\n classes.push('md:col-span-12'); // Default full width\r\n }\r\n\r\n // LG Override\r\n if (props?.lg) {\r\n classes.push(this.lgColSpanMap[props.lg]);\r\n }\r\n\r\n // XL Override\r\n if (props?.xl) {\r\n classes.push(this.xlColSpanMap[props.xl]);\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n nodes = input.required<(FieldSchema | LayoutSchema)[]>();\r\n form = input.required<FormGroup>();\r\n\r\n isLayout(node: FieldSchema | LayoutSchema): node is LayoutSchema {\r\n return 'layoutType' in node && !!(node as any).children;\r\n }\r\n\r\n asField(node: FieldSchema | LayoutSchema): FieldSchema {\r\n return node as FieldSchema;\r\n }\r\n\r\n asLayout(node: FieldSchema | LayoutSchema): LayoutSchema {\r\n return node as LayoutSchema;\r\n }\r\n\r\n trackByFn(index: number, item: any) {\r\n return item.key || item.name || index;\r\n }\r\n}\r\n","import { Component, input, output, inject, OnInit, effect, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormSchema, FieldSchema, SectionSchema } from '../../core/models/form-schema.model';\r\nimport { FormEngineService } from './form-engine.service';\r\nimport { DynamicLayoutComponent } from './dynamic-layout.component';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdFormRendererComponent } from './form-renderer/form-renderer.component';\r\n\r\n@Component({\r\n selector: 'ad-form-engine',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, DynamicLayoutComponent, AdButtonComponent, AdFormRendererComponent],\r\n template: `\r\n @if (form()) {\r\n <form [formGroup]=\"form()\" class=\"space-y-6\" (ngSubmit)=\"submit()\">\r\n \r\n <!-- NEW: Recursive Schema Rendering -->\r\n @if (schema().fields) {\r\n <div class=\"grid grid-cols-1 md:grid-cols-12 gap-6 w-full\">\r\n <ad-form-renderer [nodes]=\"schema().fields!\" [form]=\"form()\"></ad-form-renderer>\r\n </div>\r\n }\r\n\r\n <!-- LEGACY: Sections Rendering (Fallback) -->\r\n @if (!schema().fields && schema().sections) {\r\n @for (section of schema().sections; track $index) {\r\n <div [class]=\"section.gridClass || 'grid grid-cols-12 gap-6'\">\r\n @if (section.title) {\r\n <div class=\"col-span-12\">\r\n <h3 class=\"text-lg font-medium leading-6 text-slate-900\">{{ section.title }}</h3>\r\n @if (section.description) {\r\n <p class=\"mt-1 text-sm text-slate-500\">{{ section.description }}</p>\r\n }\r\n </div>\r\n }\r\n \r\n @for (field of section.fields; track field.key) {\r\n <ad-dynamic-layout [field]=\"field\" [form]=\"form()\"></ad-dynamic-layout>\r\n }\r\n </div>\r\n }\r\n }\r\n\r\n <!-- Actions -->\r\n <div class=\"flex justify-end gap-x-4\">\r\n @if (showCancel()) {\r\n <ad-button variant=\"secondary\" type=\"button\" (click)=\"onCancel()\">{{ schema().cancelLabel || 'Cancelar' }}</ad-button>\r\n }\r\n @if (showSubmit()) {\r\n <ad-button variant=\"primary\" type=\"submit\">{{ schema().submitLabel || 'Guardar' }}</ad-button>\r\n }\r\n </div>\r\n </form>\r\n }\r\n `\r\n})\r\nexport class FormEngineComponent implements OnInit {\r\n // Inputs (Signals)\r\n schema = input.required<FormSchema>();\r\n model = input<any>({});\r\n showCancel = input<boolean>(false);\r\n showSubmit = input<boolean>(true);\r\n\r\n // Outputs\r\n formSubmit = output<any>();\r\n formCancel = output<void>();\r\n\r\n // Dependencies\r\n private engineService = inject(FormEngineService);\r\n\r\n // State\r\n form = computed(() => {\r\n const schema = this.schema();\r\n const model = this.model();\r\n // Note: model availability in computed might be tricky if model updates later.\r\n // But createFormGroup usually runs once. \r\n // Better: create form once, then patch.\r\n if (!schema) return new FormGroup({});\r\n return this.engineService.createFormGroup(schema, model);\r\n });\r\n\r\n constructor() {\r\n // Effect to patch value when model changes AFTER form creation\r\n effect(() => {\r\n const currentModel = this.model();\r\n const currentForm = this.form();\r\n if (currentForm && currentModel && Object.keys(currentModel).length > 0) {\r\n currentForm.patchValue(currentModel);\r\n }\r\n });\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n submit() {\r\n const f = this.form();\r\n if (f.valid) {\r\n this.formSubmit.emit(f.value);\r\n } else {\r\n Object.values(f.controls).forEach(control => {\r\n if (control.invalid) {\r\n control.markAsDirty();\r\n control.updateValueAndValidity({ onlySelf: true });\r\n }\r\n });\r\n }\r\n }\r\n\r\n onCancel() {\r\n this.formCancel.emit();\r\n }\r\n}\r\n","import {\r\n Injectable,\r\n ApplicationRef,\r\n ComponentRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n Component,\r\n signal,\r\n computed\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ScreenResource } from '../models/screen-resource.model';\r\nimport { AdModalComponent } from '../../organisms/modal/modal.component';\r\nimport { FormEngineComponent } from '../../engines/form/form-engine.component';\r\n\r\n@Component({\r\n selector: 'ad-modal-wrapper',\r\n standalone: true,\r\n imports: [CommonModule, AdModalComponent, FormEngineComponent],\r\n template: `\r\n <ad-modal \r\n [resource]=\"modalResource()\"\r\n (close)=\"onClose()\">\r\n \r\n @if (resource.type === 'form' && resource.formConfig) {\r\n <ad-form-engine \r\n [schema]=\"resource.formConfig\" \r\n [model]=\"data\"\r\n [showCancel]=\"true\"\r\n (formSubmit)=\"onSubmit($event)\"\r\n (formCancel)=\"onClose()\">\r\n </ad-form-engine>\r\n } @else {\r\n <div class=\"p-6 text-center text-slate-500\">\r\n Renderer para el tipo \"{{ resource.type }}\" no implementado en el modal.\r\n </div>\r\n }\r\n </ad-modal>\r\n `\r\n})\r\nexport class AdModalWrapperComponent {\r\n resource!: ScreenResource;\r\n data: any = {};\r\n\r\n isOpen = signal(true);\r\n\r\n modalResource = computed(() => ({\r\n isOpen: this.isOpen(),\r\n title: this.resource?.title,\r\n size: 'md' as const,\r\n showFooter: false\r\n }));\r\n private resultSubject = new Subject<any>();\r\n result$ = this.resultSubject.asObservable();\r\n\r\n onClose() {\r\n this.isOpen.set(false);\r\n this.resultSubject.next(null);\r\n this.resultSubject.complete();\r\n }\r\n\r\n onSubmit(result: any) {\r\n this.isOpen.set(false);\r\n this.resultSubject.next(result);\r\n this.resultSubject.complete();\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdModalService {\r\n constructor(\r\n private appRef: ApplicationRef,\r\n private injector: EnvironmentInjector\r\n ) { }\r\n\r\n open(resource: ScreenResource, data?: any): Observable<any> {\r\n const componentRef: ComponentRef<AdModalWrapperComponent> = createComponent(AdModalWrapperComponent, {\r\n environmentInjector: this.injector\r\n });\r\n\r\n // Set inputs\r\n componentRef.instance.resource = resource;\r\n if (data) componentRef.instance.data = data;\r\n\r\n // Attach to ApplicationRef so change detection works\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n // Append to DOM\r\n const domElement = (componentRef.hostView as any).rootNodes[0] as HTMLElement;\r\n document.body.appendChild(domElement);\r\n\r\n // Cleanup on complete\r\n componentRef.instance.result$.subscribe({\r\n complete: () => {\r\n // Small delay to allow Angular modal to animate its close state\r\n setTimeout(() => {\r\n this.appRef.detachView(componentRef.hostView);\r\n componentRef.destroy();\r\n }, 300);\r\n }\r\n });\r\n\r\n return componentRef.instance.result$;\r\n }\r\n}\r\n","import { Component, input, output, computed, EventEmitter } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableSchema, TableColumn, TableAction } from '../../core/models/table-schema.model';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\n\r\n@Component({\r\n selector: 'ad-table-engine',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent, AdIconComponent],\r\n template: `\r\n <div class=\"flow-root\">\r\n <div class=\"-mx-4 -my-2 overflow-x-auto sm:-mx-6 lg:-mx-8\">\r\n <div class=\"inline-block min-w-full py-2 align-middle sm:px-6 lg:px-8\">\r\n <div class=\"relative\">\r\n @if (loading()) {\r\n <div class=\"absolute inset-0 bg-white/50 z-10 flex items-center justify-center\">\r\n <svg class=\"animate-spin h-8 w-8 text-sky-600\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\r\n </svg>\r\n </div>\r\n }\r\n \r\n <table class=\"min-w-full divide-y divide-slate-300\">\r\n <thead>\r\n <tr>\r\n <!-- Checkbox Column if selectable (Future) -->\r\n \r\n @for (column of displayColumns(); track column.key) {\r\n <th scope=\"col\" \r\n class=\"py-3.5 pl-4 pr-3 text-left text-sm font-semibold text-slate-900 sm:pl-0\"\r\n [style.width]=\"column.width || 'auto'\">\r\n {{ column.label }}\r\n </th>\r\n }\r\n @if (hasActions()) {\r\n <th scope=\"col\" class=\"relative py-3.5 pl-3 pr-4 sm:pr-0\">\r\n <span class=\"sr-only\">Acciones</span>\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody class=\"divide-y divide-slate-200 bg-white\">\r\n @for (item of data(); track item) {\r\n <tr>\r\n @for (column of displayColumns(); track column.key) {\r\n <td class=\"whitespace-nowrap py-4 pl-4 pr-3 text-sm text-slate-500 sm:pl-0\">\r\n <!-- Simple rendering for now. Registry support can be added here -->\r\n {{ item[column.key] }}\r\n </td>\r\n }\r\n @if (hasActions()) {\r\n <td class=\"whitespace-nowrap py-4 pl-3 pr-4 text-right text-sm font-medium sm:pr-0\">\r\n <div class=\"flex justify-end gap-2\">\r\n @for (act of getActions(); track act.action) {\r\n <ad-button \r\n [variant]=\"mapVariant(act.color)\" \r\n size=\"small\"\r\n (click)=\"onActionClick(act.action, item)\">\r\n @if (act.icon) {\r\n <ad-icon [name]=\"act.icon\" class=\"mr-1\"></ad-icon>\r\n }\r\n {{ act.label }}\r\n </ad-button>\r\n }\r\n </div>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n @if (data().length === 0 && !loading()) {\r\n <tr>\r\n <td [attr.colspan]=\"displayColumns().length + (hasActions() ? 1 : 0)\" class=\"py-8 text-center text-sm text-slate-500\">\r\n No hay datos disponibles\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n <!-- Pagination -->\r\n <div class=\"flex items-center justify-between border-t border-slate-200 bg-white px-4 py-3 sm:px-6 mt-4\">\r\n <!-- Simplified Pagination for brevity, can be expanded -->\r\n <div class=\"flex flex-1 justify-between sm:hidden\">\r\n <ad-button variant=\"secondary\" [disabled]=\"pageIndex() === 1\" (click)=\"onPageChange(pageIndex() - 1)\">Anterior</ad-button>\r\n <ad-button variant=\"secondary\" [disabled]=\"pageIndex() * pageSize() >= total()\" (click)=\"onPageChange(pageIndex() + 1)\">Siguiente</ad-button>\r\n </div>\r\n <div class=\"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between\">\r\n <div>\r\n <p class=\"text-sm text-slate-700\">\r\n Mostrando <span class=\"font-medium\">{{ (pageIndex() - 1) * pageSize() + 1 }}</span> a <span class=\"font-medium\">{{ Math.min(pageIndex() * pageSize(), total()) }}</span> de <span class=\"font-medium\">{{ total() }}</span> resultados\r\n </p>\r\n </div>\r\n <div>\r\n <nav class=\"isolate inline-flex -space-x-px rounded-md shadow-sm\" aria-label=\"Pagination\">\r\n <ad-button variant=\"secondary\" class=\"rounded-l-md\" [disabled]=\"pageIndex() === 1\" (click)=\"onPageChange(pageIndex() - 1)\">Ant</ad-button>\r\n <ad-button variant=\"secondary\" class=\"rounded-r-md\" [disabled]=\"pageIndex() * pageSize() >= total()\" (click)=\"onPageChange(pageIndex() + 1)\">Sig</ad-button>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class TableEngineComponent {\r\n // Signals\r\n schema = input.required<TableSchema>(); // Optional if using columns directly, but Schema approach implies passing the whole schema object usually.\r\n // Actually, keeping flexible to support both direct cols or schema.\r\n // Let's support independent inputs for now to match old API but strict typed.\r\n\r\n // Re-defining inputs to match Core Schema\r\n columns = input<TableColumn[]>([]);\r\n data = input<any[]>([]);\r\n loading = input<boolean>(false);\r\n total = input<number>(0);\r\n pageSize = input<number>(10);\r\n pageIndex = input<number>(1);\r\n actions = input<TableAction[]>([]); // Parameterized actions\r\n\r\n queryParamsChange = output<any>();\r\n action = output<{ action: string, data: any }>();\r\n\r\n protected Math = Math;\r\n\r\n displayColumns = computed(() => {\r\n // Filter visible if property exists, or default true\r\n // CoreTableColumn doesn't have is_v displayColumns = computed(() => {\r\n // Use schema columns if available, otherwise fallback to columns input\r\n return this.schema().columns || this.columns();\r\n });\r\n\r\n hasActions = computed(() => {\r\n const schemaActions = this.schema().actions || [];\r\n const inputActions = this.actions();\r\n return schemaActions.length > 0 || inputActions.length > 0;\r\n });\r\n\r\n // Helper to get combined actions\r\n getActions = computed(() => {\r\n const schemaActions = this.schema().actions || [];\r\n const inputActions = this.actions();\r\n return [...schemaActions, ...inputActions];\r\n });\r\n\r\n mapVariant(color?: string): 'primary' | 'secondary' | 'ghost' | 'danger' {\r\n if (color === 'primary') return 'primary';\r\n if (color === 'secondary') return 'secondary';\r\n if (color === 'danger') return 'danger';\r\n return 'ghost';\r\n }\r\n\r\n onPageChange(newPageIndex: number) {\r\n if (newPageIndex < 1 || (newPageIndex - 1) * this.pageSize() >= this.total()) return;\r\n\r\n this.queryParamsChange.emit({\r\n pageIndex: newPageIndex,\r\n pageSize: this.pageSize(),\r\n sort: [],\r\n filter: []\r\n });\r\n }\r\n\r\n onActionClick(action: string, data: any) {\r\n this.action.emit({ action, data });\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nexport type BadgeVariant = 'success' | 'warning' | 'error' | 'info' | 'neutral';\r\nexport type BadgeType = 'filled' | 'subtle' | 'outline';\r\n\r\n@Component({\r\n selector: 'ad-badge',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './badge.component.html',\r\n styleUrls: ['./badge.component.scss']\r\n})\r\nexport class AdBadgeComponent {\r\n @Input() variant: BadgeVariant = 'neutral';\r\n @Input() type: BadgeType = 'subtle';\r\n}\r\n","<span class=\"ad-badge\" [ngClass]=\"[variant, type]\">\r\n <ng-content></ng-content>\r\n</span>","import { Component, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-label',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './label.component.html',\r\n styleUrls: ['./label.component.scss']\r\n})\r\nexport class AdLabelComponent {\r\n @Input() text: string = '';\r\n @Input() for: string = '';\r\n @Input() required: boolean = false;\r\n @Input() error: boolean = false;\r\n}\r\n","<label [attr.for]=\"for\" class=\"ad-label\" [class.has-error]=\"error\">\r\n {{ text }}\r\n <span *ngIf=\"required\" class=\"required-indicator\" aria-hidden=\"true\">*</span>\r\n</label>","import { Component, ChangeDetectionStrategy, input, output, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdminSectionCardResource } from './admin-section-card.resources';\r\n\r\n@Component({\r\n selector: 'ad-admin-section-card',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent],\r\n templateUrl: './admin-section-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AdminSectionCardComponent {\r\n // Input Resource\r\n resource = input.required<AdminSectionCardResource>();\r\n\r\n title = computed(() => this.resource().title);\r\n accentedTitle = computed(() => this.resource().accentedTitle);\r\n cardAction = computed(() => this.resource().action);\r\n loading = computed(() => this.resource().loading ?? false);\r\n\r\n // Outputs\r\n action = output<void>();\r\n\r\n onAction() {\r\n if (!this.loading()) {\r\n this.action.emit();\r\n // Also call the callback if it exists\r\n this.cardAction()?.['onClick']?.();\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"bg-white dark:bg-cerca-primary-active rounded-xl shadow-sm border border-slate-200 dark:border-cerca-primary hover:shadow-md transition-shadow duration-300 overflow-hidden\">\r\n <!-- Header -->\r\n <div\r\n class=\"px-6 py-4 border-b border-slate-100 dark:border-cerca-primary flex justify-between items-center bg-slate-50/50 dark:bg-cerca-primary/50\">\r\n <!-- Title Section -->\r\n <div class=\"flex items-center gap-2\">\r\n <h2 class=\"text-lg font-medium text-cerca-secondary dark:text-slate-300\">\r\n {{ title() }} <span class=\"accent-text font-bold\">{{ accentedTitle() }}</span>\r\n </h2>\r\n </div>\r\n\r\n <!-- Actions -->\r\n @if (cardAction()?.label) {\r\n <ad-button (click)=\"onAction()\" [disabled]=\"loading()\" [loading]=\"loading()\" [icon]=\"cardAction()?.icon\">\r\n {{ cardAction()?.label }}\r\n </ad-button>\r\n }\r\n </div>\r\n\r\n <!-- Content Slot -->\r\n <div class=\"p-6 bg-slate-50 dark:bg-cerca-primary/20 text-cerca-secondary dark:text-slate-300\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const AdminSectionCardActionSchema = z.object({\r\n label: z.string(),\r\n icon: z.string().optional(),\r\n onClick: z.custom<() => void>().optional(),\r\n});\r\n\r\nexport const AdminSectionCardResourceSchema = z.object({\r\n title: z.string(),\r\n accentedTitle: z.string(),\r\n action: AdminSectionCardActionSchema.optional(),\r\n loading: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type AdminSectionCardAction = z.infer<typeof AdminSectionCardActionSchema>;\r\nexport type AdminSectionCardResource = z.infer<typeof AdminSectionCardResourceSchema>;\r\n","import { Component, input, output, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdLoadingComponent } from '../../atoms/loading/loading.component';\r\nimport { CardResource } from './card.resources';\r\n\r\n@Component({\r\n selector: 'ad-card',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent, AdLoadingComponent],\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss']\r\n})\r\nexport class AdCardComponent {\r\n resource = input.required<CardResource>();\r\n\r\n title = computed(() => this.resource().title);\r\n accentedTitle = computed(() => this.resource().accentedTitle);\r\n actionLabel = computed(() => this.resource().actionLabel);\r\n actionIcon = computed(() => this.resource().actionIcon || 'plus');\r\n loading = computed(() => this.resource().loading || false);\r\n bordered = computed(() => this.resource().bordered ?? true);\r\n\r\n // Convert padding to string if it's a number (e.g., 24 -> '24px')\r\n paddingStyle = computed(() => {\r\n const p = this.resource().padding;\r\n if (typeof p === 'number') return `${p}px`;\r\n return p || '24px';\r\n });\r\n\r\n action = output<void>();\r\n}\r\n","<div class=\"bg-white overflow-hidden rounded-lg transition-all duration-200\" [class.shadow-md]=\"bordered()\"\r\n [class.border]=\"bordered()\" [class.border-slate-200]=\"bordered()\" [class.shadow-none]=\"!bordered()\">\r\n\r\n @if (title() || actionLabel()) {\r\n <div class=\"px-4 py-3 sm:px-6 relative flex justify-between items-center min-h-[48px]\">\r\n <!-- Title -->\r\n <h3 class=\"text-lg font-bold text-slate-900 flex items-center\">\r\n {{ title() }}\r\n @if (accentedTitle()) {\r\n <span class=\"accent-text\">\r\n {{ accentedTitle() }}\r\n </span>\r\n }\r\n </h3>\r\n\r\n <!-- Action -->\r\n @if (actionLabel()) {\r\n <ad-button variant=\"primary\" [icon]=\"actionIcon()\" (click)=\"action.emit()\">\r\n {{ actionLabel() }}\r\n </ad-button>\r\n }\r\n\r\n <!-- Gradient bottom border for header -->\r\n <div class=\"absolute bottom-0 left-0 w-full h-[1px] bg-gradient-to-r from-sky-600 to-sky-400\"></div>\r\n </div>\r\n }\r\n\r\n <div class=\"px-4 py-5 sm:p-6\" [class.opacity-50]=\"loading()\">\r\n @if (loading()) {\r\n <div class=\"flex justify-center py-10\">\r\n <ad-loading size=\"lg\"></ad-loading>\r\n </div>\r\n } @else {\r\n <ng-content></ng-content>\r\n }\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const CardResourceSchema = z.object({\r\n title: z.string(),\r\n accentedTitle: z.string().optional(),\r\n actionLabel: z.string().optional(),\r\n actionIcon: z.string().default('plus').optional(),\r\n loading: z.boolean().default(false).optional(),\r\n bordered: z.boolean().default(true).optional(),\r\n padding: z.union([z.string(), z.number()]).default('24px').optional(),\r\n});\r\n\r\nexport type CardResource = z.infer<typeof CardResourceSchema>;\r\n","import { Component, ChangeDetectionStrategy, input, output, inject, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ScreenResource } from '../../core/models/screen-resource.model';\r\nimport { AdModalService } from '../../core/services/modal';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { ModalTriggerResource } from './modal-trigger.resources';\r\n\r\n@Component({\r\n selector: 'ad-modal-trigger',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent],\r\n templateUrl: './modal-trigger.html',\r\n styleUrl: './modal-trigger.css',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AdModalTriggerComponent {\r\n // Inputs (Signals) based on US-DEV-007\r\n resource = input.required<ModalTriggerResource>();\r\n\r\n screenResource = computed(() => this.resource().resource);\r\n data = computed(() => this.resource().data);\r\n triggerLabel = computed(() => this.resource().triggerLabel);\r\n triggerIcon = computed(() => this.resource().triggerIcon);\r\n loading = computed(() => this.resource().loading || false);\r\n variant = computed(() => this.resource().variant || 'primary');\r\n disabled = computed(() => this.resource().disabled || false);\r\n\r\n // Outputs\r\n confirm = output<any>();\r\n cancel = output<void>();\r\n\r\n private modalService = inject(AdModalService);\r\n\r\n openModal() {\r\n this.modalService.open(this.screenResource(), this.data()).subscribe(result => {\r\n if (result) {\r\n this.confirm.emit(result);\r\n } else {\r\n this.cancel.emit();\r\n }\r\n });\r\n }\r\n}\r\n","<!-- Botón Disparador -->\r\n<ad-button (click)=\"openModal()\" [variant]=\"variant()\" [disabled]=\"disabled()\" [loading]=\"loading()\"\r\n [icon]=\"triggerIcon()\" [size]=\"'default'\">\r\n {{ triggerLabel() }}\r\n</ad-button>","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { DescriptionHeaderResource, DescriptionHeaderButton } from './description-header.resources';\r\nimport { AdModalTriggerComponent } from '../modal-trigger/modal-trigger';\r\nimport { ModalTriggerResource } from '../modal-trigger/modal-trigger.resources';\r\n/**\r\n * Componente Molecular Description Header\r\n * \r\n * Molécula que compone múltiples átomos (títulos, botones, iconos) para\r\n * crear un header descriptivo reutilizable con títulos acentuados,\r\n * subtítulos y botones de acción dinámicos.\r\n * \r\n * @example\r\n * ```html\r\n * <ad-description-header [resource]=\"headerResource\"></ad-description-header>\r\n * ```\r\n */\r\n@Component({\r\n selector: 'ad-description-header',\r\n standalone: true,\r\n imports: [CommonModule, AdButtonComponent, AdModalTriggerComponent],\r\n templateUrl: './description-header.component.html',\r\n styleUrls: ['./description-header.component.scss']\r\n})\r\nexport class AdDescriptionHeaderComponent {\r\n /** Recurso de configuración del header */\r\n resource = input.required<DescriptionHeaderResource>();\r\n\r\n title = computed(() => this.resource().title);\r\n accentedTitle = computed(() => this.resource().accentedTitle);\r\n subtitle = computed(() => this.resource().subtitle);\r\n buttons = computed(() => this.resource().buttons);\r\n showDivider = computed(() => this.resource().showDivider);\r\n\r\n getModalTriggerResource(button: DescriptionHeaderButton): ModalTriggerResource {\r\n return {\r\n resource: button.modalResource,\r\n data: button.modalData,\r\n triggerLabel: button.label,\r\n triggerIcon: button.icon,\r\n variant: button.variant,\r\n disabled: button.disabled\r\n };\r\n }\r\n\r\n /**\r\n * Maneja el clic en un botón\r\n * @param onClick Callback del botón\r\n */\r\n handleButtonClick(onClick: (() => void) | undefined): void {\r\n if (onClick) {\r\n onClick();\r\n }\r\n }\r\n\r\n /**\r\n * Maneja la confirmación de un modal\r\n * @param onConfirm Callback de confirmación\r\n * @param result Resultado del modal\r\n */\r\n handleModalConfirm(onConfirm: ((result: any) => void) | undefined, result: any): void {\r\n if (onConfirm) {\r\n onConfirm(result);\r\n }\r\n }\r\n\r\n /**\r\n * Maneja la cancelación de un modal\r\n * @param onCancel Callback de cancelación\r\n */\r\n handleModalCancel(onCancel: (() => void) | undefined): void {\r\n if (onCancel) {\r\n onCancel();\r\n }\r\n }\r\n}\r\n","<div class=\"premium-header-card\">\r\n <div class=\"header-main\">\r\n <div class=\"title-group\">\r\n <h1 class=\"premium-title\">\r\n {{ title() }}\r\n @if (accentedTitle()) {\r\n <span class=\"accent-text\">\r\n {{ accentedTitle() }}\r\n </span>\r\n }\r\n </h1>\r\n @if (subtitle()) {\r\n <p class=\"premium-subtitle\">\r\n {{ subtitle() }}\r\n </p>\r\n }\r\n </div>\r\n @if (buttons() && buttons()!.length > 0) {\r\n <div class=\"header-actions\">\r\n @for (button of buttons(); track $index) {\r\n @if (button.isModalTrigger && button.modalResource) {\r\n <ad-modal-trigger [resource]=\"getModalTriggerResource(button)\"\r\n (confirm)=\"handleModalConfirm(button.onModalConfirm, $event)\"\r\n (cancel)=\"handleModalCancel(button.onModalCancel)\">\r\n </ad-modal-trigger>\r\n } @else {\r\n <ad-button [variant]=\"button.variant || 'primary'\" [type]=\"button.type || 'button'\"\r\n [disabled]=\"button.disabled || false\" (click)=\"handleButtonClick(button.onClick)\" [icon]=\"button.icon\">\r\n {{ button.label }}\r\n </ad-button>\r\n }\r\n }\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- Divider is no longer needed with the card style -->\r\n@if (showDivider() && false) {\r\n<div class=\"ad-description-header__divider\"></div>\r\n}","import { z } from 'zod';\r\nimport { ScreenResource } from '../../core/models/screen-resource.model';\r\n\r\nexport const DescriptionHeaderButtonSchema = z.object({\r\n label: z.string(),\r\n variant: z.enum(['primary', 'secondary', 'ghost', 'outline', 'danger']).optional(),\r\n type: z.enum(['button', 'submit', 'reset']).optional(),\r\n icon: z.string().optional(),\r\n onClick: z.custom<() => void>().optional(),\r\n disabled: z.boolean().optional(),\r\n isModalTrigger: z.boolean().optional(),\r\n modalResource: z.custom<ScreenResource>().optional(),\r\n modalData: z.any().optional(),\r\n onModalConfirm: z.custom<(result: any) => void>().optional(),\r\n onModalCancel: z.custom<() => void>().optional(),\r\n});\r\n\r\nexport const DescriptionHeaderResourceSchema = z.object({\r\n title: z.string(),\r\n accentedTitle: z.string().optional(),\r\n subtitle: z.string().optional(),\r\n buttons: z.array(DescriptionHeaderButtonSchema).optional(),\r\n showDivider: z.boolean().optional(),\r\n});\r\n\r\nexport type DescriptionHeaderButton = z.infer<typeof DescriptionHeaderButtonSchema>;\r\nexport type DescriptionHeaderResource = z.infer<typeof DescriptionHeaderResourceSchema>;\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdLabelComponent } from '../../atoms/labels/label.component';\r\nimport { FormFieldResource } from './form-field.resources';\r\n\r\n@Component({\r\n selector: 'ad-form-field',\r\n standalone: true,\r\n imports: [CommonModule, AdLabelComponent],\r\n templateUrl: './form-field.component.html',\r\n styleUrls: ['./form-field.component.scss']\r\n})\r\nexport class AdFormFieldComponent {\r\n resource = input.required<FormFieldResource>();\r\n\r\n label = computed(() => this.resource().label || '');\r\n hint = computed(() => this.resource().hint || '');\r\n errorMessage = computed(() => this.resource().errorMessage || null);\r\n required = computed(() => this.resource().required || false);\r\n error = computed(() => this.resource().error || false);\r\n forAttr = computed(() => this.resource().for || '');\r\n\r\n hasError = computed(() => !!this.errorMessage());\r\n}\r\n","<div class=\"ad-form-field\" [class.has-error]=\"hasError()\">\r\n @if (label()) {\r\n <ad-label [text]=\"label()\" [for]=\"forAttr()\" [required]=\"required()\" [error]=\"hasError()\">\r\n </ad-label>\r\n }\r\n\r\n <div class=\"ad-form-field-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n @if (hint() || errorMessage()) {\r\n <div class=\"ad-form-field-info\">\r\n @if (errorMessage()) {\r\n <span class=\"ad-form-field-error\">{{ errorMessage() }}</span>\r\n }\r\n @if (hint() && !errorMessage()) {\r\n <span class=\"ad-form-field-hint\">{{ hint() }}</span>\r\n }\r\n </div>\r\n }\r\n</div>","import { z } from 'zod';\r\n\r\nexport const FormFieldResourceSchema = z.object({\r\n label: z.string().optional(),\r\n hint: z.string().optional(),\r\n errorMessage: z.string().nullable().optional(),\r\n required: z.boolean().default(false).optional(),\r\n error: z.boolean().default(false).optional(),\r\n for: z.string().optional()\r\n});\r\n\r\nexport type FormFieldResource = z.infer<typeof FormFieldResourceSchema>;\r\n","import { z } from 'zod';\r\n\r\nexport const ModalTriggerResourceSchema = z.object({\r\n resource: z.any(), // Assuming ScreenResource for now\r\n data: z.any().optional(),\r\n triggerLabel: z.string(),\r\n triggerIcon: z.string().optional(),\r\n loading: z.boolean().default(false).optional(),\r\n variant: z.enum(['primary', 'secondary', 'ghost', 'outline', 'danger']).default('primary').optional(),\r\n disabled: z.boolean().default(false).optional()\r\n});\r\n\r\nexport type ModalTriggerResource = z.infer<typeof ModalTriggerResourceSchema>;\r\n","import { Component, input, output, OnInit, OnDestroy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { SearchBarResource } from './search-bar.resources';\r\nimport { computed } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ad-search-bar',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule, AdIconComponent],\r\n templateUrl: './search-bar.component.html',\r\n styleUrls: ['./search-bar.component.scss']\r\n})\r\nexport class AdSearchBarComponent implements OnInit, OnDestroy {\r\n resource = input.required<SearchBarResource>();\r\n\r\n placeholder = computed(() => this.resource().placeholder || 'Buscar...');\r\n debounce = computed(() => this.resource().debounce ?? 300);\r\n loading = computed(() => this.resource().loading || false);\r\n variant = computed(() => this.resource().variant || 'standalone');\r\n\r\n search = output<string>();\r\n\r\n searchQuery: string = '';\r\n private searchSubject = new Subject<string>();\r\n private subscription: Subscription = new Subscription();\r\n\r\n ngOnInit() {\r\n this.subscription = this.searchSubject\r\n .pipe(\r\n debounceTime(this.debounce()),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(query => {\r\n this.search.emit(query);\r\n });\r\n }\r\n\r\n onQueryChange() {\r\n this.searchSubject.next(this.searchQuery);\r\n }\r\n\r\n clear() {\r\n this.searchQuery = '';\r\n this.onQueryChange();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","<div class=\"ad-search-bar\" [ngClass]=\"variant()\">\r\n <div class=\"ad-search-icon-wrapper\">\r\n @if (!loading()) {\r\n <ad-icon name=\"search\" size=\"sm\"></ad-icon>\r\n }\r\n @if (loading()) {\r\n <div class=\"ad-search-loader\"></div>\r\n }\r\n </div>\r\n\r\n <input type=\"text\" class=\"ad-search-input\" [placeholder]=\"placeholder()\" [(ngModel)]=\"searchQuery\"\r\n (ngModelChange)=\"onQueryChange()\">\r\n\r\n @if (searchQuery && !loading()) {\r\n <button class=\"ad-search-clear\" (click)=\"clear()\" type=\"button\">\r\n <ad-icon name=\"close\" size=\"xs\"></ad-icon>\r\n </button>\r\n }\r\n</div>","import { z } from 'zod';\r\n\r\nexport const SearchBarResourceSchema = z.object({\r\n placeholder: z.string().default('Buscar...').optional(),\r\n debounce: z.number().default(300).optional(),\r\n loading: z.boolean().default(false).optional(),\r\n variant: z.enum(['standalone', 'header']).default('standalone').optional(),\r\n});\r\n\r\nexport type SearchBarResource = z.infer<typeof SearchBarResourceSchema>;\r\n","import { z } from 'zod';\r\n\r\nexport const StatCardColorSchema = z.enum(['blue', 'green', 'red', 'yellow', 'purple', 'orange']);\r\n\r\nexport const StatCardResourceSchema = z.object({\r\n title: z.string(),\r\n value: z.union([z.string(), z.number()]),\r\n icon: z.string().optional(),\r\n color: StatCardColorSchema.optional(),\r\n loading: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type StatCardColor = z.infer<typeof StatCardColorSchema>;\r\nexport type StatCardResource = z.infer<typeof StatCardResourceSchema>;\r\n\r\nexport const STAT_CARD_COLOR_MAP: Record<StatCardColor, { bg: string; label: string }> = {\r\n blue: { bg: 'bg-blue-50', label: 'text-blue-500' },\r\n green: { bg: 'bg-green-50', label: 'text-green-500' },\r\n red: { bg: 'bg-red-50', label: 'text-red-500' },\r\n yellow: { bg: 'bg-yellow-50', label: 'text-yellow-600' },\r\n purple: { bg: 'bg-purple-50', label: 'text-purple-500' },\r\n orange: { bg: 'bg-orange-50', label: 'text-orange-500' },\r\n};\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { STAT_CARD_COLOR_MAP, StatCardResource } from './stat-card.resources';\r\n\r\n@Component({\r\n selector: 'ad-stat-card',\r\n standalone: true,\r\n imports: [NgClass, AdIconComponent],\r\n templateUrl: './stat-card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AdStatCardComponent {\r\n resource = input.required<StatCardResource>();\r\n\r\n title = computed(() => this.resource().title);\r\n value = computed(() => this.resource().value);\r\n icon = computed(() => this.resource().icon);\r\n\r\n readonly colorClass = computed(() => {\r\n const color = this.resource().color ?? 'blue';\r\n return STAT_CARD_COLOR_MAP[color].bg;\r\n });\r\n\r\n readonly labelColorClass = computed(() => {\r\n const color = this.resource().color ?? 'blue';\r\n return STAT_CARD_COLOR_MAP[color].label;\r\n });\r\n\r\n readonly isLoading = computed(() => this.resource().loading ?? false);\r\n}\r\n","<div class=\"bg-white rounded-2xl shadow-sm border border-slate-100 p-4 min-w-[160px]\">\r\n <div class=\"rounded-xl p-4 flex flex-col gap-3\" [ngClass]=\"colorClass()\">\r\n\r\n <!-- Título -->\r\n <span class=\"text-[11px] font-semibold tracking-widest uppercase\" [ngClass]=\"labelColorClass()\">\r\n {{ title() }}\r\n </span>\r\n\r\n <!-- Icono + Valor (alineados a la derecha) -->\r\n @if (isLoading()) {\r\n <div class=\"h-9 w-20 rounded-lg animate-pulse opacity-30\" [ngClass]=\"labelColorClass()\"></div>\r\n } @else {\r\n <div class=\"flex items-center justify-between gap-2\">\r\n @if (icon()) {\r\n <ad-icon [name]=\"icon()!\" size=\"md\" [ngClass]=\"labelColorClass()\"></ad-icon>\r\n }\r\n <span class=\"text-3xl font-bold text-slate-800 leading-none ml-auto\">\r\n {{ value() }}\r\n </span>\r\n </div>\r\n }\r\n\r\n </div>\r\n</div>","import { Component, input, output, ContentChild, TemplateRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DataTableResource } from './data-table.resources';\r\nimport { computed } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ad-data-table',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './data-table.component.html',\r\n styleUrls: ['./data-table.component.scss']\r\n})\r\nexport class AdDataTableComponent {\r\n resource = input.required<DataTableResource>();\r\n\r\n data = computed(() => this.resource().data || []);\r\n columns = computed(() => this.resource().columns || []);\r\n loading = computed(() => this.resource().loading || false);\r\n showSearch = computed(() => this.resource().showSearch ?? true);\r\n searchPlaceholder = computed(() => this.resource().searchPlaceholder || 'Buscar en la tabla...');\r\n\r\n rowClick = output<any>();\r\n search = output<string>();\r\n actionClick = output<{ action: string, row: any }>();\r\n\r\n @ContentChild('customCell') customCellTemplate?: TemplateRef<any>;\r\n @ContentChild('rowActions') rowActionsTemplate?: TemplateRef<any>; // Fixed missing ContentChild\r\n\r\n get skeletonRows() {\r\n return Array(5).fill(0);\r\n }\r\n}\r\n","<div class=\"ad-data-table-container\">\r\n <div class=\"ad-data-table-wrapper\">\r\n <table class=\"ad-data-table\">\r\n <thead>\r\n <tr>\r\n @for (col of columns(); track col.key) {\r\n <th>\r\n {{ col.label }}\r\n </th>\r\n }\r\n </thead>\r\n\r\n <tbody>\r\n @for (row of data(); track $index) {\r\n <tr>\r\n @for (col of columns(); track col.key) {\r\n <td>\r\n {{ row[col.key] }}\r\n </td>\r\n }\r\n </tr>\r\n } @empty {\r\n <tr>\r\n <td [attr.colspan]=\"columns().length\">\r\n No se encontraron resultados\r\n </td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const DataTableColumnSchema = z.object({\r\n key: z.string(),\r\n label: z.string(),\r\n type: z.enum(['text', 'number', 'date', 'badge', 'custom']).optional(),\r\n sortable: z.boolean().optional(),\r\n});\r\n\r\nexport type DataTableColumn = z.infer<typeof DataTableColumnSchema>;\r\n\r\nexport const DataTableResourceSchema = z.object({\r\n data: z.array(z.any()).default([]),\r\n columns: z.array(DataTableColumnSchema).default([]),\r\n loading: z.boolean().default(false).optional(),\r\n showSearch: z.boolean().default(true).optional(),\r\n searchPlaceholder: z.string().default('Buscar en la tabla...').optional(),\r\n});\r\n\r\nexport type DataTableResource = z.infer<typeof DataTableResourceSchema>;\r\n","import { Component, input, output, signal, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HeaderResource } from './header.resources';\r\n\r\n@Component({\r\n selector: 'ad-header',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './header.component.html',\r\n})\r\nexport class AdHeaderComponent {\r\n // Inputs\r\n resource = input.required<HeaderResource>();\r\n\r\n user = computed(() => this.resource().user);\r\n notificationsCount = computed(() => this.resource().notificationsCount ?? 0);\r\n\r\n // Outputs\r\n toggleSidebar = output<void>();\r\n toggleMobileMenu = output<void>();\r\n logout = output<void>();\r\n navigateProfile = output<void>();\r\n toggleTheme = output<boolean>();\r\n\r\n // State\r\n isUserMenuOpen = signal(false);\r\n isDarkMode = signal(false);\r\n\r\n onToggleSidebar() {\r\n this.toggleSidebar.emit();\r\n }\r\n\r\n onToggleMobileMenu() {\r\n this.toggleMobileMenu.emit();\r\n }\r\n\r\n toggleUserMenu() {\r\n this.isUserMenuOpen.update(v => !v);\r\n }\r\n\r\n closeUserMenu() {\r\n this.isUserMenuOpen.set(false);\r\n }\r\n\r\n onLogoutClick() {\r\n this.logout.emit();\r\n this.closeUserMenu();\r\n }\r\n\r\n onProfileClick() {\r\n this.navigateProfile.emit();\r\n this.closeUserMenu();\r\n }\r\n\r\n onToggleThemeClick() {\r\n this.isDarkMode.update(v => !v);\r\n const isDark = this.isDarkMode();\r\n\r\n if (isDark) {\r\n document.documentElement.classList.add('dark');\r\n } else {\r\n document.documentElement.classList.remove('dark');\r\n }\r\n\r\n this.toggleTheme.emit(isDark);\r\n this.closeUserMenu();\r\n }\r\n}\r\n","<header class=\"sticky top-0 z-20 flex items-center justify-between px-6 h-16 \r\n bg-white/80 backdrop-blur-xl border-b border-white/20\r\n shadow-[0_4px_30px_rgba(0,0,0,0.05)] transition-all duration-300\">\r\n <div class=\"flex items-center gap-4 flex-1\">\r\n <!-- Mobile Menu -->\r\n <button (click)=\"onToggleMobileMenu()\"\r\n class=\"md:hidden p-2 text-slate-600 hover:bg-slate-100 rounded-xl transition-all active:scale-95 shadow-sm bg-white border border-slate-100\">\r\n <span class=\"material-icons-outlined\">menu</span>\r\n </button>\r\n\r\n <!-- Desktop Toggle -->\r\n <button (click)=\"onToggleSidebar()\"\r\n class=\"hidden md:flex p-2 text-slate-600 hover:bg-slate-100 rounded-xl transition-all active:scale-95 shadow-sm bg-white border border-slate-100\">\r\n <span class=\"material-icons-outlined\">menu_open</span>\r\n </button>\r\n\r\n <!-- Search Bar -->\r\n <div\r\n class=\"relative flex items-center transition-all duration-300 w-48 md:w-64 focus-within:w-full focus-within:max-w-md\">\r\n <span\r\n class=\"material-icons-outlined absolute left-3 transition-colors text-slate-400 group-focus-within:text-blue-500\">search</span>\r\n <input type=\"text\" placeholder=\"Buscar en Cerca...\"\r\n class=\"w-full bg-slate-50 border border-slate-200 rounded-xl py-2 pl-10 pr-4 text-sm focus:outline-none focus:ring-4 focus:ring-blue-500/10 focus:bg-white transition-all shadow-inner placeholder:text-slate-400 text-slate-600\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Header Right -->\r\n <div class=\"flex items-center gap-3\">\r\n <!-- Notifications -->\r\n <button\r\n class=\"relative p-2.5 text-slate-500 hover:bg-slate-100 rounded-xl transition-all bg-white border border-slate-100 shadow-sm group\">\r\n <span class=\"material-icons-outlined group-hover:text-blue-500 transition-colors\">notifications</span>\r\n @if (notificationsCount() > 0) {\r\n <span class=\"absolute top-2 right-2 w-2.5 h-2.5 bg-red-500 rounded-full border-2 border-white\"></span>\r\n }\r\n </button>\r\n\r\n <div class=\"h-8 w-[1px] bg-slate-200 mx-1\"></div>\r\n\r\n <!-- User Profile -->\r\n <div class=\"flex items-center gap-3 pl-1 group cursor-pointer\" (click)=\"toggleUserMenu()\">\r\n <div class=\"text-right hidden sm:block\">\r\n <p class=\"text-sm font-bold text-slate-700 leading-none group-hover:text-blue-600 transition-colors\">\r\n {{ user().name }}</p>\r\n <p class=\"text-[10px] text-slate-400 font-bold mt-1 tracking-tighter uppercase\">{{ user().role\r\n }}</p>\r\n </div>\r\n <!-- Gradient Avatar -->\r\n <div\r\n class=\"h-10 w-10 rounded-xl bg-gradient-to-tr from-blue-600 to-blue-400 flex items-center justify-center text-white shadow-lg shadow-blue-200 transition-transform group-hover:scale-105\">\r\n @if (user().avatarUrl) {\r\n <img [src]=\"user().avatarUrl\" alt=\"Avatar\"\r\n class=\"h-full w-full rounded-xl object-cover opacity-90 hover:opacity-100\">\r\n } @else {\r\n <span class=\"material-icons-outlined text-sm\">person</span>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown Menu (Existing logic) -->\r\n @if (isUserMenuOpen()) {\r\n <div class=\"fixed inset-0 z-40\" (click)=\"closeUserMenu()\"></div>\r\n <div\r\n class=\"absolute top-16 right-6 w-48 bg-white dark:bg-cerca-navy rounded-xl shadow-xl py-1 border border-slate-100 ring-1 ring-black ring-opacity-5 animate-fade-in-down z-50\">\r\n <button (click)=\"onProfileClick()\"\r\n class=\"w-full text-left px-4 py-2 text-sm text-slate-700 hover:bg-slate-50 hover:text-blue-600 transition-colors flex items-center font-medium\">\r\n <span class=\"material-icons-outlined text-lg mr-2\">person</span> Perfil\r\n </button>\r\n <button (click)=\"onToggleThemeClick()\"\r\n class=\"w-full text-left px-4 py-2 text-sm text-slate-700 hover:bg-slate-50 hover:text-blue-600 transition-colors flex items-center font-medium\">\r\n <span class=\"material-icons-outlined text-lg mr-2\">{{ isDarkMode() ? 'light_mode' : 'dark_mode'\r\n }}</span> {{ isDarkMode() ? 'Modo Claro' : 'Modo Oscuro' }}\r\n </button>\r\n <div class=\"border-t border-slate-100 my-1\"></div>\r\n <button (click)=\"onLogoutClick()\"\r\n class=\"w-full text-left px-4 py-2 text-sm text-rose-600 hover:bg-rose-50 transition-colors flex items-center font-medium\">\r\n <span class=\"material-icons-outlined text-lg mr-2\">logout</span> Cerrar Sesión\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n</header>","import { z } from 'zod';\r\n\r\nexport const UserSchema = z.object({\r\n name: z.string(),\r\n role: z.string(),\r\n avatarUrl: z.string().optional(),\r\n});\r\n\r\nexport type User = z.infer<typeof UserSchema>;\r\n\r\nexport const HeaderResourceSchema = z.object({\r\n user: UserSchema,\r\n notificationsCount: z.number().default(0).optional(),\r\n});\r\n\r\nexport type HeaderResource = z.infer<typeof HeaderResourceSchema>;\r\n","import { Component, input, output, inject, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms';\r\nimport { AdInputComponent } from '../../atoms/input/input.component';\r\nimport { AdButtonComponent } from '../../atoms/button/button.component';\r\nimport { LoginResource } from './login.component.resources';\r\n\r\n@Component({\r\n selector: 'ad-login',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n AdInputComponent,\r\n AdButtonComponent\r\n ],\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss']\r\n})\r\nexport class AdLoginComponent {\r\n private fb = inject(FormBuilder);\r\n\r\n resource = input.required<LoginResource>();\r\n\r\n title = computed(() => this.resource().title ?? 'Bienvenido');\r\n titleAccent = computed(() => this.resource().titleAccent);\r\n subtitle = computed(() => this.resource().subtitle ?? 'Inicia sesión para continuar');\r\n logo = computed(() => this.resource().logo);\r\n icon = computed(() => this.resource().icon);\r\n loading = computed(() => this.resource().loading ?? false);\r\n errorMessage = computed(() => this.resource().errorMessage ?? null);\r\n supportEmail = computed(() => this.resource().supportEmail ?? 'soporte@cerca.com.co');\r\n recoverPasswordUrl = computed(() => this.resource().recoverPasswordUrl);\r\n forgotPasswordLabel = computed(() => this.resource().forgotPasswordLabel ?? '¿Olvidaste tu clave?');\r\n\r\n loginSubmit = output<{ email: string; password: string; remember: boolean }>();\r\n forgotPasswordClick = output<void>();\r\n\r\n loginForm = this.fb.group({\r\n email: ['', [Validators.required, Validators.email]],\r\n password: ['', [Validators.required]],\r\n remember: [true]\r\n });\r\n\r\n submitForm(): void {\r\n if (this.loginForm.valid) {\r\n const { email, password, remember } = this.loginForm.getRawValue();\r\n this.loginSubmit.emit({ email: email!, password: password!, remember: remember! });\r\n } else {\r\n Object.values(this.loginForm.controls).forEach(control => {\r\n if (control.invalid) {\r\n control.markAsDirty();\r\n control.updateValueAndValidity({ onlySelf: true });\r\n }\r\n });\r\n }\r\n }\r\n\r\n fieldInvalid(field: string): boolean {\r\n const control = this.loginForm.get(field);\r\n return (control && control.invalid && (control.dirty || control.touched)) || false;\r\n }\r\n\r\n}\r\n","<div class=\"min-h-screen flex items-center justify-center bg-auth-gradient py-12 px-4 sm:px-6 lg:px-8\">\r\n <div class=\"w-full max-w-md space-y-8 bg-white p-8 rounded-xl shadow-lg border border-slate-100\">\r\n <div class=\"text-center\">\r\n @if (logo()) {\r\n <img [src]=\"logo()\" alt=\"Logo\" class=\"mx-auto h-12 w-auto\" />\r\n } @else if (icon()) {\r\n <div class=\"mx-auto h-12 w-12 flex items-center justify-center rounded-full bg-sky-100 text-sky-600\">\r\n <!-- Fallback icon or remove nz-icon -->\r\n <span class=\"text-2xl font-bold\">C</span>\r\n </div>\r\n }\r\n <h2 class=\"mt-6 text-3xl font-extrabold text-cerca-navy\">\r\n {{ title() }}\r\n @if (titleAccent()) {\r\n <span class=\"accent-text\">{{ titleAccent() }}</span>\r\n }\r\n </h2>\r\n <p class=\"mt-2 text-sm text-slate-600 uppercase tracking-wide\">{{ subtitle() }}</p>\r\n </div>\r\n\r\n @if (errorMessage()) {\r\n <div class=\"bg-red-50 border-l-4 border-red-500 p-4 mb-4 rounded-md\">\r\n <div class=\"flex\">\r\n <div class=\"ml-3\">\r\n <p class=\"text-sm text-red-700\">{{ errorMessage() }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n\r\n <form [formGroup]=\"loginForm\" class=\"mt-8 space-y-6\" (ngSubmit)=\"submitForm()\">\r\n <div class=\"space-y-4\">\r\n <div class=\"form-group\">\r\n <ad-input formControlName=\"email\" placeholder=\"correo@ejemplo.com\" label=\"Correo Electrónico\"\r\n type=\"email\" prefix=\"user\" [error]=\"fieldInvalid('email')\">\r\n </ad-input>\r\n @if (fieldInvalid('email')) {\r\n <p class=\"mt-1 text-sm text-red-600\">\r\n @if (loginForm.get('email')?.hasError('required')) { El campo es requerido }\r\n @else { Ingrese un correo válido }\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <ad-input formControlName=\"password\" placeholder=\"********\" label=\"Contraseña\" type=\"password\"\r\n prefix=\"lock\" [error]=\"fieldInvalid('password')\">\r\n </ad-input>\r\n @if (fieldInvalid('password')) {\r\n <p class=\"mt-1 text-sm text-red-600\">\r\n La contraseña es requerida\r\n </p>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex items-center justify-between\">\r\n <div class=\"flex items-center\">\r\n <input id=\"remember-me\" formControlName=\"remember\" type=\"checkbox\"\r\n class=\"h-4 w-4 rounded border-slate-300 text-sky-600 focus:ring-sky-600\">\r\n <label for=\"remember-me\" class=\"ml-2 block text-sm text-slate-900\">Recordarme</label>\r\n </div>\r\n\r\n @if (recoverPasswordUrl()) {\r\n <a [href]=\"recoverPasswordUrl()\" class=\"text-sm font-medium text-sky-600 hover:text-sky-500\">\r\n {{ forgotPasswordLabel() }}\r\n </a>\r\n } @else {\r\n <a class=\"text-sm font-medium text-sky-600 hover:text-sky-500 cursor-pointer\"\r\n (click)=\"forgotPasswordClick.emit()\">\r\n {{ forgotPasswordLabel() }}\r\n </a>\r\n }\r\n </div>\r\n\r\n <div>\r\n <div>\r\n <ad-button [loading]=\"loading()\" variant=\"primary\" type=\"submit\" [block]=\"true\"\r\n class=\"w-full justify-center\" [disabled]=\"loginForm.invalid || loading()\">\r\n Iniciar Sesión\r\n </ad-button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <div class=\"mt-6 text-center text-xs text-slate-400\">\r\n <p>¿Necesitas ayuda? Contacta a <a [href]=\"'mailto:' + supportEmail()\"\r\n class=\"hover:text-sky-600 transition-colors\">{{ supportEmail() }}</a></p>\r\n </div>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const LoginResourceSchema = z.object({\r\n title: z.string().default('Bienvenido').optional(),\r\n titleAccent: z.string().optional(),\r\n subtitle: z.string().default('Inicia sesión para continuar').optional(),\r\n logo: z.string().optional(),\r\n icon: z.string().optional(),\r\n loading: z.boolean().default(false).optional(),\r\n errorMessage: z.string().nullable().optional(),\r\n supportEmail: z.string().default('soporte@cerca.com.co').optional(),\r\n recoverPasswordUrl: z.string().optional(),\r\n forgotPasswordLabel: z.string().default('¿Olvidaste tu clave?').optional(),\r\n});\r\n\r\nexport type LoginResource = z.infer<typeof LoginResourceSchema>;\r\n","import { z } from 'zod';\r\n\r\nexport const ModalResourceSchema = z.object({\r\n isOpen: z.boolean().default(false).optional(),\r\n title: z.string().default('').optional(),\r\n accentedTitle: z.string().optional(),\r\n size: z.enum(['sm', 'md', 'lg']).default('md').optional(),\r\n closeOnOverlay: z.boolean().default(true).optional(),\r\n showFooter: z.boolean().default(true).optional()\r\n});\r\n\r\nexport type ModalResource = z.infer<typeof ModalResourceSchema>;\r\n","import { Component, ChangeDetectionStrategy, input, output, signal, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterLink, RouterLinkActive, Router } from '@angular/router';\r\nimport { AdIconComponent } from '../../atoms/icons/icon.component';\r\nimport { NavItem, SidebarResource } from './sidebar.resources';\r\n\r\n@Component({\r\n selector: 'ad-sidebar',\r\n standalone: true,\r\n imports: [CommonModule, RouterLink, RouterLinkActive, AdIconComponent], // Add AdIconComponent if available, otherwise just use logic\r\n templateUrl: './sidebar.component.html',\r\n styles: [`\r\n @keyframes slideDown {\r\n from { opacity: 0; transform: translateY(-5px); }\r\n to { opacity: 1; transform: translateY(0); }\r\n }\r\n .animate-slide-down {\r\n animation: slideDown 0.2s ease-out forwards;\r\n }\r\n `],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AdSidebarComponent {\r\n // Inputs as Signals\r\n resource = input.required<SidebarResource>();\r\n\r\n menuItems = computed(() => this.resource().menuItems);\r\n collapsed = computed(() => this.resource().collapsed ?? false);\r\n\r\n // Outputs\r\n toggleCollapse = output<void>();\r\n navigate = output<NavItem>();\r\n\r\n // State\r\n expandedItems = signal<Set<string>>(new Set());\r\n\r\n constructor(private router: Router) { }\r\n\r\n onItemClick(item: NavItem) {\r\n if (item.children && item.children.length > 0) {\r\n this.toggleSubmenu(item);\r\n } else if (item.route) {\r\n this.navigate.emit(item);\r\n }\r\n }\r\n\r\n toggleSubmenu(item: NavItem) {\r\n if (this.collapsed()) {\r\n this.toggleCollapse.emit(); // Expand sidebar if clicking a submenu parent while collapsed\r\n // layout logic usually handles this, but good to emit\r\n }\r\n\r\n this.expandedItems.update(current => {\r\n const newSet = new Set(current);\r\n if (newSet.has(item.label)) {\r\n newSet.delete(item.label);\r\n } else {\r\n newSet.add(item.label);\r\n }\r\n return newSet;\r\n });\r\n }\r\n\r\n isExpanded(item: NavItem): boolean {\r\n return this.expandedItems().has(item.label);\r\n }\r\n\r\n hasActiveChild(item: NavItem): boolean {\r\n if (!item.children) return false;\r\n return item.children.some((child: NavItem) => {\r\n if (child.route) {\r\n return this.router.isActive(child.route, {\r\n paths: 'subset',\r\n queryParams: 'ignored',\r\n fragment: 'ignored',\r\n matrixParams: 'ignored'\r\n });\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n onToggle() {\r\n this.toggleCollapse.emit();\r\n }\r\n}\r\n","<aside\r\n class=\"flex flex-col bg-[#002B5B] text-white transition-all duration-300 ease-in-out h-full z-30 shadow-[10px_0_40px_-15px_rgba(0,0,0,0.3)] border-r border-white/5\"\r\n [class.w-72]=\"!collapsed()\" [class.w-20]=\"collapsed()\">\r\n\r\n <!-- Logo Area -->\r\n <div\r\n class=\"p-4 flex items-center justify-center border-b border-white/5 h-20 transition-all duration-300 flex-shrink-0\">\r\n @if (collapsed()) {\r\n <!-- Isotipo (C) -->\r\n <div\r\n class=\"w-10 h-10 bg-blue-500 rounded-lg flex items-center justify-center font-bold text-lg shadow-lg animate-in fade-in zoom-in-75\">\r\n C\r\n </div>\r\n } @else {\r\n <!-- Logo Completo -->\r\n <div class=\"flex items-center gap-2 animate-in fade-in slide-in-from-left-4 duration-500\">\r\n <span class=\"text-xl font-bold tracking-tight text-blue-400\">Cerca</span>\r\n <span\r\n class=\"text-[9px] font-bold bg-white/10 px-1.5 py-0.5 rounded tracking-widest text-slate-300 border border-white/10\">ADMIN</span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Menu de Navegación -->\r\n <div\r\n class=\"flex-1 overflow-y-auto py-6 px-3 space-y-2 scrollbar-thin scrollbar-thumb-slate-700 scrollbar-track-transparent [&::-webkit-scrollbar]:hidden [-ms-overflow-style:'none'] [scrollbar-width:'none']\">\r\n @for (item of menuItems(); track item.label) {\r\n <!-- Group Header -->\r\n @if (item.isHeader && !collapsed()) {\r\n <h2 class=\"text-[10px] font-bold text-slate-400 tracking-[0.2em] px-4 mb-3 mt-6 uppercase opacity-70\">\r\n {{ item.label }}\r\n </h2>\r\n }\r\n\r\n @if (!item.isHeader) {\r\n <!-- Item Wrapper -->\r\n <div class=\"relative group px-1\">\r\n <!-- Standard Item or Parent -->\r\n @if (!item.children || item.children.length === 0) {\r\n <a [routerLink]=\"item.route\"\r\n [routerLinkActive]=\"['bg-[#0081C9]', 'text-white', 'shadow-[0_10px_20px_-5px_rgba(0,129,201,0.4)]']\"\r\n [routerLinkActiveOptions]=\"{ exact: item.exact || false }\" (click)=\"onItemClick(item)\"\r\n class=\"w-full flex items-center px-4 py-3 rounded-xl transition-all duration-300 group cursor-pointer text-slate-300 hover:bg-white/5 hover:text-white\"\r\n [class.justify-center]=\"collapsed()\" [class.justify-between]=\"!collapsed()\" #rla=\"routerLinkActive\">\r\n\r\n <div class=\"flex items-center gap-3\">\r\n <span class=\"transition-colors\" [class.text-white]=\"rla.isActive\"\r\n [class.text-slate-400]=\"!rla.isActive\" [class.group-hover:text-blue-300]=\"!rla.isActive\">\r\n <ad-icon [name]=\"item.icon!\" size=\"md\"></ad-icon>\r\n </span>\r\n @if (!collapsed()) {\r\n <span class=\"font-medium text-sm whitespace-nowrap\">{{ item.label }}</span>\r\n }\r\n </div>\r\n\r\n @if (item.badge && !collapsed()) {\r\n <span\r\n class=\"bg-[#4CC9FE] text-[#002B5B] text-[10px] font-bold h-5 w-5 flex items-center justify-center rounded-md shadow-sm\">\r\n {{ item.badge }}\r\n </span>\r\n }\r\n </a>\r\n } @else {\r\n <!-- Parent Item with Submenu -->\r\n <div (click)=\"toggleSubmenu(item)\"\r\n class=\"w-full flex items-center px-4 py-3 rounded-xl transition-all duration-300 cursor-pointer hover:bg-white/5 hover:text-white\"\r\n [class.bg-white/5]=\"isExpanded(item)\" [class.text-white]=\"isExpanded(item) && !hasActiveChild(item)\"\r\n [class.text-[#4CC9FE]]=\"hasActiveChild(item)\"\r\n [class.text-slate-300]=\"!isExpanded(item) && !hasActiveChild(item)\" [class.justify-center]=\"collapsed()\"\r\n [class.justify-between]=\"!collapsed()\">\r\n\r\n <div class=\"flex items-center gap-3\">\r\n <span class=\"transition-colors\" [class.text-white]=\"isExpanded(item) && !hasActiveChild(item)\"\r\n [class.text-[#4CC9FE]]=\"hasActiveChild(item)\"\r\n [class.text-slate-400]=\"!isExpanded(item) && !hasActiveChild(item)\"\r\n [class.group-hover:text-blue-300]=\"!isExpanded(item) && !hasActiveChild(item)\">\r\n <ad-icon [name]=\"item.icon!\" size=\"md\"></ad-icon>\r\n </span>\r\n @if (!collapsed()) {\r\n <span class=\"font-medium text-sm whitespace-nowrap\">{{ item.label }}</span>\r\n }\r\n </div>\r\n\r\n @if (!collapsed()) {\r\n <span class=\"transition-transform duration-300\" [class.rotate-180]=\"isExpanded(item)\">\r\n <span class=\"material-icons-outlined text-sm\">expand_more</span>\r\n </span>\r\n }\r\n </div>\r\n\r\n <!-- Submenu -->\r\n @if (isExpanded(item) && !collapsed()) {\r\n <ul class=\"mt-1 ml-9 border-l border-white/10 space-y-1 animate-slide-down\">\r\n @for (subItem of item.children; track subItem.route) {\r\n <li>\r\n <a [routerLink]=\"subItem.route\" [routerLinkActive]=\"['text-white', 'font-medium']\"\r\n [routerLinkActiveOptions]=\"{ exact: subItem.exact || false }\" (click)=\"onItemClick(subItem)\"\r\n class=\"w-full block text-left px-4 py-2 text-xs text-slate-400 hover:text-white transition-colors rounded-lg\">\r\n {{ subItem.label }}\r\n </a>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n }\r\n\r\n <!-- Tooltip for collapsed state -->\r\n @if (collapsed()) {\r\n <div\r\n class=\"fixed left-20 ml-2 px-3 py-1.5 bg-slate-900 text-white text-xs rounded-md opacity-0 group-hover:opacity-100 pointer-events-none transition-all translate-x-[-10px] group-hover:translate-x-0 whitespace-nowrap z-50 shadow-2xl\">\r\n {{ item.label }}\r\n </div>\r\n }\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <!-- Footer -->\r\n <div class=\"p-4 border-t border-white/5 bg-black/10 transition-all duration-300\">\r\n <div class=\"flex items-center h-10 rounded-lg bg-white/5 border border-white/5 transition-all duration-300\"\r\n [class.justify-center]=\"collapsed()\" [class.px-4]=\"!collapsed()\">\r\n <span class=\"text-[10px] font-medium text-slate-400 tracking-widest uppercase whitespace-nowrap\">\r\n {{ collapsed() ? 'v2' : 'v2.0.0 Design' }}\r\n </span>\r\n </div>\r\n </div>\r\n</aside>","import { z } from 'zod';\r\n\r\nexport const NavItemSchema: z.ZodType<any> = z.lazy(() => z.object({\r\n label: z.string(),\r\n icon: z.string().optional(),\r\n route: z.string().optional(),\r\n badge: z.union([z.string(), z.number()]).optional(),\r\n badgeColor: z.string().optional(),\r\n exact: z.boolean().optional(),\r\n children: z.array(NavItemSchema).optional(),\r\n isHeader: z.boolean().optional(),\r\n}));\r\n\r\nexport type NavItem = z.infer<typeof NavItemSchema>;\r\n\r\nexport const SidebarResourceSchema = z.object({\r\n menuItems: z.array(NavItemSchema),\r\n collapsed: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type SidebarResource = z.infer<typeof SidebarResourceSchema>;\r\n","import {\r\n Component,\r\n computed,\r\n input,\r\n output,\r\n OnDestroy,\r\n ChangeDetectionStrategy,\r\n OnInit,\r\n signal,\r\n effect,\r\n inject\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TableResource, AdTableColumn } from './table.resources';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs';\r\nimport { AdLoadingComponent } from '../../atoms/loading/loading.component';\r\nimport { DatePipe, CurrencyPipe, DecimalPipe, PercentPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-table',\r\n standalone: true,\r\n imports: [CommonModule, ReactiveFormsModule, AdLoadingComponent],\r\n providers: [DatePipe, CurrencyPipe, DecimalPipe, PercentPipe],\r\n templateUrl: './table.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AdTableComponent implements OnInit, OnDestroy {\r\n resource = input.required<TableResource>();\r\n\r\n data = computed(() => this.resource().data);\r\n columns = computed(() => this.resource().columns);\r\n total = computed(() => this.resource().total);\r\n loading = computed(() => this.resource().loading ?? false);\r\n pageIndex = computed(() => this.resource().pageIndex ?? 1);\r\n pageSize = computed(() => this.resource().pageSize ?? 10);\r\n searchPlaceholder = computed(() => this.resource().searchPlaceholder ?? 'Buscar...');\r\n\r\n pageChange = output<number>();\r\n search = output<string>();\r\n\r\n searchInput = new FormControl('');\r\n private destroy$ = new Subject<void>();\r\n\r\n private datePipe = inject(DatePipe);\r\n private currencyPipe = inject(CurrencyPipe);\r\n private decimalPipe = inject(DecimalPipe);\r\n private percentPipe = inject(PercentPipe);\r\n\r\n totalPages = computed(() => Math.ceil(this.total() / this.pageSize()));\r\n isFirstPage = computed(() => this.pageIndex() === 1);\r\n isLastPage = computed(() => this.pageIndex() >= this.totalPages());\r\n\r\n ngOnInit(): void {\r\n this.searchInput.valueChanges\r\n .pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n takeUntil(this.destroy$)\r\n )\r\n .subscribe((value) => {\r\n this.search.emit(value || '');\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n\r\n onPageChange(newPage: number): void {\r\n if (newPage >= 1 && newPage <= this.totalPages()) {\r\n this.pageChange.emit(newPage);\r\n }\r\n }\r\n\r\n getAlignClass(align?: 'left' | 'center' | 'right'): string {\r\n switch (align) {\r\n case 'center': return 'text-center';\r\n case 'right': return 'text-right';\r\n default: return 'text-left';\r\n }\r\n }\r\n\r\n getCellValue(row: any, col: AdTableColumn): any {\r\n const value = row[col.key];\r\n\r\n // 1. Prioritize function execution if context is available\r\n if (col.function_to_exec && this.resource().context) {\r\n const context = this.resource().context;\r\n if (typeof context[col.function_to_exec] === 'function') {\r\n return context[col.function_to_exec](row, col);\r\n }\r\n }\r\n\r\n // 2. Apply pipe if specified\r\n if (col.pipe_to_apply && value !== null && value !== undefined) {\r\n return this.applyPipe(value, col.pipe_to_apply);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private applyPipe(value: any, pipeConfig: string): any {\r\n const [pipeName, ...args] = pipeConfig.split(':');\r\n\r\n switch (pipeName.toLowerCase()) {\r\n case 'date':\r\n return this.datePipe.transform(value, args[0] || 'mediumDate');\r\n case 'currency':\r\n return this.currencyPipe.transform(value, args[0] || 'USD', args[1] || 'symbol', args[2]);\r\n case 'number':\r\n case 'decimal':\r\n return this.decimalPipe.transform(value, args[0]);\r\n case 'percent':\r\n return this.percentPipe.transform(value, args[0]);\r\n default:\r\n return value;\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-col h-full w-full bg-white rounded-xl shadow-sm border border-stone-200 overflow-hidden\">\r\n <!-- Header: Search & Actions -->\r\n <div class=\"flex items-center justify-between p-4 border-b border-stone-100 bg-stone-50/50 backdrop-blur-sm\">\r\n <div class=\"relative w-full max-w-sm group\">\r\n <div class=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none\">\r\n <svg class=\"h-4 w-4 text-stone-400 group-focus-within:text-sky-500 transition-colors\"\r\n xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </div>\r\n <input [formControl]=\"searchInput\" type=\"text\"\r\n class=\"block w-full pl-10 pr-3 py-2 border border-stone-300 rounded-lg leading-5 bg-white placeholder-stone-400 focus:outline-none focus:placeholder-stone-300 focus:border-sky-500 focus:ring-1 focus:ring-sky-500 sm:text-sm transition-shadow duration-200\"\r\n [placeholder]=\"searchPlaceholder()\" />\r\n </div>\r\n <div class=\"ml-4 flex items-center\">\r\n <span\r\n class=\"text-xs font-medium text-stone-500 bg-stone-100 px-2 py-1 rounded-full border border-stone-200\">\r\n Total: <span class=\"text-stone-800 font-bold\">{{ total() }}</span>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Table Container -->\r\n <div class=\"flex-1 overflow-auto relative\">\r\n <!-- Loading Overlay -->\r\n @if (loading()) {\r\n <div class=\"absolute inset-0 z-10 bg-white/60 backdrop-blur-[1px] flex justify-center items-center\">\r\n <div class=\"flex items-center gap-2 px-4 py-2 bg-white rounded-lg shadow-lg border border-stone-100\">\r\n <ad-loading size=\"md\"></ad-loading>\r\n <span class=\"text-sm font-medium text-stone-600\">Cargando datos...</span>\r\n </div>\r\n </div>\r\n }\r\n\r\n <table class=\"min-w-full divide-y divide-stone-200\">\r\n <thead class=\"bg-stone-50 sticky top-0 z-0 is-header\">\r\n <tr>\r\n @for (col of columns(); track col.key) {\r\n <th scope=\"col\"\r\n class=\"px-6 py-3 text-xs font-semibold text-stone-500 uppercase tracking-wider whitespace-nowrap\"\r\n [style.width]=\"col.width\" [class]=\"getAlignClass(col.align)\">\r\n {{ col.label }}\r\n </th>\r\n }\r\n </tr>\r\n </thead>\r\n <tbody class=\"bg-white divide-y divide-stone-100\">\r\n @if (data().length === 0 && !loading()) {\r\n <tr>\r\n <td [attr.colspan]=\"columns().length\" class=\"px-6 py-12 text-center\">\r\n <div class=\"flex flex-col items-center justify-center text-stone-400\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\r\n stroke=\"currentColor\" class=\"w-12 h-12 mb-3 opacity-50\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\r\n d=\"M20.25 7.5l-.625 10.632a2.25 2.25 0 01-2.247 2.118H6.622a2.25 2.25 0 01-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125z\" />\r\n </svg>\r\n <p class=\"text-base font-medium text-stone-900\">Sin datos disponibles</p>\r\n <p class=\"text-sm\">No se encontraron registros para mostrar.</p>\r\n </div>\r\n </td>\r\n </tr>\r\n } @else {\r\n @for (row of data(); track row) {\r\n <tr class=\"hover:bg-sky-50/50 transition-colors duration-150 group\">\r\n @for (col of columns(); track col.key) {\r\n <td class=\"px-6 py-4 whitespace-nowrap text-sm text-stone-700 border-b border-transparent group-hover:border-sky-100\"\r\n [class]=\"getAlignClass(col.align)\">\r\n {{ getCellValue(row, col) }}\r\n </td>\r\n }\r\n </tr>\r\n }\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <!-- Footer: Pagination -->\r\n <div class=\"bg-white px-4 py-3 flex items-center justify-between border-t border-stone-200 sm:px-6\">\r\n <div class=\"flex-1 flex justify-between sm:hidden\">\r\n <button [disabled]=\"isFirstPage()\" (click)=\"onPageChange(pageIndex() - 1)\"\r\n class=\"relative inline-flex items-center px-4 py-2 border border-stone-300 text-sm font-medium rounded-md text-stone-700 bg-white hover:bg-stone-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\">\r\n Anterior\r\n </button>\r\n <button [disabled]=\"isLastPage()\" (click)=\"onPageChange(pageIndex() + 1)\"\r\n class=\"ml-3 relative inline-flex items-center px-4 py-2 border border-stone-300 text-sm font-medium rounded-md text-stone-700 bg-white hover:bg-stone-50 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\">\r\n Siguiente\r\n </button>\r\n </div>\r\n <div class=\"hidden sm:flex-1 sm:flex sm:items-center sm:justify-between\">\r\n <div>\r\n <p class=\"text-sm text-stone-500\">\r\n Mostrando página <span class=\"font-medium text-stone-900\">{{ pageIndex() }}</span> de <span\r\n class=\"font-medium text-stone-900\">{{ totalPages() }}</span>\r\n </p>\r\n </div>\r\n <div>\r\n <nav class=\"relative z-0 inline-flex rounded-md shadow-sm -space-x-px\" aria-label=\"Pagination\">\r\n <button [disabled]=\"isFirstPage()\" (click)=\"onPageChange(pageIndex() - 1)\"\r\n class=\"relative inline-flex items-center px-2 py-2 rounded-l-md border border-stone-300 bg-white text-sm font-medium text-stone-500 hover:bg-stone-50 disabled:opacity-50 disabled:cursor-not-allowed focus:z-10 focus:outline-none focus:ring-1 focus:ring-sky-500 focus:border-sky-500 transition-colors\">\r\n <span class=\"sr-only\">Anterior</span>\r\n <!-- Heroicon: chevron-left -->\r\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n <button [disabled]=\"isLastPage()\" (click)=\"onPageChange(pageIndex() + 1)\"\r\n class=\"relative inline-flex items-center px-2 py-2 rounded-r-md border border-stone-300 bg-white text-sm font-medium text-stone-500 hover:bg-stone-50 disabled:opacity-50 disabled:cursor-not-allowed focus:z-10 focus:outline-none focus:ring-1 focus:ring-sky-500 focus:border-sky-500 transition-colors\">\r\n <span class=\"sr-only\">Siguiente</span>\r\n <!-- Heroicon: chevron-right -->\r\n <svg class=\"h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path fill-rule=\"evenodd\"\r\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const AdTableColumnSchema = z.object({\r\n key: z.string(),\r\n label: z.string(),\r\n width: z.string().optional(),\r\n align: z.enum(['left', 'center', 'right']).optional(),\r\n pipe_to_apply: z.string().optional(),\r\n function_to_exec: z.string().optional(),\r\n});\r\n\r\nexport type AdTableColumn = z.infer<typeof AdTableColumnSchema>;\r\n\r\nexport const TableResourceSchema = z.object({\r\n data: z.array(z.any()),\r\n columns: z.array(AdTableColumnSchema),\r\n total: z.number(),\r\n loading: z.boolean().default(false).optional(),\r\n pageIndex: z.number().default(1).optional(),\r\n pageSize: z.number().default(10).optional(),\r\n searchPlaceholder: z.string().default('Buscar...').optional(),\r\n context: z.any().optional(),\r\n});\r\n\r\nexport type TableResource = z.infer<typeof TableResourceSchema>;\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n signal,\r\n computed,\r\n ViewContainerRef,\r\n ViewChild,\r\n EnvironmentInjector,\r\n createComponent,\r\n effect,\r\n ChangeDetectionStrategy,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { DocViewerResource, ComponentVariant, DocTab } from './doc-viewer.resources';\r\n\r\n@Component({\r\n selector: 'ad-doc-viewer',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './doc-viewer.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AdDocViewerComponent implements AfterViewInit {\r\n // Inputs\r\n resource = input.required<DocViewerResource>();\r\n showCode = input<boolean>(true);\r\n showApi = input<boolean>(true);\r\n\r\n id = computed(() => this.resource().id);\r\n name = computed(() => this.resource().name);\r\n category = computed(() => this.resource().category);\r\n description = computed(() => this.resource().description);\r\n selector = computed(() => this.resource().selector);\r\n codeSnippet = computed(() => this.resource().codeSnippet);\r\n api = computed(() => this.resource().api);\r\n variants = computed(() => this.resource().variants);\r\n\r\n // Outputs\r\n tabChange = output<DocTab>();\r\n\r\n // Estado interno\r\n activeTab = signal<DocTab>('preview');\r\n activeVariant = signal<string>('');\r\n copied = signal<boolean>(false);\r\n viewReady = signal<boolean>(false);\r\n\r\n // Tabs disponibles\r\n readonly tabs = computed(() => [\r\n { id: 'preview' as DocTab, label: 'Preview' },\r\n ...(this.showApi() ? [{ id: 'api' as DocTab, label: 'API' }] : []),\r\n ...(this.showCode() ? [{ id: 'code' as DocTab, label: 'Código' }] : []),\r\n ]);\r\n\r\n @ViewChild('previewHost', { read: ViewContainerRef })\r\n previewHost!: ViewContainerRef;\r\n\r\n constructor(private readonly injector: EnvironmentInjector) {\r\n effect(() => {\r\n const res = this.resource();\r\n const tab = this.activeTab();\r\n // viewReady se activará en ngAfterViewInit\r\n if (this.viewReady() && tab === 'preview') {\r\n this.renderPreview(res);\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.viewReady.set(true);\r\n if (this.activeTab() === 'preview') {\r\n this.renderPreview(this.resource());\r\n }\r\n }\r\n\r\n setTab(tab: DocTab): void {\r\n this.activeTab.set(tab);\r\n this.tabChange.emit(tab);\r\n if (tab === 'preview') {\r\n // Pequeño delay para que el ViewChild esté disponible tras el @if\r\n setTimeout(() => this.renderPreview(this.resource()), 0);\r\n }\r\n }\r\n\r\n setVariant(variant: ComponentVariant): void {\r\n this.activeVariant.set(variant.label);\r\n this.renderPreview(this.resource(), variant.resource);\r\n }\r\n\r\n copyCode(): void {\r\n navigator.clipboard.writeText(this.resource().codeSnippet).then(() => {\r\n this.copied.set(true);\r\n setTimeout(() => this.copied.set(false), 2000);\r\n });\r\n }\r\n\r\n private renderPreview(\r\n res: DocViewerResource,\r\n overrideResource?: Record<string, unknown>\r\n ): void {\r\n if (!this.previewHost) return;\r\n this.previewHost.clear();\r\n try {\r\n const ref = createComponent(res.component as Parameters<typeof createComponent>[0], {\r\n environmentInjector: this.injector,\r\n elementInjector: this.previewHost.injector,\r\n });\r\n const inputs = overrideResource ?? res.previewResource ?? {};\r\n Object.entries(inputs).forEach(([key, val]) => {\r\n try { ref.setInput(key, val); } catch { /* input no encontrado, se ignora */ }\r\n });\r\n this.previewHost.insert(ref.hostView);\r\n } catch (e) {\r\n console.warn('[ad-doc-viewer] No se pudo renderizar el preview:', e);\r\n }\r\n }\r\n}\r\n","<section class=\"flex flex-col gap-6 p-6 bg-white rounded-2xl border border-stone-200 shadow-sm\">\r\n\r\n <!-- Header del componente -->\r\n <div class=\"flex items-start justify-between\">\r\n <div class=\"flex flex-col gap-1\">\r\n <div class=\"flex items-center gap-2 flex-wrap\">\r\n <span\r\n class=\"text-xs font-semibold px-2 py-0.5 rounded-full bg-sky-100 text-sky-700 uppercase tracking-wide\">\r\n {{ category() }}\r\n </span>\r\n <code class=\"text-xs px-2 py-0.5 rounded-md bg-stone-100 text-stone-600 font-mono\">\r\n {{ selector() }}\r\n </code>\r\n </div>\r\n <h2 class=\"text-xl font-bold text-stone-900 mt-1\">{{ name() }}</h2>\r\n <p class=\"text-sm text-stone-500 max-w-xl\">{{ description() }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Tabs de navegación -->\r\n <div class=\"flex gap-1 border-b border-stone-200\">\r\n @for (tab of tabs(); track tab.id) {\r\n <button\r\n class=\"px-4 py-2 text-sm font-medium transition-colors rounded-t-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-sky-500\"\r\n [class]=\"activeTab() === tab.id\r\n ? 'text-sky-600 border-b-2 border-sky-600 -mb-px bg-sky-50'\r\n : 'text-stone-500 hover:text-stone-700 hover:bg-stone-50'\" (click)=\"setTab(tab.id)\"\r\n [attr.aria-selected]=\"activeTab() === tab.id\" role=\"tab\">\r\n {{ tab.label }}\r\n </button>\r\n }\r\n </div>\r\n\r\n <!-- Panel: Preview -->\r\n @if (activeTab() === 'preview') {\r\n <div class=\"flex flex-col gap-4\">\r\n <!-- Canvas con fondo ajedrezado -->\r\n <div class=\"flex items-center justify-center min-h-40 rounded-xl border border-dashed border-stone-300\r\n p-8 overflow-auto\"\r\n style=\"background-image: linear-gradient(45deg, #f5f5f4 25%, transparent 25%, transparent 75%, #f5f5f4 75%, #f5f5f4), linear-gradient(45deg, #f5f5f4 25%, transparent 25%, transparent 75%, #f5f5f4 75%, #f5f5f4); background-size: 16px 16px; background-position: 0 0, 8px 8px;\">\r\n <ng-container #previewHost></ng-container>\r\n </div>\r\n\r\n <!-- Variantes -->\r\n @if (variants()?.length) {\r\n <div class=\"flex flex-wrap gap-2\">\r\n <span\r\n class=\"text-xs font-semibold text-stone-400 uppercase tracking-wider self-center mr-1\">Variante:</span>\r\n @for (variant of variants()!; track variant.label) {\r\n <button\r\n class=\"px-3 py-1.5 text-xs font-medium rounded-lg border transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-sky-500\"\r\n [class]=\"activeVariant() === variant.label\r\n ? 'bg-sky-600 border-sky-600 text-white shadow-sm'\r\n : 'border-stone-300 text-stone-600 hover:border-sky-400 hover:text-sky-600 bg-white'\"\r\n (click)=\"setVariant(variant)\">\r\n {{ variant.label }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <!-- Panel: API -->\r\n @if (activeTab() === 'api' && showApi()) {\r\n <div class=\"flex flex-col gap-6\">\r\n\r\n <!-- Inputs -->\r\n @if (api().inputs.length) {\r\n <div class=\"flex flex-col gap-2\">\r\n <h3 class=\"text-xs font-semibold text-stone-500 uppercase tracking-widest\">Inputs</h3>\r\n <div class=\"overflow-hidden rounded-xl border border-stone-200\">\r\n <table class=\"w-full text-sm\">\r\n <thead class=\"bg-stone-50 text-stone-500 text-left\">\r\n <tr>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Nombre</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Tipo</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Requerido</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Default</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Descripción</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (inp of api().inputs; track inp.name) {\r\n <tr class=\"border-t border-stone-100 hover:bg-stone-50 transition-colors\">\r\n <td class=\"px-4 py-3\">\r\n <code class=\"text-sky-600 font-mono text-xs\">{{ inp.name }}</code>\r\n </td>\r\n <td class=\"px-4 py-3\">\r\n <code class=\"text-emerald-600 font-mono text-xs\">{{ inp.type }}</code>\r\n </td>\r\n <td class=\"px-4 py-3\">\r\n @if (inp.required) {\r\n <span\r\n class=\"text-xs px-1.5 py-0.5 rounded-full bg-rose-100 text-rose-600 font-medium\">Sí</span>\r\n } @else {\r\n <span class=\"text-xs px-1.5 py-0.5 rounded-full bg-stone-100 text-stone-500\">No</span>\r\n }\r\n </td>\r\n <td class=\"px-4 py-3 text-stone-400 font-mono text-xs\">{{ inp.defaultValue || '—' }}</td>\r\n <td class=\"px-4 py-3 text-stone-600 text-xs\">{{ inp.description }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Outputs -->\r\n @if (api().outputs.length) {\r\n <div class=\"flex flex-col gap-2\">\r\n <h3 class=\"text-xs font-semibold text-stone-500 uppercase tracking-widest\">Outputs</h3>\r\n <div class=\"overflow-hidden rounded-xl border border-stone-200\">\r\n <table class=\"w-full text-sm\">\r\n <thead class=\"bg-stone-50 text-stone-500 text-left\">\r\n <tr>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Nombre</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Tipo de Evento</th>\r\n <th class=\"px-4 py-2.5 font-medium text-xs\">Descripción</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for (out of api().outputs; track out.name) {\r\n <tr class=\"border-t border-stone-100 hover:bg-stone-50 transition-colors\">\r\n <td class=\"px-4 py-3\">\r\n <code class=\"text-amber-600 font-mono text-xs\">({{ out.name }})</code>\r\n </td>\r\n <td class=\"px-4 py-3\">\r\n <code class=\"text-emerald-600 font-mono text-xs\">{{ out.eventType }}</code>\r\n </td>\r\n <td class=\"px-4 py-3 text-stone-600 text-xs\">{{ out.description }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (!api().inputs.length && !api().outputs.length) {\r\n <p class=\"text-sm text-stone-400 italic\">No hay API documentada para este componente.</p>\r\n }\r\n\r\n </div>\r\n }\r\n\r\n <!-- Panel: Código -->\r\n @if (activeTab() === 'code' && showCode()) {\r\n <div class=\"relative rounded-xl overflow-hidden border border-stone-200\">\r\n <!-- Toolbar del bloque de código -->\r\n <div class=\"flex items-center justify-between px-4 py-2.5 bg-stone-800\">\r\n <span class=\"text-xs text-stone-400 font-mono uppercase tracking-wider\">HTML</span>\r\n <button\r\n class=\"text-xs flex items-center gap-1.5 transition-colors px-2 py-1 rounded focus:outline-none focus-visible:ring-2 focus-visible:ring-sky-500\"\r\n [class]=\"copied() ? 'text-emerald-400 font-medium' : 'text-stone-400 hover:text-white'\"\r\n (click)=\"copyCode()\">\r\n @if (copied()) {\r\n <span>✓ Copiado</span>\r\n } @else {\r\n <span>Copiar</span>\r\n }\r\n </button>\r\n </div>\r\n <!-- Bloque de código -->\r\n <pre\r\n class=\"bg-stone-900 p-5 overflow-x-auto text-sm font-mono text-stone-200 leading-relaxed whitespace-pre m-0\">{{ codeSnippet() }}</pre>\r\n </div>\r\n }\r\n\r\n</section>","import { Type } from '@angular/core';\r\nimport { z } from 'zod';\r\n\r\nexport const ComponentApiInputSchema = z.object({\r\n name: z.string(),\r\n type: z.string(),\r\n required: z.boolean(),\r\n defaultValue: z.string(),\r\n description: z.string(),\r\n});\r\n\r\nexport const ComponentApiOutputSchema = z.object({\r\n name: z.string(),\r\n eventType: z.string(),\r\n description: z.string(),\r\n});\r\n\r\nexport const ComponentVariantSchema = z.object({\r\n label: z.string(),\r\n resource: z.record(z.string(), z.unknown()),\r\n});\r\n\r\nexport const DocViewerResourceSchema = z.object({\r\n /** Metadatos de identificación */\r\n id: z.string(),\r\n name: z.string(),\r\n category: z.enum(['atom', 'molecule', 'organism', 'template']),\r\n description: z.string(),\r\n\r\n /** Selector Angular del componente */\r\n selector: z.string(),\r\n\r\n /** Referencia al componente Angular para preview dinámico */\r\n component: z.custom<Type<unknown>>(),\r\n\r\n /** Ejemplo de código de integración (string) */\r\n codeSnippet: z.string(),\r\n\r\n /** API del componente */\r\n api: z.object({\r\n inputs: z.array(ComponentApiInputSchema),\r\n outputs: z.array(ComponentApiOutputSchema),\r\n }),\r\n\r\n /** Recurso de ejemplo pre-configurado para el preview (inputs individuales) */\r\n previewResource: z.record(z.string(), z.unknown()).optional(),\r\n\r\n /** Variantes (states) a mostrar en el preview */\r\n variants: z.array(ComponentVariantSchema).optional(),\r\n});\r\n\r\nexport type ComponentApiInput = z.infer<typeof ComponentApiInputSchema>;\r\nexport type ComponentApiOutput = z.infer<typeof ComponentApiOutputSchema>;\r\nexport type ComponentVariant = z.infer<typeof ComponentVariantSchema>;\r\nexport type DocViewerResource = z.infer<typeof DocViewerResourceSchema>;\r\n\r\nexport type DocTab = 'preview' | 'api' | 'code';\r\n","import { Component, input, output, signal, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { AdSidebarComponent } from '../../organisms/sidebar/sidebar.component';\r\nimport { AdCardComponent } from '../../../public-api';\r\nimport { AdHeaderComponent } from '../../organisms/header/header.component';\r\nimport { SidebarResource } from '../../organisms/sidebar/sidebar.resources';\r\nimport { AdminLayoutResource } from './admin-layout.resources';\r\n\r\n@Component({\r\n selector: 'ad-admin-layout',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterLink,\r\n RouterLinkActive,\r\n AdSidebarComponent,\r\n AdCardComponent,\r\n AdHeaderComponent\r\n ],\r\n templateUrl: './admin-layout.component.html',\r\n styleUrls: ['./admin-layout.component.scss']\r\n})\r\nexport class AdAdminLayoutComponent {\r\n // Inputs as Signals\r\n resource = input.required<AdminLayoutResource>();\r\n\r\n user = computed(() => this.resource().user);\r\n menuItems = computed(() => this.resource().menuItems);\r\n notificationsCount = computed(() => this.resource().notificationsCount ?? 0);\r\n\r\n // Derived Resources\r\n headerResource = computed(() => ({\r\n user: this.user(),\r\n notificationsCount: this.notificationsCount()\r\n }));\r\n\r\n sidebarResource = computed<SidebarResource>(() => ({\r\n menuItems: this.menuItems(),\r\n collapsed: this.isSidebarCollapsed()\r\n }));\r\n\r\n // Outputs\r\n logout = output<void>();\r\n navigateProfile = output<void>();\r\n toggleTheme = output<boolean>();\r\n\r\n // State Signals\r\n isMobileMenuOpen = signal(false);\r\n isSidebarCollapsed = signal(false);\r\n\r\n toggleMobileMenu() {\r\n this.isMobileMenuOpen.update(v => !v);\r\n }\r\n\r\n closeMobileMenu() {\r\n this.isMobileMenuOpen.set(false);\r\n }\r\n\r\n toggleSidebar() {\r\n this.isSidebarCollapsed.update(v => !v);\r\n }\r\n}\r\n","<div class=\"flex h-screen bg-[#F4F7FE] font-sans overflow-hidden transition-colors duration-300\">\r\n <!-- Sidebar -->\r\n <ad-sidebar class=\"hidden md:flex h-full z-30\" [resource]=\"sidebarResource()\" (toggleCollapse)=\"toggleSidebar()\">\r\n </ad-sidebar>\r\n\r\n <!-- Main Content Wrapper -->\r\n <div class=\"flex-1 flex flex-col relative overflow-hidden\">\r\n\r\n <!-- HEADER JOINING SIDEBAR AND CONTENT -->\r\n <ad-header [resource]=\"headerResource()\" (toggleSidebar)=\"toggleSidebar()\"\r\n (toggleMobileMenu)=\"toggleMobileMenu()\" (logout)=\"logout.emit()\" (navigateProfile)=\"navigateProfile.emit()\"\r\n (toggleTheme)=\"toggleTheme.emit($event)\">\r\n </ad-header>\r\n\r\n <!-- DASHBOARD CONTENT AREA / WRAPPER -->\r\n <main class=\"flex-1 overflow-y-auto p-6 md:p-10 bg-gradient-to-b from-white/50 to-transparent scroll-smooth\">\r\n <!-- The routed content will be projected here. \r\n The user's snippet had specific dashboard stats here.\r\n We provide the container, and the Router Outlet content (e.g. DashboardComponent) \r\n should implement the Grid/Cards.\r\n However, to match the \"Card on Canvas\" look for general pages, we can wrap the router outlet.\r\n -->\r\n <div class=\"max-w-7xl mx-auto h-full animate-fade-in-up\">\r\n <ad-card [resource]=\"{ title: '' }\">\r\n <ng-content></ng-content>\r\n </ad-card>\r\n </div>\r\n </main>\r\n\r\n <!-- Mobile Sidebar Overlay -->\r\n @if (isMobileMenuOpen()) {\r\n <div class=\"relative z-50 md:hidden\" role=\"dialog\" aria-modal=\"true\">\r\n <div class=\"fixed inset-0 bg-slate-900/80 transition-opacity backdrop-blur-sm\" (click)=\"closeMobileMenu()\">\r\n </div>\r\n <div class=\"fixed inset-0 flex\">\r\n <div\r\n class=\"relative flex w-full max-w-xs flex-1 flex-col bg-[#002B5B] pb-4 pt-5 transition-transform shadow-2xl\">\r\n <div class=\"flex items-center justify-between px-4 pb-4 border-b border-white/10\">\r\n <div class=\"flex items-center text-white\">\r\n <span class=\"text-xl font-bold tracking-tight\">Cerca</span>\r\n <span\r\n class=\"ml-2 text-[10px] font-bold bg-white/10 px-1.5 py-0.5 rounded tracking-widest text-slate-300 border border-white/10\">ADMIN</span>\r\n </div>\r\n <button (click)=\"closeMobileMenu()\" class=\"text-slate-400 hover:text-white\">\r\n <span class=\"material-icons-outlined\">close</span>\r\n </button>\r\n </div>\r\n <nav class=\"flex-1 overflow-y-auto px-4 py-6 space-y-2\">\r\n @for (item of menuItems(); track item.route) {\r\n <a [routerLink]=\"item.route\" (click)=\"closeMobileMenu()\"\r\n [routerLinkActive]=\"['bg-[#0081C9]', 'text-white', 'shadow-lg']\"\r\n [routerLinkActiveOptions]=\"{ exact: item.exact || false }\"\r\n class=\"group flex items-center px-4 py-3 text-sm font-medium text-slate-300 rounded-xl hover:bg-white/5 hover:text-white transition-all duration-200\">\r\n <span class=\"material-icons-outlined text-[20px] mr-3 transition-colors\"\r\n [class.text-white]=\"false\" [class.group-hover:text-blue-300]=\"true\">\r\n {{ item.icon }}\r\n </span>\r\n {{ item.label }}\r\n </a>\r\n }\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>","import { z } from 'zod';\r\nimport { UserSchema } from '../../organisms/header/header.resources';\r\nimport { NavItemSchema } from '../../organisms/sidebar/sidebar.resources';\r\n\r\nexport const AdminLayoutResourceSchema = z.object({\r\n user: UserSchema,\r\n menuItems: z.array(NavItemSchema),\r\n notificationsCount: z.number().default(0).optional(),\r\n});\r\n\r\nexport type AdminLayoutResource = z.infer<typeof AdminLayoutResourceSchema>;\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AuthLayoutResource } from './auth-layout.resources';\r\n\r\n@Component({\r\n selector: 'ad-auth-layout',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './auth-layout.component.html',\r\n styleUrls: ['./auth-layout.component.scss']\r\n})\r\nexport class AdAuthLayoutComponent {\r\n resource = input.required<AuthLayoutResource>();\r\n backgroundType = computed(() => this.resource().backgroundType ?? 'gradient');\r\n}\r\n","<div class=\"ad-auth-layout\" [ngClass]=\"'bg-' + backgroundType()\">\r\n <div class=\"ad-auth-container\">\r\n <div class=\"ad-auth-card\">\r\n <div class=\"ad-auth-logo\">\r\n <!-- Espacio para logo -->\r\n <div class=\"ad-auth-logo-placeholder\">CERCA</div>\r\n </div>\r\n\r\n <div class=\"ad-auth-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const AuthLayoutResourceSchema = z.object({\r\n backgroundType: z.enum(['gradient', 'image', 'simple']).default('gradient').optional(),\r\n});\r\n\r\nexport type AuthLayoutResource = z.infer<typeof AuthLayoutResourceSchema>;\r\n","import { Component, Input, HostBinding } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-grid',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './grid.component.html',\r\n styleUrls: ['./grid.component.scss']\r\n})\r\nexport class AdGridComponent {\r\n @Input() cols: number = 1;\r\n @Input() colsMd?: number;\r\n @Input() colsLg?: number;\r\n @Input() gap: number = 4;\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return [\r\n `ad-grid-cols-${this.cols}`,\r\n this.colsMd ? `ad-grid-cols-md-${this.colsMd}` : '',\r\n this.colsLg ? `ad-grid-cols-lg-${this.colsLg}` : '',\r\n `ad-grid-gap-${this.gap}`\r\n ].filter(Boolean).join(' ');\r\n }\r\n}\r\n","<div class=\"ad-grid\">\r\n <ng-content></ng-content>\r\n</div>","import { Component, input, HostBinding, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ad-stack',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './stack.component.html',\r\n styleUrls: ['./stack.component.scss']\r\n})\r\nexport class AdStackComponent {\r\n gap = input<number | string>(4);\r\n align = input<'start' | 'center' | 'end' | 'stretch'>('stretch');\r\n justify = input<'start' | 'center' | 'end' | 'between'>('start');\r\n\r\n @HostBinding('style.gap')\r\n get gapStyle(): string {\r\n const g = this.gap();\r\n return typeof g === 'number' ? `var(--space-${g})` : g;\r\n }\r\n\r\n @HostBinding('style.align-items')\r\n get alignStyle(): string {\r\n const map = { start: 'flex-start', center: 'center', end: 'flex-end', stretch: 'stretch' };\r\n return map[this.align()];\r\n }\r\n\r\n @HostBinding('style.justify-content')\r\n get justifyStyle(): string {\r\n const map = { start: 'flex-start', center: 'center', end: 'flex-end', between: 'space-between' };\r\n const j = this.justify();\r\n if (j === 'between') return 'space-between';\r\n return (map as any)[j] || 'flex-start';\r\n }\r\n}\r\n","<ng-content></ng-content>","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdGridComponent } from '../../layout/grid/grid.component';\r\nimport { AdStackComponent } from '../../layout/stack/stack.component';\r\nimport { DashboardTemplateResource } from './dashboard-template.resources';\r\n\r\n@Component({\r\n selector: 'ad-dashboard-template',\r\n standalone: true,\r\n imports: [CommonModule, AdGridComponent, AdStackComponent],\r\n templateUrl: './dashboard-template.component.html',\r\n styleUrls: ['./dashboard-template.component.scss']\r\n})\r\nexport class AdDashboardTemplateComponent {\r\n resource = input.required<DashboardTemplateResource>();\r\n title = computed(() => this.resource().title ?? 'Escritorio');\r\n subtitle = computed(() => this.resource().subtitle);\r\n}\r\n","<div class=\"ad-dashboard-template\">\r\n <header class=\"ad-dashboard-header\">\r\n <ad-stack [gap]=\"1\">\r\n <h1 class=\"ad-dashboard-title\">{{ title() }}</h1>\r\n @if (subtitle()) {\r\n <p class=\"ad-dashboard-subtitle\">{{ subtitle() }}</p>\r\n }\r\n </ad-stack>\r\n <div class=\"ad-dashboard-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n <ad-grid [cols]=\"1\" [colsMd]=\"2\" [colsLg]=\"4\" [gap]=\"6\" class=\"ad-dashboard-metrics\">\r\n <ng-content select=\"[metrics]\"></ng-content>\r\n </ad-grid>\r\n\r\n <ad-grid [cols]=\"1\" [colsLg]=\"3\" [gap]=\"6\" class=\"ad-dashboard-main\">\r\n <div class=\"ad-dashboard-primary-content\">\r\n <ng-content select=\"[main-content]\"></ng-content>\r\n </div>\r\n <aside class=\"ad-dashboard-secondary-content\">\r\n <ng-content select=\"[sidebar-content]\"></ng-content>\r\n </aside>\r\n </ad-grid>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const DashboardTemplateResourceSchema = z.object({\r\n title: z.string().default('Escritorio').optional(),\r\n subtitle: z.string().optional(),\r\n});\r\n\r\nexport type DashboardTemplateResource = z.infer<typeof DashboardTemplateResourceSchema>;\r\n","import { Component, input, signal, ViewEncapsulation, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { DocumentationWrapperResource } from './documentation-wrapper.resources';\r\n\r\n@Component({\r\n selector: 'ad-documentation-wrapper',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n <div class=\"space-y-6\">\r\n <!-- Header -->\r\n <div class=\"flex items-center justify-between border-b-2 border-stone-100 dark:border-cerca-primary-hover pb-2\">\r\n <h2 class=\"text-2xl font-bold text-stone-800 dark:text-white\">{{ title() }}</h2>\r\n @if (status() === 'new') {\r\n <span class=\"bg-emerald-100 text-emerald-800 text-xs font-medium px-2.5 py-0.5 rounded dark:bg-emerald-900 dark:text-emerald-300\">New</span>\r\n } @else if (status() === 'updated') {\r\n <span class=\"bg-sky-100 text-sky-800 text-xs font-medium px-2.5 py-0.5 rounded dark:bg-sky-900 dark:text-sky-300\">Updated</span>\r\n }\r\n </div>\r\n\r\n <!-- Description -->\r\n <div class=\"p-4 bg-yellow-50 border-l-4 border-yellow-400 text-stone-700 dark:bg-yellow-900/10 dark:text-yellow-100 dark:border-yellow-600\">\r\n <p>{{ description() }}</p>\r\n </div>\r\n\r\n <!-- Tabs -->\r\n <div class=\"border-b border-stone-200 dark:border-cerca-primary\">\r\n <nav class=\"-mb-px flex space-x-8\" aria-label=\"Tabs\">\r\n <button \r\n (click)=\"activeTab.set('preview')\"\r\n [class.border-sky-500]=\"activeTab() === 'preview'\"\r\n [class.text-sky-600]=\"activeTab() === 'preview'\"\r\n [class.dark:text-sky-400]=\"activeTab() === 'preview'\"\r\n [class.border-transparent]=\"activeTab() !== 'preview'\"\r\n [class.text-stone-500]=\"activeTab() !== 'preview'\"\r\n [class.hover:text-stone-700]=\"activeTab() !== 'preview'\"\r\n [class.hover:border-stone-300]=\"activeTab() !== 'preview'\"\r\n class=\"whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm transition-colors duration-200\">\r\n Preview\r\n </button>\r\n\r\n @if (code()) {\r\n <button \r\n (click)=\"activeTab.set('code')\"\r\n [class.border-sky-500]=\"activeTab() === 'code'\"\r\n [class.text-sky-600]=\"activeTab() === 'code'\"\r\n [class.dark:text-sky-400]=\"activeTab() === 'code'\"\r\n [class.border-transparent]=\"activeTab() !== 'code'\"\r\n [class.text-stone-500]=\"activeTab() !== 'code'\"\r\n [class.hover:text-stone-700]=\"activeTab() !== 'code'\"\r\n [class.hover:border-stone-300]=\"activeTab() !== 'code'\"\r\n class=\"whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm transition-colors duration-200\">\r\n Code\r\n </button>\r\n }\r\n\r\n @if (componentResource()) {\r\n <button \r\n (click)=\"activeTab.set('resource')\"\r\n [class.border-sky-500]=\"activeTab() === 'resource'\"\r\n [class.text-sky-600]=\"activeTab() === 'resource'\"\r\n [class.dark:text-sky-400]=\"activeTab() === 'resource'\"\r\n [class.border-transparent]=\"activeTab() !== 'resource'\"\r\n [class.text-stone-500]=\"activeTab() !== 'resource'\"\r\n [class.hover:text-stone-700]=\"activeTab() !== 'resource'\"\r\n [class.hover:border-stone-300]=\"activeTab() !== 'resource'\"\r\n class=\"whitespace-nowrap py-4 px-1 border-b-2 font-medium text-sm transition-colors duration-200\">\r\n Resource\r\n </button>\r\n }\r\n </nav>\r\n </div>\r\n\r\n <!-- Tab Content -->\r\n <div class=\"mt-4\">\r\n @switch (activeTab()) {\r\n @case ('preview') {\r\n <div class=\"p-6 bg-stone-50 rounded-lg border border-stone-200 dark:bg-cerca-primary-active dark:border-cerca-primary\">\r\n <ng-content></ng-content>\r\n </div>\r\n }\r\n @case ('code') {\r\n <div class=\"relative group\">\r\n <div class=\"absolute right-2 top-2 opacity-0 group-hover:opacity-100 transition-opacity\">\r\n <button (click)=\"copyToClipboard(code()!)\" class=\"p-1 rounded bg-stone-700 text-white hover:bg-stone-600 text-xs\">Copy</button>\r\n </div>\r\n <pre class=\"p-4 bg-stone-900 text-stone-50 rounded-lg overflow-x-auto text-sm font-mono leading-relaxed\"><code>{{ code() }}</code></pre>\r\n </div>\r\n }\r\n @case ('resource') {\r\n <div class=\"relative group\">\r\n <div class=\"absolute right-2 top-2 opacity-0 group-hover:opacity-100 transition-opacity\">\r\n <button (click)=\"copyToClipboard(componentResource()!)\" class=\"p-1 rounded bg-stone-700 text-white hover:bg-stone-600 text-xs\">Copy</button>\r\n </div>\r\n <pre class=\"p-4 bg-stone-900 text-stone-50 rounded-lg overflow-x-auto text-sm font-mono leading-relaxed\"><code>{{ componentResource() }}</code></pre>\r\n </div>\r\n }\r\n }\r\n </div>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AdDocumentationWrapperComponent {\r\n wrapperResource = input.required<DocumentationWrapperResource>({ alias: 'resource' });\r\n\r\n title = computed(() => this.wrapperResource().title);\r\n description = computed(() => this.wrapperResource().description);\r\n code = computed(() => this.wrapperResource().code);\r\n componentResource = computed(() => this.wrapperResource().componentResource);\r\n status = computed(() => this.wrapperResource().status ?? 'stable');\r\n\r\n activeTab = signal<'preview' | 'code' | 'resource'>('preview');\r\n\r\n copyToClipboard(text: string) {\r\n navigator.clipboard.writeText(text);\r\n // Could add toast notification here\r\n }\r\n}\r\n","import { z } from 'zod';\r\n\r\nexport const DocStatusSchema = z.enum(['new', 'updated', 'stable']);\r\nexport type DocStatus = z.infer<typeof DocStatusSchema>;\r\n\r\nexport const DocumentationWrapperResourceSchema = z.object({\r\n title: z.string(),\r\n description: z.string(),\r\n code: z.string().optional(),\r\n componentResource: z.string().optional(),\r\n status: z.enum(['new', 'updated', 'stable']).default('stable').optional(),\r\n});\r\n\r\nexport type DocumentationWrapperResource = z.infer<typeof DocumentationWrapperResourceSchema>;\r\n","import { Component, input, ViewEncapsulation, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormLayoutResource } from './form-layout.resources';\r\n\r\n@Component({\r\n selector: 'ad-form-layout',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: `\r\n <form class=\"grid grid-cols-1 md:grid-cols-12 gap-6 items-start\">\r\n <ng-content></ng-content>\r\n\r\n <!-- Footer Actions -->\r\n <div class=\"md:col-span-12 mt-6 flex justify-end gap-3 border-t border-stone-200 dark:border-cerca-primary pt-6\">\r\n <ng-content select=\"[footer-actions]\"></ng-content>\r\n </div>\r\n </form>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AdFormLayoutComponent {\r\n resource = input.required<FormLayoutResource>();\r\n gap = computed(() => this.resource().gap ?? 'md');\r\n}\r\n","import { z } from 'zod';\r\n\r\nexport const FormLayoutResourceSchema = z.object({\r\n gap: z.enum(['sm', 'md', 'lg']).default('md').optional(),\r\n});\r\n\r\nexport type FormLayoutResource = z.infer<typeof FormLayoutResourceSchema>;\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdStackComponent } from '../../layout/stack/stack.component';\r\nimport { FormPageTemplateResource } from './form-page-template.resources';\r\n\r\n@Component({\r\n selector: 'ad-form-page-template',\r\n standalone: true,\r\n imports: [CommonModule, AdStackComponent],\r\n templateUrl: './form-page-template.component.html',\r\n styleUrls: ['./form-page-template.component.scss']\r\n})\r\nexport class AdFormPageTemplateComponent {\r\n resource = input.required<FormPageTemplateResource>();\r\n title = computed(() => this.resource().title ?? '');\r\n backUrl = computed(() => this.resource().backUrl);\r\n loading = computed(() => this.resource().loading ?? false);\r\n}\r\n","<div class=\"ad-form-page\">\r\n <header class=\"ad-form-page-header\">\r\n <ad-stack [gap]=\"1\">\r\n <div class=\"ad-form-page-nav\">\r\n <ng-content select=\"[back-button]\"></ng-content>\r\n </div>\r\n <h1 class=\"ad-form-page-title\">{{ title() }}</h1>\r\n </ad-stack>\r\n <div class=\"ad-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=\"ad-form-page-main\">\r\n <div class=\"ad-form-page-card\">\r\n <ng-content select=\"[form-content]\"></ng-content>\r\n </div>\r\n </main>\r\n\r\n <footer class=\"ad-form-page-footer\">\r\n <ng-content select=\"[form-actions]\"></ng-content>\r\n </footer>\r\n\r\n @if (loading()) {\r\n <div class=\"ad-form-page-loading-overlay\">\r\n <div class=\"ad-form-page-spinner\"></div>\r\n </div>\r\n }\r\n</div>","import { z } from 'zod';\r\n\r\nexport const FormPageTemplateResourceSchema = z.object({\r\n title: z.string().default(''),\r\n backUrl: z.string().optional(),\r\n loading: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type FormPageTemplateResource = z.infer<typeof FormPageTemplateResourceSchema>;\r\n","import { z } from 'zod';\r\n\r\nexport const FormSectionResourceSchema = z.object({\r\n title: z.string().optional(),\r\n cols: z.number().default(12).optional(),\r\n loading: z.boolean().default(false).optional(),\r\n});\r\n\r\nexport type FormSectionResource = z.infer<typeof FormSectionResourceSchema>;\r\n","import { Component, input, ContentChild, TemplateRef, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AdStackComponent } from '../../layout/stack/stack.component';\r\nimport { ListPageTemplateResource } from './list-page-template.resources';\r\n\r\n@Component({\r\n selector: 'ad-list-page-template',\r\n standalone: true,\r\n imports: [CommonModule, AdStackComponent],\r\n templateUrl: './list-page-template.component.html',\r\n styleUrls: ['./list-page-template.component.scss']\r\n})\r\nexport class AdListPageTemplateComponent {\r\n resource = input.required<ListPageTemplateResource>();\r\n title = computed(() => this.resource().title ?? '');\r\n description = computed(() => this.resource().description);\r\n hasFilters = computed(() => this.resource().hasFilters ?? true);\r\n\r\n @ContentChild('filters') filtersTemplate?: TemplateRef<any>;\r\n}\r\n","<div class=\"ad-list-page\">\r\n <header class=\"ad-page-header\">\r\n <ad-stack [gap]=\"1\">\r\n <h1 class=\"ad-page-title\">{{ title() }}</h1>\r\n @if (description()) {\r\n <p class=\"ad-page-description\">{{ description() }}</p>\r\n }\r\n </ad-stack>\r\n <div class=\"ad-page-actions\">\r\n <ng-content select=\"[actions]\"></ng-content>\r\n </div>\r\n </header>\r\n\r\n @if (hasFilters()) {\r\n <section class=\"ad-page-filters\">\r\n <ng-content select=\"[filters]\"></ng-content>\r\n </section>\r\n }\r\n\r\n <main class=\"ad-page-main\">\r\n <ng-content select=\"[table]\"></ng-content>\r\n </main>\r\n\r\n <footer class=\"ad-page-footer\">\r\n <ng-content select=\"[pagination]\"></ng-content>\r\n </footer>\r\n</div>","import { z } from 'zod';\r\n\r\nexport const ListPageTemplateResourceSchema = z.object({\r\n title: z.string().default(''),\r\n description: z.string().optional(),\r\n hasFilters: z.boolean().default(true).optional(),\r\n});\r\n\r\nexport type ListPageTemplateResource = z.infer<typeof ListPageTemplateResourceSchema>;\r\n","/*\r\n * Public API Surface of design-system\r\n */\r\n\r\nexport * from './lib/design-system';\r\nexport * from './lib/core';\r\nexport * from './lib/engines/form/form-engine.component';\r\nexport * from './lib/engines/form/form-engine.service';\r\nexport * from './lib/engines/table/table-engine.component';\r\n\r\n// Atoms\r\nexport * from './lib/atoms/button/button.component';\r\nexport * from './lib/atoms/input/input.component';\r\nexport * from './lib/atoms/select/select.component';\r\nexport * from './lib/atoms/badges/badge.component';\r\nexport * from './lib/atoms/icons/icon.component';\r\nexport * from './lib/atoms/labels/label.component';\r\nexport * from './lib/atoms/loading/loading.component';\r\nexport * from './lib/atoms/switch/switch.component';\r\n\r\n// Molecules\r\nexport * from './lib/molecules/admin-section-card/admin-section-card.component';\r\nexport * from './lib/molecules/admin-section-card/admin-section-card.resources';\r\nexport * from './lib/molecules/card/card.component';\r\nexport * from './lib/molecules/card/card.resources';\r\nexport * from './lib/molecules/description-header/description-header.component';\r\nexport * from './lib/molecules/description-header/description-header.resources';\r\nexport * from './lib/molecules/form-field/form-field.component';\r\nexport * from './lib/molecules/form-field/form-field.resources';\r\nexport * from './lib/molecules/modal-trigger/modal-trigger';\r\nexport * from './lib/molecules/modal-trigger/modal-trigger.resources';\r\nexport * from './lib/molecules/search-bar/search-bar.component';\r\nexport * from './lib/molecules/search-bar/search-bar.resources';\r\nexport * from './lib/molecules/stat-card/stat-card.component';\r\nexport * from './lib/molecules/stat-card/stat-card.resources';\r\n\r\n// Organisms\r\nexport * from './lib/organisms/data-table/data-table.component';\r\nexport * from './lib/organisms/data-table/data-table.resources';\r\nexport * from './lib/organisms/header/header.component';\r\nexport * from './lib/organisms/header/header.resources';\r\nexport * from './lib/organisms/login/login.component';\r\nexport * from './lib/organisms/login/login.component.resources';\r\nexport * from './lib/organisms/modal/modal.component';\r\nexport * from './lib/organisms/modal/modal.resources';\r\nexport * from './lib/organisms/sidebar/sidebar.component';\r\nexport * from './lib/organisms/sidebar/sidebar.resources';\r\nexport * from './lib/organisms/table/table.component';\r\nexport * from './lib/organisms/table/table.resources';\r\nexport * from './lib/organisms/doc-viewer/doc-viewer.component';\r\nexport * from './lib/organisms/doc-viewer/doc-viewer.resources';\r\n\r\n// Templates\r\nexport * from './lib/templates/admin-layout/admin-layout.component';\r\nexport * from './lib/templates/admin-layout/admin-layout.resources';\r\nexport * from './lib/templates/auth-layout/auth-layout.component';\r\nexport * from './lib/templates/auth-layout/auth-layout.resources';\r\nexport * from './lib/templates/dashboard-template/dashboard-template.component';\r\nexport * from './lib/templates/dashboard-template/dashboard-template.resources';\r\nexport * from './lib/templates/documentation-wrapper/documentation-wrapper.component';\r\nexport * from './lib/templates/documentation-wrapper/documentation-wrapper.resources';\r\nexport * from './lib/templates/form-layout/form-layout.component';\r\nexport * from './lib/templates/form-layout/form-layout.resources';\r\nexport * from './lib/templates/form-page-template/form-page-template.component';\r\nexport * from './lib/templates/form-page-template/form-page-template.resources';\r\nexport * from './lib/templates/form-section/form-section.component';\r\nexport * from './lib/templates/form-section/form-section.resources';\r\nexport * from './lib/templates/list-page-template/list-page-template.component';\r\nexport * from './lib/templates/list-page-template/list-page-template.resources';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","debounceTime","distinctUntilChanged"],"mappings":"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"}