@highstacklabs2026/ui 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"highstacklabs2026-ui.mjs","sources":["../../../../projects/highstack/ui/src/lib/atoms/button/button.component.ts","../../../../projects/highstack/ui/src/lib/atoms/button/button.component.html","../../../../projects/highstack/ui/src/public-api.ts","../../../../projects/highstack/ui/src/highstacklabs2026-ui.ts"],"sourcesContent":["import { Component, computed, input } from '@angular/core';\n\nexport type ButtonVariant =\n | 'default'\n | 'destructive'\n | 'outline'\n | 'ghost'\n | 'link'\n | 'secondary'\n | 'gradient'\n | 'glass';\nexport type ButtonSize = 'sm' | 'md' | 'lg' | 'icon';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './button.component.html',\n})\nexport class ButtonComponent {\n readonly variant = input<ButtonVariant>('default');\n readonly size = input<ButtonSize>('md');\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n\n protected readonly isDisabled = computed(() => this.disabled() || this.loading());\n\n protected readonly hostClasses = computed(() => {\n const base = [\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[var(--radius)]',\n 'text-sm font-medium transition-all',\n 'outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--color-ring)]/50',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'cursor-pointer',\n ].join(' ');\n\n const variantMap: Record<ButtonVariant, string> = {\n default:\n 'bg-[var(--color-primary)] text-[var(--color-primary-foreground)] shadow-xs hover:bg-[var(--color-primary)]/90',\n destructive:\n 'bg-[var(--color-destructive)] text-[var(--color-destructive-foreground)] shadow-xs hover:bg-[var(--color-destructive)]/90 focus-visible:ring-[var(--color-destructive)]/20',\n outline:\n 'border border-[var(--color-input)] bg-[var(--color-background)] shadow-xs hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)]',\n secondary:\n 'bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)] shadow-xs hover:bg-[var(--color-secondary)]/80',\n ghost:\n 'hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)]',\n link: 'text-[var(--color-primary)] underline-offset-4 hover:underline',\n gradient:\n 'bg-gradient-to-r from-zinc-900 to-zinc-700 text-white shadow-xs hover:from-zinc-800 hover:to-zinc-600',\n glass:\n 'backdrop-blur-2xl bg-white/10 border border-white/15 text-white/90 shadow-[0_1px_2px_rgba(0,0,0,0.1)] hover:bg-white/[0.18] active:bg-white/[0.12]',\n };\n\n const sizeMap: Record<ButtonSize, string> = {\n sm: 'h-8 px-3 gap-1.5',\n md: 'h-9 px-4 py-2',\n lg: 'h-10 px-6',\n icon: 'size-9',\n };\n\n return [base, variantMap[this.variant()], sizeMap[this.size()]].join(' ');\n });\n}\n","<button\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [class]=\"hostClasses()\"\n>\n @if (loading()) {\n <svg\n class=\"h-4 w-4 animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n ></path>\n </svg>\n }\n <ng-content />\n</button>\n","/*\n * Public API Surface of @highstacklabs2026/ui\n */\n\nexport * from './lib/atoms/button/button.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAiBa,eAAe,CAAA;IACjB,OAAO,GAAG,KAAK,CAAgB,SAAS;gFAAC;IACzC,IAAI,GAAG,KAAK,CAAa,IAAI;6EAAC;IAC9B,QAAQ,GAAG,KAAK,CAAU,KAAK;iFAAC;IAChC,OAAO,GAAG,KAAK,CAAU,KAAK;gFAAC;IAC/B,IAAI,GAAG,KAAK,CAAgC,QAAQ;6EAAC;AAE3C,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;mFAAC;AAE9D,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,IAAI,GAAG;YACX,yFAAyF;YACzF,oCAAoC;YACpC,iFAAiF;YACjF,kDAAkD;YAClD,gBAAgB;AACjB,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAEX,QAAA,MAAM,UAAU,GAAkC;AAChD,YAAA,OAAO,EACL,+GAA+G;AACjH,YAAA,WAAW,EACT,4KAA4K;AAC9K,YAAA,OAAO,EACL,sJAAsJ;AACxJ,YAAA,SAAS,EACP,qHAAqH;AACvH,YAAA,KAAK,EACH,4EAA4E;AAC9E,YAAA,IAAI,EAAE,gEAAgE;AACtE,YAAA,QAAQ,EACN,uGAAuG;AACzG,YAAA,KAAK,EACH,oJAAoJ;SACvJ;AAED,QAAA,MAAM,OAAO,GAA+B;AAC1C,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,EAAE,EAAE,eAAe;AACnB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,IAAI,EAAE,QAAQ;SACf;QAED,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3E,CAAC;oFAAC;uGA5CS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,wrBCjB5B,goBA6BA,EAAA,CAAA;;2FDZa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,goBAAA,EAAA;;;AEdvB;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"highstacklabs2026-ui.mjs","sources":["../../../../projects/highstack/ui/src/lib/atoms/accordion/accordion.component.ts","../../../../projects/highstack/ui/src/lib/atoms/accordion/accordion-item.component.html","../../../../projects/highstack/ui/src/lib/atoms/alert/alert.component.ts","../../../../projects/highstack/ui/src/lib/atoms/alert/alert.component.html","../../../../projects/highstack/ui/src/lib/atoms/avatar/avatar.component.ts","../../../../projects/highstack/ui/src/lib/atoms/avatar/avatar.component.html","../../../../projects/highstack/ui/src/lib/atoms/badge/badge.component.ts","../../../../projects/highstack/ui/src/lib/atoms/badge/badge.component.html","../../../../projects/highstack/ui/src/lib/atoms/breadcrumb/breadcrumb.component.ts","../../../../projects/highstack/ui/src/lib/atoms/breadcrumb/breadcrumb.component.html","../../../../projects/highstack/ui/src/lib/atoms/button/button.component.ts","../../../../projects/highstack/ui/src/lib/atoms/button/button.component.html","../../../../projects/highstack/ui/src/lib/atoms/card/card.component.ts","../../../../projects/highstack/ui/src/lib/atoms/checkbox/checkbox.component.ts","../../../../projects/highstack/ui/src/lib/atoms/checkbox/checkbox.component.html","../../../../projects/highstack/ui/src/lib/atoms/dropdown/dropdown.component.ts","../../../../projects/highstack/ui/src/lib/atoms/dropdown/dropdown.component.html","../../../../projects/highstack/ui/src/lib/atoms/input/input.component.ts","../../../../projects/highstack/ui/src/lib/atoms/input/input.component.html","../../../../projects/highstack/ui/src/lib/atoms/loading/loading.component.ts","../../../../projects/highstack/ui/src/lib/atoms/select/select.component.ts","../../../../projects/highstack/ui/src/lib/atoms/select/select.component.html","../../../../projects/highstack/ui/src/lib/atoms/pagination/pagination.component.ts","../../../../projects/highstack/ui/src/lib/atoms/pagination/pagination.component.html","../../../../projects/highstack/ui/src/lib/atoms/radio/radio.component.ts","../../../../projects/highstack/ui/src/lib/atoms/radio/radio.component.html","../../../../projects/highstack/ui/src/lib/atoms/table/table.types.ts","../../../../projects/highstack/ui/src/lib/atoms/table/table.component.ts","../../../../projects/highstack/ui/src/lib/atoms/table/table.component.html","../../../../projects/highstack/ui/src/lib/atoms/tabs/tabs.component.ts","../../../../projects/highstack/ui/src/lib/atoms/tabs/tabs.component.html","../../../../projects/highstack/ui/src/lib/atoms/textarea/textarea.component.ts","../../../../projects/highstack/ui/src/lib/atoms/textarea/textarea.component.html","../../../../projects/highstack/ui/src/lib/atoms/toast/toast.component.ts","../../../../projects/highstack/ui/src/lib/atoms/toast/toast.component.html","../../../../projects/highstack/ui/src/lib/atoms/toast/toaster.component.ts","../../../../projects/highstack/ui/src/lib/atoms/toast/toast.service.ts","../../../../projects/highstack/ui/src/lib/atoms/tooltip/tooltip.directive.ts","../../../../projects/highstack/ui/src/lib/atoms/switch/switch.component.ts","../../../../projects/highstack/ui/src/lib/atoms/switch/switch.component.html","../../../../projects/highstack/ui/src/lib/providers.ts","../../../../projects/highstack/ui/src/public-api.ts","../../../../projects/highstack/ui/src/highstacklabs2026-ui.ts"],"sourcesContent":["import {\n Component,\n booleanAttribute,\n computed,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nlet nextId = 0;\n\n/**\n * Acordeón compositional. `multiple` permite varios paneles abiertos; por\n * defecto solo uno (al abrir otro se cierra el anterior).\n */\n@Component({\n selector: 'ui-accordion',\n template: `<ng-content />`,\n host: { class: 'block divide-y divide-[var(--color-border)] border-y border-[var(--color-border)]' },\n})\nexport class AccordionComponent {\n readonly multiple = input(false, { transform: booleanAttribute });\n\n /** Ids de los items abiertos. */\n private readonly openIds = signal<Set<number>>(new Set());\n\n isOpen(id: number) {\n return this.openIds().has(id);\n }\n\n toggle(id: number) {\n this.openIds.update((set) => {\n const next = new Set(this.multiple() ? set : []);\n if (set.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n }\n}\n\n/** Un panel del acordeón. */\n@Component({\n selector: 'ui-accordion-item',\n templateUrl: './accordion-item.component.html',\n})\nexport class AccordionItemComponent {\n readonly title = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly accordion = inject(AccordionComponent);\n protected readonly id = nextId++;\n protected readonly contentId = `ui-accordion-panel-${this.id}`;\n\n protected readonly open = computed(() => this.accordion.isOpen(this.id));\n\n protected toggle() {\n if (!this.disabled()) this.accordion.toggle(this.id);\n }\n}\n","<h3>\n <button\n type=\"button\"\n (click)=\"toggle()\"\n [disabled]=\"disabled()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"contentId\"\n class=\"flex w-full items-center justify-between gap-3 py-4 text-left text-sm font-medium text-[var(--color-foreground)] transition-colors hover:text-[var(--color-foreground)]/80 disabled:opacity-50 disabled:cursor-not-allowed cursor-pointer outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] rounded-sm\"\n >\n <span>{{ title() }}</span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"shrink-0 text-[var(--color-muted-foreground)] transition-transform duration-200\"\n [class.rotate-180]=\"open()\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n</h3>\n\n<div\n [id]=\"contentId\"\n role=\"region\"\n class=\"grid transition-all duration-200\"\n [class.grid-rows-[1fr]]=\"open()\"\n [class.grid-rows-[0fr]]=\"!open()\"\n [class.opacity-100]=\"open()\"\n [class.opacity-0]=\"!open()\"\n>\n <div class=\"overflow-hidden\">\n <div class=\"pb-4 text-sm text-[var(--color-muted-foreground)]\">\n <ng-content />\n </div>\n </div>\n</div>\n","import { Component, booleanAttribute, computed, input, output } from '@angular/core';\n\nexport type AlertType = 'info' | 'success' | 'warning' | 'error';\nexport type AlertVariant = 'soft' | 'solid';\n\n/**\n * Mensaje contextual con color e ícono según el tipo. El cuerpo se proyecta;\n * `title` opcional en negrita. Cerrable con el output (close).\n */\n@Component({\n selector: 'ui-alert',\n templateUrl: './alert.component.html',\n host: { role: 'alert', '[class]': 'hostClasses()' },\n})\nexport class AlertComponent {\n readonly type = input<AlertType>('info');\n readonly variant = input<AlertVariant>('soft');\n readonly title = input<string>('');\n readonly closable = input(false, { transform: booleanAttribute });\n\n readonly close = output<void>();\n\n protected readonly hostClasses = computed(() => {\n const base = 'flex items-start gap-3 rounded-[var(--radius)] px-4 py-3 text-sm';\n\n const softMap: Record<AlertType, string> = {\n info: 'bg-[var(--color-primary)]/8 text-[var(--color-foreground)] border border-[var(--color-primary)]/20',\n success: 'bg-emerald-500/10 text-[var(--color-foreground)] border border-emerald-500/25',\n warning: 'bg-amber-500/10 text-[var(--color-foreground)] border border-amber-500/30',\n error:\n 'bg-[var(--color-destructive)]/10 text-[var(--color-foreground)] border border-[var(--color-destructive)]/25',\n };\n const solidMap: Record<AlertType, string> = {\n info: 'bg-[var(--color-primary)] text-[var(--color-primary-foreground)]',\n success: 'bg-emerald-500 text-white',\n warning: 'bg-amber-500 text-white',\n error: 'bg-[var(--color-destructive)] text-[var(--color-destructive-foreground)]',\n };\n\n const tone = this.variant() === 'solid' ? solidMap[this.type()] : softMap[this.type()];\n return [base, tone].join(' ');\n });\n\n /** Color del ícono (en soft toma el color del tipo; en solid hereda currentColor). */\n protected readonly iconColor = computed(() => {\n if (this.variant() === 'solid') return '';\n const map: Record<AlertType, string> = {\n info: 'text-[var(--color-primary)]',\n success: 'text-emerald-600',\n warning: 'text-amber-600',\n error: 'text-[var(--color-destructive)]',\n };\n return map[this.type()];\n });\n}\n","<span class=\"shrink-0 mt-0.5\" [class]=\"iconColor()\">\n @switch (type()) {\n @case ('success') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" /><polyline points=\"22 4 12 14.01 9 11.01\" /></svg>\n }\n @case ('warning') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" /><path d=\"M12 9v4\" /><path d=\"M12 17h.01\" /></svg>\n }\n @case ('error') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m15 9-6 6\" /><path d=\"m9 9 6 6\" /></svg>\n }\n @default {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 16v-4\" /><path d=\"M12 8h.01\" /></svg>\n }\n }\n</span>\n\n<div class=\"flex-1 min-w-0\">\n @if (title()) {\n <p class=\"font-semibold leading-tight\">{{ title() }}</p>\n }\n <div [class.mt-1]=\"title()\" [class.text-[var(--color-muted-foreground)]]=\"variant() === 'soft'\">\n <ng-content />\n </div>\n</div>\n\n@if (closable()) {\n <button\n type=\"button\"\n (click)=\"close.emit()\"\n aria-label=\"Cerrar\"\n class=\"shrink-0 -mr-1 -mt-0.5 flex items-center justify-center size-6 rounded-md opacity-70 hover:opacity-100 transition-opacity cursor-pointer\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" /></svg>\n </button>\n}\n","import {\n Component,\n computed,\n contentChildren,\n effect,\n input,\n signal,\n} from '@angular/core';\n\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type AvatarShape = 'circle' | 'square';\nexport type AvatarStatus = 'online' | 'offline' | 'away' | 'busy';\n\nconst SIZE_BOX: Record<AvatarSize, string> = {\n xs: 'size-6 text-[10px]',\n sm: 'size-8 text-xs',\n md: 'size-10 text-sm',\n lg: 'size-12 text-base',\n xl: 'size-16 text-lg',\n};\nconst STATUS_DOT: Record<AvatarSize, string> = {\n xs: 'size-1.5',\n sm: 'size-2',\n md: 'size-2.5',\n lg: 'size-3',\n xl: 'size-3.5',\n};\nconst STATUS_COLOR: Record<AvatarStatus, string> = {\n online: 'bg-emerald-500',\n offline: 'bg-zinc-400',\n away: 'bg-amber-500',\n busy: 'bg-[var(--color-destructive)]',\n};\n\n/** Avatar: imagen con fallback a iniciales, tamaños, forma e indicador de estado. */\n@Component({\n selector: 'ui-avatar',\n templateUrl: './avatar.component.html',\n host: { '[class]': 'hostClasses()' },\n})\nexport class AvatarComponent {\n readonly src = input<string>('');\n readonly name = input<string>('');\n readonly alt = input<string>('');\n readonly size = input<AvatarSize>('md');\n readonly shape = input<AvatarShape>('circle');\n readonly status = input<AvatarStatus | null>(null);\n\n /** Lo controla ui-avatar-group para ocultar los que exceden `max`. */\n readonly hidden = signal(false);\n\n protected readonly imgError = signal(false);\n protected readonly showImage = computed(() => !!this.src() && !this.imgError());\n\n protected readonly initials = computed(() => {\n const n = this.name().trim();\n if (!n) return '';\n const parts = n.split(/\\s+/);\n const first = parts[0]?.[0] ?? '';\n const last = parts.length > 1 ? (parts[parts.length - 1][0] ?? '') : '';\n return (first + last).toUpperCase();\n });\n\n protected readonly statusDotClasses = computed(() => {\n const s = this.status();\n if (!s) return '';\n return [\n 'absolute bottom-0 right-0 rounded-full ring-2 ring-[var(--color-background)]',\n STATUS_DOT[this.size()],\n STATUS_COLOR[s],\n ].join(' ');\n });\n\n protected readonly innerClasses = computed(() => {\n const base =\n 'inline-flex items-center justify-center size-full overflow-hidden select-none font-medium bg-[var(--color-muted)] text-[var(--color-muted-foreground)]';\n const shape = this.shape() === 'square' ? 'rounded-[var(--radius)]' : 'rounded-full';\n return [base, shape].join(' ');\n });\n\n protected readonly hostClasses = computed(() => {\n const base = 'relative inline-flex shrink-0';\n const shape = this.shape() === 'square' ? 'rounded-[var(--radius)]' : 'rounded-full';\n const hidden = this.hidden() ? 'hidden' : '';\n // shape en el host también, para que el ring del apilado siga la forma\n return [base, SIZE_BOX[this.size()], shape, hidden].join(' ');\n });\n\n protected onImgError() {\n this.imgError.set(true);\n }\n}\n\n/** Grupo de avatares apilados, con \"+N\" cuando se supera `max`. */\n@Component({\n selector: 'ui-avatar-group',\n template: `\n <ng-content />\n @if (overflow() > 0) {\n <span\n [class]=\"moreClasses()\"\n aria-hidden=\"true\"\n >+{{ overflow() }}</span>\n }\n `,\n host: {\n class:\n 'flex items-center [&>ui-avatar]:ring-2 [&>ui-avatar]:ring-[var(--color-background)] [&>ui-avatar:not(:first-child)]:-ml-2',\n },\n})\nexport class AvatarGroupComponent {\n readonly max = input<number | null>(null);\n readonly size = input<AvatarSize>('md');\n\n private readonly avatars = contentChildren(AvatarComponent);\n\n protected readonly overflow = computed(() => {\n const m = this.max();\n const n = this.avatars().length;\n return m != null && n > m ? n - m : 0;\n });\n\n protected readonly moreClasses = computed(() =>\n [\n 'relative inline-flex items-center justify-center shrink-0 rounded-full font-medium -ml-2',\n 'ring-2 ring-[var(--color-background)] bg-[var(--color-muted)] text-[var(--color-muted-foreground)]',\n SIZE_BOX[this.size()],\n ].join(' '),\n );\n\n constructor() {\n effect(() => {\n const m = this.max();\n this.avatars().forEach((a, i) => a.hidden.set(m != null && i >= m));\n });\n }\n}\n","<span [class]=\"innerClasses()\">\n @if (showImage()) {\n <img\n [src]=\"src()\"\n [alt]=\"alt() || name()\"\n (error)=\"onImgError()\"\n class=\"size-full object-cover\"\n />\n } @else if (initials()) {\n <span>{{ initials() }}</span>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"size-3/5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n }\n</span>\n\n@if (status()) {\n <span [class]=\"statusDotClasses()\"></span>\n}\n","import { Component, booleanAttribute, computed, input, output } from '@angular/core';\n\nexport type BadgeVariant = 'solid' | 'soft' | 'outline' | 'glass';\nexport type BadgeColor = 'primary' | 'secondary' | 'success' | 'warning' | 'destructive';\nexport type BadgeSize = 'sm' | 'md';\n\n/**\n * Etiqueta compacta para estados, tags y contadores.\n * Dos ejes: variant (solid/soft/outline) × color, más dot, ícono y removible.\n */\n@Component({\n selector: 'ui-badge',\n templateUrl: './badge.component.html',\n host: { class: 'inline-flex' },\n})\nexport class BadgeComponent {\n readonly variant = input<BadgeVariant>('soft');\n readonly color = input<BadgeColor>('primary');\n readonly size = input<BadgeSize>('md');\n readonly dot = input(false, { transform: booleanAttribute });\n readonly removable = input(false, { transform: booleanAttribute });\n\n /** Se emite al pulsar la × (solo si removable). */\n readonly remove = output<void>();\n\n protected readonly hostClasses = computed(() => {\n const base =\n 'inline-flex items-center gap-1.5 rounded-full font-medium whitespace-nowrap align-middle';\n\n const sizeMap: Record<BadgeSize, string> = {\n sm: 'h-5 px-2 text-[11px]',\n md: 'h-6 px-2.5 text-xs',\n };\n\n // color × variant. solid: fondo lleno · soft: tinte suave · outline: solo borde ·\n // glass: translúcido con desenfoque (luce sobre imágenes/fondos con color).\n const styleMap: Record<BadgeColor, Record<BadgeVariant, string>> = {\n primary: {\n solid: 'bg-[var(--color-primary)] text-[var(--color-primary-foreground)]',\n soft: 'bg-[var(--color-primary)]/12 text-[var(--color-primary)]',\n outline: 'border border-[var(--color-primary)]/40 text-[var(--color-primary)]',\n glass:\n 'backdrop-blur-md bg-[var(--color-primary)]/20 border border-[var(--color-primary)]/30 text-[var(--color-primary)] shadow-sm',\n },\n secondary: {\n solid: 'bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)]',\n soft: 'bg-[var(--color-muted)] text-[var(--color-muted-foreground)]',\n outline: 'border border-[var(--color-border)] text-[var(--color-muted-foreground)]',\n glass:\n 'backdrop-blur-md bg-white/15 border border-white/25 text-white shadow-sm',\n },\n success: {\n solid: 'bg-emerald-500 text-white',\n soft: 'bg-emerald-500/12 text-emerald-600',\n outline: 'border border-emerald-500/40 text-emerald-600',\n glass:\n 'backdrop-blur-md bg-emerald-400/25 border border-emerald-200/40 text-emerald-50 shadow-sm',\n },\n warning: {\n solid: 'bg-amber-500 text-white',\n soft: 'bg-amber-500/15 text-amber-600',\n outline: 'border border-amber-500/40 text-amber-600',\n glass:\n 'backdrop-blur-md bg-amber-400/25 border border-amber-200/40 text-amber-50 shadow-sm',\n },\n destructive: {\n solid: 'bg-[var(--color-destructive)] text-[var(--color-destructive-foreground)]',\n soft: 'bg-[var(--color-destructive)]/12 text-[var(--color-destructive)]',\n outline: 'border border-[var(--color-destructive)]/40 text-[var(--color-destructive)]',\n glass:\n 'backdrop-blur-md bg-[var(--color-destructive)]/25 border border-white/30 text-white shadow-sm',\n },\n };\n\n return [base, sizeMap[this.size()], styleMap[this.color()][this.variant()]].join(' ');\n });\n}\n","<span [class]=\"hostClasses()\">\n @if (dot()) {\n <span class=\"size-1.5 rounded-full bg-current\"></span>\n }\n\n <ng-content select=\"[slot=icon]\" />\n\n <ng-content />\n\n @if (removable()) {\n <button\n type=\"button\"\n (click)=\"remove.emit()\"\n aria-label=\"Quitar\"\n class=\"-mr-0.5 flex items-center justify-center rounded-full opacity-70 hover:opacity-100 transition-opacity cursor-pointer\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" /></svg>\n </button>\n }\n</span>\n","import { Component, computed, contentChildren, inject, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n/** Ruta de navegación jerárquica. Inserta un separador entre ítems. */\n@Component({\n selector: 'ui-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n host: { 'aria-label': 'Breadcrumb' },\n})\nexport class BreadcrumbComponent {\n readonly items = contentChildren(BreadcrumbItemComponent);\n}\n\n/** Un ítem del breadcrumb. Con `link` es navegable; sin él, es el actual. */\n@Component({\n selector: 'ui-breadcrumb-item',\n template: `\n <a\n [routerLink]=\"link() || null\"\n [attr.aria-current]=\"link() ? null : 'page'\"\n [class]=\"\n link()\n ? 'text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)] transition-colors cursor-pointer'\n : 'font-medium text-[var(--color-foreground)]'\n \"\n >\n <ng-content />\n </a>\n @if (!isLast()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"mx-1.5 text-[var(--color-muted-foreground)]/60\"><path d=\"m9 18 6-6-6-6\" /></svg>\n }\n `,\n imports: [RouterLink],\n host: { class: 'inline-flex items-center' },\n})\nexport class BreadcrumbItemComponent {\n /** Destino de routerLink; si se omite, el ítem es el actual (no navegable). */\n readonly link = input<string | unknown[] | null>(null);\n\n private readonly parent = inject(BreadcrumbComponent);\n /** Es el último ítem (no muestra separador después). */\n readonly isLast = computed(() => {\n const list = this.parent.items();\n return list.length > 0 && list[list.length - 1] === this;\n });\n}\n","<ol class=\"flex flex-wrap items-center text-sm\">\n <ng-content />\n</ol>\n","import { Component, computed, input } from '@angular/core';\n\nexport type ButtonVariant =\n | 'default'\n | 'destructive'\n | 'outline'\n | 'ghost'\n | 'link'\n | 'secondary'\n | 'gradient'\n | 'glass'\n | 'success'\n | 'warning';\nexport type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'icon';\n\n@Component({\n selector: 'ui-button',\n templateUrl: './button.component.html',\n})\nexport class ButtonComponent {\n readonly variant = input<ButtonVariant>('default');\n readonly size = input<ButtonSize>('md');\n readonly disabled = input<boolean>(false);\n readonly loading = input<boolean>(false);\n readonly type = input<'button' | 'submit' | 'reset'>('button');\n readonly pill = input<boolean>(false);\n readonly full = input<boolean>(false);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.loading());\n\n protected readonly hostClasses = computed(() => {\n const base = [\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap',\n this.pill() ? 'rounded-full' : '',\n this.full() ? 'w-full' : '',\n 'font-medium transition-all duration-150',\n 'outline-none focus-visible:ring-[3px] focus-visible:ring-[var(--color-ring)]/50',\n 'disabled:pointer-events-none disabled:opacity-50 disabled:transform-none disabled:shadow-none',\n 'cursor-pointer',\n ].filter(Boolean).join(' ');\n\n const variantMap: Record<ButtonVariant, string> = {\n default:\n 'bg-[var(--color-primary)] text-[var(--color-primary-foreground)] shadow-sm hover:bg-[var(--color-primary)]/95 active:translate-y-[1px] active:scale-[0.98] active:shadow-sm',\n destructive:\n 'bg-[var(--color-destructive)] text-[var(--color-destructive-foreground)] shadow-sm hover:bg-[var(--color-destructive)]/95 active:translate-y-[1px] active:scale-[0.98] active:shadow-sm focus-visible:ring-[var(--color-destructive)]/20',\n outline:\n 'border border-[var(--color-input)] bg-[var(--color-background)] shadow-sm hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)] active:translate-y-[1px] active:scale-[0.98] active:shadow-sm',\n secondary:\n 'bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)] shadow-sm hover:bg-[var(--color-secondary)]/90 active:translate-y-[1px] active:scale-[0.98] active:shadow-sm',\n ghost:\n 'hover:bg-[var(--color-accent)] hover:text-[var(--color-accent-foreground)] active:scale-[0.98]',\n link: 'text-[var(--color-primary)] underline-offset-4 hover:underline',\n gradient:\n 'text-[var(--color-primary-foreground)] ' +\n 'bg-[linear-gradient(135deg,var(--color-primary)_0%,var(--color-primary-gradient)_50%,var(--color-primary)_100%)] ' +\n 'bg-[length:200%_100%] bg-left ' +\n 'shadow-[0_1px_2px_0_rgb(0_0_0/0.10),inset_0_1px_0_0_rgb(255_255_255/0.22)] ' +\n 'transition-[background-position,transform,box-shadow] duration-300 ease-out ' +\n 'hover:bg-right ' +\n 'active:translate-y-[1px] active:scale-[0.98] active:shadow-sm',\n glass:\n 'backdrop-blur-2xl bg-white/10 border border-white/15 text-white/90 shadow-sm hover:bg-white/[0.18] active:translate-y-[1px] active:scale-[0.98] active:shadow-sm',\n success:\n 'bg-emerald-500 text-white shadow-sm hover:bg-emerald-600 active:translate-y-[1px] active:scale-[0.98] active:shadow-sm focus-visible:ring-emerald-500/20',\n warning:\n 'bg-amber-500 text-white shadow-sm hover:bg-amber-600 active:translate-y-[1px] active:scale-[0.98] active:shadow-sm focus-visible:ring-amber-500/20',\n };\n\n // Radio ligado al tamaño: menos alto → menos redondez (estilo shadcn).\n const pill = this.pill();\n const sizeMap: Record<ButtonSize, string> = {\n xs: `h-6 px-2 gap-1 text-xs ${pill ? '' : 'rounded-lg'}`,\n sm: `h-8 px-3 gap-1.5 text-xs ${pill ? '' : 'rounded-lg'}`,\n md: `h-9 px-4 gap-2 text-sm ${pill ? '' : 'rounded-[10px]'}`,\n lg: `h-10 px-5 gap-2 text-sm ${pill ? '' : 'rounded-[10px]'}`,\n icon: `size-9 ${pill ? '' : 'rounded-[10px]'}`,\n };\n\n return [base, variantMap[this.variant()], sizeMap[this.size()]].join(' ');\n });\n}\n","<button\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [class]=\"hostClasses()\"\n>\n @if (loading()) {\n <svg\n class=\"h-4 w-4 animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n class=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n stroke-width=\"4\"\n ></circle>\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n ></path>\n </svg>\n }\n <ng-content />\n</button>\n","import { Component, computed, input } from '@angular/core';\n\nexport type CardVariant = 'elevated' | 'outline' | 'soft' | 'interactive';\n\n/** Contenedor principal. Proyecta header/content/footer (u contenido libre). */\n@Component({\n selector: 'ui-card',\n template: `<ng-content />`,\n host: { '[class]': 'hostClasses()' },\n})\nexport class CardComponent {\n readonly variant = input<CardVariant>('elevated');\n\n protected readonly hostClasses = computed(() => {\n const base =\n 'flex flex-col gap-6 py-6 rounded-[var(--radius)] bg-[var(--color-background)] text-[var(--color-foreground)]';\n\n const variantMap: Record<CardVariant, string> = {\n elevated: 'border border-[var(--color-border)] shadow-sm',\n outline: 'border border-[var(--color-border)]',\n soft: 'bg-[var(--color-muted)]/40',\n interactive:\n 'border border-[var(--color-border)] shadow-sm transition-all hover:shadow-md hover:border-[var(--color-ring)]/40 active:scale-[0.995] cursor-pointer',\n };\n\n return `${base} ${variantMap[this.variant()]}`;\n });\n}\n\n/** Cabecera: padding + columna con separación. */\n@Component({\n selector: 'ui-card-header',\n template: `<ng-content />`,\n host: { class: 'flex flex-col gap-1.5 px-6' },\n})\nexport class CardHeaderComponent {}\n\n/** Título de la tarjeta. */\n@Component({\n selector: 'ui-card-title',\n template: `<ng-content />`,\n host: { class: 'block text-base font-semibold tracking-tight text-[var(--color-foreground)]' },\n})\nexport class CardTitleComponent {}\n\n/** Descripción / subtítulo. */\n@Component({\n selector: 'ui-card-description',\n template: `<ng-content />`,\n host: { class: 'block text-sm text-[var(--color-muted-foreground)]' },\n})\nexport class CardDescriptionComponent {}\n\n/** Cuerpo de la tarjeta. */\n@Component({\n selector: 'ui-card-content',\n template: `<ng-content />`,\n host: { class: 'block px-6' },\n})\nexport class CardContentComponent {}\n\n/** Pie: fila para acciones (botones). */\n@Component({\n selector: 'ui-card-footer',\n template: `<ng-content />`,\n host: { class: 'flex items-center gap-3 px-6' },\n})\nexport class CardFooterComponent {}\n","import {\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type CheckboxSize = 'sm' | 'md';\n\ninterface CheckboxValidationError {\n kind?: string;\n message?: string;\n}\n\nlet nextId = 0;\n\n/**\n * Casilla de verificación. Funciona con Signal Forms (`[formField]`, contrato\n * FormCheckboxControl), ControlValueAccessor (ngModel/Reactive) y two-way `[(checked)]`.\n */\n@Component({\n selector: 'ui-checkbox',\n templateUrl: './checkbox.component.html',\n host: { class: 'block' },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CheckboxComponent), multi: true },\n ],\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n /** Fuente única de verdad (Signal Forms usa `checked` para checkboxes). */\n readonly checked = model<boolean>(false);\n\n readonly label = input<string>('');\n readonly description = input<string>('');\n readonly size = input<CheckboxSize>('md');\n readonly id = input<string>(`ui-checkbox-${nextId++}`);\n readonly name = input<string>('');\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly indeterminate = input(false, { transform: booleanAttribute });\n\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly errors = input<readonly CheckboxValidationError[]>([]);\n\n private readonly cvaDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n protected readonly errorMessage = computed(() => {\n if (this.touched()) {\n const first = this.errors()[0];\n if (first) return first.message ?? first.kind ?? 'Campo inválido';\n }\n return '';\n });\n protected readonly hasError = computed(\n () => !!this.errorMessage() || (this.invalid() && this.touched()),\n );\n\n protected readonly boxClasses = computed(() => {\n const sizeMap: Record<CheckboxSize, string> = {\n sm: 'size-4',\n md: 'size-5',\n };\n const on = this.checked() || this.indeterminate();\n const base =\n 'shrink-0 flex items-center justify-center rounded-[6px] border transition-all outline-none';\n const state = on\n ? 'bg-[var(--color-primary)] border-[var(--color-primary)] text-[var(--color-primary-foreground)]'\n : this.hasError()\n ? 'border-[var(--color-destructive)] bg-[var(--color-background)]'\n : 'border-[var(--color-input)] bg-[var(--color-background)]';\n const focus = 'peer-focus-visible:ring-[3px] peer-focus-visible:ring-[var(--color-ring)]/40';\n const disabled = this.isDisabled() ? 'opacity-50' : '';\n return [base, sizeMap[this.size()], state, focus, disabled].join(' ');\n });\n\n // --- ControlValueAccessor ---\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n protected toggle(event: Event) {\n const next = (event.target as HTMLInputElement).checked;\n this.checked.set(next);\n this.onChange(next);\n this.onTouched();\n }\n}\n","<label\n [for]=\"id()\"\n class=\"flex items-start gap-2.5\"\n [class.cursor-pointer]=\"!isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n>\n <span class=\"relative inline-flex items-center\">\n <input\n type=\"checkbox\"\n [id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [attr.aria-invalid]=\"hasError() || null\"\n (change)=\"toggle($event)\"\n class=\"peer absolute inset-0 size-full opacity-0 m-0 cursor-pointer disabled:cursor-not-allowed\"\n />\n <span [class]=\"boxClasses()\">\n @if (indeterminate()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"size() === 'sm' ? 10 : 12\" [attr.height]=\"size() === 'sm' ? 10 : 12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" /></svg>\n } @else if (checked()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" [attr.width]=\"size() === 'sm' ? 10 : 12\" [attr.height]=\"size() === 'sm' ? 10 : 12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\" /></svg>\n }\n </span>\n </span>\n\n @if (label() || description()) {\n <span class=\"flex flex-col gap-0.5 -mt-px\">\n @if (label()) {\n <span class=\"text-sm font-medium text-[var(--color-foreground)] leading-tight\">\n {{ label() }}\n @if (required()) {\n <span class=\"text-[var(--color-destructive)]\">*</span>\n }\n </span>\n }\n @if (description()) {\n <span class=\"text-xs text-[var(--color-muted-foreground)]\">{{ description() }}</span>\n }\n </span>\n }\n</label>\n\n@if (hasError()) {\n <p class=\"mt-1.5 text-xs text-[var(--color-destructive)]\">{{ errorMessage() }}</p>\n}\n","import {\n Component,\n Directive,\n ElementRef,\n HostListener,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\n\nexport type DropdownSide = 'bottom' | 'top';\nexport type DropdownAlign = 'start' | 'end';\n\n/**\n * Menú desplegable compositional, sin dependencias. Maneja abrir/cerrar,\n * posición, click-afuera y navegación por teclado.\n */\n@Component({\n selector: 'ui-dropdown',\n templateUrl: './dropdown.component.html',\n host: { class: 'relative inline-block' },\n})\nexport class DropdownComponent {\n readonly side = input<DropdownSide>('bottom');\n readonly align = input<DropdownAlign>('start');\n\n readonly open = signal(false);\n\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly items = contentChildren(DropdownItemComponent);\n\n protected readonly panelClasses = computed(() => {\n const base =\n 'absolute z-50 min-w-48 rounded-[var(--radius)] border border-[var(--color-border)] bg-[var(--color-background)] p-1 shadow-md text-[var(--color-foreground)]';\n const side = this.side() === 'top' ? 'bottom-full mb-1.5' : 'top-full mt-1.5';\n const align = this.align() === 'end' ? 'right-0' : 'left-0';\n return [base, side, align].join(' ');\n });\n\n toggle() {\n this.open.update((o) => !o);\n if (this.open()) this.focusItem(0);\n }\n\n close() {\n this.open.set(false);\n }\n\n @HostListener('document:click', ['$event'])\n protected onDocClick(event: MouseEvent) {\n if (this.open() && !this.el.nativeElement.contains(event.target as Node)) {\n this.close();\n }\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent) {\n if (!this.open()) return;\n const enabled = this.items().filter((i) => !i.disabled());\n if (!enabled.length) return;\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n const active = document.activeElement;\n const idx = enabled.findIndex((i) => i.isActive(active));\n const next =\n event.key === 'ArrowDown'\n ? (idx + 1) % enabled.length\n : (idx - 1 + enabled.length) % enabled.length;\n enabled[next].focus();\n }\n }\n\n /** Enfoca el ítem habilitado en la posición dada (tras render). */\n private focusItem(index: number) {\n setTimeout(() => {\n const enabled = this.items().filter((i) => !i.disabled());\n enabled[index]?.focus();\n });\n }\n}\n\n/** Marca el elemento disparador del dropdown. */\n@Directive({\n selector: '[uiDropdownTrigger]',\n host: {\n '(click)': 'dd.toggle()',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'dd.open()',\n },\n})\nexport class DropdownTriggerDirective {\n protected readonly dd = inject(DropdownComponent);\n}\n\n/** Ítem seleccionable del menú. */\n@Component({\n selector: 'ui-dropdown-item',\n template: `\n <span class=\"shrink-0 flex items-center [&:empty]:hidden\"><ng-content select=\"[slot=icon]\" /></span>\n <span class=\"flex-1 text-left\"><ng-content /></span>\n <span class=\"shrink-0 text-xs text-[var(--color-muted-foreground)] [&:empty]:hidden\"><ng-content select=\"[slot=shortcut]\" /></span>\n `,\n host: {\n role: 'menuitem',\n tabindex: '-1',\n '[attr.aria-disabled]': 'disabled() || null',\n '(click)': 'onClick()',\n '[class]': 'hostClasses()',\n },\n})\nexport class DropdownItemComponent {\n readonly destructive = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly select = output<void>();\n\n private readonly dd = inject(DropdownComponent);\n private readonly el = inject(ElementRef<HTMLElement>);\n\n protected readonly hostClasses = computed(() => {\n const base =\n 'flex items-center gap-2 rounded-md px-2 py-1.5 text-sm cursor-pointer select-none outline-none transition-colors';\n const tone = this.destructive()\n ? 'text-[var(--color-destructive)] hover:bg-[var(--color-destructive)]/10 focus:bg-[var(--color-destructive)]/10'\n : 'text-[var(--color-foreground)] hover:bg-[var(--color-accent)] focus:bg-[var(--color-accent)]';\n const disabled = this.disabled() ? 'opacity-50 pointer-events-none' : '';\n return [base, tone, disabled].join(' ');\n });\n\n focus() {\n this.el.nativeElement.focus();\n }\n isActive(node: Element | null) {\n return node === this.el.nativeElement;\n }\n\n protected onClick() {\n if (this.disabled()) return;\n this.select.emit();\n this.dd.close();\n }\n}\n\n/** Encabezado de sección. */\n@Component({\n selector: 'ui-dropdown-label',\n template: `<ng-content />`,\n host: {\n class:\n 'block px-2 py-1.5 text-[11px] font-semibold uppercase tracking-widest text-[var(--color-muted-foreground)]',\n },\n})\nexport class DropdownLabelComponent {}\n\n/** Línea divisoria. */\n@Component({\n selector: 'ui-dropdown-separator',\n template: '',\n host: { class: '-mx-1 my-1 block h-px bg-[var(--color-border)]' },\n})\nexport class DropdownSeparatorComponent {}\n","<ng-content select=\"[uiDropdownTrigger]\" />\n\n@if (open()) {\n <div role=\"menu\" [class]=\"panelClasses()\">\n <ng-content />\n </div>\n}\n","import { Component, booleanAttribute, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type InputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';\n\n/** Forma laxa de un error de validación (Signal Forms entrega { kind, message? }). */\ninterface InputValidationError {\n kind?: string;\n message?: string;\n}\n\nlet nextId = 0;\n\n/**\n * Campo de texto. Funciona con:\n * - Signal Forms (Angular 22) vía `[formField]` — implementa el contrato\n * FormValueControl por duck typing (value = model + errors/disabled/... = input).\n * - ControlValueAccessor — ngModel, Reactive Forms, formControlName.\n * - Two-way simple `[(value)]`.\n */\n@Component({\n selector: 'ui-input',\n templateUrl: './input.component.html',\n host: { class: 'block' },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => InputComponent), multi: true },\n ],\n})\nexport class InputComponent implements ControlValueAccessor {\n /** Fuente única de verdad del valor (Signal Forms + two-way). */\n readonly value = model<string>('');\n\n readonly type = input<InputType>('text');\n readonly size = input<InputSize>('md');\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly placeholder = input<string>('');\n readonly name = input<string>('');\n readonly id = input<string>(`ui-input-${nextId++}`);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n /** Muestra el botón de ojito para revelar/ocultar la contraseña (solo type=\"password\"). */\n readonly passwordToggle = input(true, { transform: booleanAttribute });\n\n /** Mensaje de error manual (tiene prioridad sobre los errors de Signal Forms). */\n readonly error = input<string>('');\n /** Estado de validación que cablea Signal Forms automáticamente. */\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly errors = input<readonly InputValidationError[]>([]);\n\n /** disabled puede venir del input o de CVA (setDisabledState). */\n private readonly cvaDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n /** Estado y tipo efectivo para el toggle de contraseña. */\n protected readonly showPassword = signal(false);\n protected readonly hasPasswordToggle = computed(\n () => this.type() === 'password' && this.passwordToggle(),\n );\n protected readonly resolvedType = computed(() =>\n this.type() === 'password' && this.showPassword() ? 'text' : this.type(),\n );\n\n protected readonly errorMessage = computed(() => {\n if (this.error()) return this.error();\n // Los errores de validación (Signal Forms) solo se muestran tras interactuar.\n if (this.touched()) {\n const first = this.errors()[0];\n if (first) return first.message ?? first.kind ?? 'Campo inválido';\n }\n return '';\n });\n protected readonly hasError = computed(\n () => !!this.error() || !!this.errorMessage() || (this.invalid() && this.touched()),\n );\n\n protected readonly describedById = computed(() =>\n this.hasError() || this.hint() ? `${this.id()}-desc` : null,\n );\n\n protected readonly wrapperClasses = computed(() => {\n // Radio ligado al tamaño: menos alto -> menos redondez (estilo shadcn).\n const sizeMap: Record<InputSize, string> = {\n sm: 'h-8 px-2.5 gap-2 text-xs rounded-lg',\n md: 'h-9 px-3 gap-2 text-sm rounded-[10px]',\n lg: 'h-10 px-3.5 gap-2 text-base rounded-[10px]',\n };\n\n const base =\n 'flex items-center border bg-[var(--color-background)] transition-all';\n\n const state = this.hasError()\n ? 'border-[var(--color-destructive)] focus-within:ring-[3px] focus-within:ring-[var(--color-destructive)]/25'\n : 'border-[var(--color-input)] focus-within:border-[var(--color-ring)] focus-within:ring-[3px] focus-within:ring-[var(--color-ring)]/40';\n\n const disabled = this.isDisabled()\n ? 'opacity-50 cursor-not-allowed bg-[var(--color-muted)]/40'\n : '';\n\n return [base, sizeMap[this.size()], state, disabled].join(' ');\n });\n\n // --- ControlValueAccessor ---\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n protected onInput(event: Event) {\n const next = (event.target as HTMLInputElement).value;\n this.value.set(next);\n this.onChange(next);\n }\n\n protected onBlur() {\n this.onTouched();\n }\n}\n","@if (label()) {\n <label\n [for]=\"id()\"\n class=\"block mb-1.5 text-sm font-medium text-[var(--color-foreground)]\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"text-[var(--color-destructive)]\">*</span>\n }\n </label>\n}\n\n<div [class]=\"wrapperClasses()\">\n <span class=\"shrink-0 flex items-center text-[var(--color-muted-foreground)]\">\n <ng-content select=\"[slot=prefix]\" />\n </span>\n\n <input\n [id]=\"id()\"\n [type]=\"resolvedType()\"\n [name]=\"name()\"\n [placeholder]=\"placeholder()\"\n [readonly]=\"readonly()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"describedById()\"\n class=\"w-full min-w-0 bg-transparent border-0 p-0 outline-none text-[var(--color-foreground)] placeholder:text-[var(--color-muted-foreground)] disabled:cursor-not-allowed\"\n />\n\n <span class=\"shrink-0 flex items-center text-[var(--color-muted-foreground)]\">\n <ng-content select=\"[slot=suffix]\" />\n </span>\n\n @if (hasPasswordToggle()) {\n <button\n type=\"button\"\n (click)=\"showPassword.set(!showPassword())\"\n [attr.aria-label]=\"showPassword() ? 'Ocultar contraseña' : 'Mostrar contraseña'\"\n class=\"shrink-0 flex items-center text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)] transition-colors cursor-pointer\"\n >\n @if (showPassword()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9.88 9.88a3 3 0 1 0 4.24 4.24\" /><path d=\"M10.73 5.08A10.43 10.43 0 0 1 12 5c7 0 10 7 10 7a13.16 13.16 0 0 1-1.67 2.68\" /><path d=\"M6.61 6.61A13.526 13.526 0 0 0 2 12s3 7 10 7a9.74 9.74 0 0 0 5.39-1.61\" /><line x1=\"2\" x2=\"22\" y1=\"2\" y2=\"22\" /></svg>\n } @else {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\" /><circle cx=\"12\" cy=\"12\" r=\"3\" /></svg>\n }\n </button>\n }\n</div>\n\n@if (hasError()) {\n <p [id]=\"describedById()\" class=\"mt-1.5 text-xs text-[var(--color-destructive)]\">\n {{ errorMessage() }}\n </p>\n} @else if (hint()) {\n <p [id]=\"describedById()\" class=\"mt-1.5 text-xs text-[var(--color-muted-foreground)]\">\n {{ hint() }}\n </p>\n}\n","import { Component, booleanAttribute, computed, input, numberAttribute } from '@angular/core';\n\nexport type LoadingSize = 'sm' | 'md' | 'lg';\n\n/** Indicador giratorio. Hereda el color (currentColor). */\n@Component({\n selector: 'ui-spinner',\n template: `\n <svg\n [attr.width]=\"px()\"\n [attr.height]=\"px()\"\n class=\"animate-spin\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n [attr.aria-label]=\"'Cargando'\"\n role=\"status\"\n >\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-90\" fill=\"currentColor\" d=\"M4 12a8 8 0 0 1 8-8V0C5.37 0 0 5.37 0 12h4z\"></path>\n </svg>\n `,\n host: { class: 'inline-flex' },\n})\nexport class SpinnerComponent {\n readonly size = input<LoadingSize>('md');\n protected readonly px = computed(() => ({ sm: 16, md: 24, lg: 36 })[this.size()]);\n}\n\n/** Placeholder con pulso mientras carga el contenido real. */\n@Component({\n selector: 'ui-skeleton',\n template: '',\n host: {\n class: 'block animate-pulse bg-[var(--color-muted)]',\n '[class.rounded-full]': 'circle()',\n '[class.rounded-md]': '!circle()',\n '[style.width]': 'width()',\n '[style.height]': 'height()',\n },\n})\nexport class SkeletonComponent {\n readonly width = input<string>('100%');\n readonly height = input<string>('1rem');\n readonly circle = input(false, { transform: booleanAttribute });\n}\n\n/** Barra de progreso (determinada con value 0-100, o indeterminada). */\n@Component({\n selector: 'ui-progress',\n template: `\n <div\n class=\"h-full rounded-full bg-[var(--color-primary)] transition-[width] duration-300\"\n [class.animate-progress-indeterminate]=\"indeterminate()\"\n [class.w-2/5]=\"indeterminate()\"\n [style.width.%]=\"indeterminate() ? null : clamped()\"\n ></div>\n `,\n host: {\n role: 'progressbar',\n class: 'block w-full overflow-hidden rounded-full bg-[var(--color-muted)]',\n '[class.h-1]': \"size() === 'sm'\",\n '[class.h-2]': \"size() === 'md'\",\n '[class.h-3]': \"size() === 'lg'\",\n '[attr.aria-valuenow]': 'indeterminate() ? null : clamped()',\n '[attr.aria-valuemin]': '0',\n '[attr.aria-valuemax]': '100',\n },\n})\nexport class ProgressComponent {\n readonly value = input(0, { transform: numberAttribute });\n readonly size = input<LoadingSize>('md');\n readonly indeterminate = input(false, { transform: booleanAttribute });\n\n protected readonly clamped = computed(() => Math.max(0, Math.min(100, this.value())));\n}\n","import {\n Component,\n ElementRef,\n HostListener,\n booleanAttribute,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type SelectSize = 'sm' | 'md' | 'lg';\n\ninterface SelectValidationError {\n kind?: string;\n message?: string;\n}\n\nlet nextId = 0;\n\n/**\n * Select compositional, sin dependencias. Combina el overlay del Dropdown con\n * la integración de formularios del Input: Signal Forms (`[formField]`),\n * ControlValueAccessor (ngModel/Reactive) y two-way `[(value)]`.\n */\n@Component({\n selector: 'ui-select',\n templateUrl: './select.component.html',\n host: { class: 'block' },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SelectComponent), multi: true },\n ],\n})\nexport class SelectComponent implements ControlValueAccessor {\n readonly value = model<string>('');\n\n readonly placeholder = input<string>('Selecciona…');\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly error = input<string>('');\n readonly size = input<SelectSize>('md');\n readonly id = input<string>(`ui-select-${nextId++}`);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly errors = input<readonly SelectValidationError[]>([]);\n\n readonly open = signal(false);\n private readonly el = inject(ElementRef<HTMLElement>);\n private readonly options = contentChildren(OptionComponent);\n\n private readonly cvaDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n protected readonly errorMessage = computed(() => {\n if (this.error()) return this.error();\n if (this.touched()) {\n const first = this.errors()[0];\n if (first) return first.message ?? first.kind ?? 'Campo inválido';\n }\n return '';\n });\n protected readonly hasError = computed(\n () => !!this.error() || !!this.errorMessage() || (this.invalid() && this.touched()),\n );\n\n protected readonly selectedLabel = computed(() => {\n const v = this.value();\n const opt = this.options().find((o) => o.value() === v);\n return opt ? opt.getLabel() : '';\n });\n\n protected readonly triggerClasses = computed(() => {\n const sizeMap: Record<SelectSize, string> = {\n sm: 'h-8 px-2.5 text-xs rounded-lg',\n md: 'h-9 px-3 text-sm rounded-[10px]',\n lg: 'h-10 px-3.5 text-base rounded-[10px]',\n };\n const base =\n 'flex w-full items-center justify-between gap-2 border bg-[var(--color-background)] transition-all outline-none cursor-pointer text-left';\n const state = this.hasError()\n ? 'border-[var(--color-destructive)] focus-visible:ring-[3px] focus-visible:ring-[var(--color-destructive)]/25'\n : 'border-[var(--color-input)] focus-visible:border-[var(--color-ring)] focus-visible:ring-[3px] focus-visible:ring-[var(--color-ring)]/40';\n const disabled = this.isDisabled()\n ? 'opacity-50 cursor-not-allowed bg-[var(--color-muted)]/40'\n : '';\n return [base, sizeMap[this.size()], state, disabled].join(' ');\n });\n\n protected readonly describedById = computed(() =>\n this.hasError() || this.hint() ? `${this.id()}-desc` : null,\n );\n\n toggle() {\n if (this.isDisabled()) return;\n this.open.update((o) => !o);\n if (this.open()) this.focusActive();\n }\n\n close() {\n this.open.set(false);\n }\n\n /** Llamado por una ui-option al elegirse. */\n choose(v: string) {\n this.value.set(v);\n this.onChange(v);\n this.onTouched();\n this.close();\n const trigger = this.el.nativeElement.querySelector('[data-trigger]') as HTMLElement | null;\n trigger?.focus();\n }\n\n @HostListener('document:click', ['$event'])\n protected onDocClick(event: MouseEvent) {\n if (this.open() && !this.el.nativeElement.contains(event.target as Node)) this.close();\n }\n\n @HostListener('keydown', ['$event'])\n protected onKeydown(event: KeyboardEvent) {\n const enabled = this.options().filter((o) => !o.disabled());\n if (!this.open()) {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.toggle();\n }\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n if (!enabled.length) return;\n const active = document.activeElement;\n const idx = enabled.findIndex((o) => o.isActive(active));\n const next =\n event.key === 'ArrowDown'\n ? (idx + 1) % enabled.length\n : (idx - 1 + enabled.length) % enabled.length;\n enabled[next].focus();\n }\n }\n\n private focusActive() {\n setTimeout(() => {\n const opts = this.options().filter((o) => !o.disabled());\n const sel = opts.find((o) => o.value() === this.value());\n (sel ?? opts[0])?.focus();\n });\n }\n\n // --- ControlValueAccessor ---\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n}\n\n/** Opción dentro de ui-select. */\n@Component({\n selector: 'ui-option',\n template: `\n <span class=\"flex-1\"><ng-content /></span>\n @if (selected()) {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"text-[var(--color-primary)]\"><polyline points=\"20 6 9 17 4 12\" /></svg>\n }\n `,\n host: {\n role: 'option',\n tabindex: '-1',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'disabled() || null',\n '(click)': 'onClick()',\n '[class]': 'hostClasses()',\n },\n})\nexport class OptionComponent {\n readonly value = input.required<string>();\n readonly disabled = input(false, { transform: booleanAttribute });\n\n private readonly select = inject(SelectComponent);\n private readonly el = inject(ElementRef<HTMLElement>);\n\n protected readonly selected = computed(() => this.select.value() === this.value());\n\n protected readonly hostClasses = computed(() => {\n const base =\n 'flex items-center gap-2 rounded-md px-2 py-1.5 text-sm cursor-pointer select-none outline-none transition-colors text-[var(--color-foreground)]';\n const state = this.disabled()\n ? 'opacity-50 pointer-events-none'\n : 'hover:bg-[var(--color-accent)] focus:bg-[var(--color-accent)]';\n return [base, state].join(' ');\n });\n\n getLabel() {\n return this.el.nativeElement.textContent?.trim() ?? '';\n }\n focus() {\n this.el.nativeElement.focus();\n }\n isActive(node: Element | null) {\n return node === this.el.nativeElement;\n }\n\n protected onClick() {\n if (this.disabled()) return;\n this.select.choose(this.value());\n }\n}\n","@if (label()) {\n <label\n [for]=\"id()\"\n class=\"block mb-1.5 text-sm font-medium text-[var(--color-foreground)]\"\n >\n {{ label() }}\n @if (required()) {\n <span class=\"text-[var(--color-destructive)]\">*</span>\n }\n </label>\n}\n\n<div class=\"relative\">\n <button\n type=\"button\"\n [id]=\"id()\"\n data-trigger\n [class]=\"triggerClasses()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"describedById()\"\n (click)=\"toggle()\"\n >\n <span [class]=\"selectedLabel() ? 'text-[var(--color-foreground)]' : 'text-[var(--color-muted-foreground)]'\" class=\"truncate\">\n {{ selectedLabel() || placeholder() }}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"shrink-0 text-[var(--color-muted-foreground)] transition-transform\"\n [class.rotate-180]=\"open()\"\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </button>\n\n <div\n role=\"listbox\"\n class=\"absolute z-50 left-0 right-0 mt-1.5 max-h-60 overflow-y-auto rounded-[var(--radius)] border border-[var(--color-border)] bg-[var(--color-background)] p-1 shadow-md\"\n [class.hidden]=\"!open()\"\n >\n <ng-content />\n </div>\n</div>\n\n@if (hasError()) {\n <p [id]=\"describedById()\" class=\"mt-1.5 text-xs text-[var(--color-destructive)]\">{{ errorMessage() }}</p>\n} @else if (hint()) {\n <p [id]=\"describedById()\" class=\"mt-1.5 text-xs text-[var(--color-muted-foreground)]\">{{ hint() }}</p>\n}\n","import { Component, booleanAttribute, computed, input, model, numberAttribute } from '@angular/core';\nimport { SelectComponent, OptionComponent } from '../select/select.component';\n\nexport type PaginationVariant = 'numbers' | 'compact';\nexport type PaginationSize = 'sm' | 'md';\n\n/** Token de elipsis en la lista de páginas. */\nconst GAP = '…' as const;\n\n/**\n * Paginación. Two-way `[(page)]` (1-based). Modo 'numbers' (con elipsis) o\n * 'compact' ('Página X de Y'). Selector opcional de items por página.\n */\n@Component({\n selector: 'ui-pagination',\n templateUrl: './pagination.component.html',\n imports: [SelectComponent, OptionComponent],\n host: { role: 'navigation', 'aria-label': 'Paginación', class: 'flex items-center gap-3 flex-wrap' },\n})\nexport class PaginationComponent {\n readonly page = model<number>(1);\n readonly totalPages = input(1, { transform: numberAttribute });\n readonly variant = input<PaginationVariant>('numbers');\n readonly size = input<PaginationSize>('md');\n\n /** Si se pasan opciones, se muestra el selector de items por página. */\n readonly pageSize = model<number>(10);\n readonly pageSizeOptions = input<number[]>([]);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly gap = GAP;\n\n protected readonly canPrev = computed(() => this.page() > 1 && !this.disabled());\n protected readonly canNext = computed(() => this.page() < this.totalPages() && !this.disabled());\n\n /** Lista de páginas visibles con elipsis: 1 … 4 5 6 … 20 */\n protected readonly pages = computed<(number | typeof GAP)[]>(() => {\n const total = this.totalPages();\n const current = this.page();\n if (total <= 7) return Array.from({ length: total }, (_, i) => i + 1);\n\n const result: (number | typeof GAP)[] = [1];\n const start = Math.max(2, current - 1);\n const end = Math.min(total - 1, current + 1);\n if (start > 2) result.push(GAP);\n for (let i = start; i <= end; i++) result.push(i);\n if (end < total - 1) result.push(GAP);\n result.push(total);\n return result;\n });\n\n protected readonly btnSize = computed(() => (this.size() === 'sm' ? 'size-8 text-xs' : 'size-9 text-sm'));\n\n // pageSize como string para el ui-select (que usa value:string)\n protected readonly pageSizeStr = computed(() => String(this.pageSize()));\n\n protected go(p: number) {\n if (p < 1 || p > this.totalPages() || p === this.page() || this.disabled()) return;\n this.page.set(p);\n }\n protected prev() {\n if (this.canPrev()) this.page.set(this.page() - 1);\n }\n protected next() {\n if (this.canNext()) this.page.set(this.page() + 1);\n }\n protected onPageSize(v: string) {\n this.pageSize.set(Number(v));\n this.page.set(1);\n }\n protected isGap(p: number | typeof GAP): p is typeof GAP {\n return p === GAP;\n }\n}\n","@let baseBtn =\n 'inline-flex items-center justify-center rounded-lg border border-[var(--color-border)] text-[var(--color-foreground)] transition-colors disabled:opacity-40 disabled:pointer-events-none cursor-pointer hover:bg-[var(--color-accent)]';\n\n<div class=\"flex items-center gap-1\">\n <!-- Prev -->\n <button\n type=\"button\"\n [class]=\"baseBtn + ' ' + btnSize()\"\n [disabled]=\"!canPrev()\"\n (click)=\"prev()\"\n aria-label=\"Página anterior\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\" /></svg>\n </button>\n\n @if (variant() === 'compact') {\n <span class=\"px-3 text-sm text-[var(--color-muted-foreground)]\">\n Página <span class=\"font-medium text-[var(--color-foreground)]\">{{ page() }}</span> de {{ totalPages() }}\n </span>\n } @else {\n @for (p of pages(); track $index) {\n @if (isGap(p)) {\n <span class=\"inline-flex items-center justify-center text-[var(--color-muted-foreground)]\" [class]=\"btnSize()\">{{ gap }}</span>\n } @else {\n <button\n type=\"button\"\n (click)=\"go(p)\"\n [attr.aria-current]=\"p === page() ? 'page' : null\"\n [class]=\"btnSize()\"\n class=\"inline-flex items-center justify-center rounded-lg border transition-colors cursor-pointer font-medium\"\n [class.bg-[var(--color-primary)]]=\"p === page()\"\n [class.text-[var(--color-primary-foreground)]]=\"p === page()\"\n [class.border-[var(--color-primary)]]=\"p === page()\"\n [class.border-[var(--color-border)]]=\"p !== page()\"\n [class.text-[var(--color-foreground)]]=\"p !== page()\"\n [class.hover:bg-[var(--color-accent)]]=\"p !== page()\"\n >\n {{ p }}\n </button>\n }\n }\n }\n\n <!-- Next -->\n <button\n type=\"button\"\n [class]=\"baseBtn + ' ' + btnSize()\"\n [disabled]=\"!canNext()\"\n (click)=\"next()\"\n aria-label=\"Página siguiente\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\" /></svg>\n </button>\n</div>\n\n@if (pageSizeOptions().length) {\n <div class=\"flex items-center gap-2 text-sm text-[var(--color-muted-foreground)]\">\n <span>Por página:</span>\n <div class=\"w-20\">\n <ui-select [value]=\"pageSizeStr()\" (valueChange)=\"onPageSize($event)\" size=\"sm\">\n @for (opt of pageSizeOptions(); track opt) {\n <ui-option [value]=\"opt.toString()\">{{ opt }}</ui-option>\n }\n </ui-select>\n </div>\n </div>\n}\n","import {\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type RadioSize = 'sm' | 'md';\nexport type RadioOrientation = 'vertical' | 'horizontal';\nexport type RadioAppearance = 'default' | 'card';\n\ninterface RadioValidationError {\n kind?: string;\n message?: string;\n}\n\nlet nextId = 0;\n\n/**\n * Grupo de selección única. El valor vive aquí. Funciona con Signal Forms\n * (`[formField]`, FormValueControl), ControlValueAccessor y two-way `[(value)]`.\n * Los ui-radio hijos lo inyectan por DI.\n */\n@Component({\n selector: 'ui-radio-group',\n template: `<ng-content />`,\n host: { role: 'radiogroup', '[class]': 'hostClasses()' },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true },\n ],\n})\nexport class RadioGroupComponent implements ControlValueAccessor {\n readonly value = model<string>('');\n\n readonly size = input<RadioSize>('md');\n readonly orientation = input<RadioOrientation>('vertical');\n readonly appearance = input<RadioAppearance>('default');\n readonly name = input<string>(`ui-radio-group-${nextId++}`);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly errors = input<readonly RadioValidationError[]>([]);\n\n private readonly cvaDisabled = signal(false);\n readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n readonly errorMessage = computed(() => {\n if (this.touched()) {\n const first = this.errors()[0];\n if (first) return first.message ?? first.kind ?? 'Campo inválido';\n }\n return '';\n });\n readonly hasError = computed(() => !!this.errorMessage() || (this.invalid() && this.touched()));\n\n protected readonly hostClasses = computed(() => {\n const dir =\n this.orientation() === 'horizontal' ? 'flex flex-row flex-wrap gap-3' : 'flex flex-col gap-3';\n return dir;\n });\n\n // --- ControlValueAccessor ---\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n /** Llamado por un ui-radio hijo al seleccionarse. */\n select(value: string) {\n this.value.set(value);\n this.onChange(value);\n this.onTouched();\n }\n}\n\n/** Una opción dentro de ui-radio-group. */\n@Component({\n selector: 'ui-radio',\n templateUrl: './radio.component.html',\n host: { class: 'block' },\n})\nexport class RadioComponent {\n protected readonly group = inject(RadioGroupComponent);\n\n readonly value = input.required<string>();\n readonly label = input<string>('');\n readonly description = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly id = `ui-radio-${nextId++}`;\n\n protected readonly checked = computed(() => this.group.value() === this.value());\n protected readonly isDisabled = computed(() => this.group.isDisabled() || this.disabled());\n\n protected readonly circleClasses = computed(() => {\n const sizeMap: Record<RadioSize, string> = { sm: 'size-4', md: 'size-5' };\n const base =\n 'shrink-0 flex items-center justify-center rounded-full border transition-all peer-focus-visible:ring-[3px] peer-focus-visible:ring-[var(--color-ring)]/40';\n const state = this.checked()\n ? 'border-[var(--color-primary)]'\n : this.group.hasError()\n ? 'border-[var(--color-destructive)]'\n : 'border-[var(--color-input)]';\n const disabled = this.isDisabled() ? 'opacity-50' : '';\n return [base, sizeMap[this.group.size()], state, disabled].join(' ');\n });\n\n protected readonly dotClasses = computed(() => {\n const sizeMap: Record<RadioSize, string> = { sm: 'size-1.5', md: 'size-2' };\n return `rounded-full bg-[var(--color-primary)] ${sizeMap[this.group.size()]}`;\n });\n\n protected readonly cardClasses = computed(() => {\n const base = 'rounded-[var(--radius)] border p-4 transition-all';\n const state = this.checked()\n ? 'border-[var(--color-primary)] ring-1 ring-[var(--color-primary)] bg-[var(--color-primary)]/5'\n : 'border-[var(--color-border)] hover:border-[var(--color-muted-foreground)]/40';\n const disabled = this.isDisabled() ? 'opacity-50' : '';\n return [base, state, disabled].join(' ');\n });\n\n protected onSelect() {\n if (!this.isDisabled()) this.group.select(this.value());\n }\n}\n","@let card = group.appearance() === 'card';\n\n<label\n [for]=\"id\"\n [class]=\"card ? cardClasses() : ''\"\n class=\"flex items-start gap-2.5\"\n [class.cursor-pointer]=\"!isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n>\n <span class=\"relative inline-flex items-center\">\n <input\n type=\"radio\"\n [id]=\"id\"\n [name]=\"group.name()\"\n [value]=\"value()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n (change)=\"onSelect()\"\n class=\"peer absolute inset-0 size-full opacity-0 m-0 cursor-pointer disabled:cursor-not-allowed\"\n />\n <span [class]=\"circleClasses()\">\n @if (checked()) {\n <span [class]=\"dotClasses()\"></span>\n }\n </span>\n </span>\n\n @if (label() || description()) {\n <span class=\"flex flex-col gap-0.5 -mt-px\">\n @if (label()) {\n <span class=\"text-sm font-medium text-[var(--color-foreground)] leading-tight\">\n {{ label() }}\n </span>\n }\n @if (description()) {\n <span class=\"text-xs text-[var(--color-muted-foreground)]\">{{ description() }}</span>\n }\n </span>\n }\n</label>\n","export type TableAlign = 'left' | 'center' | 'right';\nexport type SortDirection = 'asc' | 'desc' | null;\n\nexport interface TableColumn {\n /** Path al valor (soporta anidado \"a.b.c\"). Omitir para columnas solo-template (acciones). */\n field?: string;\n header: string;\n sortable?: boolean;\n align?: TableAlign;\n /** Ancho CSS, p. ej. '120px' o '20%'. */\n width?: string;\n}\n\nexport interface SortState {\n field: string;\n direction: SortDirection;\n}\n\n/** Resuelve un path anidado: getByPath(row, 'direccion.ciudad'). */\nexport function getByPath(obj: unknown, path: string | undefined): unknown {\n if (!obj || !path) return undefined;\n return path.split('.').reduce<unknown>((acc, key) => {\n return acc && typeof acc === 'object' ? (acc as Record<string, unknown>)[key] : undefined;\n }, obj);\n}\n","import {\n Directive,\n Component,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChildren,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { CheckboxComponent } from '../checkbox/checkbox.component';\nimport { SkeletonComponent } from '../loading/loading.component';\nimport { SortDirection, SortState, TableAlign, TableColumn, getByPath } from './table.types';\n\ntype Row = Record<string, unknown>;\n\n/** Marca un template de celda para un field: <ng-template tableCell=\"estado\">. */\n@Directive({ selector: '[tableCell]' })\nexport class TableCellDirective {\n readonly field = input.required<string>({ alias: 'tableCell' });\n readonly template = inject(TemplateRef<unknown>);\n}\n\n/**\n * Tabla data-driven. Pinta `columns` automáticamente (incluido anidado);\n * para render custom, declara <ng-template tableCell=\"<field>\"> y se usa solo\n * en esa columna. Soporta sorting, selección, loading y estado vacío.\n */\n@Component({\n selector: 'ui-table',\n templateUrl: './table.component.html',\n imports: [NgTemplateOutlet, CheckboxComponent, SkeletonComponent],\n})\nexport class TableComponent {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n readonly data = input<any[]>([]);\n readonly columns = input<TableColumn[]>([]);\n readonly loading = input(false, { transform: booleanAttribute });\n readonly rowKey = input<string>('');\n readonly selectable = input(false, { transform: booleanAttribute });\n readonly emptyMessage = input<string>('No hay resultados');\n\n readonly sortChange = output<SortState>();\n readonly selectionChange = output<Row[]>();\n\n private readonly cellTemplates = contentChildren(TableCellDirective);\n protected readonly sort = signal<SortState>({ field: '', direction: null });\n private readonly selectedKeys = signal<Set<unknown>>(new Set());\n\n // Filas de skeleton para el estado de carga.\n protected readonly skeletonRows = [0, 1, 2, 3, 4];\n\n protected templateFor(field: string | undefined): TemplateRef<unknown> | null {\n if (!field) return null;\n return this.cellTemplates().find((t) => t.field() === field)?.template ?? null;\n }\n\n protected value(row: Row, field: string | undefined) {\n return getByPath(row, field);\n }\n\n protected readonly rows = computed<Row[]>(() => {\n const list = [...this.data()];\n const { field, direction } = this.sort();\n if (!field || !direction) return list;\n return list.sort((a, b) => {\n const av = getByPath(a, field);\n const bv = getByPath(b, field);\n if (av == null) return 1;\n if (bv == null) return -1;\n const cmp = av < bv ? -1 : av > bv ? 1 : 0;\n return direction === 'asc' ? cmp : -cmp;\n });\n });\n\n protected align(a: TableAlign | undefined) {\n return a === 'right' ? 'text-right' : a === 'center' ? 'text-center' : 'text-left';\n }\n\n // --- Sorting ---\n protected toggleSort(col: TableColumn) {\n if (!col.sortable || !col.field) return;\n const cur = this.sort();\n let direction: SortDirection;\n if (cur.field !== col.field) direction = 'asc';\n else direction = cur.direction === 'asc' ? 'desc' : cur.direction === 'desc' ? null : 'asc';\n const next: SortState = { field: direction ? col.field : '', direction };\n this.sort.set(next);\n this.sortChange.emit(next);\n }\n\n protected sortDir(col: TableColumn): SortDirection {\n return this.sort().field === col.field ? this.sort().direction : null;\n }\n\n // --- Selección ---\n private keyOf(row: Row): unknown {\n const k = this.rowKey();\n return k ? getByPath(row, k) : row;\n }\n\n protected isSelected(row: Row) {\n return this.selectedKeys().has(this.keyOf(row));\n }\n\n protected toggleRow(row: Row) {\n const key = this.keyOf(row);\n this.selectedKeys.update((set) => {\n const next = new Set(set);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return next;\n });\n this.emitSelection();\n }\n\n protected readonly allSelected = computed(() => {\n const rows = this.rows();\n return rows.length > 0 && rows.every((r) => this.selectedKeys().has(this.keyOf(r)));\n });\n protected readonly someSelected = computed(() => {\n const rows = this.rows();\n const sel = rows.filter((r) => this.selectedKeys().has(this.keyOf(r))).length;\n return sel > 0 && sel < rows.length;\n });\n\n protected toggleAll() {\n const rows = this.rows();\n this.selectedKeys.update((set) => {\n const next = new Set(set);\n if (rows.every((r) => next.has(this.keyOf(r)))) {\n rows.forEach((r) => next.delete(this.keyOf(r)));\n } else {\n rows.forEach((r) => next.add(this.keyOf(r)));\n }\n return next;\n });\n this.emitSelection();\n }\n\n private emitSelection() {\n const sel = this.data().filter((r) => this.selectedKeys().has(this.keyOf(r)));\n this.selectionChange.emit(sel);\n }\n\n protected trackRow = (index: number, row: Row) => (this.rowKey() ? this.keyOf(row) : index);\n}\n","<div class=\"w-full overflow-x-auto rounded-[var(--radius)] border border-[var(--color-border)]\">\n <table class=\"w-full text-left text-sm\">\n <thead class=\"bg-[var(--color-muted)] text-[var(--color-muted-foreground)]\">\n <tr>\n @if (selectable()) {\n <th class=\"w-10 px-4 py-2.5\">\n <ui-checkbox\n [checked]=\"allSelected()\"\n [indeterminate]=\"someSelected()\"\n (checkedChange)=\"toggleAll()\"\n />\n </th>\n }\n @for (col of columns(); track col.header) {\n <th\n class=\"px-4 py-2.5 font-medium whitespace-nowrap\"\n [class]=\"align(col.align)\"\n [style.width]=\"col.width\"\n >\n @if (col.sortable && col.field) {\n <button\n type=\"button\"\n (click)=\"toggleSort(col)\"\n class=\"inline-flex items-center gap-1 hover:text-[var(--color-foreground)] transition-colors cursor-pointer\"\n >\n {{ col.header }}\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\n class=\"transition-opacity\"\n [class.opacity-30]=\"sortDir(col) === null\"\n >\n @if (sortDir(col) === 'desc') {\n <path d=\"m6 9 6 6 6-6\" />\n } @else {\n <path d=\"m18 15-6-6-6 6\" />\n }\n </svg>\n </button>\n } @else {\n {{ col.header }}\n }\n </th>\n }\n </tr>\n </thead>\n\n <tbody class=\"text-[var(--color-foreground)]\">\n @if (loading()) {\n @for (s of skeletonRows; track s) {\n <tr class=\"border-t border-[var(--color-border)]\">\n @if (selectable()) {\n <td class=\"px-4 py-3\"><ui-skeleton width=\"1rem\" height=\"1rem\" /></td>\n }\n @for (col of columns(); track col.header) {\n <td class=\"px-4 py-3\"><ui-skeleton width=\"70%\" /></td>\n }\n </tr>\n }\n } @else if (rows().length === 0) {\n <tr>\n <td\n [attr.colspan]=\"columns().length + (selectable() ? 1 : 0)\"\n class=\"px-4 py-10 text-center text-[var(--color-muted-foreground)]\"\n >\n {{ emptyMessage() }}\n </td>\n </tr>\n } @else {\n @for (row of rows(); track trackRow($index, row)) {\n <tr class=\"border-t border-[var(--color-border)] hover:bg-[var(--color-muted)]/40 transition-colors\">\n @if (selectable()) {\n <td class=\"px-4 py-3\">\n <ui-checkbox [checked]=\"isSelected(row)\" (checkedChange)=\"toggleRow(row)\" />\n </td>\n }\n @for (col of columns(); track col.header) {\n <td class=\"px-4 py-3 align-middle\" [class]=\"align(col.align)\">\n @if (templateFor(col.field); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: value(row, col.field), row, index: $index }\"\n />\n } @else {\n {{ value(row, col.field) }}\n }\n </td>\n }\n </tr>\n }\n }\n </tbody>\n </table>\n</div>\n","import {\n Component,\n TemplateRef,\n booleanAttribute,\n computed,\n contentChildren,\n effect,\n inject,\n input,\n model,\n viewChild,\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type TabsVariant = 'underline' | 'pills';\nexport type TabsSize = 'sm' | 'md';\n\n/**\n * Pestañas compositional. ui-tabs guarda la pestaña activa y arma la barra a\n * partir de los ui-tab hijos; cada ui-tab proyecta su panel (visible si activo).\n */\n@Component({\n selector: 'ui-tabs',\n templateUrl: './tabs.component.html',\n imports: [NgTemplateOutlet],\n host: { class: 'block' },\n})\nexport class TabsComponent {\n readonly value = model<string>('');\n readonly variant = input<TabsVariant>('underline');\n readonly size = input<TabsSize>('md');\n\n readonly tabs = contentChildren(TabComponent);\n\n constructor() {\n // Selecciona la primera pestaña si no hay valor.\n effect(() => {\n const list = this.tabs();\n if (!this.value() && list.length) this.value.set(list[0].value());\n });\n }\n\n protected readonly listClasses = computed(() => {\n if (this.variant() === 'pills') {\n return 'inline-flex items-center gap-1 rounded-[var(--radius)] bg-[var(--color-muted)] p-1';\n }\n return 'flex items-center gap-1 border-b border-[var(--color-border)]';\n });\n\n protected select(v: string) {\n this.value.set(v);\n }\n\n protected tabClasses(tab: TabComponent) {\n const active = this.value() === tab.value();\n const sizePad =\n this.size() === 'sm' ? 'h-8 px-2.5 text-xs gap-1.5' : 'h-9 px-3 text-sm gap-2';\n const base =\n 'inline-flex items-center font-medium transition-colors outline-none cursor-pointer disabled:opacity-50 disabled:pointer-events-none focus-visible:ring-2 focus-visible:ring-[var(--color-ring)] focus-visible:ring-offset-1 focus-visible:ring-offset-[var(--color-background)]';\n\n if (this.variant() === 'pills') {\n const state = active\n ? 'bg-[var(--color-background)] text-[var(--color-foreground)] shadow-sm'\n : 'text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]';\n return [base, sizePad, 'rounded-[calc(var(--radius)-0.25rem)]', state].join(' ');\n }\n // underline\n const state = active\n ? 'text-[var(--color-foreground)] border-[var(--color-primary)]'\n : 'text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)] border-transparent';\n return [base, sizePad, '-mb-px border-b-2', state].join(' ');\n }\n}\n\n/** Una pestaña: label/ícono para la barra + su panel proyectado. */\n@Component({\n selector: 'ui-tab',\n template: `\n <ng-template #icon><ng-content select=\"[slot=icon]\" /></ng-template>\n @if (isActive()) {\n <ng-content />\n }\n `,\n host: { role: 'tabpanel' },\n})\nexport class TabComponent {\n readonly value = input.required<string>();\n readonly label = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n\n readonly iconTpl = viewChild<TemplateRef<unknown>>('icon');\n\n private readonly tabs = inject(TabsComponent);\n readonly isActive = computed(() => this.tabs.value() === this.value());\n}\n","<div role=\"tablist\" [class]=\"listClasses()\">\n @for (tab of tabs(); track tab.value()) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.aria-selected]=\"value() === tab.value()\"\n [disabled]=\"tab.disabled()\"\n (click)=\"select(tab.value())\"\n [class]=\"tabClasses(tab)\"\n >\n <ng-container [ngTemplateOutlet]=\"tab.iconTpl() ?? null\" />\n {{ tab.label() }}\n </button>\n }\n</div>\n\n<div class=\"mt-4\">\n <ng-content />\n</div>\n","import {\n Component,\n ElementRef,\n booleanAttribute,\n computed,\n forwardRef,\n inject,\n input,\n model,\n numberAttribute,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ninterface TextareaValidationError {\n kind?: string;\n message?: string;\n}\n\nlet nextId = 0;\n\n/**\n * Campo de texto multilínea. Funciona con Signal Forms (`[formField]`),\n * ControlValueAccessor (ngModel/Reactive) y two-way `[(value)]`.\n */\n@Component({\n selector: 'ui-textarea',\n templateUrl: './textarea.component.html',\n host: { class: 'block' },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TextareaComponent), multi: true },\n ],\n})\nexport class TextareaComponent implements ControlValueAccessor {\n readonly value = model<string>('');\n\n readonly label = input<string>('');\n readonly hint = input<string>('');\n readonly error = input<string>('');\n readonly placeholder = input<string>('');\n readonly name = input<string>('');\n readonly id = input<string>(`ui-textarea-${nextId++}`);\n readonly rows = input(4, { transform: numberAttribute });\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly readonly = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n /** Crece en alto según el contenido. */\n readonly autoGrow = input(false, { transform: booleanAttribute });\n\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly touched = input(false, { transform: booleanAttribute });\n readonly errors = input<readonly TextareaValidationError[]>([]);\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly cvaDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n protected readonly errorMessage = computed(() => {\n if (this.error()) return this.error();\n if (this.touched()) {\n const first = this.errors()[0];\n if (first) return first.message ?? first.kind ?? 'Campo inválido';\n }\n return '';\n });\n protected readonly hasError = computed(\n () => !!this.error() || !!this.errorMessage() || (this.invalid() && this.touched()),\n );\n\n protected readonly describedById = computed(() =>\n this.hasError() || this.hint() ? `${this.id()}-desc` : null,\n );\n\n protected readonly fieldClasses = computed(() => {\n const base =\n 'w-full rounded-[10px] border bg-[var(--color-background)] px-3 py-2 text-sm text-[var(--color-foreground)] placeholder:text-[var(--color-muted-foreground)] transition-all outline-none resize-y disabled:cursor-not-allowed';\n const state = this.hasError()\n ? 'border-[var(--color-destructive)] focus:ring-[3px] focus:ring-[var(--color-destructive)]/25'\n : 'border-[var(--color-input)] focus:border-[var(--color-ring)] focus:ring-[3px] focus:ring-[var(--color-ring)]/40';\n const disabled = this.isDisabled() ? 'opacity-50 bg-[var(--color-muted)]/40' : '';\n const grow = this.autoGrow() ? 'resize-none overflow-hidden' : '';\n return [base, state, disabled, grow].join(' ');\n });\n\n // --- ControlValueAccessor ---\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: string): void {\n this.value.set(value ?? '');\n }\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n protected onInput(event: Event) {\n const el = event.target as HTMLTextAreaElement;\n this.value.set(el.value);\n this.onChange(el.value);\n if (this.autoGrow()) this.grow(el);\n }\n\n protected onBlur() {\n this.onTouched();\n }\n\n private grow(el: HTMLTextAreaElement) {\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }\n}\n","@if (label()) {\n <label [for]=\"id()\" class=\"block mb-1.5 text-sm font-medium text-[var(--color-foreground)]\">\n {{ label() }}\n @if (required()) {\n <span class=\"text-[var(--color-destructive)]\">*</span>\n }\n </label>\n}\n\n<textarea\n [id]=\"id()\"\n [name]=\"name()\"\n [rows]=\"rows()\"\n [placeholder]=\"placeholder()\"\n [readonly]=\"readonly()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"describedById()\"\n [class]=\"fieldClasses()\"\n></textarea>\n\n@if (hasError()) {\n <p [id]=\"describedById()\" class=\"mt-1.5 text-xs text-[var(--color-destructive)]\">{{ errorMessage() }}</p>\n} @else if (hint()) {\n <p [id]=\"describedById()\" class=\"mt-1.5 text-xs text-[var(--color-muted-foreground)]\">{{ hint() }}</p>\n}\n","import { Component, afterNextRender, computed, input, output, signal } from '@angular/core';\nimport { Toast } from './toast.types';\n\n/** Tarjeta individual de toast. */\n@Component({\n selector: 'ui-toast',\n templateUrl: './toast.component.html',\n})\nexport class ToastComponent {\n readonly toast = input.required<Toast>();\n readonly close = output<void>();\n\n /** Controla la transición de entrada (false → true tras montar). */\n protected readonly shown = signal(false);\n\n constructor() {\n afterNextRender(() => this.shown.set(true));\n }\n\n protected readonly iconColor = computed(() => {\n const map: Record<Toast['type'], string> = {\n info: 'text-[var(--color-primary)]',\n success: 'text-emerald-600',\n warning: 'text-amber-600',\n error: 'text-[var(--color-destructive)]',\n };\n return map[this.toast().type];\n });\n\n protected runAction() {\n this.toast().action?.handler();\n this.close.emit();\n }\n}\n","<div\n class=\"flex items-start gap-3 w-80 max-w-[calc(100vw-2rem)] rounded-[var(--radius)] border border-[var(--color-border)] bg-[var(--color-background)] px-4 py-3 text-sm shadow-lg transition-all duration-300\"\n [class.opacity-0]=\"!shown()\"\n [class.translate-y-2]=\"!shown()\"\n [class.opacity-100]=\"shown()\"\n>\n <span class=\"shrink-0 mt-0.5\" [class]=\"iconColor()\">\n @switch (toast().type) {\n @case ('success') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\" /><polyline points=\"22 4 12 14.01 9 11.01\" /></svg>\n }\n @case ('warning') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\" /><path d=\"M12 9v4\" /><path d=\"M12 17h.01\" /></svg>\n }\n @case ('error') {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"m15 9-6 6\" /><path d=\"m9 9 6 6\" /></svg>\n }\n @default {\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 16v-4\" /><path d=\"M12 8h.01\" /></svg>\n }\n }\n </span>\n\n <div class=\"flex-1 min-w-0\">\n @if (toast().title) {\n <p class=\"font-semibold leading-tight text-[var(--color-foreground)]\">{{ toast().title }}</p>\n }\n <p class=\"text-[var(--color-muted-foreground)]\" [class.mt-0.5]=\"toast().title\">\n {{ toast().message }}\n </p>\n @if (toast().action; as action) {\n <button\n type=\"button\"\n (click)=\"runAction()\"\n class=\"mt-2 text-xs font-semibold text-[var(--color-primary)] hover:underline underline-offset-2 cursor-pointer\"\n >\n {{ action.label }}\n </button>\n }\n </div>\n\n <button\n type=\"button\"\n (click)=\"close.emit()\"\n aria-label=\"Cerrar\"\n class=\"shrink-0 -mr-1 -mt-0.5 flex items-center justify-center size-6 rounded-md text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)] hover:bg-[var(--color-accent)] transition-colors cursor-pointer\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\" /><path d=\"m6 6 12 12\" /></svg>\n </button>\n</div>\n","import { Component, computed, inject } from '@angular/core';\nimport { ToastComponent } from './toast.component';\nimport { ToastService } from './toast.service';\nimport { ToastPosition } from './toast.types';\n\n/** Contenedor flotante de toasts. Se auto-monta vía ToastService (interno). */\n@Component({\n selector: 'ui-toaster',\n imports: [ToastComponent],\n template: `\n <div [class]=\"containerClasses()\">\n @for (t of svc.toasts(); track t.id) {\n <ui-toast [toast]=\"t\" (close)=\"svc.dismiss(t.id)\" />\n }\n </div>\n `,\n})\nexport class ToasterComponent {\n protected readonly svc = inject(ToastService);\n\n protected readonly containerClasses = computed(() => {\n const base = 'fixed z-[100] flex flex-col gap-2 p-4 pointer-events-none [&>*]:pointer-events-auto';\n const posMap: Record<ToastPosition, string> = {\n 'top-left': 'top-0 left-0 items-start',\n 'top-center': 'top-0 left-1/2 -translate-x-1/2 items-center',\n 'top-right': 'top-0 right-0 items-end',\n 'bottom-left': 'bottom-0 left-0 items-start flex-col-reverse',\n 'bottom-center': 'bottom-0 left-1/2 -translate-x-1/2 items-center flex-col-reverse',\n 'bottom-right': 'bottom-0 right-0 items-end flex-col-reverse',\n };\n return [base, posMap[this.svc.position()]].join(' ');\n });\n}\n","import {\n ApplicationRef,\n EmbeddedViewRef,\n EnvironmentInjector,\n Injectable,\n createComponent,\n inject,\n signal,\n} from '@angular/core';\nimport { Toast, ToastOptions, ToastPosition, ToastType } from './toast.types';\nimport { ToasterComponent } from './toaster.component';\n\nconst MAX_TOASTS = 5;\n\n/**\n * API de notificaciones. Auto-monta el contenedor en el <body> al primer uso\n * (cero setup para el consumidor).\n *\n * private toast = inject(ToastService);\n * toast.success('Guardado');\n * toast.error('Falló', { title: 'Error' });\n */\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private readonly appRef = inject(ApplicationRef);\n private readonly envInjector = inject(EnvironmentInjector);\n\n readonly toasts = signal<Toast[]>([]);\n readonly position = signal<ToastPosition>('bottom-right');\n\n private mounted = false;\n private seq = 0;\n\n show(opts: ToastOptions): number {\n this.ensureMounted();\n const id = ++this.seq;\n const toast: Toast = {\n id,\n type: opts.type ?? 'info',\n title: opts.title,\n message: opts.message,\n action: opts.action,\n };\n this.toasts.update((list) => [...list, toast].slice(-MAX_TOASTS));\n\n const duration = opts.duration ?? 5000;\n if (duration > 0) {\n setTimeout(() => this.dismiss(id), duration);\n }\n return id;\n }\n\n success(message: string, opts?: Omit<ToastOptions, 'type' | 'message'>) {\n return this.show({ ...opts, type: 'success', message });\n }\n error(message: string, opts?: Omit<ToastOptions, 'type' | 'message'>) {\n return this.show({ ...opts, type: 'error', message });\n }\n warning(message: string, opts?: Omit<ToastOptions, 'type' | 'message'>) {\n return this.show({ ...opts, type: 'warning', message });\n }\n info(message: string, opts?: Omit<ToastOptions, 'type' | 'message'>) {\n return this.show({ ...opts, type: 'info', message });\n }\n\n dismiss(id: number) {\n this.toasts.update((list) => list.filter((t) => t.id !== id));\n }\n\n setPosition(position: ToastPosition) {\n this.position.set(position);\n }\n\n private ensureMounted() {\n if (this.mounted) return;\n const ref = createComponent(ToasterComponent, { environmentInjector: this.envInjector });\n this.appRef.attachView(ref.hostView);\n const node = (ref.hostView as EmbeddedViewRef<unknown>).rootNodes[0] as HTMLElement;\n document.body.appendChild(node);\n this.mounted = true;\n }\n}\n\nexport type { ToastType };\n","import {\n Directive,\n ElementRef,\n HostListener,\n inject,\n input,\n OnDestroy,\n Renderer2,\n booleanAttribute,\n numberAttribute,\n} from '@angular/core';\n\nexport type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nconst GAP = 8; // separación entre trigger y tooltip (px)\nconst MARGIN = 8; // margen mínimo al borde del viewport (px)\n\n/**\n * Tooltip accesible sin dependencias: se añade a cualquier elemento.\n * Posiciona un elemento flotante (position: fixed) con auto-flip y flecha.\n *\n * <ui-button uiTooltip=\"Guardar\" tooltipPlacement=\"top\">Guardar</ui-button>\n */\n@Directive({\n selector: '[uiTooltip]',\n})\nexport class TooltipDirective implements OnDestroy {\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly renderer = inject(Renderer2);\n\n readonly text = input<string>('', { alias: 'uiTooltip' });\n readonly placement = input<TooltipPlacement>('top', { alias: 'tooltipPlacement' });\n readonly delay = input(300, { alias: 'tooltipDelay', transform: numberAttribute });\n readonly disabled = input(false, { alias: 'tooltipDisabled', transform: booleanAttribute });\n\n private tooltipEl: HTMLElement | null = null;\n private arrowEl: HTMLElement | null = null;\n private openTimer: ReturnType<typeof setTimeout> | null = null;\n private readonly tipId = `ui-tooltip-${Math.floor(performance.now() * 1000) % 1_000_000}`;\n\n @HostListener('mouseenter')\n @HostListener('focusin')\n protected onEnter() {\n this.scheduleShow();\n }\n\n @HostListener('mouseleave')\n @HostListener('focusout')\n protected onLeave() {\n this.hide();\n }\n\n @HostListener('document:keydown.escape')\n protected onEscape() {\n this.hide();\n }\n\n private scheduleShow() {\n if (this.disabled() || !this.text() || this.tooltipEl) return;\n this.clearTimer();\n this.openTimer = setTimeout(() => this.show(), this.delay());\n }\n\n private show() {\n if (this.tooltipEl) return;\n\n const tip = this.renderer.createElement('div') as HTMLElement;\n tip.id = this.tipId;\n tip.setAttribute('role', 'tooltip');\n tip.className =\n 'fixed z-50 px-2 py-1 rounded-md text-xs font-medium shadow-md max-w-xs whitespace-normal pointer-events-none opacity-0 transition-opacity duration-150 bg-[var(--color-foreground)] text-[var(--color-background)]';\n tip.textContent = this.text();\n\n const arrow = this.renderer.createElement('div') as HTMLElement;\n arrow.className = 'fixed z-50 size-2 rotate-45 pointer-events-none bg-[var(--color-foreground)]';\n\n this.renderer.appendChild(document.body, tip);\n this.renderer.appendChild(document.body, arrow);\n this.tooltipEl = tip;\n this.arrowEl = arrow;\n this.host.nativeElement.setAttribute('aria-describedby', this.tipId);\n\n this.position();\n // fade-in tras posicionar\n requestAnimationFrame(() => {\n if (this.tooltipEl) this.tooltipEl.style.opacity = '1';\n });\n }\n\n private position() {\n if (!this.tooltipEl || !this.arrowEl) return;\n\n const trigger = this.host.nativeElement.getBoundingClientRect();\n const tip = this.tooltipEl.getBoundingClientRect();\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n\n let place = this.placement();\n\n // Auto-flip si no cabe en el lado elegido.\n const fits = (p: TooltipPlacement) => {\n if (p === 'top') return trigger.top - GAP - tip.height >= MARGIN;\n if (p === 'bottom') return trigger.bottom + GAP + tip.height <= vh - MARGIN;\n if (p === 'left') return trigger.left - GAP - tip.width >= MARGIN;\n return trigger.right + GAP + tip.width <= vw - MARGIN; // right\n };\n const opposite: Record<TooltipPlacement, TooltipPlacement> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n };\n if (!fits(place) && fits(opposite[place])) place = opposite[place];\n\n let top = 0;\n let left = 0;\n let arrowTop = 0;\n let arrowLeft = 0;\n\n if (place === 'top' || place === 'bottom') {\n left = trigger.left + trigger.width / 2 - tip.width / 2;\n top = place === 'top' ? trigger.top - GAP - tip.height : trigger.bottom + GAP;\n arrowLeft = trigger.left + trigger.width / 2 - 4;\n arrowTop = place === 'top' ? trigger.top - GAP - 4 : trigger.bottom + GAP - 4;\n } else {\n top = trigger.top + trigger.height / 2 - tip.height / 2;\n left = place === 'left' ? trigger.left - GAP - tip.width : trigger.right + GAP;\n arrowTop = trigger.top + trigger.height / 2 - 4;\n arrowLeft = place === 'left' ? trigger.left - GAP - 4 : trigger.right + GAP - 4;\n }\n\n // Clamp horizontal/vertical al viewport.\n left = Math.max(MARGIN, Math.min(left, vw - tip.width - MARGIN));\n top = Math.max(MARGIN, Math.min(top, vh - tip.height - MARGIN));\n\n this.tooltipEl.style.top = `${Math.round(top)}px`;\n this.tooltipEl.style.left = `${Math.round(left)}px`;\n this.arrowEl.style.top = `${Math.round(arrowTop)}px`;\n this.arrowEl.style.left = `${Math.round(arrowLeft)}px`;\n }\n\n private hide() {\n this.clearTimer();\n if (this.tooltipEl) {\n this.renderer.removeChild(document.body, this.tooltipEl);\n this.tooltipEl = null;\n }\n if (this.arrowEl) {\n this.renderer.removeChild(document.body, this.arrowEl);\n this.arrowEl = null;\n }\n this.host.nativeElement.removeAttribute('aria-describedby');\n }\n\n private clearTimer() {\n if (this.openTimer) {\n clearTimeout(this.openTimer);\n this.openTimer = null;\n }\n }\n\n ngOnDestroy() {\n this.hide();\n }\n}\n","import {\n Component,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n model,\n signal,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport type SwitchSize = 'sm' | 'md';\n\nlet nextId = 0;\n\n/**\n * Interruptor on/off. Funciona con Signal Forms (`[formField]`, contrato\n * FormCheckboxControl), ControlValueAccessor (ngModel/Reactive) y two-way `[(checked)]`.\n */\n@Component({\n selector: 'ui-switch',\n templateUrl: './switch.component.html',\n host: { class: 'block' },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SwitchComponent), multi: true },\n ],\n})\nexport class SwitchComponent implements ControlValueAccessor {\n readonly checked = model<boolean>(false);\n\n readonly label = input<string>('');\n readonly description = input<string>('');\n readonly size = input<SwitchSize>('md');\n readonly id = input<string>(`ui-switch-${nextId++}`);\n readonly name = input<string>('');\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly required = input(false, { transform: booleanAttribute });\n\n private readonly cvaDisabled = signal(false);\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n protected readonly trackClasses = computed(() => {\n const sizeMap: Record<SwitchSize, string> = {\n sm: 'h-4 w-7',\n md: 'h-5 w-9',\n };\n const base =\n 'relative shrink-0 inline-flex items-center rounded-full transition-colors outline-none peer-focus-visible:ring-[3px] peer-focus-visible:ring-[var(--color-ring)]/40';\n const state = this.checked()\n ? 'bg-[var(--color-primary)]'\n : 'bg-[var(--color-input)]';\n const disabled = this.isDisabled() ? 'opacity-50' : '';\n return [base, sizeMap[this.size()], state, disabled].join(' ');\n });\n\n protected readonly thumbClasses = computed(() => {\n // Tamaño del thumb y desplazamiento al activarse.\n const sm = this.size() === 'sm';\n const dims = sm ? 'size-3' : 'size-4';\n const off = 'translate-x-0.5';\n const on = sm ? 'translate-x-3.5' : 'translate-x-4';\n const base = 'inline-block rounded-full bg-white shadow-sm transition-transform';\n return [base, dims, this.checked() ? on : off].join(' ');\n });\n\n // --- ControlValueAccessor ---\n private onChange: (value: boolean) => void = () => {};\n private onTouched: () => void = () => {};\n\n writeValue(value: boolean): void {\n this.checked.set(!!value);\n }\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n protected toggle(event: Event) {\n const next = (event.target as HTMLInputElement).checked;\n this.checked.set(next);\n this.onChange(next);\n this.onTouched();\n }\n}\n","<label\n [for]=\"id()\"\n class=\"flex items-start gap-2.5\"\n [class.cursor-pointer]=\"!isDisabled()\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n>\n <span class=\"relative inline-flex items-center\">\n <input\n type=\"checkbox\"\n role=\"switch\"\n [id]=\"id()\"\n [name]=\"name()\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [required]=\"required()\"\n (change)=\"toggle($event)\"\n class=\"peer absolute inset-0 size-full opacity-0 m-0 cursor-pointer disabled:cursor-not-allowed\"\n />\n <span [class]=\"trackClasses()\">\n <span [class]=\"thumbClasses()\"></span>\n </span>\n </span>\n\n @if (label() || description()) {\n <span class=\"flex flex-col gap-0.5 -mt-px\">\n @if (label()) {\n <span class=\"text-sm font-medium text-[var(--color-foreground)] leading-tight\">\n {{ label() }}\n @if (required()) {\n <span class=\"text-[var(--color-destructive)]\">*</span>\n }\n </span>\n }\n @if (description()) {\n <span class=\"text-xs text-[var(--color-muted-foreground)]\">{{ description() }}</span>\n }\n </span>\n }\n</label>\n","import { inject, APP_INITIALIZER, Provider } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\nexport type HighstackTheme = 'indigo' | 'teal' | 'violet' | 'rose' | 'default';\n\nexport interface HighstackConfig {\n theme?: HighstackTheme;\n /** Activa el modo oscuro añadiendo la clase `dark` al <body>. */\n dark?: boolean;\n}\n\nexport function provideHighstack(config: HighstackConfig): Provider[] {\n return [\n {\n provide: APP_INITIALIZER,\n useFactory: () => {\n const document = inject(DOCUMENT);\n return () => {\n const body = document.body;\n\n // Remove pre-existing theme classes\n body.classList.forEach((className) => {\n if (className.startsWith('theme-')) {\n body.classList.remove(className);\n }\n });\n\n // Apply selected theme if not default\n if (config.theme && config.theme !== 'default') {\n body.classList.add(`theme-${config.theme}`);\n }\n\n // Apply dark mode\n body.classList.toggle('dark', !!config.dark);\n };\n },\n multi: true,\n },\n ];\n}\n","/*\n * Public API Surface of @highstacklabs2026/ui\n */\n\nexport * from './lib/atoms/accordion/accordion.component';\nexport * from './lib/atoms/alert/alert.component';\nexport * from './lib/atoms/avatar/avatar.component';\nexport * from './lib/atoms/badge/badge.component';\nexport * from './lib/atoms/breadcrumb/breadcrumb.component';\nexport * from './lib/atoms/button/button.component';\nexport * from './lib/atoms/card/card.component';\nexport * from './lib/atoms/checkbox/checkbox.component';\nexport * from './lib/atoms/dropdown/dropdown.component';\nexport * from './lib/atoms/input/input.component';\nexport * from './lib/atoms/loading/loading.component';\nexport * from './lib/atoms/pagination/pagination.component';\nexport * from './lib/atoms/radio/radio.component';\nexport * from './lib/atoms/select/select.component';\nexport * from './lib/atoms/table/table.types';\nexport * from './lib/atoms/table/table.component';\nexport * from './lib/atoms/tabs/tabs.component';\nexport * from './lib/atoms/textarea/textarea.component';\nexport * from './lib/atoms/toast/toast.types';\nexport * from './lib/atoms/toast/toast.service';\nexport * from './lib/atoms/tooltip/tooltip.directive';\nexport * from './lib/atoms/switch/switch.component';\nexport * from './lib/providers';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId","GAP"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@highstacklabs2026/ui",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^22.0.0",
6
6
  "@angular/core": "^22.0.0"