@lesterarte/sefin-ui 0.0.3-dev.15 → 0.0.3-dev.18

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.
@@ -594,6 +594,163 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
594
594
  type: Output
595
595
  }] } });
596
596
 
597
+ class IconButtonComponent {
598
+ variant = 'primary';
599
+ size = 'md';
600
+ disabled = false;
601
+ type = 'button';
602
+ class = '';
603
+ ariaLabel = '';
604
+ rounded = false;
605
+ clicked = new EventEmitter();
606
+ onClick(event) {
607
+ if (!this.disabled) {
608
+ this.clicked.emit(event);
609
+ }
610
+ }
611
+ get buttonClasses() {
612
+ return [
613
+ 'sefin-icon-button',
614
+ `sefin-icon-button--${this.variant}`,
615
+ `sefin-icon-button--${this.size}`,
616
+ this.disabled ? 'sefin-icon-button--disabled' : '',
617
+ this.rounded ? 'sefin-icon-button--rounded' : '',
618
+ this.class,
619
+ ]
620
+ .filter(Boolean)
621
+ .join(' ');
622
+ }
623
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
624
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: IconButtonComponent, isStandalone: true, selector: "sefin-icon-button", inputs: { variant: "variant", size: "size", disabled: "disabled", type: "type", class: "class", ariaLabel: "ariaLabel", rounded: "rounded" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<button \n [type]=\"type\" \n [disabled]=\"disabled\" \n [class]=\"buttonClasses\" \n (click)=\"onClick($event)\"\n [attr.aria-label]=\"ariaLabel || null\"\n>\n <ng-content></ng-content>\n</button>\n\n", styles: [".sefin-icon-button{display:inline-flex;align-items:center;justify-content:center;font-family:var(--sefin-font-family-base);border-radius:var(--sefin-radius-md);transition:all .2s ease-in-out;cursor:pointer;outline:none;border:1px solid transparent;padding:0;aspect-ratio:1;flex-shrink:0}.sefin-icon-button:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-icon-button--sm{width:32px;height:32px;min-width:32px;min-height:32px}.sefin-icon-button--md{width:40px;height:40px;min-width:40px;min-height:40px}.sefin-icon-button--lg{width:48px;height:48px;min-width:48px;min-height:48px}.sefin-icon-button--rounded{border-radius:50%}.sefin-icon-button--primary{background-color:var(--sefin-color-primary);color:#fff}.sefin-icon-button--primary:hover:not(:disabled){background-color:var(--sefin-color-primary-dark)}.sefin-icon-button--primary:active:not(:disabled){transform:translateY(1px)}.sefin-icon-button--secondary{background-color:var(--sefin-color-secondary);color:#fff}.sefin-icon-button--secondary:hover:not(:disabled){background-color:var(--sefin-color-secondary-dark)}.sefin-icon-button--secondary:active:not(:disabled){transform:translateY(1px)}.sefin-icon-button--outline{background-color:transparent;color:var(--sefin-color-primary);border-color:var(--sefin-color-primary)}.sefin-icon-button--outline:hover:not(:disabled){background-color:var(--sefin-color-primary);color:#fff}.sefin-icon-button--ghost{background-color:transparent;color:var(--sefin-color-primary)}.sefin-icon-button--ghost:hover:not(:disabled){background-color:var(--sefin-color-surface-hover)}.sefin-icon-button--danger{background-color:var(--sefin-color-error);color:#fff}.sefin-icon-button--danger:hover:not(:disabled){background-color:var(--sefin-color-error);opacity:.9}.sefin-icon-button--disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.sefin-icon-button svg{width:100%;height:100%;display:block}.sefin-icon-button--sm svg{width:16px;height:16px}.sefin-icon-button--md svg{width:20px;height:20px}.sefin-icon-button--lg svg{width:24px;height:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
625
+ }
626
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: IconButtonComponent, decorators: [{
627
+ type: Component,
628
+ args: [{ selector: 'sefin-icon-button', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button \n [type]=\"type\" \n [disabled]=\"disabled\" \n [class]=\"buttonClasses\" \n (click)=\"onClick($event)\"\n [attr.aria-label]=\"ariaLabel || null\"\n>\n <ng-content></ng-content>\n</button>\n\n", styles: [".sefin-icon-button{display:inline-flex;align-items:center;justify-content:center;font-family:var(--sefin-font-family-base);border-radius:var(--sefin-radius-md);transition:all .2s ease-in-out;cursor:pointer;outline:none;border:1px solid transparent;padding:0;aspect-ratio:1;flex-shrink:0}.sefin-icon-button:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-icon-button--sm{width:32px;height:32px;min-width:32px;min-height:32px}.sefin-icon-button--md{width:40px;height:40px;min-width:40px;min-height:40px}.sefin-icon-button--lg{width:48px;height:48px;min-width:48px;min-height:48px}.sefin-icon-button--rounded{border-radius:50%}.sefin-icon-button--primary{background-color:var(--sefin-color-primary);color:#fff}.sefin-icon-button--primary:hover:not(:disabled){background-color:var(--sefin-color-primary-dark)}.sefin-icon-button--primary:active:not(:disabled){transform:translateY(1px)}.sefin-icon-button--secondary{background-color:var(--sefin-color-secondary);color:#fff}.sefin-icon-button--secondary:hover:not(:disabled){background-color:var(--sefin-color-secondary-dark)}.sefin-icon-button--secondary:active:not(:disabled){transform:translateY(1px)}.sefin-icon-button--outline{background-color:transparent;color:var(--sefin-color-primary);border-color:var(--sefin-color-primary)}.sefin-icon-button--outline:hover:not(:disabled){background-color:var(--sefin-color-primary);color:#fff}.sefin-icon-button--ghost{background-color:transparent;color:var(--sefin-color-primary)}.sefin-icon-button--ghost:hover:not(:disabled){background-color:var(--sefin-color-surface-hover)}.sefin-icon-button--danger{background-color:var(--sefin-color-error);color:#fff}.sefin-icon-button--danger:hover:not(:disabled){background-color:var(--sefin-color-error);opacity:.9}.sefin-icon-button--disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.sefin-icon-button svg{width:100%;height:100%;display:block}.sefin-icon-button--sm svg{width:16px;height:16px}.sefin-icon-button--md svg{width:20px;height:20px}.sefin-icon-button--lg svg{width:24px;height:24px}\n"] }]
629
+ }], propDecorators: { variant: [{
630
+ type: Input
631
+ }], size: [{
632
+ type: Input
633
+ }], disabled: [{
634
+ type: Input
635
+ }], type: [{
636
+ type: Input
637
+ }], class: [{
638
+ type: Input
639
+ }], ariaLabel: [{
640
+ type: Input
641
+ }], rounded: [{
642
+ type: Input
643
+ }], clicked: [{
644
+ type: Output
645
+ }] } });
646
+
647
+ class LinkComponent {
648
+ variant = 'default';
649
+ size = 'md';
650
+ disabled = false;
651
+ href;
652
+ target;
653
+ rel;
654
+ class = '';
655
+ underline = false;
656
+ get linkClasses() {
657
+ return [
658
+ 'sefin-link',
659
+ `sefin-link--${this.variant}`,
660
+ `sefin-link--${this.size}`,
661
+ this.disabled ? 'sefin-link--disabled' : '',
662
+ this.underline ? 'sefin-link--underline' : '',
663
+ this.class,
664
+ ]
665
+ .filter(Boolean)
666
+ .join(' ');
667
+ }
668
+ onClick(event) {
669
+ if (this.disabled) {
670
+ event.preventDefault();
671
+ event.stopPropagation();
672
+ }
673
+ }
674
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
675
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: LinkComponent, isStandalone: true, selector: "sefin-link", inputs: { variant: "variant", size: "size", disabled: "disabled", href: "href", target: "target", rel: "rel", class: "class", underline: "underline" }, ngImport: i0, template: "<a\n [class]=\"linkClasses\"\n [href]=\"disabled ? null : (href || '#')\"\n [attr.target]=\"target\"\n [attr.rel]=\"rel\"\n [attr.aria-disabled]=\"disabled ? true : null\"\n (click)=\"onClick($event)\"\n>\n <ng-content></ng-content>\n</a>\n\n", styles: [".sefin-link{display:inline-flex;align-items:center;font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);text-decoration:none;transition:all .2s ease-in-out;cursor:pointer;outline:none}.sefin-link:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px;border-radius:2px}.sefin-link--sm{font-size:var(--sefin-font-size-sm)}.sefin-link--md{font-size:var(--sefin-font-size-base)}.sefin-link--lg{font-size:var(--sefin-font-size-lg)}.sefin-link--default{color:var(--sefin-color-text);text-decoration:none}.sefin-link--default:hover:not(.sefin-link--default--disabled){color:var(--sefin-color-primary)}.sefin-link--primary{color:var(--sefin-color-primary);text-decoration:none}.sefin-link--primary:hover:not(.sefin-link--primary--disabled){color:var(--sefin-color-primary-dark)}.sefin-link--primary:active:not(.sefin-link--primary--disabled){color:var(--sefin-color-primary-dark)}.sefin-link--secondary{color:var(--sefin-color-text-secondary);text-decoration:none}.sefin-link--secondary:hover:not(.sefin-link--secondary--disabled){color:var(--sefin-color-primary)}.sefin-link--underline{color:var(--sefin-color-primary);text-decoration:underline;text-underline-offset:2px}.sefin-link--underline:hover:not(.sefin-link--underline--disabled){color:var(--sefin-color-primary-dark);text-decoration-thickness:2px}.sefin-link--underline.sefin-link--default{color:var(--sefin-color-text);text-decoration:underline;text-underline-offset:2px}.sefin-link--underline.sefin-link--default:hover:not(.sefin-link--underline.sefin-link--default--disabled){color:var(--sefin-color-primary);text-decoration-thickness:2px}.sefin-link--disabled{opacity:.6;cursor:not-allowed;pointer-events:none;color:var(--sefin-color-text-disabled)}.sefin-link--disabled:hover{color:var(--sefin-color-text-disabled)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.Default });
676
+ }
677
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: LinkComponent, decorators: [{
678
+ type: Component,
679
+ args: [{ selector: 'sefin-link', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.Default, template: "<a\n [class]=\"linkClasses\"\n [href]=\"disabled ? null : (href || '#')\"\n [attr.target]=\"target\"\n [attr.rel]=\"rel\"\n [attr.aria-disabled]=\"disabled ? true : null\"\n (click)=\"onClick($event)\"\n>\n <ng-content></ng-content>\n</a>\n\n", styles: [".sefin-link{display:inline-flex;align-items:center;font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);text-decoration:none;transition:all .2s ease-in-out;cursor:pointer;outline:none}.sefin-link:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px;border-radius:2px}.sefin-link--sm{font-size:var(--sefin-font-size-sm)}.sefin-link--md{font-size:var(--sefin-font-size-base)}.sefin-link--lg{font-size:var(--sefin-font-size-lg)}.sefin-link--default{color:var(--sefin-color-text);text-decoration:none}.sefin-link--default:hover:not(.sefin-link--default--disabled){color:var(--sefin-color-primary)}.sefin-link--primary{color:var(--sefin-color-primary);text-decoration:none}.sefin-link--primary:hover:not(.sefin-link--primary--disabled){color:var(--sefin-color-primary-dark)}.sefin-link--primary:active:not(.sefin-link--primary--disabled){color:var(--sefin-color-primary-dark)}.sefin-link--secondary{color:var(--sefin-color-text-secondary);text-decoration:none}.sefin-link--secondary:hover:not(.sefin-link--secondary--disabled){color:var(--sefin-color-primary)}.sefin-link--underline{color:var(--sefin-color-primary);text-decoration:underline;text-underline-offset:2px}.sefin-link--underline:hover:not(.sefin-link--underline--disabled){color:var(--sefin-color-primary-dark);text-decoration-thickness:2px}.sefin-link--underline.sefin-link--default{color:var(--sefin-color-text);text-decoration:underline;text-underline-offset:2px}.sefin-link--underline.sefin-link--default:hover:not(.sefin-link--underline.sefin-link--default--disabled){color:var(--sefin-color-primary);text-decoration-thickness:2px}.sefin-link--disabled{opacity:.6;cursor:not-allowed;pointer-events:none;color:var(--sefin-color-text-disabled)}.sefin-link--disabled:hover{color:var(--sefin-color-text-disabled)}\n"] }]
680
+ }], propDecorators: { variant: [{
681
+ type: Input
682
+ }], size: [{
683
+ type: Input
684
+ }], disabled: [{
685
+ type: Input
686
+ }], href: [{
687
+ type: Input
688
+ }], target: [{
689
+ type: Input
690
+ }], rel: [{
691
+ type: Input
692
+ }], class: [{
693
+ type: Input
694
+ }], underline: [{
695
+ type: Input
696
+ }] } });
697
+
698
+ class StackComponent {
699
+ direction = 'column';
700
+ spacing = 'md';
701
+ align = 'stretch';
702
+ justify = 'start';
703
+ wrap = false;
704
+ class = '';
705
+ get stackClasses() {
706
+ return [
707
+ 'sefin-stack',
708
+ `sefin-stack--${this.direction}`,
709
+ `sefin-stack--spacing-${this.spacing}`,
710
+ `sefin-stack--align-${this.align}`,
711
+ `sefin-stack--justify-${this.justify}`,
712
+ this.wrap ? 'sefin-stack--wrap' : '',
713
+ this.class,
714
+ ]
715
+ .filter(Boolean)
716
+ .join(' ');
717
+ }
718
+ get spacingValue() {
719
+ const spacingMap = {
720
+ 'xs': '4px',
721
+ 'sm': '8px',
722
+ 'md': '16px',
723
+ 'lg': '24px',
724
+ 'xl': '32px',
725
+ '2xl': '48px',
726
+ };
727
+ return spacingMap[this.spacing] || spacingMap['md'];
728
+ }
729
+ get stackStyles() {
730
+ return {
731
+ gap: this.spacingValue,
732
+ };
733
+ }
734
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: StackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
735
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: StackComponent, isStandalone: true, selector: "sefin-stack", inputs: { direction: "direction", spacing: "spacing", align: "align", justify: "justify", wrap: "wrap", class: "class" }, ngImport: i0, template: "<div [class]=\"stackClasses\" [ngStyle]=\"stackStyles\">\n <ng-content></ng-content>\n</div>\n\n", styles: [".sefin-stack{display:flex!important;gap:var(--sefin-spacing-md, 16px)}.sefin-stack--column{flex-direction:column}.sefin-stack--row{flex-direction:row}.sefin-stack--wrap{flex-wrap:wrap}.sefin-stack--spacing-xs{gap:var(--sefin-spacing-xs, 4px)!important}.sefin-stack--spacing-sm{gap:var(--sefin-spacing-sm, 8px)!important}.sefin-stack--spacing-md{gap:var(--sefin-spacing-md, 16px)!important}.sefin-stack--spacing-lg{gap:var(--sefin-spacing-lg, 24px)!important}.sefin-stack--spacing-xl{gap:var(--sefin-spacing-xl, 32px)!important}.sefin-stack--spacing-2xl{gap:var(--sefin-spacing-2xl, 48px)!important}.sefin-stack--align-start{align-items:flex-start}.sefin-stack--align-center{align-items:center}.sefin-stack--align-end{align-items:flex-end}.sefin-stack--align-stretch{align-items:stretch}.sefin-stack--justify-start{justify-content:flex-start}.sefin-stack--justify-center{justify-content:center}.sefin-stack--justify-end{justify-content:flex-end}.sefin-stack--justify-space-between{justify-content:space-between}.sefin-stack--justify-space-around{justify-content:space-around}.sefin-stack--justify-space-evenly{justify-content:space-evenly}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
736
+ }
737
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: StackComponent, decorators: [{
738
+ type: Component,
739
+ args: [{ selector: 'sefin-stack', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.Default, template: "<div [class]=\"stackClasses\" [ngStyle]=\"stackStyles\">\n <ng-content></ng-content>\n</div>\n\n", styles: [".sefin-stack{display:flex!important;gap:var(--sefin-spacing-md, 16px)}.sefin-stack--column{flex-direction:column}.sefin-stack--row{flex-direction:row}.sefin-stack--wrap{flex-wrap:wrap}.sefin-stack--spacing-xs{gap:var(--sefin-spacing-xs, 4px)!important}.sefin-stack--spacing-sm{gap:var(--sefin-spacing-sm, 8px)!important}.sefin-stack--spacing-md{gap:var(--sefin-spacing-md, 16px)!important}.sefin-stack--spacing-lg{gap:var(--sefin-spacing-lg, 24px)!important}.sefin-stack--spacing-xl{gap:var(--sefin-spacing-xl, 32px)!important}.sefin-stack--spacing-2xl{gap:var(--sefin-spacing-2xl, 48px)!important}.sefin-stack--align-start{align-items:flex-start}.sefin-stack--align-center{align-items:center}.sefin-stack--align-end{align-items:flex-end}.sefin-stack--align-stretch{align-items:stretch}.sefin-stack--justify-start{justify-content:flex-start}.sefin-stack--justify-center{justify-content:center}.sefin-stack--justify-end{justify-content:flex-end}.sefin-stack--justify-space-between{justify-content:space-between}.sefin-stack--justify-space-around{justify-content:space-around}.sefin-stack--justify-space-evenly{justify-content:space-evenly}\n"] }]
740
+ }], propDecorators: { direction: [{
741
+ type: Input
742
+ }], spacing: [{
743
+ type: Input
744
+ }], align: [{
745
+ type: Input
746
+ }], justify: [{
747
+ type: Input
748
+ }], wrap: [{
749
+ type: Input
750
+ }], class: [{
751
+ type: Input
752
+ }] } });
753
+
597
754
  class AutocompleteComponent {
598
755
  inputRef;
599
756
  dropdownRef;
@@ -957,6 +1114,367 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
957
1114
  type: Output
958
1115
  }] } });
959
1116
 
1117
+ class SelectComponent {
1118
+ containerRef;
1119
+ dropdownRef;
1120
+ buttonRef;
1121
+ options = [];
1122
+ placeholder = 'Seleccionar...';
1123
+ disabled = false;
1124
+ size = 'md';
1125
+ class = '';
1126
+ value = null;
1127
+ valueChange = new EventEmitter();
1128
+ optionSelected = new EventEmitter();
1129
+ isOpen = false;
1130
+ selectedIndex = -1;
1131
+ onChange = (value) => { };
1132
+ onTouched = () => { };
1133
+ ngOnInit() {
1134
+ this.updateSelectedIndex();
1135
+ }
1136
+ ngOnChanges(changes) {
1137
+ if (changes['value'] || changes['options']) {
1138
+ this.updateSelectedIndex();
1139
+ }
1140
+ }
1141
+ ngOnDestroy() { }
1142
+ onClickOutside(event) {
1143
+ if (this.containerRef?.nativeElement && this.isOpen) {
1144
+ const clickedInside = this.containerRef.nativeElement.contains(event.target);
1145
+ if (!clickedInside) {
1146
+ this.closeDropdown();
1147
+ }
1148
+ }
1149
+ }
1150
+ onEscapeKey(event) {
1151
+ const keyboardEvent = event;
1152
+ if (this.isOpen) {
1153
+ keyboardEvent.preventDefault();
1154
+ this.closeDropdown();
1155
+ this.buttonRef?.nativeElement?.focus();
1156
+ }
1157
+ }
1158
+ toggleDropdown() {
1159
+ if (this.disabled)
1160
+ return;
1161
+ if (this.isOpen) {
1162
+ this.closeDropdown();
1163
+ }
1164
+ else {
1165
+ this.openDropdown();
1166
+ }
1167
+ }
1168
+ openDropdown() {
1169
+ if (this.disabled || !this.options || this.options.length === 0)
1170
+ return;
1171
+ this.isOpen = true;
1172
+ this.updateSelectedIndex();
1173
+ // If no selection, focus first enabled option
1174
+ if (this.selectedIndex < 0) {
1175
+ const enabledOptions = this.options.filter((opt) => !opt.disabled);
1176
+ if (enabledOptions.length > 0) {
1177
+ this.selectedIndex = this.options.indexOf(enabledOptions[0]);
1178
+ }
1179
+ }
1180
+ // Scroll to selected option when opening
1181
+ setTimeout(() => {
1182
+ this.scrollToSelected();
1183
+ }, 0);
1184
+ }
1185
+ closeDropdown() {
1186
+ this.isOpen = false;
1187
+ this.selectedIndex = -1;
1188
+ }
1189
+ selectOption(option) {
1190
+ if (option.disabled)
1191
+ return;
1192
+ this.value = option.value;
1193
+ this.onChange(this.value);
1194
+ this.onTouched();
1195
+ this.valueChange.emit(this.value);
1196
+ this.optionSelected.emit(option);
1197
+ this.closeDropdown();
1198
+ this.buttonRef?.nativeElement?.focus();
1199
+ }
1200
+ onKeyDown(event) {
1201
+ if (this.disabled)
1202
+ return;
1203
+ if (!this.isOpen) {
1204
+ if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') {
1205
+ event.preventDefault();
1206
+ this.openDropdown();
1207
+ }
1208
+ return;
1209
+ }
1210
+ if (!this.options || this.options.length === 0)
1211
+ return;
1212
+ const enabledOptions = this.options.filter((opt) => !opt.disabled);
1213
+ switch (event.key) {
1214
+ case 'ArrowDown':
1215
+ event.preventDefault();
1216
+ if (enabledOptions.length === 0)
1217
+ return;
1218
+ let nextIndex = this.selectedIndex + 1;
1219
+ while (nextIndex < this.options.length && this.options[nextIndex].disabled) {
1220
+ nextIndex++;
1221
+ }
1222
+ if (nextIndex < this.options.length) {
1223
+ this.selectedIndex = nextIndex;
1224
+ }
1225
+ else {
1226
+ // Wrap to first enabled option
1227
+ this.selectedIndex = this.options.indexOf(enabledOptions[0]);
1228
+ }
1229
+ setTimeout(() => this.scrollToSelected(), 0);
1230
+ break;
1231
+ case 'ArrowUp':
1232
+ event.preventDefault();
1233
+ if (enabledOptions.length === 0)
1234
+ return;
1235
+ let prevIndex = this.selectedIndex - 1;
1236
+ while (prevIndex >= 0 && this.options[prevIndex].disabled) {
1237
+ prevIndex--;
1238
+ }
1239
+ if (prevIndex >= 0) {
1240
+ this.selectedIndex = prevIndex;
1241
+ }
1242
+ else {
1243
+ // Wrap to last enabled option
1244
+ const lastOption = enabledOptions[enabledOptions.length - 1];
1245
+ this.selectedIndex = this.options.indexOf(lastOption);
1246
+ }
1247
+ setTimeout(() => this.scrollToSelected(), 0);
1248
+ break;
1249
+ case 'Enter':
1250
+ event.preventDefault();
1251
+ if (this.selectedIndex >= 0 && this.selectedIndex < this.options.length) {
1252
+ const option = this.options[this.selectedIndex];
1253
+ if (!option.disabled) {
1254
+ this.selectOption(option);
1255
+ }
1256
+ }
1257
+ break;
1258
+ case 'Escape':
1259
+ event.preventDefault();
1260
+ this.closeDropdown();
1261
+ this.buttonRef?.nativeElement?.focus();
1262
+ break;
1263
+ case 'Home':
1264
+ event.preventDefault();
1265
+ if (enabledOptions.length > 0) {
1266
+ this.selectedIndex = this.options.indexOf(enabledOptions[0]);
1267
+ setTimeout(() => this.scrollToSelected(), 0);
1268
+ }
1269
+ break;
1270
+ case 'End':
1271
+ event.preventDefault();
1272
+ if (enabledOptions.length > 0) {
1273
+ const lastOption = enabledOptions[enabledOptions.length - 1];
1274
+ this.selectedIndex = this.options.indexOf(lastOption);
1275
+ setTimeout(() => this.scrollToSelected(), 0);
1276
+ }
1277
+ break;
1278
+ }
1279
+ }
1280
+ updateSelectedIndex() {
1281
+ if (this.value === null || !this.options) {
1282
+ this.selectedIndex = -1;
1283
+ return;
1284
+ }
1285
+ const index = this.options.findIndex((opt) => opt.value === this.value);
1286
+ this.selectedIndex = index >= 0 ? index : -1;
1287
+ }
1288
+ scrollToSelected() {
1289
+ try {
1290
+ if (this.dropdownRef?.nativeElement &&
1291
+ this.selectedIndex >= 0 &&
1292
+ this.selectedIndex < this.options.length) {
1293
+ const selectedElement = this.dropdownRef.nativeElement.querySelector(`[data-index="${this.selectedIndex}"]`);
1294
+ if (selectedElement && selectedElement instanceof HTMLElement) {
1295
+ selectedElement.scrollIntoView({
1296
+ block: 'nearest',
1297
+ behavior: 'smooth',
1298
+ });
1299
+ }
1300
+ }
1301
+ }
1302
+ catch (error) {
1303
+ console.warn('Could not scroll to selected option:', error);
1304
+ }
1305
+ }
1306
+ getSelectedLabel() {
1307
+ if (this.value === null || !this.options) {
1308
+ return '';
1309
+ }
1310
+ const selectedOption = this.options.find((opt) => opt.value === this.value);
1311
+ return selectedOption?.label || '';
1312
+ }
1313
+ writeValue(value) {
1314
+ this.value = value;
1315
+ this.updateSelectedIndex();
1316
+ }
1317
+ registerOnChange(fn) {
1318
+ this.onChange = fn;
1319
+ }
1320
+ registerOnTouched(fn) {
1321
+ this.onTouched = fn;
1322
+ }
1323
+ setDisabledState(isDisabled) {
1324
+ this.disabled = isDisabled;
1325
+ if (isDisabled && this.isOpen) {
1326
+ this.closeDropdown();
1327
+ }
1328
+ }
1329
+ get buttonClasses() {
1330
+ return [
1331
+ 'sefin-select__button',
1332
+ `sefin-select__button--${this.size}`,
1333
+ this.disabled ? 'sefin-select__button--disabled' : '',
1334
+ this.isOpen ? 'sefin-select__button--open' : '',
1335
+ this.class,
1336
+ ]
1337
+ .filter(Boolean)
1338
+ .join(' ');
1339
+ }
1340
+ get containerClasses() {
1341
+ return [
1342
+ 'sefin-select',
1343
+ this.isOpen ? 'sefin-select--open' : '',
1344
+ ]
1345
+ .filter(Boolean)
1346
+ .join(' ');
1347
+ }
1348
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1349
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: SelectComponent, isStandalone: true, selector: "sefin-select", inputs: { options: "options", placeholder: "placeholder", disabled: "disabled", size: "size", class: "class", value: "value" }, outputs: { valueChange: "valueChange", optionSelected: "optionSelected" }, host: { listeners: { "document:click": "onClickOutside($event)", "document:keydown.escape": "onEscapeKey($event)" } }, providers: [
1350
+ {
1351
+ provide: NG_VALUE_ACCESSOR,
1352
+ useExisting: forwardRef(() => SelectComponent),
1353
+ multi: true,
1354
+ },
1355
+ ], viewQueries: [{ propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true }, { propertyName: "dropdownRef", first: true, predicate: ["dropdownRef"], descendants: true }, { propertyName: "buttonRef", first: true, predicate: ["buttonRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [class]=\"containerClasses\" #containerRef>\n <button\n #buttonRef\n type=\"button\"\n [class]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-haspopup]=\"true\"\n aria-label=\"Select option\"\n >\n <span class=\"sefin-select__value\" [class.sefin-select__value--placeholder]=\"!getSelectedLabel()\">\n {{ getSelectedLabel() || placeholder }}\n </span>\n <div class=\"sefin-select__arrow\" [class.sefin-select__arrow--open]=\"isOpen\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n <div\n *ngIf=\"isOpen && options && options.length > 0\"\n #dropdownRef\n class=\"sefin-select__dropdown\"\n role=\"listbox\"\n >\n <ul class=\"sefin-select__list\">\n <li\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n [class.sefin-select__option]=\"true\"\n [class.sefin-select__option--selected]=\"i === selectedIndex\"\n [class.sefin-select__option--disabled]=\"option.disabled\"\n [class.sefin-select__option--active]=\"option.value === value\"\n (click)=\"selectOption(option)\"\n [attr.aria-selected]=\"option.value === value\"\n role=\"option\"\n >\n {{ option.label }}\n </li>\n </ul>\n </div>\n <div\n *ngIf=\"isOpen && (!options || options.length === 0)\"\n class=\"sefin-select__dropdown sefin-select__dropdown--empty\"\n >\n <div class=\"sefin-select__no-options\">\n No hay opciones disponibles\n </div>\n </div>\n</div>\n\n", styles: [".sefin-select{position:relative;width:100%}.sefin-select__button{width:100%;display:flex;align-items:center;justify-content:space-between;font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);color:var(--sefin-color-text);background-color:var(--sefin-color-surface);border:1px solid var(--sefin-color-border);border-radius:var(--sefin-radius-md);transition:all .2s ease-in-out;outline:none;cursor:pointer;text-align:left;gap:var(--sefin-spacing-sm)}.sefin-select__button:focus-visible{border-color:var(--sefin-color-border-focus);box-shadow:0 0 0 3px var(--sefin-color-primary-light)}.sefin-select__button:hover:not(.sefin-select__button--disabled){border-color:var(--sefin-color-border-focus)}.sefin-select__button--disabled{background-color:var(--sefin-color-surface-hover);color:var(--sefin-color-text-disabled);cursor:not-allowed;opacity:.6}.sefin-select__button--open{border-color:var(--sefin-color-border-focus);box-shadow:0 0 0 3px var(--sefin-color-primary-light)}.sefin-select__button--sm{padding:var(--sefin-spacing-sm) var(--sefin-spacing-md);font-size:var(--sefin-font-size-sm);line-height:var(--sefin-line-height-normal);min-height:32px}.sefin-select__button--md{padding:var(--sefin-spacing-md) var(--sefin-spacing-lg);font-size:var(--sefin-font-size-base);line-height:var(--sefin-line-height-normal);min-height:40px}.sefin-select__button--lg{padding:var(--sefin-spacing-lg) var(--sefin-spacing-xl);font-size:var(--sefin-font-size-lg);line-height:var(--sefin-line-height-normal);min-height:48px}.sefin-select__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sefin-color-text)}.sefin-select__value--placeholder{color:var(--sefin-color-text-secondary)}.sefin-select__arrow{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--sefin-color-text-secondary);pointer-events:none;transition:transform .2s ease-in-out}.sefin-select__arrow svg{width:16px;height:16px}.sefin-select__arrow--open{transform:rotate(180deg)}.sefin-select__dropdown{position:absolute;top:calc(100% + var(--sefin-spacing-xs));left:0;right:0;z-index:9999;background-color:var(--sefin-color-surface);border:1px solid var(--sefin-color-border);border-radius:var(--sefin-radius-md);box-shadow:var(--sefin-shadow-lg);max-height:300px;overflow-y:auto;overflow-x:hidden}.sefin-select__dropdown--empty{padding:var(--sefin-spacing-md)}.sefin-select__list{list-style:none;margin:0;padding:var(--sefin-spacing-xs)}.sefin-select__option{padding:var(--sefin-spacing-sm) var(--sefin-spacing-md);font-family:var(--sefin-font-family-base);font-size:var(--sefin-font-size-base);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);color:var(--sefin-color-text);cursor:pointer;border-radius:var(--sefin-radius-sm);transition:all .15s ease-in-out;-webkit-user-select:none;user-select:none}.sefin-select__option:hover:not(.sefin-select__option--disabled){background-color:var(--sefin-color-surface-hover)}.sefin-select__option--selected,.sefin-select__option--active{background-color:var(--sefin-color-primary-light, var(--sefin-color-surface-hover));color:var(--sefin-color-text);font-weight:var(--sefin-font-weight-medium)}.sefin-select__option--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.sefin-select__no-options{padding:var(--sefin-spacing-md);text-align:center;font-family:var(--sefin-font-family-base);font-size:var(--sefin-font-size-sm);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);color:var(--sefin-color-text-secondary)}.sefin-select--open .sefin-select__button{border-color:var(--sefin-color-border-focus)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
1356
+ }
1357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SelectComponent, decorators: [{
1358
+ type: Component,
1359
+ args: [{ selector: 'sefin-select', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.Default, providers: [
1360
+ {
1361
+ provide: NG_VALUE_ACCESSOR,
1362
+ useExisting: forwardRef(() => SelectComponent),
1363
+ multi: true,
1364
+ },
1365
+ ], template: "<div [class]=\"containerClasses\" #containerRef>\n <button\n #buttonRef\n type=\"button\"\n [class]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-haspopup]=\"true\"\n aria-label=\"Select option\"\n >\n <span class=\"sefin-select__value\" [class.sefin-select__value--placeholder]=\"!getSelectedLabel()\">\n {{ getSelectedLabel() || placeholder }}\n </span>\n <div class=\"sefin-select__arrow\" [class.sefin-select__arrow--open]=\"isOpen\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n <div\n *ngIf=\"isOpen && options && options.length > 0\"\n #dropdownRef\n class=\"sefin-select__dropdown\"\n role=\"listbox\"\n >\n <ul class=\"sefin-select__list\">\n <li\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n [class.sefin-select__option]=\"true\"\n [class.sefin-select__option--selected]=\"i === selectedIndex\"\n [class.sefin-select__option--disabled]=\"option.disabled\"\n [class.sefin-select__option--active]=\"option.value === value\"\n (click)=\"selectOption(option)\"\n [attr.aria-selected]=\"option.value === value\"\n role=\"option\"\n >\n {{ option.label }}\n </li>\n </ul>\n </div>\n <div\n *ngIf=\"isOpen && (!options || options.length === 0)\"\n class=\"sefin-select__dropdown sefin-select__dropdown--empty\"\n >\n <div class=\"sefin-select__no-options\">\n No hay opciones disponibles\n </div>\n </div>\n</div>\n\n", styles: [".sefin-select{position:relative;width:100%}.sefin-select__button{width:100%;display:flex;align-items:center;justify-content:space-between;font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);color:var(--sefin-color-text);background-color:var(--sefin-color-surface);border:1px solid var(--sefin-color-border);border-radius:var(--sefin-radius-md);transition:all .2s ease-in-out;outline:none;cursor:pointer;text-align:left;gap:var(--sefin-spacing-sm)}.sefin-select__button:focus-visible{border-color:var(--sefin-color-border-focus);box-shadow:0 0 0 3px var(--sefin-color-primary-light)}.sefin-select__button:hover:not(.sefin-select__button--disabled){border-color:var(--sefin-color-border-focus)}.sefin-select__button--disabled{background-color:var(--sefin-color-surface-hover);color:var(--sefin-color-text-disabled);cursor:not-allowed;opacity:.6}.sefin-select__button--open{border-color:var(--sefin-color-border-focus);box-shadow:0 0 0 3px var(--sefin-color-primary-light)}.sefin-select__button--sm{padding:var(--sefin-spacing-sm) var(--sefin-spacing-md);font-size:var(--sefin-font-size-sm);line-height:var(--sefin-line-height-normal);min-height:32px}.sefin-select__button--md{padding:var(--sefin-spacing-md) var(--sefin-spacing-lg);font-size:var(--sefin-font-size-base);line-height:var(--sefin-line-height-normal);min-height:40px}.sefin-select__button--lg{padding:var(--sefin-spacing-lg) var(--sefin-spacing-xl);font-size:var(--sefin-font-size-lg);line-height:var(--sefin-line-height-normal);min-height:48px}.sefin-select__value{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sefin-color-text)}.sefin-select__value--placeholder{color:var(--sefin-color-text-secondary)}.sefin-select__arrow{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--sefin-color-text-secondary);pointer-events:none;transition:transform .2s ease-in-out}.sefin-select__arrow svg{width:16px;height:16px}.sefin-select__arrow--open{transform:rotate(180deg)}.sefin-select__dropdown{position:absolute;top:calc(100% + var(--sefin-spacing-xs));left:0;right:0;z-index:9999;background-color:var(--sefin-color-surface);border:1px solid var(--sefin-color-border);border-radius:var(--sefin-radius-md);box-shadow:var(--sefin-shadow-lg);max-height:300px;overflow-y:auto;overflow-x:hidden}.sefin-select__dropdown--empty{padding:var(--sefin-spacing-md)}.sefin-select__list{list-style:none;margin:0;padding:var(--sefin-spacing-xs)}.sefin-select__option{padding:var(--sefin-spacing-sm) var(--sefin-spacing-md);font-family:var(--sefin-font-family-base);font-size:var(--sefin-font-size-base);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);color:var(--sefin-color-text);cursor:pointer;border-radius:var(--sefin-radius-sm);transition:all .15s ease-in-out;-webkit-user-select:none;user-select:none}.sefin-select__option:hover:not(.sefin-select__option--disabled){background-color:var(--sefin-color-surface-hover)}.sefin-select__option--selected,.sefin-select__option--active{background-color:var(--sefin-color-primary-light, var(--sefin-color-surface-hover));color:var(--sefin-color-text);font-weight:var(--sefin-font-weight-medium)}.sefin-select__option--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.sefin-select__no-options{padding:var(--sefin-spacing-md);text-align:center;font-family:var(--sefin-font-family-base);font-size:var(--sefin-font-size-sm);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);color:var(--sefin-color-text-secondary)}.sefin-select--open .sefin-select__button{border-color:var(--sefin-color-border-focus)}\n"] }]
1366
+ }], propDecorators: { containerRef: [{
1367
+ type: ViewChild,
1368
+ args: ['containerRef', { static: false }]
1369
+ }], dropdownRef: [{
1370
+ type: ViewChild,
1371
+ args: ['dropdownRef', { static: false }]
1372
+ }], buttonRef: [{
1373
+ type: ViewChild,
1374
+ args: ['buttonRef', { static: false }]
1375
+ }], options: [{
1376
+ type: Input
1377
+ }], placeholder: [{
1378
+ type: Input
1379
+ }], disabled: [{
1380
+ type: Input
1381
+ }], size: [{
1382
+ type: Input
1383
+ }], class: [{
1384
+ type: Input
1385
+ }], value: [{
1386
+ type: Input
1387
+ }], valueChange: [{
1388
+ type: Output
1389
+ }], optionSelected: [{
1390
+ type: Output
1391
+ }], onClickOutside: [{
1392
+ type: HostListener,
1393
+ args: ['document:click', ['$event']]
1394
+ }], onEscapeKey: [{
1395
+ type: HostListener,
1396
+ args: ['document:keydown.escape', ['$event']]
1397
+ }] } });
1398
+
1399
+ class SwitchComponent {
1400
+ size = 'md';
1401
+ disabled = false;
1402
+ class = '';
1403
+ label = '';
1404
+ name = '';
1405
+ value = false;
1406
+ valueChange = new EventEmitter();
1407
+ checkedChange = new EventEmitter();
1408
+ onChange = (value) => { };
1409
+ onTouched = () => { };
1410
+ onSwitchChange(event) {
1411
+ if (this.disabled) {
1412
+ return;
1413
+ }
1414
+ const target = event.target;
1415
+ this.value = target.checked;
1416
+ this.onChange(this.value);
1417
+ this.onTouched();
1418
+ this.valueChange.emit(this.value);
1419
+ this.checkedChange.emit(this.value);
1420
+ }
1421
+ writeValue(value) {
1422
+ this.value = value;
1423
+ }
1424
+ registerOnChange(fn) {
1425
+ this.onChange = fn;
1426
+ }
1427
+ registerOnTouched(fn) {
1428
+ this.onTouched = fn;
1429
+ }
1430
+ setDisabledState(isDisabled) {
1431
+ this.disabled = isDisabled;
1432
+ }
1433
+ get wrapperClasses() {
1434
+ return [
1435
+ 'sefin-switch__wrapper',
1436
+ this.disabled ? 'sefin-switch__wrapper--disabled' : '',
1437
+ this.class,
1438
+ ]
1439
+ .filter(Boolean)
1440
+ .join(' ');
1441
+ }
1442
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1443
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: SwitchComponent, isStandalone: true, selector: "sefin-switch", inputs: { size: "size", disabled: "disabled", class: "class", label: "label", name: "name", value: "value" }, outputs: { valueChange: "valueChange", checkedChange: "checkedChange" }, providers: [
1444
+ {
1445
+ provide: NG_VALUE_ACCESSOR,
1446
+ useExisting: forwardRef(() => SwitchComponent),
1447
+ multi: true,
1448
+ },
1449
+ ], ngImport: i0, template: "<label [class]=\"wrapperClasses\">\n <input\n type=\"checkbox\"\n class=\"sefin-switch\"\n [class.sefin-switch--sm]=\"size === 'sm'\"\n [class.sefin-switch--md]=\"size === 'md'\"\n [class.sefin-switch--lg]=\"size === 'lg'\"\n [class.sefin-switch--disabled]=\"disabled\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n (change)=\"onSwitchChange($event)\"\n />\n <span \n class=\"sefin-switch__track\" \n [class.sefin-switch__track--sm]=\"size === 'sm'\" \n [class.sefin-switch__track--md]=\"size === 'md'\" \n [class.sefin-switch__track--lg]=\"size === 'lg'\" \n [class.sefin-switch__track--checked]=\"value\" \n >\n <span \n class=\"sefin-switch__thumb\"\n [class.sefin-switch__thumb--sm]=\"size === 'sm'\"\n [class.sefin-switch__thumb--md]=\"size === 'md'\"\n [class.sefin-switch__thumb--lg]=\"size === 'lg'\"\n ></span>\n </span>\n <span *ngIf=\"label\" class=\"sefin-switch__label\" [class.sefin-switch__label--sm]=\"size === 'sm'\" [class.sefin-switch__label--md]=\"size === 'md'\" [class.sefin-switch__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n", styles: [".sefin-switch__wrapper{display:inline-flex;align-items:center;gap:var(--sefin-spacing-sm);cursor:pointer;-webkit-user-select:none;user-select:none;position:relative}.sefin-switch__wrapper--disabled{cursor:not-allowed;opacity:.6}.sefin-switch{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.sefin-switch__track{position:relative;display:inline-block;background-color:var(--sefin-color-border);border-radius:9999px;transition:background-color .2s ease-in-out;flex-shrink:0;box-sizing:border-box}.sefin-switch__track--checked{background-color:var(--sefin-color-primary)}.sefin-switch__track--sm{width:32px;height:18px}.sefin-switch__track--md{width:40px;height:22px}.sefin-switch__track--lg{width:48px;height:26px}.sefin-switch__thumb{position:absolute;top:50%;left:2px;transform:translateY(-50%);background-color:#fff;border-radius:50%;transition:transform .2s ease-in-out,box-shadow .2s ease-in-out;box-shadow:0 2px 4px #0003;box-sizing:border-box}.sefin-switch__thumb--sm{width:14px;height:14px}.sefin-switch__thumb--md{width:18px;height:18px}.sefin-switch__thumb--lg{width:22px;height:22px}.sefin-switch__track--sm.sefin-switch__track--checked .sefin-switch__thumb{transform:translateY(-50%) translate(14px)}.sefin-switch__track--md.sefin-switch__track--checked .sefin-switch__thumb{transform:translateY(-50%) translate(18px)}.sefin-switch__track--lg.sefin-switch__track--checked .sefin-switch__thumb{transform:translateY(-50%) translate(22px)}.sefin-switch__wrapper:hover .sefin-switch__track:not(.sefin-switch__track--checked){background-color:var(--sefin-color-border-focus)}.sefin-switch__wrapper--disabled:hover .sefin-switch__track{background-color:var(--sefin-color-border)}.sefin-switch__wrapper:focus-within .sefin-switch__track{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-switch__wrapper:focus-within{outline:none}.sefin-switch__wrapper--disabled .sefin-switch__track{background-color:var(--sefin-color-border);cursor:not-allowed}.sefin-switch__wrapper--disabled .sefin-switch__track--checked{background-color:var(--sefin-color-border);opacity:.6}.sefin-switch__wrapper--disabled .sefin-switch__thumb{box-shadow:0 1px 2px #0000001a}.sefin-switch__label{font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);color:var(--sefin-color-text);-webkit-user-select:none;user-select:none}.sefin-switch__label--sm{font-size:var(--sefin-font-size-sm)}.sefin-switch__label--md{font-size:var(--sefin-font-size-base)}.sefin-switch__label--lg{font-size:var(--sefin-font-size-lg)}.sefin-switch__wrapper--disabled .sefin-switch__label{color:var(--sefin-color-text-disabled)}.sefin-switch--disabled{cursor:not-allowed}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
1450
+ }
1451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: SwitchComponent, decorators: [{
1452
+ type: Component,
1453
+ args: [{ selector: 'sefin-switch', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.Default, providers: [
1454
+ {
1455
+ provide: NG_VALUE_ACCESSOR,
1456
+ useExisting: forwardRef(() => SwitchComponent),
1457
+ multi: true,
1458
+ },
1459
+ ], template: "<label [class]=\"wrapperClasses\">\n <input\n type=\"checkbox\"\n class=\"sefin-switch\"\n [class.sefin-switch--sm]=\"size === 'sm'\"\n [class.sefin-switch--md]=\"size === 'md'\"\n [class.sefin-switch--lg]=\"size === 'lg'\"\n [class.sefin-switch--disabled]=\"disabled\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n (change)=\"onSwitchChange($event)\"\n />\n <span \n class=\"sefin-switch__track\" \n [class.sefin-switch__track--sm]=\"size === 'sm'\" \n [class.sefin-switch__track--md]=\"size === 'md'\" \n [class.sefin-switch__track--lg]=\"size === 'lg'\" \n [class.sefin-switch__track--checked]=\"value\" \n >\n <span \n class=\"sefin-switch__thumb\"\n [class.sefin-switch__thumb--sm]=\"size === 'sm'\"\n [class.sefin-switch__thumb--md]=\"size === 'md'\"\n [class.sefin-switch__thumb--lg]=\"size === 'lg'\"\n ></span>\n </span>\n <span *ngIf=\"label\" class=\"sefin-switch__label\" [class.sefin-switch__label--sm]=\"size === 'sm'\" [class.sefin-switch__label--md]=\"size === 'md'\" [class.sefin-switch__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n", styles: [".sefin-switch__wrapper{display:inline-flex;align-items:center;gap:var(--sefin-spacing-sm);cursor:pointer;-webkit-user-select:none;user-select:none;position:relative}.sefin-switch__wrapper--disabled{cursor:not-allowed;opacity:.6}.sefin-switch{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.sefin-switch__track{position:relative;display:inline-block;background-color:var(--sefin-color-border);border-radius:9999px;transition:background-color .2s ease-in-out;flex-shrink:0;box-sizing:border-box}.sefin-switch__track--checked{background-color:var(--sefin-color-primary)}.sefin-switch__track--sm{width:32px;height:18px}.sefin-switch__track--md{width:40px;height:22px}.sefin-switch__track--lg{width:48px;height:26px}.sefin-switch__thumb{position:absolute;top:50%;left:2px;transform:translateY(-50%);background-color:#fff;border-radius:50%;transition:transform .2s ease-in-out,box-shadow .2s ease-in-out;box-shadow:0 2px 4px #0003;box-sizing:border-box}.sefin-switch__thumb--sm{width:14px;height:14px}.sefin-switch__thumb--md{width:18px;height:18px}.sefin-switch__thumb--lg{width:22px;height:22px}.sefin-switch__track--sm.sefin-switch__track--checked .sefin-switch__thumb{transform:translateY(-50%) translate(14px)}.sefin-switch__track--md.sefin-switch__track--checked .sefin-switch__thumb{transform:translateY(-50%) translate(18px)}.sefin-switch__track--lg.sefin-switch__track--checked .sefin-switch__thumb{transform:translateY(-50%) translate(22px)}.sefin-switch__wrapper:hover .sefin-switch__track:not(.sefin-switch__track--checked){background-color:var(--sefin-color-border-focus)}.sefin-switch__wrapper--disabled:hover .sefin-switch__track{background-color:var(--sefin-color-border)}.sefin-switch__wrapper:focus-within .sefin-switch__track{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-switch__wrapper:focus-within{outline:none}.sefin-switch__wrapper--disabled .sefin-switch__track{background-color:var(--sefin-color-border);cursor:not-allowed}.sefin-switch__wrapper--disabled .sefin-switch__track--checked{background-color:var(--sefin-color-border);opacity:.6}.sefin-switch__wrapper--disabled .sefin-switch__thumb{box-shadow:0 1px 2px #0000001a}.sefin-switch__label{font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-normal);line-height:var(--sefin-line-height-normal);color:var(--sefin-color-text);-webkit-user-select:none;user-select:none}.sefin-switch__label--sm{font-size:var(--sefin-font-size-sm)}.sefin-switch__label--md{font-size:var(--sefin-font-size-base)}.sefin-switch__label--lg{font-size:var(--sefin-font-size-lg)}.sefin-switch__wrapper--disabled .sefin-switch__label{color:var(--sefin-color-text-disabled)}.sefin-switch--disabled{cursor:not-allowed}\n"] }]
1460
+ }], propDecorators: { size: [{
1461
+ type: Input
1462
+ }], disabled: [{
1463
+ type: Input
1464
+ }], class: [{
1465
+ type: Input
1466
+ }], label: [{
1467
+ type: Input
1468
+ }], name: [{
1469
+ type: Input
1470
+ }], value: [{
1471
+ type: Input
1472
+ }], valueChange: [{
1473
+ type: Output
1474
+ }], checkedChange: [{
1475
+ type: Output
1476
+ }] } });
1477
+
960
1478
  class TypographyComponent {
961
1479
  variant = 'p';
962
1480
  size;
@@ -1015,5 +1533,5 @@ const STYLES_PATH = './styles/index.scss';
1015
1533
  * Generated bundle index. Do not edit.
1016
1534
  */
1017
1535
 
1018
- export { AutocompleteComponent, BORDER_RADIUS_TOKENS, BRAND_THEME, ButtonComponent, COLOR_TOKENS, CheckboxComponent, DARK_THEME, DESIGN_TOKENS, LIGHT_THEME, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, TYPOGRAPHY_TOKENS, ThemeLoader, TypographyComponent };
1536
+ export { AutocompleteComponent, BORDER_RADIUS_TOKENS, BRAND_THEME, ButtonComponent, COLOR_TOKENS, CheckboxComponent, DARK_THEME, DESIGN_TOKENS, IconButtonComponent, LIGHT_THEME, LinkComponent, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, SelectComponent, StackComponent, SwitchComponent, TYPOGRAPHY_TOKENS, ThemeLoader, TypographyComponent };
1019
1537
  //# sourceMappingURL=lesterarte-sefin-ui.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lesterarte-sefin-ui.mjs","sources":["../../../src/tokens/colors.ts","../../../src/tokens/spacing.ts","../../../src/tokens/typography.ts","../../../src/tokens/border-radius.ts","../../../src/tokens/shadow.ts","../../../src/tokens/index.ts","../../../src/themes/light-theme.ts","../../../src/themes/dark-theme.ts","../../../src/themes/brand-theme.ts","../../../src/themes/index.ts","../../../src/utils/theme-loader.ts","../../../src/utils/index.ts","../../../src/shared/types.ts","../../../src/shared/index.ts","../../../src/atoms/button/button.component.ts","../../../src/atoms/button/button.component.html","../../../src/atoms/autocomplete/autocomplete.component.ts","../../../src/atoms/autocomplete/autocomplete.component.html","../../../src/atoms/checkbox/checkbox.component.ts","../../../src/atoms/checkbox/checkbox.component.html","../../../src/atoms/typography/typography.component.ts","../../../src/atoms/typography/typography.component.html","../../../src/atoms/index.ts","../../../src/public-api.ts","../../../src/lesterarte-sefin-ui.ts"],"sourcesContent":["/**\n * Color design tokens as TypeScript constants\n * Based on Secretaría de Finanzas brand guidelines\n * These values are the source of truth for all color tokens\n */\n\nexport const COLOR_TOKENS = {\n // Primary colors - Secretaría de Finanzas brand colors\n primary: {\n // Light Blue (Azul Claro) - Primary brand color\n 50: '#e6f7fb',\n 100: '#b3e5f0',\n 200: '#80d3e5',\n 300: '#4dc1da',\n 400: '#2ab0cf',\n 500: '#55C3D8', // Primary Light Blue from brand guidelines\n 600: '#4aafc4',\n 700: '#3f9bb0',\n 800: '#34879c',\n 900: '#297388',\n },\n // Secondary colors - Grays from brand guidelines\n secondary: {\n // Based on Dark Gray and Light Gray from brand\n 50: '#f5f5f5',\n 100: '#e8e8e8',\n 200: '#cecece', // Light Gray from brand guidelines\n 300: '#b5b5b5',\n 400: '#9b9b9b',\n 500: '#828282',\n 600: '#686868',\n 700: '#4f4f4f',\n 800: '#383838', // Dark Gray from brand guidelines\n 900: '#2a2a2a',\n },\n // Neutral colors - Based on brand grays\n neutral: {\n 50: '#ffffff', // White from brand guidelines\n 100: '#f5f5f5',\n 200: '#cecece', // Light Gray\n 300: '#b5b5b5',\n 400: '#9b9b9b',\n 500: '#828282',\n 600: '#686868',\n 700: '#4f4f4f',\n 800: '#383838', // Dark Gray\n 900: '#2a2a2a',\n },\n // Semantic colors - Keeping standard semantic colors\n success: {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n },\n warning: {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n },\n error: {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n },\n info: {\n 50: '#e0f2f1',\n 100: '#b2dfdb',\n 200: '#80cbc4',\n 300: '#4db6ac',\n 400: '#26a69a',\n 500: '#009688',\n 600: '#00897b',\n 700: '#00796b',\n 800: '#00695c',\n 900: '#004d40',\n },\n // Brand-specific colors\n brand: {\n darkGray: '#383838', // Dark Gray from brand guidelines\n lightGray: '#cecece', // Light Gray from brand guidelines\n lightBlue: '#55C3D8', // Light Blue from brand guidelines\n white: '#ffffff', // White from brand guidelines\n },\n} as const;\n\n/**\n * Color token names for CSS variable generation\n */\nexport type ColorTokenName =\n | 'primary'\n | 'secondary'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\n | 'info'\n | 'brand';\n\nexport type ColorShade = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n","/**\n * Spacing design tokens\n * Based on 8px grid system\n */\n\nexport const SPACING_TOKENS = {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n '2xl': '48px',\n '3xl': '64px',\n '4xl': '96px',\n '5xl': '128px',\n} as const;\n\nexport type SpacingToken = keyof typeof SPACING_TOKENS;\n\n","/**\n * Typography design tokens\n * Based on Secretaría de Finanzas brand guidelines - Pluto typeface\n */\n\nexport const TYPOGRAPHY_TOKENS = {\n fontFamily: {\n base: \"'Pluto', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n mono: \"'Fira Code', 'Courier New', monospace\",\n },\n fontSize: {\n xs: '0.75rem', // 12px\n sm: '0.875rem', // 14px\n base: '1rem', // 16px\n lg: '1.125rem', // 18px\n xl: '1.25rem', // 20px\n '2xl': '1.5rem', // 24px\n '3xl': '1.875rem', // 30px\n '4xl': '2.25rem', // 36px\n '5xl': '3rem', // 48px\n },\n fontWeight: {\n light: 300, // Pluto-Light\n normal: 400, // Pluto-Regular\n medium: 500,\n semibold: 600,\n bold: 700, // Pluto-Bold\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n} as const;\n\nexport type TypographyToken = keyof typeof TYPOGRAPHY_TOKENS;\n","/**\n * Border radius design tokens\n */\n\nexport const BORDER_RADIUS_TOKENS = {\n none: '0',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n '2xl': '24px',\n full: '9999px',\n} as const;\n\nexport type BorderRadiusToken = keyof typeof BORDER_RADIUS_TOKENS;\n\n","/**\n * Shadow design tokens\n */\n\nexport const SHADOW_TOKENS = {\n none: 'none',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n} as const;\n\nexport type ShadowToken = keyof typeof SHADOW_TOKENS;\n\n","/**\n * Design tokens index\n * Central export for all design tokens\n */\n\nexport * from './colors';\nexport * from './spacing';\nexport * from './typography';\nexport * from './border-radius';\nexport * from './shadow';\n\n/**\n * All design tokens combined\n */\nexport const DESIGN_TOKENS = {\n colors: () => import('./colors').then(m => m.COLOR_TOKENS),\n spacing: () => import('./spacing').then(m => m.SPACING_TOKENS),\n typography: () => import('./typography').then(m => m.TYPOGRAPHY_TOKENS),\n borderRadius: () => import('./border-radius').then(m => m.BORDER_RADIUS_TOKENS),\n shadow: () => import('./shadow').then(m => m.SHADOW_TOKENS),\n};\n\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Light theme configuration\n * Based on Secretaría de Finanzas brand colors\n */\nexport const LIGHT_THEME = {\n name: 'light',\n colors: {\n // Primary color is Light Blue from brand\n primary: COLOR_TOKENS.brand.lightBlue,\n 'primary-dark': COLOR_TOKENS.primary[700],\n 'primary-light': COLOR_TOKENS.primary[300],\n // Secondary uses Dark Gray\n secondary: COLOR_TOKENS.brand.darkGray,\n 'secondary-dark': COLOR_TOKENS.secondary[900],\n 'secondary-light': COLOR_TOKENS.secondary[600],\n // Background uses White and Light Gray\n background: COLOR_TOKENS.brand.white,\n 'background-elevated': COLOR_TOKENS.brand.white,\n surface: COLOR_TOKENS.brand.white,\n 'surface-hover': COLOR_TOKENS.brand.lightGray,\n // Text uses Dark Gray\n text: COLOR_TOKENS.brand.darkGray,\n 'text-secondary': COLOR_TOKENS.secondary[600],\n 'text-disabled': COLOR_TOKENS.secondary[400],\n // Borders use Light Gray\n border: COLOR_TOKENS.brand.lightGray,\n 'border-focus': COLOR_TOKENS.brand.lightBlue,\n // Semantic colors\n success: COLOR_TOKENS.success[500],\n warning: COLOR_TOKENS.warning[500],\n error: COLOR_TOKENS.error[500],\n info: COLOR_TOKENS.info[500],\n },\n} as const;\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Dark theme configuration\n * Based on Secretaría de Finanzas brand colors (inverted)\n */\nexport const DARK_THEME = {\n name: 'dark',\n colors: {\n // Primary color remains Light Blue\n primary: COLOR_TOKENS.brand.lightBlue,\n 'primary-dark': COLOR_TOKENS.primary[300],\n 'primary-light': COLOR_TOKENS.primary[700],\n // Secondary uses Light Gray for contrast\n secondary: COLOR_TOKENS.brand.lightGray,\n 'secondary-dark': COLOR_TOKENS.secondary[400],\n 'secondary-light': COLOR_TOKENS.secondary[200],\n // Background uses Dark Gray\n background: COLOR_TOKENS.brand.darkGray,\n 'background-elevated': COLOR_TOKENS.secondary[700],\n surface: COLOR_TOKENS.secondary[700],\n 'surface-hover': COLOR_TOKENS.secondary[600],\n // Text uses White and Light Gray\n text: COLOR_TOKENS.brand.white,\n 'text-secondary': COLOR_TOKENS.brand.lightGray,\n 'text-disabled': COLOR_TOKENS.secondary[500],\n // Borders use medium gray\n border: COLOR_TOKENS.secondary[600],\n 'border-focus': COLOR_TOKENS.brand.lightBlue,\n // Semantic colors\n success: COLOR_TOKENS.success[400],\n warning: COLOR_TOKENS.warning[400],\n error: COLOR_TOKENS.error[400],\n info: COLOR_TOKENS.info[400],\n },\n} as const;\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Brand theme configuration\n * Exact colors from Secretaría de Finanzas brand guidelines\n */\nexport const BRAND_THEME = {\n name: 'brand',\n colors: {\n // Primary: Light Blue from brand guidelines\n primary: COLOR_TOKENS.brand.lightBlue, // #55C3D8\n 'primary-dark': COLOR_TOKENS.primary[700],\n 'primary-light': COLOR_TOKENS.primary[300],\n // Secondary: Dark Gray from brand guidelines\n secondary: COLOR_TOKENS.brand.darkGray, // #383838\n 'secondary-dark': COLOR_TOKENS.secondary[900],\n 'secondary-light': COLOR_TOKENS.secondary[600],\n // Background: White from brand guidelines\n background: COLOR_TOKENS.brand.white, // #ffffff\n 'background-elevated': COLOR_TOKENS.brand.white,\n surface: COLOR_TOKENS.brand.white,\n 'surface-hover': COLOR_TOKENS.brand.lightGray, // #cecece\n // Text: Dark Gray from brand guidelines\n text: COLOR_TOKENS.brand.darkGray, // #383838\n 'text-secondary': COLOR_TOKENS.secondary[600],\n 'text-disabled': COLOR_TOKENS.secondary[400],\n // Border: Light Gray from brand guidelines\n border: COLOR_TOKENS.brand.lightGray, // #cecece\n 'border-focus': COLOR_TOKENS.brand.lightBlue, // #55C3D8\n // Semantic colors\n success: COLOR_TOKENS.success[500],\n warning: COLOR_TOKENS.warning[500],\n error: COLOR_TOKENS.error[500],\n info: COLOR_TOKENS.info[500],\n },\n} as const;\n","/**\n * Themes index\n */\nexport * from './light-theme';\nexport * from './dark-theme';\nexport * from './brand-theme';\n\nexport type Theme = 'light' | 'dark' | 'brand';\n\n","import { LIGHT_THEME } from '../themes/light-theme';\nimport { DARK_THEME } from '../themes/dark-theme';\nimport { BRAND_THEME } from '../themes/brand-theme';\nimport { SPACING_TOKENS } from '../tokens/spacing';\nimport { TYPOGRAPHY_TOKENS } from '../tokens/typography';\nimport { BORDER_RADIUS_TOKENS } from '../tokens/border-radius';\nimport { SHADOW_TOKENS } from '../tokens/shadow';\nimport type { Theme } from '../themes';\nimport type { CustomTheme } from '../shared/types';\n\n/**\n * Theme loader utility\n * Generates CSS variables from design tokens\n */\nexport class ThemeLoader {\n /**\n * Load a theme and apply it to the document root\n * @param themeName - Predefined theme name ('light', 'dark', 'brand') or a CustomTheme object\n * @param variant - Optional variant ('light' or 'dark') for CustomTheme with variants support\n */\n static loadTheme(\n themeName: Theme | CustomTheme = 'light',\n variant?: 'light' | 'dark'\n ): void {\n let theme: CustomTheme | typeof LIGHT_THEME;\n let colors: Record<string, string | undefined>;\n\n if (typeof themeName === 'string') {\n theme = this.getTheme(themeName);\n colors = theme.colors as Record<string, string | undefined>;\n } else {\n theme = themeName;\n // If variant is specified and theme has variants, use variant colors\n if (variant && theme.variants) {\n const variantColors = theme.variants[variant];\n if (variantColors) {\n colors = variantColors;\n } else {\n // Fallback to base colors if variant doesn't exist\n colors = theme.colors;\n }\n } else {\n // Use base colors if no variant specified or no variants defined\n colors = theme.colors;\n }\n }\n\n const root = document.documentElement;\n\n // Apply color tokens\n Object.entries(colors).forEach(([key, value]) => {\n if (value) {\n root.style.setProperty(`--sefin-color-${key}`, value);\n }\n });\n\n // Apply spacing tokens (use custom if provided, otherwise use defaults)\n const spacingTokens = typeof themeName === 'object' && themeName.spacing \n ? { ...SPACING_TOKENS, ...themeName.spacing }\n : SPACING_TOKENS;\n Object.entries(spacingTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-spacing-${key}`, value);\n });\n\n // Apply typography tokens (use custom if provided, otherwise use defaults)\n const typographyTokens = typeof themeName === 'object' && themeName.typography\n ? {\n fontFamily: { ...TYPOGRAPHY_TOKENS.fontFamily, ...themeName.typography.fontFamily },\n fontSize: { ...TYPOGRAPHY_TOKENS.fontSize, ...themeName.typography.fontSize },\n fontWeight: { ...TYPOGRAPHY_TOKENS.fontWeight, ...themeName.typography.fontWeight },\n lineHeight: { ...TYPOGRAPHY_TOKENS.lineHeight, ...themeName.typography.lineHeight },\n }\n : TYPOGRAPHY_TOKENS;\n\n Object.entries(typographyTokens.fontFamily).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-family-${key}`, value);\n });\n Object.entries(typographyTokens.fontSize).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-size-${key}`, value);\n });\n Object.entries(typographyTokens.fontWeight).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-weight-${key}`, String(value));\n });\n Object.entries(typographyTokens.lineHeight).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-line-height-${key}`, String(value));\n });\n\n // Apply border radius tokens (use custom if provided, otherwise use defaults)\n const borderRadiusTokens = typeof themeName === 'object' && themeName.borderRadius\n ? { ...BORDER_RADIUS_TOKENS, ...themeName.borderRadius }\n : BORDER_RADIUS_TOKENS;\n Object.entries(borderRadiusTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-radius-${key}`, value);\n });\n\n // Apply shadow tokens (use custom if provided, otherwise use defaults)\n const shadowTokens = typeof themeName === 'object' && themeName.shadow\n ? { ...SHADOW_TOKENS, ...themeName.shadow }\n : SHADOW_TOKENS;\n Object.entries(shadowTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-shadow-${key}`, value);\n });\n\n // Set theme attribute for CSS selectors\n let themeAttribute: string;\n if (typeof themeName === 'string') {\n themeAttribute = themeName;\n } else {\n themeAttribute = variant\n ? `${themeName.name}-${variant}`\n : themeName.name;\n }\n root.setAttribute('data-theme', themeAttribute);\n }\n\n /**\n * Load a custom theme variant (light or dark)\n * @param customTheme - CustomTheme object with variants support\n * @param variant - Variant to load ('light' or 'dark')\n */\n static loadThemeVariant(\n customTheme: CustomTheme,\n variant: 'light' | 'dark'\n ): void {\n if (!customTheme.variants) {\n console.warn(\n `Theme \"${customTheme.name}\" does not have variants. Loading base theme.`\n );\n this.loadTheme(customTheme);\n return;\n }\n\n this.loadTheme(customTheme, variant);\n }\n\n /**\n * Get theme configuration by name\n */\n private static getTheme(themeName: Theme) {\n switch (themeName) {\n case 'dark':\n return DARK_THEME;\n case 'brand':\n return BRAND_THEME;\n case 'light':\n default:\n return LIGHT_THEME;\n }\n }\n\n /**\n * Get all CSS variables as a string (useful for SSR or static generation)\n * @param themeName - Predefined theme name ('light', 'dark', 'brand') or a CustomTheme object\n * @param variant - Optional variant ('light' or 'dark') for CustomTheme with variants support\n */\n static getThemeCSS(\n themeName: Theme | CustomTheme = 'light',\n variant?: 'light' | 'dark'\n ): string {\n let theme: CustomTheme | typeof LIGHT_THEME;\n let colors: Record<string, string | undefined>;\n\n if (typeof themeName === 'string') {\n theme = this.getTheme(themeName);\n colors = theme.colors as Record<string, string | undefined>;\n } else {\n theme = themeName;\n // If variant is specified and theme has variants, use variant colors\n if (variant && theme.variants) {\n const variantColors = theme.variants[variant];\n if (variantColors) {\n colors = variantColors;\n } else {\n colors = theme.colors;\n }\n } else {\n colors = theme.colors;\n }\n }\n\n let css = ':root {\\n';\n\n // Color tokens\n Object.entries(colors).forEach(([key, value]) => {\n if (value) {\n css += ` --sefin-color-${key}: ${value};\\n`;\n }\n });\n\n // Spacing tokens\n const spacingTokens = typeof themeName === 'object' && themeName.spacing \n ? { ...SPACING_TOKENS, ...themeName.spacing }\n : SPACING_TOKENS;\n Object.entries(spacingTokens).forEach(([key, value]) => {\n css += ` --sefin-spacing-${key}: ${value};\\n`;\n });\n\n // Typography tokens\n const typographyTokens = typeof themeName === 'object' && themeName.typography\n ? {\n fontFamily: { ...TYPOGRAPHY_TOKENS.fontFamily, ...themeName.typography.fontFamily },\n fontSize: { ...TYPOGRAPHY_TOKENS.fontSize, ...themeName.typography.fontSize },\n fontWeight: { ...TYPOGRAPHY_TOKENS.fontWeight, ...themeName.typography.fontWeight },\n lineHeight: { ...TYPOGRAPHY_TOKENS.lineHeight, ...themeName.typography.lineHeight },\n }\n : TYPOGRAPHY_TOKENS;\n\n Object.entries(typographyTokens.fontFamily).forEach(([key, value]) => {\n css += ` --sefin-font-family-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.fontSize).forEach(([key, value]) => {\n css += ` --sefin-font-size-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.fontWeight).forEach(([key, value]) => {\n css += ` --sefin-font-weight-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.lineHeight).forEach(([key, value]) => {\n css += ` --sefin-line-height-${key}: ${value};\\n`;\n });\n\n // Border radius tokens\n const borderRadiusTokens = typeof themeName === 'object' && themeName.borderRadius\n ? { ...BORDER_RADIUS_TOKENS, ...themeName.borderRadius }\n : BORDER_RADIUS_TOKENS;\n Object.entries(borderRadiusTokens).forEach(([key, value]) => {\n css += ` --sefin-radius-${key}: ${value};\\n`;\n });\n\n // Shadow tokens\n const shadowTokens = typeof themeName === 'object' && themeName.shadow\n ? { ...SHADOW_TOKENS, ...themeName.shadow }\n : SHADOW_TOKENS;\n Object.entries(shadowTokens).forEach(([key, value]) => {\n css += ` --sefin-shadow-${key}: ${value};\\n`;\n });\n\n css += '}\\n';\n return css;\n }\n}\n\n","/**\n * Utilities index\n */\nexport * from './theme-loader';\n\n","/**\n * Shared types and interfaces\n */\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type CardVariant = 'default' | 'elevated' | 'outlined';\nexport type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';\nexport type TypographySize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';\nexport type TypographyWeight = 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\nexport type TypographyColor = 'text' | 'text-secondary' | 'text-disabled' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\nexport type TypographyLineHeight = 'tight' | 'normal' | 'relaxed';\n\nexport interface BaseComponent {\n disabled?: boolean;\n class?: string;\n}\n\n/**\n * Theme color configuration\n */\nexport interface ThemeColors {\n primary: string;\n 'primary-dark'?: string;\n 'primary-light'?: string;\n secondary: string;\n 'secondary-dark'?: string;\n 'secondary-light'?: string;\n background: string;\n 'background-elevated'?: string;\n surface: string;\n 'surface-hover'?: string;\n text: string;\n 'text-secondary'?: string;\n 'text-disabled'?: string;\n border: string;\n 'border-focus'?: string;\n success?: string;\n warning?: string;\n error?: string;\n info?: string;\n [key: string]: string | undefined;\n}\n\n/**\n * Custom theme configuration interface\n * Allows users to create their own themes with custom colors, typography, spacing, etc.\n * Supports both single theme and light/dark variants.\n */\nexport interface CustomTheme {\n name: string;\n colors: ThemeColors;\n /**\n * Optional light and dark variants for the theme\n * If provided, allows switching between light and dark modes\n */\n variants?: {\n light?: ThemeColors;\n dark?: ThemeColors;\n };\n typography?: {\n fontFamily?: {\n base?: string;\n mono?: string;\n [key: string]: string | undefined;\n };\n fontSize?: {\n xs?: string;\n sm?: string;\n base?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n '3xl'?: string;\n '4xl'?: string;\n '5xl'?: string;\n [key: string]: string | undefined;\n };\n fontWeight?: {\n light?: number;\n normal?: number;\n medium?: number;\n semibold?: number;\n bold?: number;\n [key: string]: number | undefined;\n };\n lineHeight?: {\n tight?: number;\n normal?: number;\n relaxed?: number;\n [key: string]: number | undefined;\n };\n };\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n '3xl'?: string;\n '4xl'?: string;\n '5xl'?: string;\n [key: string]: string | undefined;\n };\n borderRadius?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n full?: string;\n [key: string]: string | undefined;\n };\n shadow?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n [key: string]: string | undefined;\n };\n}\n\n","/**\n * Shared index\n */\nexport * from './types';\n\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonVariant, ButtonSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent {\n @Input() variant: ButtonVariant = 'primary';\n @Input() size: ButtonSize = 'md';\n @Input() disabled = false;\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() class = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-button',\n `sefin-button--${this.variant}`,\n `sefin-button--${this.size}`,\n this.disabled ? 'sefin-button--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<button [type]=\"type\" [disabled]=\"disabled\" [class]=\"buttonClasses\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\nexport interface AutocompleteOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'sefin-autocomplete',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class AutocompleteComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('inputRef', { static: false })\n inputRef?: ElementRef<HTMLInputElement>;\n @ViewChild('dropdownRef', { static: false })\n dropdownRef?: ElementRef<HTMLDivElement>;\n @ViewChild('containerRef', { static: false })\n containerRef?: ElementRef<HTMLDivElement>;\n\n @Input() options: AutocompleteOption[] = [];\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() size: InputSize = 'md';\n @Input() class = '';\n @Input() value: string | number | null = null;\n @Input() minChars = 0;\n @Input() maxResults = 10;\n\n @Output() valueChange = new EventEmitter<string | number | null>();\n @Output() optionSelected = new EventEmitter<AutocompleteOption>();\n @Output() inputChange = new EventEmitter<string>();\n\n searchText = '';\n filteredOptions: AutocompleteOption[] = [];\n isOpen = false;\n selectedIndex = -1;\n\n ngOnInit(): void {\n if (this.value !== null) {\n const selectedOption = this.options.find(\n (opt) => opt.value === this.value\n );\n this.searchText = selectedOption?.label || String(this.value);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options']) {\n const options = changes['options'].currentValue || [];\n\n if (this.value !== null) {\n const selectedOption = options.find(\n (opt: AutocompleteOption) => opt.value === this.value\n );\n if (selectedOption) {\n this.searchText = selectedOption.label;\n } else {\n this.searchText = '';\n }\n }\n }\n\n if (changes['value']) {\n if (this.value !== null) {\n const selectedOption = this.options.find(\n (opt) => opt.value === this.value\n );\n this.searchText = selectedOption?.label || String(this.value);\n } else {\n this.searchText = '';\n }\n this.filteredOptions = [];\n this.isOpen = false;\n }\n }\n\n ngOnDestroy(): void {\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n if (this.containerRef?.nativeElement && this.isOpen) {\n const clickedInside = this.containerRef.nativeElement.contains(\n event.target as Node\n );\n if (!clickedInside) {\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n }\n }\n\n onInputChange(value: string): void {\n this.searchText = value;\n this.inputChange.emit(value);\n\n if (this.options && this.options.length > 0) {\n this.filterOptions();\n this.isOpen = value.length >= this.minChars;\n } else {\n this.isOpen = false;\n this.filteredOptions = [];\n }\n }\n\n filterOptions(): void {\n if (!this.options || this.options.length === 0) {\n this.filteredOptions = [];\n return;\n }\n\n if (\n this.minChars > 0 &&\n (!this.searchText || this.searchText.length < this.minChars)\n ) {\n this.filteredOptions = [];\n return;\n }\n\n const searchText = this.searchText || '';\n\n if (searchText.length === 0) {\n this.filteredOptions = this.options\n .filter((option) => !option.disabled)\n .slice(0, this.maxResults);\n return;\n }\n\n const searchLower = searchText.toLowerCase();\n this.filteredOptions = this.options\n .filter((option) => {\n if (option.disabled) return false;\n return option.label.toLowerCase().includes(searchLower);\n })\n .slice(0, this.maxResults);\n }\n\n selectOption(option: AutocompleteOption): void {\n if (option.disabled) return;\n\n this.searchText = option.label;\n this.value = option.value;\n this.valueChange.emit(option.value);\n this.optionSelected.emit(option);\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n\n onInputFocus(): void {\n if (this.disabled) return;\n\n if (\n this.options &&\n Array.isArray(this.options) &&\n this.options.length > 0\n ) {\n this.filterOptions();\n this.isOpen = this.filteredOptions.length > 0;\n } else {\n this.isOpen = false;\n this.filteredOptions = [];\n }\n }\n\n onInputBlur(): void {\n if (this.disabled || !this.searchText) {\n return;\n }\n\n const exactMatch = this.options.find(\n (option) =>\n !option.disabled &&\n option.label.toLowerCase().trim() === this.searchText.toLowerCase().trim()\n );\n\n if (!exactMatch) {\n this.searchText = '';\n this.value = null;\n this.valueChange.emit(null);\n this.isOpen = false;\n this.filteredOptions = [];\n this.selectedIndex = -1;\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (\n !this.isOpen ||\n !this.filteredOptions ||\n this.filteredOptions.length === 0\n ) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.selectedIndex = Math.min(\n this.selectedIndex + 1,\n this.filteredOptions.length - 1\n );\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.selectedIndex = Math.max(this.selectedIndex - 1, -1);\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'Enter':\n event.preventDefault();\n if (\n this.selectedIndex >= 0 &&\n this.selectedIndex < this.filteredOptions.length\n ) {\n this.selectOption(this.filteredOptions[this.selectedIndex]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.isOpen = false;\n this.selectedIndex = -1;\n break;\n }\n }\n\n private scrollToSelected(): void {\n try {\n if (this.dropdownRef?.nativeElement && this.selectedIndex >= 0) {\n const selectedElement = this.dropdownRef.nativeElement.querySelector(\n `[data-index=\"${this.selectedIndex}\"]`\n ) as HTMLElement | null;\n if (selectedElement && selectedElement instanceof HTMLElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n } catch (error) {\n console.warn('Could not scroll to selected option:', error);\n }\n }\n\n clearValue(): void {\n this.searchText = '';\n this.value = null;\n this.valueChange.emit(null);\n this.isOpen = false;\n this.filteredOptions = [];\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.focus();\n }\n }\n\n get inputClasses(): string {\n return [\n 'sefin-autocomplete__input',\n `sefin-autocomplete__input--${this.size}`,\n this.disabled ? 'sefin-autocomplete__input--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get containerClasses(): string {\n return [\n 'sefin-autocomplete',\n this.isOpen && this.filteredOptions.length > 0\n ? 'sefin-autocomplete--open'\n : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<div [class]=\"containerClasses\" #containerRef>\n <div class=\"sefin-autocomplete__wrapper\">\n <input\n #inputRef\n type=\"text\"\n [class]=\"inputClasses\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"onInputChange($event)\"\n (focus)=\"onInputFocus()\"\n (click)=\"onInputFocus()\"\n (blur)=\"onInputBlur()\"\n (keydown)=\"onKeyDown($event)\"\n autocomplete=\"off\"\n />\n <div class=\"sefin-autocomplete__actions\">\n <button\n *ngIf=\"searchText && !disabled\"\n type=\"button\"\n class=\"sefin-autocomplete__clear\"\n (click)=\"clearValue()\"\n aria-label=\"Clear\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <div class=\"sefin-autocomplete__arrow\" [class.sefin-autocomplete__arrow--open]=\"isOpen\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"isOpen && filteredOptions && filteredOptions.length > 0\"\n #dropdownRef\n class=\"sefin-autocomplete__dropdown\"\n >\n <ul class=\"sefin-autocomplete__list\">\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [attr.data-index]=\"i\"\n [class.sefin-autocomplete__option]=\"true\"\n [class.sefin-autocomplete__option--selected]=\"i === selectedIndex\"\n [class.sefin-autocomplete__option--disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [attr.aria-selected]=\"i === selectedIndex\"\n role=\"option\"\n >\n {{ option.label }}\n </li>\n </ul>\n </div>\n <div\n *ngIf=\"\n isOpen &&\n filteredOptions &&\n filteredOptions.length === 0 &&\n searchText &&\n searchText.length >= minChars\n \"\n class=\"sefin-autocomplete__dropdown sefin-autocomplete__dropdown--empty\"\n >\n <div class=\"sefin-autocomplete__no-results\">\n No se encontraron resultados\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent implements ControlValueAccessor, AfterViewInit, OnChanges {\n @ViewChild('checkboxInput', { static: false }) checkboxInput?: ElementRef<HTMLInputElement>;\n \n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() indeterminate = false;\n @Input() class = '';\n @Input() label = '';\n @Input() name = '';\n @Input() value: boolean = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChange = (value: boolean) => {};\n private onTouched = () => {};\n\n ngAfterViewInit(): void {\n if (this.checkboxInput?.nativeElement && this.indeterminate && !this.value) {\n this.checkboxInput.nativeElement.indeterminate = true;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.checkboxInput?.nativeElement && (changes['indeterminate'] || changes['value'])) {\n this.checkboxInput.nativeElement.indeterminate = this.indeterminate && !this.value;\n }\n }\n\n onCheckboxChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const target = event.target as HTMLInputElement;\n this.value = target.checked;\n this.indeterminate = false;\n \n if (this.checkboxInput?.nativeElement) {\n this.checkboxInput.nativeElement.indeterminate = false;\n }\n \n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.checkedChange.emit(this.value);\n }\n\n writeValue(value: boolean): void {\n this.value = value;\n if (value) {\n this.indeterminate = false;\n if (this.checkboxInput?.nativeElement) {\n this.checkboxInput.nativeElement.indeterminate = false;\n }\n }\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get wrapperClasses(): string {\n return [\n 'sefin-checkbox__wrapper',\n this.disabled ? 'sefin-checkbox__wrapper--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<label [class]=\"wrapperClasses\">\n <input\n type=\"checkbox\"\n class=\"sefin-checkbox\"\n [class.sefin-checkbox--sm]=\"size === 'sm'\"\n [class.sefin-checkbox--md]=\"size === 'md'\"\n [class.sefin-checkbox--lg]=\"size === 'lg'\"\n [class.sefin-checkbox--disabled]=\"disabled\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n (change)=\"onCheckboxChange($event)\"\n #checkboxInput\n />\n <span \n class=\"sefin-checkbox__checkmark\" \n [class.sefin-checkbox__checkmark--sm]=\"size === 'sm'\" \n [class.sefin-checkbox__checkmark--md]=\"size === 'md'\" \n [class.sefin-checkbox__checkmark--lg]=\"size === 'lg'\" \n [class.sefin-checkbox__checkmark--checked]=\"value\" \n [class.sefin-checkbox__checkmark--indeterminate]=\"indeterminate && !value\"\n >\n <svg\n *ngIf=\"value\"\n class=\"sefin-checkbox__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3333 4L6 11.3333L2.66667 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <svg\n *ngIf=\"indeterminate && !value\"\n class=\"sefin-checkbox__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 8H12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n </span>\n <span *ngIf=\"label\" class=\"sefin-checkbox__label\" [class.sefin-checkbox__label--sm]=\"size === 'sm'\" [class.sefin-checkbox__label--md]=\"size === 'md'\" [class.sefin-checkbox__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n TypographyVariant,\n TypographySize,\n TypographyWeight,\n TypographyColor,\n TypographyLineHeight,\n} from '../../shared/types';\n\n@Component({\n selector: 'sefin-typography',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './typography.component.html',\n styleUrls: ['./typography.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TypographyComponent {\n @Input() variant: TypographyVariant = 'p';\n @Input() size?: TypographySize;\n @Input() weight?: TypographyWeight;\n @Input() color: TypographyColor = 'text';\n @Input() lineHeight?: TypographyLineHeight;\n @Input() class = '';\n @Input() text?: string;\n\n get typographyClasses(): string {\n return [\n 'sefin-typography',\n `sefin-typography--${this.variant}`,\n this.size ? `sefin-typography--${this.size}` : '',\n this.weight ? `sefin-typography--${this.weight}` : '',\n `sefin-typography--${this.color}`,\n this.lineHeight ? `sefin-typography--line-height-${this.lineHeight}` : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<ng-container [ngSwitch]=\"variant\">\n <h1 *ngSwitchCase=\"'h1'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h1>\n <h2 *ngSwitchCase=\"'h2'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h2>\n <h3 *ngSwitchCase=\"'h3'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h3>\n <h4 *ngSwitchCase=\"'h4'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h4>\n <h5 *ngSwitchCase=\"'h5'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h5>\n <h6 *ngSwitchCase=\"'h6'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h6>\n <p *ngSwitchCase=\"'p'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></p>\n <span *ngSwitchDefault [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></span>\n</ng-container>\n","/**\n * Atoms index\n */\nexport * from './button/button.component';\nexport * from './autocomplete/autocomplete.component';\nexport * from './checkbox/checkbox.component';\nexport * from './typography/typography.component';\n\n","/*\n * Public API Surface of @lesterarte/sefin-ui\n */\n\n// Design Tokens\nexport * from './tokens';\n\n// Themes\nexport * from './themes';\n\n// Utilities\nexport * from './utils';\n\n// Shared\nexport * from './shared';\n\n// Atoms\nexport * from './atoms';\n\n// Styles (for importing in consuming apps)\nexport const STYLES_PATH = './styles/index.scss';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAAA;;;;AAIG;AAEI,MAAM,YAAY,GAAG;;AAE1B,IAAA,OAAO,EAAE;;AAEP,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;;AAED,IAAA,SAAS,EAAE;;AAET,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;;AAED,IAAA,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;QACd,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;;AAED,IAAA,OAAO,EAAE;AACP,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;AACD,IAAA,KAAK,EAAE;AACL,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;AACD,IAAA,IAAI,EAAE;AACJ,QAAA,EAAE,EAAE,SAAS;AACb,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA;;AAED,IAAA,KAAK,EAAE;QACL,QAAQ,EAAE,SAAS;QACnB,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,SAAS;AACjB,KAAA;;;;;;;;ACvGH;;;AAGG;AAEI,MAAM,cAAc,GAAG;AAC5B,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,KAAK,EAAE,OAAO;;;;;;;;ACdhB;;;AAGG;AAEI,MAAM,iBAAiB,GAAG;AAC/B,IAAA,UAAU,EAAE;AACV,QAAA,IAAI,EAAE,qGAAqG;AAC3G,QAAA,IAAI,EAAE,uCAAuC;AAC9C,KAAA;AACD,IAAA,QAAQ,EAAE;QACR,EAAE,EAAE,SAAS;QACb,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,UAAU;QACd,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,MAAM;AACd,KAAA;AACD,IAAA,UAAU,EAAE;QACV,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG;AACX,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,GAAG;AACV,KAAA;AACD,IAAA,UAAU,EAAE;AACV,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,MAAM,EAAE,GAAG;AACX,QAAA,OAAO,EAAE,IAAI;AACd,KAAA;;;;;;;;AChCH;;AAEG;AAEI,MAAM,oBAAoB,GAAG;AAClC,IAAA,IAAI,EAAE,GAAG;AACT,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,KAAK;AACT,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,EAAE,EAAE,MAAM;AACV,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,IAAI,EAAE,QAAQ;;;;;;;;ACXhB;;AAEG;AAEI,MAAM,aAAa,GAAG;AAC3B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,EAAE,EAAE,iCAAiC;AACrC,IAAA,EAAE,EAAE,uEAAuE;AAC3E,IAAA,EAAE,EAAE,yEAAyE;AAC7E,IAAA,EAAE,EAAE,2EAA2E;AAC/E,IAAA,KAAK,EAAE,uCAAuC;;;;;;;;ACVhD;;;AAGG;AAQH;;AAEG;AACI,MAAM,aAAa,GAAG;AAC3B,IAAA,MAAM,EAAE,MAAM,sDAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC;AAC1D,IAAA,OAAO,EAAE,MAAM,uDAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC;AAC9D,IAAA,UAAU,EAAE,MAAM,0DAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC;AACvE,IAAA,YAAY,EAAE,MAAM,4DAAyB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC;AAC/E,IAAA,MAAM,EAAE,MAAM,sDAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;;;ACjB7D;;;AAGG;AACI,MAAM,WAAW,GAAG;AACzB,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,MAAM,EAAE;;AAEN,QAAA,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;AACrC,QAAA,cAAc,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,QAAA,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;;AAE1C,QAAA,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ;AACtC,QAAA,gBAAgB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;AAC7C,QAAA,iBAAiB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;;AAE9C,QAAA,UAAU,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;AACpC,QAAA,qBAAqB,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;AAC/C,QAAA,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;AACjC,QAAA,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;;AAE7C,QAAA,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ;AACjC,QAAA,gBAAgB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;AAC7C,QAAA,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;;AAE5C,QAAA,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;AACpC,QAAA,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;;AAE5C,QAAA,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAClC,QAAA,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAClC,QAAA,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,QAAA,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,KAAA;;;AChCH;;;AAGG;AACI,MAAM,UAAU,GAAG;AACxB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE;;AAEN,QAAA,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;AACrC,QAAA,cAAc,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,QAAA,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;;AAE1C,QAAA,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;AACvC,QAAA,gBAAgB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;AAC7C,QAAA,iBAAiB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;;AAE9C,QAAA,UAAU,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ;AACvC,QAAA,qBAAqB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;AAClD,QAAA,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;AACpC,QAAA,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;;AAE5C,QAAA,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;AAC9B,QAAA,gBAAgB,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;AAC9C,QAAA,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;;AAE5C,QAAA,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;AACnC,QAAA,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;;AAE5C,QAAA,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAClC,QAAA,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAClC,QAAA,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,QAAA,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,KAAA;;;AChCH;;;AAGG;AACI,MAAM,WAAW,GAAG;AACzB,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,MAAM,EAAE;;AAEN,QAAA,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;AACrC,QAAA,cAAc,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AACzC,QAAA,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;;AAE1C,QAAA,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ;AACtC,QAAA,gBAAgB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;AAC7C,QAAA,iBAAiB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;;AAE9C,QAAA,UAAU,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;AACpC,QAAA,qBAAqB,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;AAC/C,QAAA,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;AACjC,QAAA,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;;AAE7C,QAAA,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ;AACjC,QAAA,gBAAgB,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;AAC7C,QAAA,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC;;AAE5C,QAAA,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;AACpC,QAAA,cAAc,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS;;AAE5C,QAAA,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAClC,QAAA,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC;AAClC,QAAA,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;AAC9B,QAAA,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7B,KAAA;;;AClCH;;AAEG;;ACQH;;;AAGG;MACU,WAAW,CAAA;AACtB;;;;AAIG;AACH,IAAA,OAAO,SAAS,CACd,SAAA,GAAiC,OAAO,EACxC,OAA0B,EAAA;AAE1B,QAAA,IAAI,KAAuC;AAC3C,QAAA,IAAI,MAA0C;AAE9C,QAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAChC,YAAA,MAAM,GAAG,KAAK,CAAC,MAA4C;QAC7D;aAAO;YACL,KAAK,GAAG,SAAS;;AAEjB,YAAA,IAAI,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAC7B,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC7C,IAAI,aAAa,EAAE;oBACjB,MAAM,GAAG,aAAa;gBACxB;qBAAO;;AAEL,oBAAA,MAAM,GAAG,KAAK,CAAC,MAAM;gBACvB;YACF;iBAAO;;AAEL,gBAAA,MAAM,GAAG,KAAK,CAAC,MAAM;YACvB;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe;;AAGrC,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC9C,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,cAAA,EAAiB,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC;YACvD;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,aAAa,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC;cAC7D,EAAE,GAAG,cAAc,EAAE,GAAG,SAAS,CAAC,OAAO;cACzC,cAAc;AAClB,QAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACrD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,gBAAA,EAAmB,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC;AACzD,QAAA,CAAC,CAAC;;QAGF,MAAM,gBAAgB,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC;AAClE,cAAE;AACE,gBAAA,UAAU,EAAE,EAAE,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE;AACnF,gBAAA,QAAQ,EAAE,EAAE,GAAG,iBAAiB,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC7E,gBAAA,UAAU,EAAE,EAAE,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE;AACnF,gBAAA,UAAU,EAAE,EAAE,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE;AACpF;cACD,iBAAiB;AAErB,QAAA,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACnE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,oBAAA,EAAuB,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC;AAC7D,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACjE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC;AAC3D,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACnE,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,oBAAA,EAAuB,GAAG,CAAA,CAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACnE,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,oBAAA,EAAuB,GAAG,CAAA,CAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,QAAA,CAAC,CAAC;;QAGF,MAAM,kBAAkB,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC;cAClE,EAAE,GAAG,oBAAoB,EAAE,GAAG,SAAS,CAAC,YAAY;cACpD,oBAAoB;AACxB,QAAA,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC1D,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC;AACxD,QAAA,CAAC,CAAC;;QAGF,MAAM,YAAY,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC;cAC5D,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC,MAAM;cACvC,aAAa;AACjB,QAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YACpD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAE,EAAE,KAAK,CAAC;AACxD,QAAA,CAAC,CAAC;;AAGF,QAAA,IAAI,cAAsB;AAC1B,QAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YACjC,cAAc,GAAG,SAAS;QAC5B;aAAO;AACL,YAAA,cAAc,GAAG;AACf,kBAAE,CAAA,EAAG,SAAS,CAAC,IAAI,CAAA,CAAA,EAAI,OAAO,CAAA;AAC9B,kBAAE,SAAS,CAAC,IAAI;QACpB;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC;IACjD;AAEA;;;;AAIG;AACH,IAAA,OAAO,gBAAgB,CACrB,WAAwB,EACxB,OAAyB,EAAA;AAEzB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE;YACzB,OAAO,CAAC,IAAI,CACV,CAAA,OAAA,EAAU,WAAW,CAAC,IAAI,CAAA,6CAAA,CAA+C,CAC1E;AACD,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC;IACtC;AAEA;;AAEG;IACK,OAAO,QAAQ,CAAC,SAAgB,EAAA;QACtC,QAAQ,SAAS;AACf,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,UAAU;AACnB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,OAAO;AACZ,YAAA;AACE,gBAAA,OAAO,WAAW;;IAExB;AAEA;;;;AAIG;AACH,IAAA,OAAO,WAAW,CAChB,SAAA,GAAiC,OAAO,EACxC,OAA0B,EAAA;AAE1B,QAAA,IAAI,KAAuC;AAC3C,QAAA,IAAI,MAA0C;AAE9C,QAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,YAAA,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;AAChC,YAAA,MAAM,GAAG,KAAK,CAAC,MAA4C;QAC7D;aAAO;YACL,KAAK,GAAG,SAAS;;AAEjB,YAAA,IAAI,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAC7B,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAC7C,IAAI,aAAa,EAAE;oBACjB,MAAM,GAAG,aAAa;gBACxB;qBAAO;AACL,oBAAA,MAAM,GAAG,KAAK,CAAC,MAAM;gBACvB;YACF;iBAAO;AACL,gBAAA,MAAM,GAAG,KAAK,CAAC,MAAM;YACvB;QACF;QAEA,IAAI,GAAG,GAAG,WAAW;;AAGrB,QAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC9C,IAAI,KAAK,EAAE;AACT,gBAAA,GAAG,IAAI,CAAA,gBAAA,EAAmB,GAAG,CAAA,EAAA,EAAK,KAAK,KAAK;YAC9C;AACF,QAAA,CAAC,CAAC;;QAGF,MAAM,aAAa,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC;cAC7D,EAAE,GAAG,cAAc,EAAE,GAAG,SAAS,CAAC,OAAO;cACzC,cAAc;AAClB,QAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACrD,YAAA,GAAG,IAAI,CAAA,kBAAA,EAAqB,GAAG,CAAA,EAAA,EAAK,KAAK,KAAK;AAChD,QAAA,CAAC,CAAC;;QAGF,MAAM,gBAAgB,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC;AAClE,cAAE;AACE,gBAAA,UAAU,EAAE,EAAE,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE;AACnF,gBAAA,QAAQ,EAAE,EAAE,GAAG,iBAAiB,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC7E,gBAAA,UAAU,EAAE,EAAE,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE;AACnF,gBAAA,UAAU,EAAE,EAAE,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE;AACpF;cACD,iBAAiB;AAErB,QAAA,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACnE,YAAA,GAAG,IAAI,CAAA,sBAAA,EAAyB,GAAG,CAAA,EAAA,EAAK,KAAK,KAAK;AACpD,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACjE,YAAA,GAAG,IAAI,CAAA,oBAAA,EAAuB,GAAG,CAAA,EAAA,EAAK,KAAK,KAAK;AAClD,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACnE,YAAA,GAAG,IAAI,CAAA,sBAAA,EAAyB,GAAG,CAAA,EAAA,EAAK,KAAK,KAAK;AACpD,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACnE,YAAA,GAAG,IAAI,CAAA,sBAAA,EAAyB,GAAG,CAAA,EAAA,EAAK,KAAK,KAAK;AACpD,QAAA,CAAC,CAAC;;QAGF,MAAM,kBAAkB,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC;cAClE,EAAE,GAAG,oBAAoB,EAAE,GAAG,SAAS,CAAC,YAAY;cACpD,oBAAoB;AACxB,QAAA,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC1D,YAAA,GAAG,IAAI,CAAA,iBAAA,EAAoB,GAAG,CAAA,EAAA,EAAK,KAAK,KAAK;AAC/C,QAAA,CAAC,CAAC;;QAGF,MAAM,YAAY,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC;cAC5D,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS,CAAC,MAAM;cACvC,aAAa;AACjB,QAAA,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACpD,YAAA,GAAG,IAAI,CAAA,iBAAA,EAAoB,GAAG,CAAA,EAAA,EAAK,KAAK,KAAK;AAC/C,QAAA,CAAC,CAAC;QAEF,GAAG,IAAI,KAAK;AACZ,QAAA,OAAO,GAAG;IACZ;AACD;;AC/OD;;AAEG;;ACFH;;AAEG;;ACFH;;AAEG;;MCUU,eAAe,CAAA;IACjB,OAAO,GAAkB,SAAS;IAClC,IAAI,GAAe,IAAI;IACvB,QAAQ,GAAG,KAAK;IAChB,IAAI,GAAkC,QAAQ;IAC9C,KAAK,GAAG,EAAE;AAET,IAAA,OAAO,GAAG,IAAI,YAAY,EAAc;AAElD,IAAA,OAAO,CAAC,KAAiB,EAAA;AACvB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1B;IACF;AAEA,IAAA,IAAI,aAAa,GAAA;QACf,OAAO;YACL,cAAc;YACd,CAAA,cAAA,EAAiB,IAAI,CAAC,OAAO,CAAA,CAAE;YAC/B,CAAA,cAAA,EAAiB,IAAI,CAAC,IAAI,CAAA,CAAE;YAC5B,IAAI,CAAC,QAAQ,GAAG,wBAAwB,GAAG,EAAE;AAC7C,YAAA,IAAI,CAAC,KAAK;AACX;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;uGAzBW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ5B,kJAGA,EAAA,MAAA,EAAA,CAAA,kiEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;+BACE,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kJAAA,EAAA,MAAA,EAAA,CAAA,kiEAAA,CAAA,EAAA;;sBAG9C;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;;MEaU,qBAAqB,CAAA;AAEhC,IAAA,QAAQ;AAER,IAAA,WAAW;AAEX,IAAA,YAAY;IAEH,OAAO,GAAyB,EAAE;IAClC,WAAW,GAAG,EAAE;IAChB,QAAQ,GAAG,KAAK;IAChB,IAAI,GAAc,IAAI;IACtB,KAAK,GAAG,EAAE;IACV,KAAK,GAA2B,IAAI;IACpC,QAAQ,GAAG,CAAC;IACZ,UAAU,GAAG,EAAE;AAEd,IAAA,WAAW,GAAG,IAAI,YAAY,EAA0B;AACxD,IAAA,cAAc,GAAG,IAAI,YAAY,EAAsB;AACvD,IAAA,WAAW,GAAG,IAAI,YAAY,EAAU;IAElD,UAAU,GAAG,EAAE;IACf,eAAe,GAAyB,EAAE;IAC1C,MAAM,GAAG,KAAK;IACd,aAAa,GAAG,CAAC,CAAC;IAElB,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACtC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAClC;AACD,YAAA,IAAI,CAAC,UAAU,GAAG,cAAc,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAC/D;IACF;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,IAAI,EAAE;AAErD,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACvB,gBAAA,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CACjC,CAAC,GAAuB,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CACtD;gBACD,IAAI,cAAc,EAAE;AAClB,oBAAA,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,KAAK;gBACxC;qBAAO;AACL,oBAAA,IAAI,CAAC,UAAU,GAAG,EAAE;gBACtB;YACF;QACF;AAEA,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;AACpB,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;gBACvB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CACtC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAClC;AACD,gBAAA,IAAI,CAAC,UAAU,GAAG,cAAc,EAAE,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/D;iBAAO;AACL,gBAAA,IAAI,CAAC,UAAU,GAAG,EAAE;YACtB;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;QACrB;IACF;IAEA,WAAW,GAAA;IACX;AAGA,IAAA,cAAc,CAAC,KAAiB,EAAA;QAC9B,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,IAAI,IAAI,CAAC,MAAM,EAAE;AACnD,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAC5D,KAAK,CAAC,MAAc,CACrB;YACD,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YACzB;QACF;IACF;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAE5B,QAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ;QAC7C;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;QAC3B;IACF;IAEA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC9C,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;YACzB;QACF;AAEA,QAAA,IACE,IAAI,CAAC,QAAQ,GAAG,CAAC;AACjB,aAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAC5D;AACA,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;YACzB;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE;AAExC,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;iBACzB,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ;AACnC,iBAAA,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;YAC5B;QACF;AAEA,QAAA,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE;AAC5C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AACzB,aAAA,MAAM,CAAC,CAAC,MAAM,KAAI;YACjB,IAAI,MAAM,CAAC,QAAQ;AAAE,gBAAA,OAAO,KAAK;YACjC,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;AACzD,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;IAC9B;AAEA,IAAA,YAAY,CAAC,MAA0B,EAAA;QACrC,IAAI,MAAM,CAAC,QAAQ;YAAE;AAErB,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;IACzB;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ;YAAE;QAEnB,IACE,IAAI,CAAC,OAAO;AACZ,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EACvB;YACA,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QAC/C;aAAO;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;QAC3B;IACF;IAEA,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACrC;QACF;AAEA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAClC,CAAC,MAAM,KACL,CAAC,MAAM,CAAC,QAAQ;AAChB,YAAA,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAC7E;QAED,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACzB;IACF;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;QAC5B,IACE,CAAC,IAAI,CAAC,MAAM;YACZ,CAAC,IAAI,CAAC,eAAe;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EACjC;YACA;QACF;AAEA,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAC3B,IAAI,CAAC,aAAa,GAAG,CAAC,EACtB,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAChC;gBACD,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;gBAC5C;AACF,YAAA,KAAK,SAAS;gBACZ,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzD,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;gBAC5C;AACF,YAAA,KAAK,OAAO;gBACV,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IACE,IAAI,CAAC,aAAa,IAAI,CAAC;oBACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAChD;AACA,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC7D;gBACA;AACF,YAAA,KAAK,QAAQ;gBACX,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACvB;;IAEN;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI;AACF,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;AAC9D,gBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAClE,gBAAgB,IAAI,CAAC,aAAa,CAAA,EAAA,CAAI,CACjB;AACvB,gBAAA,IAAI,eAAe,IAAI,eAAe,YAAY,WAAW,EAAE;oBAC7D,eAAe,CAAC,cAAc,CAAC;AAC7B,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,QAAQ,EAAE,QAAQ;AACnB,qBAAA,CAAC;gBACJ;YACF;QACF;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,KAAK,CAAC;QAC7D;IACF;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;AACzB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE;AAChC,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE;QACrC;IACF;AAEA,IAAA,IAAI,YAAY,GAAA;QACd,OAAO;YACL,2BAA2B;YAC3B,CAAA,2BAAA,EAA8B,IAAI,CAAC,IAAI,CAAA,CAAE;YACzC,IAAI,CAAC,QAAQ,GAAG,qCAAqC,GAAG,EAAE;AAC1D,YAAA,IAAI,CAAC,KAAK;AACX;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO;YACL,oBAAoB;YACpB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG;AAC3C,kBAAE;AACF,kBAAE,EAAE;AACP;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;uGAvQW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChClC,8uFA8FA,EAAA,MAAA,EAAA,CAAA,qtIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnEY,YAAY,+PAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA;;2FAKxB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;+BACE,oBAAoB,EAAA,UAAA,EAClB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,EAAE,WAAW,CAAC,EAAA,eAAA,EAGnB,uBAAuB,CAAC,OAAO,EAAA,QAAA,EAAA,8uFAAA,EAAA,MAAA,EAAA,CAAA,qtIAAA,CAAA,EAAA;;sBAG/C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAEvC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAE1C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAG3C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBAiDA,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;MEpE/B,iBAAiB,CAAA;AACmB,IAAA,aAAa;IAEnD,IAAI,GAAc,IAAI;IACtB,QAAQ,GAAG,KAAK;IAChB,aAAa,GAAG,KAAK;IACrB,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;IACV,IAAI,GAAG,EAAE;IACT,KAAK,GAAY,KAAK;AAErB,IAAA,WAAW,GAAG,IAAI,YAAY,EAAW;AACzC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAE7C,IAAA,QAAQ,GAAG,CAAC,KAAc,KAAI,EAAE,CAAC;AACjC,IAAA,SAAS,GAAG,MAAK,EAAE,CAAC;IAE5B,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,aAAa,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC1E,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI;QACvD;IACF;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,aAAa,KAAK,OAAO,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;AACvF,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK;QACpF;IACF;AAEA,IAAA,gBAAgB,CAAC,KAAY,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B;AAC/C,QAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAE1B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE;YACrC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK;QACxD;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;QAChB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACrC;AAEA,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE;gBACrC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,GAAG,KAAK;YACxD;QACF;IACF;AAEA,IAAA,gBAAgB,CAAC,EAA4B,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;IAC5B;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO;YACL,yBAAyB;YACzB,IAAI,CAAC,QAAQ,GAAG,mCAAmC,GAAG,EAAE;AACxD,YAAA,IAAI,CAAC,KAAK;AACX;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;uGA9EW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EARjB;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB,CAAC;AAChD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;SACF,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9BH,u2DA4DA,gwFDxCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA;;2FAYX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,OAAO,EAAA,SAAA,EACrC;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB,CAAC;AAChD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,QAAA,EAAA,u2DAAA,EAAA,MAAA,EAAA,CAAA,ysFAAA,CAAA,EAAA;;sBAGA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAE5C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;;ME1BU,mBAAmB,CAAA;IACrB,OAAO,GAAsB,GAAG;AAChC,IAAA,IAAI;AACJ,IAAA,MAAM;IACN,KAAK,GAAoB,MAAM;AAC/B,IAAA,UAAU;IACV,KAAK,GAAG,EAAE;AACV,IAAA,IAAI;AAEb,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO;YACL,kBAAkB;YAClB,CAAA,kBAAA,EAAqB,IAAI,CAAC,OAAO,CAAA,CAAE;AACnC,YAAA,IAAI,CAAC,IAAI,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAC,IAAI,CAAA,CAAE,GAAG,EAAE;AACjD,YAAA,IAAI,CAAC,MAAM,GAAG,CAAA,kBAAA,EAAqB,IAAI,CAAC,MAAM,CAAA,CAAE,GAAG,EAAE;YACrD,CAAA,kBAAA,EAAqB,IAAI,CAAC,KAAK,CAAA,CAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,CAAA,8BAAA,EAAiC,IAAI,CAAC,UAAU,CAAA,CAAE,GAAG,EAAE;AACzE,YAAA,IAAI,CAAC,KAAK;AACX;aACE,MAAM,CAAC,OAAO;aACd,IAAI,CAAC,GAAG,CAAC;IACd;uGArBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBhC,61BAUA,EAAA,MAAA,EAAA,CAAA,yrFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA;;2FAKX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,OAAO,EAAA,QAAA,EAAA,61BAAA,EAAA,MAAA,EAAA,CAAA,yrFAAA,CAAA,EAAA;;sBAG/C;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;AEzBH;;AAEG;;ACFH;;AAEG;AAEH;AAeA;AACO,MAAM,WAAW,GAAG;;ACpB3B;;AAEG;;;;"}
1
+ {"version":3,"file":"lesterarte-sefin-ui.mjs","sources":["../../../src/tokens/colors.ts","../../../src/tokens/spacing.ts","../../../src/tokens/typography.ts","../../../src/tokens/border-radius.ts","../../../src/tokens/shadow.ts","../../../src/tokens/index.ts","../../../src/themes/light-theme.ts","../../../src/themes/dark-theme.ts","../../../src/themes/brand-theme.ts","../../../src/themes/index.ts","../../../src/utils/theme-loader.ts","../../../src/utils/index.ts","../../../src/shared/types.ts","../../../src/shared/index.ts","../../../src/atoms/button/button.component.ts","../../../src/atoms/button/button.component.html","../../../src/atoms/icon-button/icon-button.component.ts","../../../src/atoms/icon-button/icon-button.component.html","../../../src/atoms/link/link.component.ts","../../../src/atoms/link/link.component.html","../../../src/atoms/stack/stack.component.ts","../../../src/atoms/stack/stack.component.html","../../../src/atoms/autocomplete/autocomplete.component.ts","../../../src/atoms/autocomplete/autocomplete.component.html","../../../src/atoms/checkbox/checkbox.component.ts","../../../src/atoms/checkbox/checkbox.component.html","../../../src/atoms/select/select.component.ts","../../../src/atoms/select/select.component.html","../../../src/atoms/switch/switch.component.ts","../../../src/atoms/switch/switch.component.html","../../../src/atoms/typography/typography.component.ts","../../../src/atoms/typography/typography.component.html","../../../src/atoms/index.ts","../../../src/public-api.ts","../../../src/lesterarte-sefin-ui.ts"],"sourcesContent":["/**\n * Color design tokens as TypeScript constants\n * Based on Secretaría de Finanzas brand guidelines\n * These values are the source of truth for all color tokens\n */\n\nexport const COLOR_TOKENS = {\n // Primary colors - Secretaría de Finanzas brand colors\n primary: {\n // Light Blue (Azul Claro) - Primary brand color\n 50: '#e6f7fb',\n 100: '#b3e5f0',\n 200: '#80d3e5',\n 300: '#4dc1da',\n 400: '#2ab0cf',\n 500: '#55C3D8', // Primary Light Blue from brand guidelines\n 600: '#4aafc4',\n 700: '#3f9bb0',\n 800: '#34879c',\n 900: '#297388',\n },\n // Secondary colors - Grays from brand guidelines\n secondary: {\n // Based on Dark Gray and Light Gray from brand\n 50: '#f5f5f5',\n 100: '#e8e8e8',\n 200: '#cecece', // Light Gray from brand guidelines\n 300: '#b5b5b5',\n 400: '#9b9b9b',\n 500: '#828282',\n 600: '#686868',\n 700: '#4f4f4f',\n 800: '#383838', // Dark Gray from brand guidelines\n 900: '#2a2a2a',\n },\n // Neutral colors - Based on brand grays\n neutral: {\n 50: '#ffffff', // White from brand guidelines\n 100: '#f5f5f5',\n 200: '#cecece', // Light Gray\n 300: '#b5b5b5',\n 400: '#9b9b9b',\n 500: '#828282',\n 600: '#686868',\n 700: '#4f4f4f',\n 800: '#383838', // Dark Gray\n 900: '#2a2a2a',\n },\n // Semantic colors - Keeping standard semantic colors\n success: {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n },\n warning: {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n },\n error: {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n },\n info: {\n 50: '#e0f2f1',\n 100: '#b2dfdb',\n 200: '#80cbc4',\n 300: '#4db6ac',\n 400: '#26a69a',\n 500: '#009688',\n 600: '#00897b',\n 700: '#00796b',\n 800: '#00695c',\n 900: '#004d40',\n },\n // Brand-specific colors\n brand: {\n darkGray: '#383838', // Dark Gray from brand guidelines\n lightGray: '#cecece', // Light Gray from brand guidelines\n lightBlue: '#55C3D8', // Light Blue from brand guidelines\n white: '#ffffff', // White from brand guidelines\n },\n} as const;\n\n/**\n * Color token names for CSS variable generation\n */\nexport type ColorTokenName =\n | 'primary'\n | 'secondary'\n | 'neutral'\n | 'success'\n | 'warning'\n | 'error'\n | 'info'\n | 'brand';\n\nexport type ColorShade = 50 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n","/**\n * Spacing design tokens\n * Based on 8px grid system\n */\n\nexport const SPACING_TOKENS = {\n xs: '4px',\n sm: '8px',\n md: '16px',\n lg: '24px',\n xl: '32px',\n '2xl': '48px',\n '3xl': '64px',\n '4xl': '96px',\n '5xl': '128px',\n} as const;\n\nexport type SpacingToken = keyof typeof SPACING_TOKENS;\n\n","/**\n * Typography design tokens\n * Based on Secretaría de Finanzas brand guidelines - Pluto typeface\n */\n\nexport const TYPOGRAPHY_TOKENS = {\n fontFamily: {\n base: \"'Pluto', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\",\n mono: \"'Fira Code', 'Courier New', monospace\",\n },\n fontSize: {\n xs: '0.75rem', // 12px\n sm: '0.875rem', // 14px\n base: '1rem', // 16px\n lg: '1.125rem', // 18px\n xl: '1.25rem', // 20px\n '2xl': '1.5rem', // 24px\n '3xl': '1.875rem', // 30px\n '4xl': '2.25rem', // 36px\n '5xl': '3rem', // 48px\n },\n fontWeight: {\n light: 300, // Pluto-Light\n normal: 400, // Pluto-Regular\n medium: 500,\n semibold: 600,\n bold: 700, // Pluto-Bold\n },\n lineHeight: {\n tight: 1.25,\n normal: 1.5,\n relaxed: 1.75,\n },\n} as const;\n\nexport type TypographyToken = keyof typeof TYPOGRAPHY_TOKENS;\n","/**\n * Border radius design tokens\n */\n\nexport const BORDER_RADIUS_TOKENS = {\n none: '0',\n sm: '4px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n '2xl': '24px',\n full: '9999px',\n} as const;\n\nexport type BorderRadiusToken = keyof typeof BORDER_RADIUS_TOKENS;\n\n","/**\n * Shadow design tokens\n */\n\nexport const SHADOW_TOKENS = {\n none: 'none',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',\n md: '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)',\n lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n '2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n} as const;\n\nexport type ShadowToken = keyof typeof SHADOW_TOKENS;\n\n","/**\n * Design tokens index\n * Central export for all design tokens\n */\n\nexport * from './colors';\nexport * from './spacing';\nexport * from './typography';\nexport * from './border-radius';\nexport * from './shadow';\n\n/**\n * All design tokens combined\n */\nexport const DESIGN_TOKENS = {\n colors: () => import('./colors').then(m => m.COLOR_TOKENS),\n spacing: () => import('./spacing').then(m => m.SPACING_TOKENS),\n typography: () => import('./typography').then(m => m.TYPOGRAPHY_TOKENS),\n borderRadius: () => import('./border-radius').then(m => m.BORDER_RADIUS_TOKENS),\n shadow: () => import('./shadow').then(m => m.SHADOW_TOKENS),\n};\n\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Light theme configuration\n * Based on Secretaría de Finanzas brand colors\n */\nexport const LIGHT_THEME = {\n name: 'light',\n colors: {\n // Primary color is Light Blue from brand\n primary: COLOR_TOKENS.brand.lightBlue,\n 'primary-dark': COLOR_TOKENS.primary[700],\n 'primary-light': COLOR_TOKENS.primary[300],\n // Secondary uses Dark Gray\n secondary: COLOR_TOKENS.brand.darkGray,\n 'secondary-dark': COLOR_TOKENS.secondary[900],\n 'secondary-light': COLOR_TOKENS.secondary[600],\n // Background uses White and Light Gray\n background: COLOR_TOKENS.brand.white,\n 'background-elevated': COLOR_TOKENS.brand.white,\n surface: COLOR_TOKENS.brand.white,\n 'surface-hover': COLOR_TOKENS.brand.lightGray,\n // Text uses Dark Gray\n text: COLOR_TOKENS.brand.darkGray,\n 'text-secondary': COLOR_TOKENS.secondary[600],\n 'text-disabled': COLOR_TOKENS.secondary[400],\n // Borders use Light Gray\n border: COLOR_TOKENS.brand.lightGray,\n 'border-focus': COLOR_TOKENS.brand.lightBlue,\n // Semantic colors\n success: COLOR_TOKENS.success[500],\n warning: COLOR_TOKENS.warning[500],\n error: COLOR_TOKENS.error[500],\n info: COLOR_TOKENS.info[500],\n },\n} as const;\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Dark theme configuration\n * Based on Secretaría de Finanzas brand colors (inverted)\n */\nexport const DARK_THEME = {\n name: 'dark',\n colors: {\n // Primary color remains Light Blue\n primary: COLOR_TOKENS.brand.lightBlue,\n 'primary-dark': COLOR_TOKENS.primary[300],\n 'primary-light': COLOR_TOKENS.primary[700],\n // Secondary uses Light Gray for contrast\n secondary: COLOR_TOKENS.brand.lightGray,\n 'secondary-dark': COLOR_TOKENS.secondary[400],\n 'secondary-light': COLOR_TOKENS.secondary[200],\n // Background uses Dark Gray\n background: COLOR_TOKENS.brand.darkGray,\n 'background-elevated': COLOR_TOKENS.secondary[700],\n surface: COLOR_TOKENS.secondary[700],\n 'surface-hover': COLOR_TOKENS.secondary[600],\n // Text uses White and Light Gray\n text: COLOR_TOKENS.brand.white,\n 'text-secondary': COLOR_TOKENS.brand.lightGray,\n 'text-disabled': COLOR_TOKENS.secondary[500],\n // Borders use medium gray\n border: COLOR_TOKENS.secondary[600],\n 'border-focus': COLOR_TOKENS.brand.lightBlue,\n // Semantic colors\n success: COLOR_TOKENS.success[400],\n warning: COLOR_TOKENS.warning[400],\n error: COLOR_TOKENS.error[400],\n info: COLOR_TOKENS.info[400],\n },\n} as const;\n","import { COLOR_TOKENS } from '../tokens/colors';\n\n/**\n * Brand theme configuration\n * Exact colors from Secretaría de Finanzas brand guidelines\n */\nexport const BRAND_THEME = {\n name: 'brand',\n colors: {\n // Primary: Light Blue from brand guidelines\n primary: COLOR_TOKENS.brand.lightBlue, // #55C3D8\n 'primary-dark': COLOR_TOKENS.primary[700],\n 'primary-light': COLOR_TOKENS.primary[300],\n // Secondary: Dark Gray from brand guidelines\n secondary: COLOR_TOKENS.brand.darkGray, // #383838\n 'secondary-dark': COLOR_TOKENS.secondary[900],\n 'secondary-light': COLOR_TOKENS.secondary[600],\n // Background: White from brand guidelines\n background: COLOR_TOKENS.brand.white, // #ffffff\n 'background-elevated': COLOR_TOKENS.brand.white,\n surface: COLOR_TOKENS.brand.white,\n 'surface-hover': COLOR_TOKENS.brand.lightGray, // #cecece\n // Text: Dark Gray from brand guidelines\n text: COLOR_TOKENS.brand.darkGray, // #383838\n 'text-secondary': COLOR_TOKENS.secondary[600],\n 'text-disabled': COLOR_TOKENS.secondary[400],\n // Border: Light Gray from brand guidelines\n border: COLOR_TOKENS.brand.lightGray, // #cecece\n 'border-focus': COLOR_TOKENS.brand.lightBlue, // #55C3D8\n // Semantic colors\n success: COLOR_TOKENS.success[500],\n warning: COLOR_TOKENS.warning[500],\n error: COLOR_TOKENS.error[500],\n info: COLOR_TOKENS.info[500],\n },\n} as const;\n","/**\n * Themes index\n */\nexport * from './light-theme';\nexport * from './dark-theme';\nexport * from './brand-theme';\n\nexport type Theme = 'light' | 'dark' | 'brand';\n\n","import { LIGHT_THEME } from '../themes/light-theme';\nimport { DARK_THEME } from '../themes/dark-theme';\nimport { BRAND_THEME } from '../themes/brand-theme';\nimport { SPACING_TOKENS } from '../tokens/spacing';\nimport { TYPOGRAPHY_TOKENS } from '../tokens/typography';\nimport { BORDER_RADIUS_TOKENS } from '../tokens/border-radius';\nimport { SHADOW_TOKENS } from '../tokens/shadow';\nimport type { Theme } from '../themes';\nimport type { CustomTheme } from '../shared/types';\n\n/**\n * Theme loader utility\n * Generates CSS variables from design tokens\n */\nexport class ThemeLoader {\n /**\n * Load a theme and apply it to the document root\n * @param themeName - Predefined theme name ('light', 'dark', 'brand') or a CustomTheme object\n * @param variant - Optional variant ('light' or 'dark') for CustomTheme with variants support\n */\n static loadTheme(\n themeName: Theme | CustomTheme = 'light',\n variant?: 'light' | 'dark'\n ): void {\n let theme: CustomTheme | typeof LIGHT_THEME;\n let colors: Record<string, string | undefined>;\n\n if (typeof themeName === 'string') {\n theme = this.getTheme(themeName);\n colors = theme.colors as Record<string, string | undefined>;\n } else {\n theme = themeName;\n // If variant is specified and theme has variants, use variant colors\n if (variant && theme.variants) {\n const variantColors = theme.variants[variant];\n if (variantColors) {\n colors = variantColors;\n } else {\n // Fallback to base colors if variant doesn't exist\n colors = theme.colors;\n }\n } else {\n // Use base colors if no variant specified or no variants defined\n colors = theme.colors;\n }\n }\n\n const root = document.documentElement;\n\n // Apply color tokens\n Object.entries(colors).forEach(([key, value]) => {\n if (value) {\n root.style.setProperty(`--sefin-color-${key}`, value);\n }\n });\n\n // Apply spacing tokens (use custom if provided, otherwise use defaults)\n const spacingTokens = typeof themeName === 'object' && themeName.spacing \n ? { ...SPACING_TOKENS, ...themeName.spacing }\n : SPACING_TOKENS;\n Object.entries(spacingTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-spacing-${key}`, value);\n });\n\n // Apply typography tokens (use custom if provided, otherwise use defaults)\n const typographyTokens = typeof themeName === 'object' && themeName.typography\n ? {\n fontFamily: { ...TYPOGRAPHY_TOKENS.fontFamily, ...themeName.typography.fontFamily },\n fontSize: { ...TYPOGRAPHY_TOKENS.fontSize, ...themeName.typography.fontSize },\n fontWeight: { ...TYPOGRAPHY_TOKENS.fontWeight, ...themeName.typography.fontWeight },\n lineHeight: { ...TYPOGRAPHY_TOKENS.lineHeight, ...themeName.typography.lineHeight },\n }\n : TYPOGRAPHY_TOKENS;\n\n Object.entries(typographyTokens.fontFamily).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-family-${key}`, value);\n });\n Object.entries(typographyTokens.fontSize).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-size-${key}`, value);\n });\n Object.entries(typographyTokens.fontWeight).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-font-weight-${key}`, String(value));\n });\n Object.entries(typographyTokens.lineHeight).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-line-height-${key}`, String(value));\n });\n\n // Apply border radius tokens (use custom if provided, otherwise use defaults)\n const borderRadiusTokens = typeof themeName === 'object' && themeName.borderRadius\n ? { ...BORDER_RADIUS_TOKENS, ...themeName.borderRadius }\n : BORDER_RADIUS_TOKENS;\n Object.entries(borderRadiusTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-radius-${key}`, value);\n });\n\n // Apply shadow tokens (use custom if provided, otherwise use defaults)\n const shadowTokens = typeof themeName === 'object' && themeName.shadow\n ? { ...SHADOW_TOKENS, ...themeName.shadow }\n : SHADOW_TOKENS;\n Object.entries(shadowTokens).forEach(([key, value]) => {\n root.style.setProperty(`--sefin-shadow-${key}`, value);\n });\n\n // Set theme attribute for CSS selectors\n let themeAttribute: string;\n if (typeof themeName === 'string') {\n themeAttribute = themeName;\n } else {\n themeAttribute = variant\n ? `${themeName.name}-${variant}`\n : themeName.name;\n }\n root.setAttribute('data-theme', themeAttribute);\n }\n\n /**\n * Load a custom theme variant (light or dark)\n * @param customTheme - CustomTheme object with variants support\n * @param variant - Variant to load ('light' or 'dark')\n */\n static loadThemeVariant(\n customTheme: CustomTheme,\n variant: 'light' | 'dark'\n ): void {\n if (!customTheme.variants) {\n console.warn(\n `Theme \"${customTheme.name}\" does not have variants. Loading base theme.`\n );\n this.loadTheme(customTheme);\n return;\n }\n\n this.loadTheme(customTheme, variant);\n }\n\n /**\n * Get theme configuration by name\n */\n private static getTheme(themeName: Theme) {\n switch (themeName) {\n case 'dark':\n return DARK_THEME;\n case 'brand':\n return BRAND_THEME;\n case 'light':\n default:\n return LIGHT_THEME;\n }\n }\n\n /**\n * Get all CSS variables as a string (useful for SSR or static generation)\n * @param themeName - Predefined theme name ('light', 'dark', 'brand') or a CustomTheme object\n * @param variant - Optional variant ('light' or 'dark') for CustomTheme with variants support\n */\n static getThemeCSS(\n themeName: Theme | CustomTheme = 'light',\n variant?: 'light' | 'dark'\n ): string {\n let theme: CustomTheme | typeof LIGHT_THEME;\n let colors: Record<string, string | undefined>;\n\n if (typeof themeName === 'string') {\n theme = this.getTheme(themeName);\n colors = theme.colors as Record<string, string | undefined>;\n } else {\n theme = themeName;\n // If variant is specified and theme has variants, use variant colors\n if (variant && theme.variants) {\n const variantColors = theme.variants[variant];\n if (variantColors) {\n colors = variantColors;\n } else {\n colors = theme.colors;\n }\n } else {\n colors = theme.colors;\n }\n }\n\n let css = ':root {\\n';\n\n // Color tokens\n Object.entries(colors).forEach(([key, value]) => {\n if (value) {\n css += ` --sefin-color-${key}: ${value};\\n`;\n }\n });\n\n // Spacing tokens\n const spacingTokens = typeof themeName === 'object' && themeName.spacing \n ? { ...SPACING_TOKENS, ...themeName.spacing }\n : SPACING_TOKENS;\n Object.entries(spacingTokens).forEach(([key, value]) => {\n css += ` --sefin-spacing-${key}: ${value};\\n`;\n });\n\n // Typography tokens\n const typographyTokens = typeof themeName === 'object' && themeName.typography\n ? {\n fontFamily: { ...TYPOGRAPHY_TOKENS.fontFamily, ...themeName.typography.fontFamily },\n fontSize: { ...TYPOGRAPHY_TOKENS.fontSize, ...themeName.typography.fontSize },\n fontWeight: { ...TYPOGRAPHY_TOKENS.fontWeight, ...themeName.typography.fontWeight },\n lineHeight: { ...TYPOGRAPHY_TOKENS.lineHeight, ...themeName.typography.lineHeight },\n }\n : TYPOGRAPHY_TOKENS;\n\n Object.entries(typographyTokens.fontFamily).forEach(([key, value]) => {\n css += ` --sefin-font-family-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.fontSize).forEach(([key, value]) => {\n css += ` --sefin-font-size-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.fontWeight).forEach(([key, value]) => {\n css += ` --sefin-font-weight-${key}: ${value};\\n`;\n });\n Object.entries(typographyTokens.lineHeight).forEach(([key, value]) => {\n css += ` --sefin-line-height-${key}: ${value};\\n`;\n });\n\n // Border radius tokens\n const borderRadiusTokens = typeof themeName === 'object' && themeName.borderRadius\n ? { ...BORDER_RADIUS_TOKENS, ...themeName.borderRadius }\n : BORDER_RADIUS_TOKENS;\n Object.entries(borderRadiusTokens).forEach(([key, value]) => {\n css += ` --sefin-radius-${key}: ${value};\\n`;\n });\n\n // Shadow tokens\n const shadowTokens = typeof themeName === 'object' && themeName.shadow\n ? { ...SHADOW_TOKENS, ...themeName.shadow }\n : SHADOW_TOKENS;\n Object.entries(shadowTokens).forEach(([key, value]) => {\n css += ` --sefin-shadow-${key}: ${value};\\n`;\n });\n\n css += '}\\n';\n return css;\n }\n}\n\n","/**\n * Utilities index\n */\nexport * from './theme-loader';\n\n","/**\n * Shared types and interfaces\n */\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type CardVariant = 'default' | 'elevated' | 'outlined';\nexport type TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';\nexport type TypographySize = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl';\nexport type TypographyWeight = 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\nexport type TypographyColor = 'text' | 'text-secondary' | 'text-disabled' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\nexport type TypographyLineHeight = 'tight' | 'normal' | 'relaxed';\n\nexport interface BaseComponent {\n disabled?: boolean;\n class?: string;\n}\n\n/**\n * Theme color configuration\n */\nexport interface ThemeColors {\n primary: string;\n 'primary-dark'?: string;\n 'primary-light'?: string;\n secondary: string;\n 'secondary-dark'?: string;\n 'secondary-light'?: string;\n background: string;\n 'background-elevated'?: string;\n surface: string;\n 'surface-hover'?: string;\n text: string;\n 'text-secondary'?: string;\n 'text-disabled'?: string;\n border: string;\n 'border-focus'?: string;\n success?: string;\n warning?: string;\n error?: string;\n info?: string;\n [key: string]: string | undefined;\n}\n\n/**\n * Custom theme configuration interface\n * Allows users to create their own themes with custom colors, typography, spacing, etc.\n * Supports both single theme and light/dark variants.\n */\nexport interface CustomTheme {\n name: string;\n colors: ThemeColors;\n /**\n * Optional light and dark variants for the theme\n * If provided, allows switching between light and dark modes\n */\n variants?: {\n light?: ThemeColors;\n dark?: ThemeColors;\n };\n typography?: {\n fontFamily?: {\n base?: string;\n mono?: string;\n [key: string]: string | undefined;\n };\n fontSize?: {\n xs?: string;\n sm?: string;\n base?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n '3xl'?: string;\n '4xl'?: string;\n '5xl'?: string;\n [key: string]: string | undefined;\n };\n fontWeight?: {\n light?: number;\n normal?: number;\n medium?: number;\n semibold?: number;\n bold?: number;\n [key: string]: number | undefined;\n };\n lineHeight?: {\n tight?: number;\n normal?: number;\n relaxed?: number;\n [key: string]: number | undefined;\n };\n };\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n '3xl'?: string;\n '4xl'?: string;\n '5xl'?: string;\n [key: string]: string | undefined;\n };\n borderRadius?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n full?: string;\n [key: string]: string | undefined;\n };\n shadow?: {\n none?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n [key: string]: string | undefined;\n };\n}\n\n","/**\n * Shared index\n */\nexport * from './types';\n\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonVariant, ButtonSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ButtonComponent {\n @Input() variant: ButtonVariant = 'primary';\n @Input() size: ButtonSize = 'md';\n @Input() disabled = false;\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() class = '';\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-button',\n `sefin-button--${this.variant}`,\n `sefin-button--${this.size}`,\n this.disabled ? 'sefin-button--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<button [type]=\"type\" [disabled]=\"disabled\" [class]=\"buttonClasses\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonVariant, ButtonSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-icon-button',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon-button.component.html',\n styleUrls: ['./icon-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class IconButtonComponent {\n @Input() variant: ButtonVariant = 'primary';\n @Input() size: ButtonSize = 'md';\n @Input() disabled = false;\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() class = '';\n @Input() ariaLabel = '';\n @Input() rounded = false;\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n onClick(event: MouseEvent): void {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-icon-button',\n `sefin-icon-button--${this.variant}`,\n `sefin-icon-button--${this.size}`,\n this.disabled ? 'sefin-icon-button--disabled' : '',\n this.rounded ? 'sefin-icon-button--rounded' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<button \n [type]=\"type\" \n [disabled]=\"disabled\" \n [class]=\"buttonClasses\" \n (click)=\"onClick($event)\"\n [attr.aria-label]=\"ariaLabel || null\"\n>\n <ng-content></ng-content>\n</button>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport type LinkVariant = 'default' | 'primary' | 'secondary' | 'underline';\nexport type LinkSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'sefin-link',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './link.component.html',\n styleUrls: ['./link.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class LinkComponent {\n @Input() variant: LinkVariant = 'default';\n @Input() size: LinkSize = 'md';\n @Input() disabled = false;\n @Input() href?: string;\n @Input() target?: string;\n @Input() rel?: string;\n @Input() class = '';\n @Input() underline = false;\n\n get linkClasses(): string {\n return [\n 'sefin-link',\n `sefin-link--${this.variant}`,\n `sefin-link--${this.size}`,\n this.disabled ? 'sefin-link--disabled' : '',\n this.underline ? 'sefin-link--underline' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n onClick(event: Event): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n}\n\n","<a\n [class]=\"linkClasses\"\n [href]=\"disabled ? null : (href || '#')\"\n [attr.target]=\"target\"\n [attr.rel]=\"rel\"\n [attr.aria-disabled]=\"disabled ? true : null\"\n (click)=\"onClick($event)\"\n>\n <ng-content></ng-content>\n</a>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'sefin-stack',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './stack.component.html',\n styleUrls: ['./stack.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class StackComponent {\n @Input() direction: 'row' | 'column' = 'column';\n @Input() spacing: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' = 'md';\n @Input() align: 'start' | 'center' | 'end' | 'stretch' = 'stretch';\n @Input() justify: 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly' = 'start';\n @Input() wrap: boolean = false;\n @Input() class = '';\n\n get stackClasses(): string {\n return [\n 'sefin-stack',\n `sefin-stack--${this.direction}`,\n `sefin-stack--spacing-${this.spacing}`,\n `sefin-stack--align-${this.align}`,\n `sefin-stack--justify-${this.justify}`,\n this.wrap ? 'sefin-stack--wrap' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get spacingValue(): string {\n const spacingMap: Record<string, string> = {\n 'xs': '4px',\n 'sm': '8px',\n 'md': '16px',\n 'lg': '24px',\n 'xl': '32px',\n '2xl': '48px',\n };\n return spacingMap[this.spacing] || spacingMap['md'];\n }\n\n get stackStyles(): { [key: string]: string } {\n return {\n gap: this.spacingValue,\n };\n }\n}\n\n","<div [class]=\"stackClasses\" [ngStyle]=\"stackStyles\">\n <ng-content></ng-content>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\nexport interface AutocompleteOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'sefin-autocomplete',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './autocomplete.component.html',\n styleUrls: ['./autocomplete.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class AutocompleteComponent implements OnInit, OnDestroy, OnChanges {\n @ViewChild('inputRef', { static: false })\n inputRef?: ElementRef<HTMLInputElement>;\n @ViewChild('dropdownRef', { static: false })\n dropdownRef?: ElementRef<HTMLDivElement>;\n @ViewChild('containerRef', { static: false })\n containerRef?: ElementRef<HTMLDivElement>;\n\n @Input() options: AutocompleteOption[] = [];\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() size: InputSize = 'md';\n @Input() class = '';\n @Input() value: string | number | null = null;\n @Input() minChars = 0;\n @Input() maxResults = 10;\n\n @Output() valueChange = new EventEmitter<string | number | null>();\n @Output() optionSelected = new EventEmitter<AutocompleteOption>();\n @Output() inputChange = new EventEmitter<string>();\n\n searchText = '';\n filteredOptions: AutocompleteOption[] = [];\n isOpen = false;\n selectedIndex = -1;\n\n ngOnInit(): void {\n if (this.value !== null) {\n const selectedOption = this.options.find(\n (opt) => opt.value === this.value\n );\n this.searchText = selectedOption?.label || String(this.value);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['options']) {\n const options = changes['options'].currentValue || [];\n\n if (this.value !== null) {\n const selectedOption = options.find(\n (opt: AutocompleteOption) => opt.value === this.value\n );\n if (selectedOption) {\n this.searchText = selectedOption.label;\n } else {\n this.searchText = '';\n }\n }\n }\n\n if (changes['value']) {\n if (this.value !== null) {\n const selectedOption = this.options.find(\n (opt) => opt.value === this.value\n );\n this.searchText = selectedOption?.label || String(this.value);\n } else {\n this.searchText = '';\n }\n this.filteredOptions = [];\n this.isOpen = false;\n }\n }\n\n ngOnDestroy(): void {\n }\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n if (this.containerRef?.nativeElement && this.isOpen) {\n const clickedInside = this.containerRef.nativeElement.contains(\n event.target as Node\n );\n if (!clickedInside) {\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n }\n }\n\n onInputChange(value: string): void {\n this.searchText = value;\n this.inputChange.emit(value);\n\n if (this.options && this.options.length > 0) {\n this.filterOptions();\n this.isOpen = value.length >= this.minChars;\n } else {\n this.isOpen = false;\n this.filteredOptions = [];\n }\n }\n\n filterOptions(): void {\n if (!this.options || this.options.length === 0) {\n this.filteredOptions = [];\n return;\n }\n\n if (\n this.minChars > 0 &&\n (!this.searchText || this.searchText.length < this.minChars)\n ) {\n this.filteredOptions = [];\n return;\n }\n\n const searchText = this.searchText || '';\n\n if (searchText.length === 0) {\n this.filteredOptions = this.options\n .filter((option) => !option.disabled)\n .slice(0, this.maxResults);\n return;\n }\n\n const searchLower = searchText.toLowerCase();\n this.filteredOptions = this.options\n .filter((option) => {\n if (option.disabled) return false;\n return option.label.toLowerCase().includes(searchLower);\n })\n .slice(0, this.maxResults);\n }\n\n selectOption(option: AutocompleteOption): void {\n if (option.disabled) return;\n\n this.searchText = option.label;\n this.value = option.value;\n this.valueChange.emit(option.value);\n this.optionSelected.emit(option);\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n\n onInputFocus(): void {\n if (this.disabled) return;\n\n if (\n this.options &&\n Array.isArray(this.options) &&\n this.options.length > 0\n ) {\n this.filterOptions();\n this.isOpen = this.filteredOptions.length > 0;\n } else {\n this.isOpen = false;\n this.filteredOptions = [];\n }\n }\n\n onInputBlur(): void {\n if (this.disabled || !this.searchText) {\n return;\n }\n\n const exactMatch = this.options.find(\n (option) =>\n !option.disabled &&\n option.label.toLowerCase().trim() === this.searchText.toLowerCase().trim()\n );\n\n if (!exactMatch) {\n this.searchText = '';\n this.value = null;\n this.valueChange.emit(null);\n this.isOpen = false;\n this.filteredOptions = [];\n this.selectedIndex = -1;\n }\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (\n !this.isOpen ||\n !this.filteredOptions ||\n this.filteredOptions.length === 0\n ) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.selectedIndex = Math.min(\n this.selectedIndex + 1,\n this.filteredOptions.length - 1\n );\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.selectedIndex = Math.max(this.selectedIndex - 1, -1);\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'Enter':\n event.preventDefault();\n if (\n this.selectedIndex >= 0 &&\n this.selectedIndex < this.filteredOptions.length\n ) {\n this.selectOption(this.filteredOptions[this.selectedIndex]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.isOpen = false;\n this.selectedIndex = -1;\n break;\n }\n }\n\n private scrollToSelected(): void {\n try {\n if (this.dropdownRef?.nativeElement && this.selectedIndex >= 0) {\n const selectedElement = this.dropdownRef.nativeElement.querySelector(\n `[data-index=\"${this.selectedIndex}\"]`\n ) as HTMLElement | null;\n if (selectedElement && selectedElement instanceof HTMLElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n } catch (error) {\n console.warn('Could not scroll to selected option:', error);\n }\n }\n\n clearValue(): void {\n this.searchText = '';\n this.value = null;\n this.valueChange.emit(null);\n this.isOpen = false;\n this.filteredOptions = [];\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.focus();\n }\n }\n\n get inputClasses(): string {\n return [\n 'sefin-autocomplete__input',\n `sefin-autocomplete__input--${this.size}`,\n this.disabled ? 'sefin-autocomplete__input--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get containerClasses(): string {\n return [\n 'sefin-autocomplete',\n this.isOpen && this.filteredOptions.length > 0\n ? 'sefin-autocomplete--open'\n : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<div [class]=\"containerClasses\" #containerRef>\n <div class=\"sefin-autocomplete__wrapper\">\n <input\n #inputRef\n type=\"text\"\n [class]=\"inputClasses\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"searchText\"\n (ngModelChange)=\"onInputChange($event)\"\n (focus)=\"onInputFocus()\"\n (click)=\"onInputFocus()\"\n (blur)=\"onInputBlur()\"\n (keydown)=\"onKeyDown($event)\"\n autocomplete=\"off\"\n />\n <div class=\"sefin-autocomplete__actions\">\n <button\n *ngIf=\"searchText && !disabled\"\n type=\"button\"\n class=\"sefin-autocomplete__clear\"\n (click)=\"clearValue()\"\n aria-label=\"Clear\"\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </button>\n <div class=\"sefin-autocomplete__arrow\" [class.sefin-autocomplete__arrow--open]=\"isOpen\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"isOpen && filteredOptions && filteredOptions.length > 0\"\n #dropdownRef\n class=\"sefin-autocomplete__dropdown\"\n >\n <ul class=\"sefin-autocomplete__list\">\n <li\n *ngFor=\"let option of filteredOptions; let i = index\"\n [attr.data-index]=\"i\"\n [class.sefin-autocomplete__option]=\"true\"\n [class.sefin-autocomplete__option--selected]=\"i === selectedIndex\"\n [class.sefin-autocomplete__option--disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [attr.aria-selected]=\"i === selectedIndex\"\n role=\"option\"\n >\n {{ option.label }}\n </li>\n </ul>\n </div>\n <div\n *ngIf=\"\n isOpen &&\n filteredOptions &&\n filteredOptions.length === 0 &&\n searchText &&\n searchText.length >= minChars\n \"\n class=\"sefin-autocomplete__dropdown sefin-autocomplete__dropdown--empty\"\n >\n <div class=\"sefin-autocomplete__no-results\">\n No se encontraron resultados\n </div>\n </div>\n</div>\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n AfterViewInit,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-checkbox',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true,\n },\n ],\n})\nexport class CheckboxComponent implements ControlValueAccessor, AfterViewInit, OnChanges {\n @ViewChild('checkboxInput', { static: false }) checkboxInput?: ElementRef<HTMLInputElement>;\n \n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() indeterminate = false;\n @Input() class = '';\n @Input() label = '';\n @Input() name = '';\n @Input() value: boolean = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChange = (value: boolean) => {};\n private onTouched = () => {};\n\n ngAfterViewInit(): void {\n if (this.checkboxInput?.nativeElement && this.indeterminate && !this.value) {\n this.checkboxInput.nativeElement.indeterminate = true;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.checkboxInput?.nativeElement && (changes['indeterminate'] || changes['value'])) {\n this.checkboxInput.nativeElement.indeterminate = this.indeterminate && !this.value;\n }\n }\n\n onCheckboxChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const target = event.target as HTMLInputElement;\n this.value = target.checked;\n this.indeterminate = false;\n \n if (this.checkboxInput?.nativeElement) {\n this.checkboxInput.nativeElement.indeterminate = false;\n }\n \n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.checkedChange.emit(this.value);\n }\n\n writeValue(value: boolean): void {\n this.value = value;\n if (value) {\n this.indeterminate = false;\n if (this.checkboxInput?.nativeElement) {\n this.checkboxInput.nativeElement.indeterminate = false;\n }\n }\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get wrapperClasses(): string {\n return [\n 'sefin-checkbox__wrapper',\n this.disabled ? 'sefin-checkbox__wrapper--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<label [class]=\"wrapperClasses\">\n <input\n type=\"checkbox\"\n class=\"sefin-checkbox\"\n [class.sefin-checkbox--sm]=\"size === 'sm'\"\n [class.sefin-checkbox--md]=\"size === 'md'\"\n [class.sefin-checkbox--lg]=\"size === 'lg'\"\n [class.sefin-checkbox--disabled]=\"disabled\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n (change)=\"onCheckboxChange($event)\"\n #checkboxInput\n />\n <span \n class=\"sefin-checkbox__checkmark\" \n [class.sefin-checkbox__checkmark--sm]=\"size === 'sm'\" \n [class.sefin-checkbox__checkmark--md]=\"size === 'md'\" \n [class.sefin-checkbox__checkmark--lg]=\"size === 'lg'\" \n [class.sefin-checkbox__checkmark--checked]=\"value\" \n [class.sefin-checkbox__checkmark--indeterminate]=\"indeterminate && !value\"\n >\n <svg\n *ngIf=\"value\"\n class=\"sefin-checkbox__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3333 4L6 11.3333L2.66667 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <svg\n *ngIf=\"indeterminate && !value\"\n class=\"sefin-checkbox__icon\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 8H12\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n </span>\n <span *ngIf=\"label\" class=\"sefin-checkbox__label\" [class.sefin-checkbox__label--sm]=\"size === 'sm'\" [class.sefin-checkbox__label--md]=\"size === 'md'\" [class.sefin-checkbox__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n ViewChild,\n ElementRef,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n HostListener,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'sefin-select',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true,\n },\n ],\n})\nexport class SelectComponent\n implements ControlValueAccessor, OnInit, OnDestroy, OnChanges\n{\n @ViewChild('containerRef', { static: false })\n containerRef?: ElementRef<HTMLDivElement>;\n @ViewChild('dropdownRef', { static: false })\n dropdownRef?: ElementRef<HTMLDivElement>;\n @ViewChild('buttonRef', { static: false })\n buttonRef?: ElementRef<HTMLButtonElement>;\n\n @Input() options: SelectOption[] = [];\n @Input() placeholder = 'Seleccionar...';\n @Input() disabled = false;\n @Input() size: InputSize = 'md';\n @Input() class = '';\n @Input() value: string | number | null = null;\n\n @Output() valueChange = new EventEmitter<string | number | null>();\n @Output() optionSelected = new EventEmitter<SelectOption>();\n\n isOpen = false;\n selectedIndex = -1;\n\n private onChange = (value: string | number | null) => {};\n private onTouched = () => {};\n\n ngOnInit(): void {\n this.updateSelectedIndex();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] || changes['options']) {\n this.updateSelectedIndex();\n }\n }\n\n ngOnDestroy(): void {}\n\n @HostListener('document:click', ['$event'])\n onClickOutside(event: MouseEvent): void {\n if (this.containerRef?.nativeElement && this.isOpen) {\n const clickedInside = this.containerRef.nativeElement.contains(\n event.target as Node\n );\n if (!clickedInside) {\n this.closeDropdown();\n }\n }\n }\n\n @HostListener('document:keydown.escape', ['$event'])\n onEscapeKey(event: Event): void {\n const keyboardEvent = event as KeyboardEvent;\n if (this.isOpen) {\n keyboardEvent.preventDefault();\n this.closeDropdown();\n this.buttonRef?.nativeElement?.focus();\n }\n }\n\n toggleDropdown(): void {\n if (this.disabled) return;\n\n if (this.isOpen) {\n this.closeDropdown();\n } else {\n this.openDropdown();\n }\n }\n\n openDropdown(): void {\n if (this.disabled || !this.options || this.options.length === 0) return;\n\n this.isOpen = true;\n this.updateSelectedIndex();\n \n // If no selection, focus first enabled option\n if (this.selectedIndex < 0) {\n const enabledOptions = this.options.filter((opt) => !opt.disabled);\n if (enabledOptions.length > 0) {\n this.selectedIndex = this.options.indexOf(enabledOptions[0]);\n }\n }\n \n // Scroll to selected option when opening\n setTimeout(() => {\n this.scrollToSelected();\n }, 0);\n }\n\n closeDropdown(): void {\n this.isOpen = false;\n this.selectedIndex = -1;\n }\n\n selectOption(option: SelectOption): void {\n if (option.disabled) return;\n\n this.value = option.value;\n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.optionSelected.emit(option);\n this.closeDropdown();\n this.buttonRef?.nativeElement?.focus();\n }\n\n onKeyDown(event: KeyboardEvent): void {\n if (this.disabled) return;\n\n if (!this.isOpen) {\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown') {\n event.preventDefault();\n this.openDropdown();\n }\n return;\n }\n\n if (!this.options || this.options.length === 0) return;\n\n const enabledOptions = this.options.filter((opt) => !opt.disabled);\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n if (enabledOptions.length === 0) return;\n \n let nextIndex = this.selectedIndex + 1;\n while (nextIndex < this.options.length && this.options[nextIndex].disabled) {\n nextIndex++;\n }\n \n if (nextIndex < this.options.length) {\n this.selectedIndex = nextIndex;\n } else {\n // Wrap to first enabled option\n this.selectedIndex = this.options.indexOf(enabledOptions[0]);\n }\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'ArrowUp':\n event.preventDefault();\n if (enabledOptions.length === 0) return;\n \n let prevIndex = this.selectedIndex - 1;\n while (prevIndex >= 0 && this.options[prevIndex].disabled) {\n prevIndex--;\n }\n \n if (prevIndex >= 0) {\n this.selectedIndex = prevIndex;\n } else {\n // Wrap to last enabled option\n const lastOption = enabledOptions[enabledOptions.length - 1];\n this.selectedIndex = this.options.indexOf(lastOption);\n }\n setTimeout(() => this.scrollToSelected(), 0);\n break;\n case 'Enter':\n event.preventDefault();\n if (this.selectedIndex >= 0 && this.selectedIndex < this.options.length) {\n const option = this.options[this.selectedIndex];\n if (!option.disabled) {\n this.selectOption(option);\n }\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.closeDropdown();\n this.buttonRef?.nativeElement?.focus();\n break;\n case 'Home':\n event.preventDefault();\n if (enabledOptions.length > 0) {\n this.selectedIndex = this.options.indexOf(enabledOptions[0]);\n setTimeout(() => this.scrollToSelected(), 0);\n }\n break;\n case 'End':\n event.preventDefault();\n if (enabledOptions.length > 0) {\n const lastOption = enabledOptions[enabledOptions.length - 1];\n this.selectedIndex = this.options.indexOf(lastOption);\n setTimeout(() => this.scrollToSelected(), 0);\n }\n break;\n }\n }\n\n private updateSelectedIndex(): void {\n if (this.value === null || !this.options) {\n this.selectedIndex = -1;\n return;\n }\n\n const index = this.options.findIndex((opt) => opt.value === this.value);\n this.selectedIndex = index >= 0 ? index : -1;\n }\n\n private scrollToSelected(): void {\n try {\n if (\n this.dropdownRef?.nativeElement &&\n this.selectedIndex >= 0 &&\n this.selectedIndex < this.options.length\n ) {\n const selectedElement = this.dropdownRef.nativeElement.querySelector(\n `[data-index=\"${this.selectedIndex}\"]`\n ) as HTMLElement | null;\n if (selectedElement && selectedElement instanceof HTMLElement) {\n selectedElement.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }\n } catch (error) {\n console.warn('Could not scroll to selected option:', error);\n }\n }\n\n getSelectedLabel(): string {\n if (this.value === null || !this.options) {\n return '';\n }\n\n const selectedOption = this.options.find((opt) => opt.value === this.value);\n return selectedOption?.label || '';\n }\n\n writeValue(value: string | number | null): void {\n this.value = value;\n this.updateSelectedIndex();\n }\n\n registerOnChange(fn: (value: string | number | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n if (isDisabled && this.isOpen) {\n this.closeDropdown();\n }\n }\n\n get buttonClasses(): string {\n return [\n 'sefin-select__button',\n `sefin-select__button--${this.size}`,\n this.disabled ? 'sefin-select__button--disabled' : '',\n this.isOpen ? 'sefin-select__button--open' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n get containerClasses(): string {\n return [\n 'sefin-select',\n this.isOpen ? 'sefin-select--open' : '',\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<div [class]=\"containerClasses\" #containerRef>\n <button\n #buttonRef\n type=\"button\"\n [class]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeyDown($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-haspopup]=\"true\"\n aria-label=\"Select option\"\n >\n <span class=\"sefin-select__value\" [class.sefin-select__value--placeholder]=\"!getSelectedLabel()\">\n {{ getSelectedLabel() || placeholder }}\n </span>\n <div class=\"sefin-select__arrow\" [class.sefin-select__arrow--open]=\"isOpen\">\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 6L8 10L12 6\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n <div\n *ngIf=\"isOpen && options && options.length > 0\"\n #dropdownRef\n class=\"sefin-select__dropdown\"\n role=\"listbox\"\n >\n <ul class=\"sefin-select__list\">\n <li\n *ngFor=\"let option of options; let i = index\"\n [attr.data-index]=\"i\"\n [class.sefin-select__option]=\"true\"\n [class.sefin-select__option--selected]=\"i === selectedIndex\"\n [class.sefin-select__option--disabled]=\"option.disabled\"\n [class.sefin-select__option--active]=\"option.value === value\"\n (click)=\"selectOption(option)\"\n [attr.aria-selected]=\"option.value === value\"\n role=\"option\"\n >\n {{ option.label }}\n </li>\n </ul>\n </div>\n <div\n *ngIf=\"isOpen && (!options || options.length === 0)\"\n class=\"sefin-select__dropdown sefin-select__dropdown--empty\"\n >\n <div class=\"sefin-select__no-options\">\n No hay opciones disponibles\n </div>\n </div>\n</div>\n\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n ChangeDetectionStrategy,\n forwardRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { InputSize } from '../../shared/types';\n\n@Component({\n selector: 'sefin-switch',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './switch.component.html',\n styleUrls: ['./switch.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true,\n },\n ],\n})\nexport class SwitchComponent implements ControlValueAccessor {\n @Input() size: InputSize = 'md';\n @Input() disabled = false;\n @Input() class = '';\n @Input() label = '';\n @Input() name = '';\n @Input() value: boolean = false;\n\n @Output() valueChange = new EventEmitter<boolean>();\n @Output() checkedChange = new EventEmitter<boolean>();\n\n private onChange = (value: boolean) => {};\n private onTouched = () => {};\n\n onSwitchChange(event: Event): void {\n if (this.disabled) {\n return;\n }\n\n const target = event.target as HTMLInputElement;\n this.value = target.checked;\n \n this.onChange(this.value);\n this.onTouched();\n this.valueChange.emit(this.value);\n this.checkedChange.emit(this.value);\n }\n\n writeValue(value: boolean): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n get wrapperClasses(): string {\n return [\n 'sefin-switch__wrapper',\n this.disabled ? 'sefin-switch__wrapper--disabled' : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n\n","<label [class]=\"wrapperClasses\">\n <input\n type=\"checkbox\"\n class=\"sefin-switch\"\n [class.sefin-switch--sm]=\"size === 'sm'\"\n [class.sefin-switch--md]=\"size === 'md'\"\n [class.sefin-switch--lg]=\"size === 'lg'\"\n [class.sefin-switch--disabled]=\"disabled\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n [name]=\"name\"\n (change)=\"onSwitchChange($event)\"\n />\n <span \n class=\"sefin-switch__track\" \n [class.sefin-switch__track--sm]=\"size === 'sm'\" \n [class.sefin-switch__track--md]=\"size === 'md'\" \n [class.sefin-switch__track--lg]=\"size === 'lg'\" \n [class.sefin-switch__track--checked]=\"value\" \n >\n <span \n class=\"sefin-switch__thumb\"\n [class.sefin-switch__thumb--sm]=\"size === 'sm'\"\n [class.sefin-switch__thumb--md]=\"size === 'md'\"\n [class.sefin-switch__thumb--lg]=\"size === 'lg'\"\n ></span>\n </span>\n <span *ngIf=\"label\" class=\"sefin-switch__label\" [class.sefin-switch__label--sm]=\"size === 'sm'\" [class.sefin-switch__label--md]=\"size === 'md'\" [class.sefin-switch__label--lg]=\"size === 'lg'\">{{ label }}</span>\n</label>\n\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n TypographyVariant,\n TypographySize,\n TypographyWeight,\n TypographyColor,\n TypographyLineHeight,\n} from '../../shared/types';\n\n@Component({\n selector: 'sefin-typography',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './typography.component.html',\n styleUrls: ['./typography.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class TypographyComponent {\n @Input() variant: TypographyVariant = 'p';\n @Input() size?: TypographySize;\n @Input() weight?: TypographyWeight;\n @Input() color: TypographyColor = 'text';\n @Input() lineHeight?: TypographyLineHeight;\n @Input() class = '';\n @Input() text?: string;\n\n get typographyClasses(): string {\n return [\n 'sefin-typography',\n `sefin-typography--${this.variant}`,\n this.size ? `sefin-typography--${this.size}` : '',\n this.weight ? `sefin-typography--${this.weight}` : '',\n `sefin-typography--${this.color}`,\n this.lineHeight ? `sefin-typography--line-height-${this.lineHeight}` : '',\n this.class,\n ]\n .filter(Boolean)\n .join(' ');\n }\n}\n","<ng-container [ngSwitch]=\"variant\">\n <h1 *ngSwitchCase=\"'h1'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h1>\n <h2 *ngSwitchCase=\"'h2'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h2>\n <h3 *ngSwitchCase=\"'h3'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h3>\n <h4 *ngSwitchCase=\"'h4'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h4>\n <h5 *ngSwitchCase=\"'h5'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h5>\n <h6 *ngSwitchCase=\"'h6'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></h6>\n <p *ngSwitchCase=\"'p'\" [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></p>\n <span *ngSwitchDefault [class]=\"typographyClasses\">{{ text }}<ng-content></ng-content></span>\n</ng-container>\n","/**\n * Atoms index\n */\nexport * from './button/button.component';\nexport * from './icon-button/icon-button.component';\nexport * from './link/link.component';\nexport * from './stack/stack.component';\nexport * from './autocomplete/autocomplete.component';\nexport * from './checkbox/checkbox.component';\nexport * from './select/select.component';\nexport * from './switch/switch.component';\nexport * from './typography/typography.component';\n\n","/*\n * Public API Surface of @lesterarte/sefin-ui\n */\n\n// Design Tokens\nexport * from './tokens';\n\n// Themes\nexport * from './themes';\n\n// Utilities\nexport * from './utils';\n\n// Shared\nexport * from './shared';\n\n// Atoms\nexport * from './atoms';\n\n// Styles (for importing in consuming apps)\nexport const STYLES_PATH = './styles/index.scss';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lesterarte/sefin-ui",
3
- "version": "0.0.3-dev.15",
3
+ "version": "0.0.3-dev.18",
4
4
  "description": "Sefin Design System - A comprehensive Angular UI library based on Atomic Design and design tokens",
5
5
  "keywords": [
6
6
  "angular",
@@ -602,6 +602,54 @@ declare class ButtonComponent {
602
602
  static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "sefin-button", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "type": { "alias": "type"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
603
603
  }
604
604
 
605
+ declare class IconButtonComponent {
606
+ variant: ButtonVariant;
607
+ size: ButtonSize;
608
+ disabled: boolean;
609
+ type: 'button' | 'submit' | 'reset';
610
+ class: string;
611
+ ariaLabel: string;
612
+ rounded: boolean;
613
+ clicked: EventEmitter<MouseEvent>;
614
+ onClick(event: MouseEvent): void;
615
+ get buttonClasses(): string;
616
+ static ɵfac: i0.ɵɵFactoryDeclaration<IconButtonComponent, never>;
617
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconButtonComponent, "sefin-icon-button", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "type": { "alias": "type"; "required": false; }; "class": { "alias": "class"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
618
+ }
619
+
620
+ type LinkVariant = 'default' | 'primary' | 'secondary' | 'underline';
621
+ type LinkSize = 'sm' | 'md' | 'lg';
622
+ declare class LinkComponent {
623
+ variant: LinkVariant;
624
+ size: LinkSize;
625
+ disabled: boolean;
626
+ href?: string;
627
+ target?: string;
628
+ rel?: string;
629
+ class: string;
630
+ underline: boolean;
631
+ get linkClasses(): string;
632
+ onClick(event: Event): void;
633
+ static ɵfac: i0.ɵɵFactoryDeclaration<LinkComponent, never>;
634
+ static ɵcmp: i0.ɵɵComponentDeclaration<LinkComponent, "sefin-link", never, { "variant": { "alias": "variant"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "href": { "alias": "href"; "required": false; }; "target": { "alias": "target"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "class": { "alias": "class"; "required": false; }; "underline": { "alias": "underline"; "required": false; }; }, {}, never, ["*"], true, never>;
635
+ }
636
+
637
+ declare class StackComponent {
638
+ direction: 'row' | 'column';
639
+ spacing: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
640
+ align: 'start' | 'center' | 'end' | 'stretch';
641
+ justify: 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';
642
+ wrap: boolean;
643
+ class: string;
644
+ get stackClasses(): string;
645
+ get spacingValue(): string;
646
+ get stackStyles(): {
647
+ [key: string]: string;
648
+ };
649
+ static ɵfac: i0.ɵɵFactoryDeclaration<StackComponent, never>;
650
+ static ɵcmp: i0.ɵɵComponentDeclaration<StackComponent, "sefin-stack", never, { "direction": { "alias": "direction"; "required": false; }; "spacing": { "alias": "spacing"; "required": false; }; "align": { "alias": "align"; "required": false; }; "justify": { "alias": "justify"; "required": false; }; "wrap": { "alias": "wrap"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
651
+ }
652
+
605
653
  interface AutocompleteOption {
606
654
  value: string | number;
607
655
  label: string;
@@ -669,6 +717,71 @@ declare class CheckboxComponent implements ControlValueAccessor, AfterViewInit,
669
717
  static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxComponent, "sefin-checkbox", never, { "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; "class": { "alias": "class"; "required": false; }; "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "checkedChange": "checkedChange"; }, never, never, true, never>;
670
718
  }
671
719
 
720
+ interface SelectOption {
721
+ value: string | number;
722
+ label: string;
723
+ disabled?: boolean;
724
+ }
725
+ declare class SelectComponent implements ControlValueAccessor, OnInit, OnDestroy, OnChanges {
726
+ containerRef?: ElementRef<HTMLDivElement>;
727
+ dropdownRef?: ElementRef<HTMLDivElement>;
728
+ buttonRef?: ElementRef<HTMLButtonElement>;
729
+ options: SelectOption[];
730
+ placeholder: string;
731
+ disabled: boolean;
732
+ size: InputSize;
733
+ class: string;
734
+ value: string | number | null;
735
+ valueChange: EventEmitter<string | number>;
736
+ optionSelected: EventEmitter<SelectOption>;
737
+ isOpen: boolean;
738
+ selectedIndex: number;
739
+ private onChange;
740
+ private onTouched;
741
+ ngOnInit(): void;
742
+ ngOnChanges(changes: SimpleChanges): void;
743
+ ngOnDestroy(): void;
744
+ onClickOutside(event: MouseEvent): void;
745
+ onEscapeKey(event: Event): void;
746
+ toggleDropdown(): void;
747
+ openDropdown(): void;
748
+ closeDropdown(): void;
749
+ selectOption(option: SelectOption): void;
750
+ onKeyDown(event: KeyboardEvent): void;
751
+ private updateSelectedIndex;
752
+ private scrollToSelected;
753
+ getSelectedLabel(): string;
754
+ writeValue(value: string | number | null): void;
755
+ registerOnChange(fn: (value: string | number | null) => void): void;
756
+ registerOnTouched(fn: () => void): void;
757
+ setDisabledState(isDisabled: boolean): void;
758
+ get buttonClasses(): string;
759
+ get containerClasses(): string;
760
+ static ɵfac: i0.ɵɵFactoryDeclaration<SelectComponent, never>;
761
+ static ɵcmp: i0.ɵɵComponentDeclaration<SelectComponent, "sefin-select", never, { "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "size": { "alias": "size"; "required": false; }; "class": { "alias": "class"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "optionSelected": "optionSelected"; }, never, never, true, never>;
762
+ }
763
+
764
+ declare class SwitchComponent implements ControlValueAccessor {
765
+ size: InputSize;
766
+ disabled: boolean;
767
+ class: string;
768
+ label: string;
769
+ name: string;
770
+ value: boolean;
771
+ valueChange: EventEmitter<boolean>;
772
+ checkedChange: EventEmitter<boolean>;
773
+ private onChange;
774
+ private onTouched;
775
+ onSwitchChange(event: Event): void;
776
+ writeValue(value: boolean): void;
777
+ registerOnChange(fn: (value: boolean) => void): void;
778
+ registerOnTouched(fn: () => void): void;
779
+ setDisabledState(isDisabled: boolean): void;
780
+ get wrapperClasses(): string;
781
+ static ɵfac: i0.ɵɵFactoryDeclaration<SwitchComponent, never>;
782
+ static ɵcmp: i0.ɵɵComponentDeclaration<SwitchComponent, "sefin-switch", never, { "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "class": { "alias": "class"; "required": false; }; "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, { "valueChange": "valueChange"; "checkedChange": "checkedChange"; }, never, never, true, never>;
783
+ }
784
+
672
785
  declare class TypographyComponent {
673
786
  variant: TypographyVariant;
674
787
  size?: TypographySize;
@@ -684,5 +797,5 @@ declare class TypographyComponent {
684
797
 
685
798
  declare const STYLES_PATH = "./styles/index.scss";
686
799
 
687
- export { AutocompleteComponent, BORDER_RADIUS_TOKENS, BRAND_THEME, ButtonComponent, COLOR_TOKENS, CheckboxComponent, DARK_THEME, DESIGN_TOKENS, LIGHT_THEME, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, TYPOGRAPHY_TOKENS, ThemeLoader, TypographyComponent };
688
- export type { AutocompleteOption, BaseComponent, BorderRadiusToken, ButtonSize, ButtonVariant, CardVariant, ColorShade, ColorTokenName, CustomTheme, InputSize, ShadowToken, SpacingToken, Theme, ThemeColors, TypographyColor, TypographyLineHeight, TypographySize, TypographyToken, TypographyVariant, TypographyWeight };
800
+ export { AutocompleteComponent, BORDER_RADIUS_TOKENS, BRAND_THEME, ButtonComponent, COLOR_TOKENS, CheckboxComponent, DARK_THEME, DESIGN_TOKENS, IconButtonComponent, LIGHT_THEME, LinkComponent, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, SelectComponent, StackComponent, SwitchComponent, TYPOGRAPHY_TOKENS, ThemeLoader, TypographyComponent };
801
+ export type { AutocompleteOption, BaseComponent, BorderRadiusToken, ButtonSize, ButtonVariant, CardVariant, ColorShade, ColorTokenName, CustomTheme, InputSize, LinkSize, LinkVariant, SelectOption, ShadowToken, SpacingToken, Theme, ThemeColors, TypographyColor, TypographyLineHeight, TypographySize, TypographyToken, TypographyVariant, TypographyWeight };