@lesterarte/sefin-ui 0.0.3-dev.4 → 0.0.3-dev.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component, HostListener, ViewChild } from '@angular/core';
3
+ import * as i1 from '@angular/common';
3
4
  import { CommonModule } from '@angular/common';
5
+ import * as i2 from '@angular/forms';
6
+ import { FormsModule } from '@angular/forms';
4
7
 
5
8
  /**
6
9
  * Color design tokens as TypeScript constants
@@ -572,11 +575,11 @@ class ButtonComponent {
572
575
  .join(' ');
573
576
  }
574
577
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
575
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: ButtonComponent, isStandalone: true, selector: "sefin-button", inputs: { variant: "variant", size: "size", disabled: "disabled", type: "type", class: "class" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<button [type]=\"type\" [disabled]=\"disabled\" [class]=\"buttonClasses\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n", styles: [".sefin-button{display:inline-flex;align-items:center;justify-content:center;font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-medium, 500);border-radius:var(--sefin-radius-md, 8px);transition:all .2s ease-in-out;cursor:pointer;outline:none;border:1px solid transparent}.sefin-button:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-button--sm{padding:var(--sefin-spacing-sm, 8px) var(--sefin-spacing-md, 16px);font-size:var(--sefin-font-size-sm, .875rem);min-height:32px}.sefin-button--md{padding:var(--sefin-spacing-md, 16px) var(--sefin-spacing-lg, 24px);font-size:var(--sefin-font-size-base, 1rem);min-height:40px}.sefin-button--lg{padding:var(--sefin-spacing-lg, 24px) var(--sefin-spacing-xl, 32px);font-size:var(--sefin-font-size-lg, 1.125rem);min-height:48px}.sefin-button--primary{background-color:var(--sefin-color-primary);color:#fff}.sefin-button--primary:hover:not(:disabled){background-color:var(--sefin-color-primary-dark)}.sefin-button--primary:active:not(:disabled){transform:translateY(1px)}.sefin-button--secondary{background-color:var(--sefin-color-secondary);color:#fff}.sefin-button--secondary:hover:not(:disabled){background-color:var(--sefin-color-secondary-dark)}.sefin-button--secondary:active:not(:disabled){transform:translateY(1px)}.sefin-button--outline{background-color:transparent;color:var(--sefin-color-primary);border-color:var(--sefin-color-primary)}.sefin-button--outline:hover:not(:disabled){background-color:var(--sefin-color-primary);color:#fff}.sefin-button--ghost{background-color:transparent;color:var(--sefin-color-primary)}.sefin-button--ghost:hover:not(:disabled){background-color:var(--sefin-color-surface-hover)}.sefin-button--danger{background-color:var(--sefin-color-error);color:#fff}.sefin-button--danger:hover:not(:disabled){background-color:var(--sefin-color-error);opacity:.9}.sefin-button--disabled{opacity:.6;cursor:not-allowed;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
578
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: ButtonComponent, isStandalone: true, selector: "sefin-button", inputs: { variant: "variant", size: "size", disabled: "disabled", type: "type", class: "class" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<button [type]=\"type\" [disabled]=\"disabled\" [class]=\"buttonClasses\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n", styles: [".sefin-button{display:inline-flex;align-items:center;justify-content:center;font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-medium);line-height:var(--sefin-line-height-normal);border-radius:var(--sefin-radius-md);transition:all .2s ease-in-out;cursor:pointer;outline:none;border:1px solid transparent}.sefin-button:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-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-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-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-button--primary{background-color:var(--sefin-color-primary);color:#fff}.sefin-button--primary:hover:not(:disabled){background-color:var(--sefin-color-primary-dark)}.sefin-button--primary:active:not(:disabled){transform:translateY(1px)}.sefin-button--secondary{background-color:var(--sefin-color-secondary);color:#fff}.sefin-button--secondary:hover:not(:disabled){background-color:var(--sefin-color-secondary-dark)}.sefin-button--secondary:active:not(:disabled){transform:translateY(1px)}.sefin-button--outline{background-color:transparent;color:var(--sefin-color-primary);border-color:var(--sefin-color-primary)}.sefin-button--outline:hover:not(:disabled){background-color:var(--sefin-color-primary);color:#fff}.sefin-button--ghost{background-color:transparent;color:var(--sefin-color-primary)}.sefin-button--ghost:hover:not(:disabled){background-color:var(--sefin-color-surface-hover)}.sefin-button--danger{background-color:var(--sefin-color-error);color:#fff}.sefin-button--danger:hover:not(:disabled){background-color:var(--sefin-color-error);opacity:.9}.sefin-button--disabled{opacity:.6;cursor:not-allowed;pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
576
579
  }
577
580
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ButtonComponent, decorators: [{
578
581
  type: Component,
579
- args: [{ selector: 'sefin-button', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button [type]=\"type\" [disabled]=\"disabled\" [class]=\"buttonClasses\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n", styles: [".sefin-button{display:inline-flex;align-items:center;justify-content:center;font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-medium, 500);border-radius:var(--sefin-radius-md, 8px);transition:all .2s ease-in-out;cursor:pointer;outline:none;border:1px solid transparent}.sefin-button:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-button--sm{padding:var(--sefin-spacing-sm, 8px) var(--sefin-spacing-md, 16px);font-size:var(--sefin-font-size-sm, .875rem);min-height:32px}.sefin-button--md{padding:var(--sefin-spacing-md, 16px) var(--sefin-spacing-lg, 24px);font-size:var(--sefin-font-size-base, 1rem);min-height:40px}.sefin-button--lg{padding:var(--sefin-spacing-lg, 24px) var(--sefin-spacing-xl, 32px);font-size:var(--sefin-font-size-lg, 1.125rem);min-height:48px}.sefin-button--primary{background-color:var(--sefin-color-primary);color:#fff}.sefin-button--primary:hover:not(:disabled){background-color:var(--sefin-color-primary-dark)}.sefin-button--primary:active:not(:disabled){transform:translateY(1px)}.sefin-button--secondary{background-color:var(--sefin-color-secondary);color:#fff}.sefin-button--secondary:hover:not(:disabled){background-color:var(--sefin-color-secondary-dark)}.sefin-button--secondary:active:not(:disabled){transform:translateY(1px)}.sefin-button--outline{background-color:transparent;color:var(--sefin-color-primary);border-color:var(--sefin-color-primary)}.sefin-button--outline:hover:not(:disabled){background-color:var(--sefin-color-primary);color:#fff}.sefin-button--ghost{background-color:transparent;color:var(--sefin-color-primary)}.sefin-button--ghost:hover:not(:disabled){background-color:var(--sefin-color-surface-hover)}.sefin-button--danger{background-color:var(--sefin-color-error);color:#fff}.sefin-button--danger:hover:not(:disabled){background-color:var(--sefin-color-error);opacity:.9}.sefin-button--disabled{opacity:.6;cursor:not-allowed;pointer-events:none}\n"] }]
582
+ args: [{ selector: 'sefin-button', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button [type]=\"type\" [disabled]=\"disabled\" [class]=\"buttonClasses\" (click)=\"onClick($event)\">\n <ng-content></ng-content>\n</button>\n", styles: [".sefin-button{display:inline-flex;align-items:center;justify-content:center;font-family:var(--sefin-font-family-base);font-weight:var(--sefin-font-weight-medium);line-height:var(--sefin-line-height-normal);border-radius:var(--sefin-radius-md);transition:all .2s ease-in-out;cursor:pointer;outline:none;border:1px solid transparent}.sefin-button:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-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-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-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-button--primary{background-color:var(--sefin-color-primary);color:#fff}.sefin-button--primary:hover:not(:disabled){background-color:var(--sefin-color-primary-dark)}.sefin-button--primary:active:not(:disabled){transform:translateY(1px)}.sefin-button--secondary{background-color:var(--sefin-color-secondary);color:#fff}.sefin-button--secondary:hover:not(:disabled){background-color:var(--sefin-color-secondary-dark)}.sefin-button--secondary:active:not(:disabled){transform:translateY(1px)}.sefin-button--outline{background-color:transparent;color:var(--sefin-color-primary);border-color:var(--sefin-color-primary)}.sefin-button--outline:hover:not(:disabled){background-color:var(--sefin-color-primary);color:#fff}.sefin-button--ghost{background-color:transparent;color:var(--sefin-color-primary)}.sefin-button--ghost:hover:not(:disabled){background-color:var(--sefin-color-surface-hover)}.sefin-button--danger{background-color:var(--sefin-color-error);color:#fff}.sefin-button--danger:hover:not(:disabled){background-color:var(--sefin-color-error);opacity:.9}.sefin-button--disabled{opacity:.6;cursor:not-allowed;pointer-events:none}\n"] }]
580
583
  }], propDecorators: { variant: [{
581
584
  type: Input
582
585
  }], size: [{
@@ -591,6 +594,263 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
591
594
  type: Output
592
595
  }] } });
593
596
 
597
+ class AutocompleteComponent {
598
+ inputRef;
599
+ dropdownRef;
600
+ containerRef;
601
+ options = [];
602
+ placeholder = '';
603
+ disabled = false;
604
+ size = 'md';
605
+ class = '';
606
+ value = null;
607
+ minChars = 0;
608
+ maxResults = 10;
609
+ valueChange = new EventEmitter();
610
+ optionSelected = new EventEmitter();
611
+ inputChange = new EventEmitter();
612
+ searchText = '';
613
+ filteredOptions = [];
614
+ isOpen = false;
615
+ selectedIndex = -1;
616
+ ngOnInit() {
617
+ if (this.value !== null) {
618
+ const selectedOption = this.options.find((opt) => opt.value === this.value);
619
+ this.searchText = selectedOption?.label || String(this.value);
620
+ }
621
+ }
622
+ ngOnChanges(changes) {
623
+ if (changes['options']) {
624
+ const options = changes['options'].currentValue || [];
625
+ if (this.value !== null) {
626
+ const selectedOption = options.find((opt) => opt.value === this.value);
627
+ if (selectedOption) {
628
+ this.searchText = selectedOption.label;
629
+ }
630
+ else {
631
+ this.searchText = '';
632
+ }
633
+ }
634
+ }
635
+ if (changes['value']) {
636
+ if (this.value !== null) {
637
+ const selectedOption = this.options.find((opt) => opt.value === this.value);
638
+ this.searchText = selectedOption?.label || String(this.value);
639
+ }
640
+ else {
641
+ this.searchText = '';
642
+ }
643
+ this.filteredOptions = [];
644
+ this.isOpen = false;
645
+ }
646
+ }
647
+ ngOnDestroy() {
648
+ }
649
+ onClickOutside(event) {
650
+ if (this.containerRef?.nativeElement && this.isOpen) {
651
+ const clickedInside = this.containerRef.nativeElement.contains(event.target);
652
+ if (!clickedInside) {
653
+ this.isOpen = false;
654
+ this.selectedIndex = -1;
655
+ }
656
+ }
657
+ }
658
+ onInputChange(value) {
659
+ this.searchText = value;
660
+ this.inputChange.emit(value);
661
+ if (this.options && this.options.length > 0) {
662
+ this.filterOptions();
663
+ this.isOpen = value.length >= this.minChars;
664
+ }
665
+ else {
666
+ this.isOpen = false;
667
+ this.filteredOptions = [];
668
+ }
669
+ }
670
+ filterOptions() {
671
+ if (!this.options || this.options.length === 0) {
672
+ this.filteredOptions = [];
673
+ return;
674
+ }
675
+ if (this.minChars > 0 &&
676
+ (!this.searchText || this.searchText.length < this.minChars)) {
677
+ this.filteredOptions = [];
678
+ return;
679
+ }
680
+ const searchText = this.searchText || '';
681
+ if (searchText.length === 0) {
682
+ this.filteredOptions = this.options
683
+ .filter((option) => !option.disabled)
684
+ .slice(0, this.maxResults);
685
+ return;
686
+ }
687
+ const searchLower = searchText.toLowerCase();
688
+ this.filteredOptions = this.options
689
+ .filter((option) => {
690
+ if (option.disabled)
691
+ return false;
692
+ return option.label.toLowerCase().includes(searchLower);
693
+ })
694
+ .slice(0, this.maxResults);
695
+ }
696
+ selectOption(option) {
697
+ if (option.disabled)
698
+ return;
699
+ this.searchText = option.label;
700
+ this.value = option.value;
701
+ this.valueChange.emit(option.value);
702
+ this.optionSelected.emit(option);
703
+ this.isOpen = false;
704
+ this.selectedIndex = -1;
705
+ }
706
+ onInputFocus() {
707
+ if (this.disabled)
708
+ return;
709
+ if (this.options &&
710
+ Array.isArray(this.options) &&
711
+ this.options.length > 0) {
712
+ this.filterOptions();
713
+ this.isOpen = this.filteredOptions.length > 0;
714
+ }
715
+ else {
716
+ this.isOpen = false;
717
+ this.filteredOptions = [];
718
+ }
719
+ }
720
+ onInputBlur() {
721
+ if (this.disabled || !this.searchText) {
722
+ return;
723
+ }
724
+ const exactMatch = this.options.find((option) => !option.disabled &&
725
+ option.label.toLowerCase().trim() === this.searchText.toLowerCase().trim());
726
+ if (!exactMatch) {
727
+ this.searchText = '';
728
+ this.value = null;
729
+ this.valueChange.emit(null);
730
+ this.isOpen = false;
731
+ this.filteredOptions = [];
732
+ this.selectedIndex = -1;
733
+ }
734
+ }
735
+ onKeyDown(event) {
736
+ if (!this.isOpen ||
737
+ !this.filteredOptions ||
738
+ this.filteredOptions.length === 0) {
739
+ return;
740
+ }
741
+ switch (event.key) {
742
+ case 'ArrowDown':
743
+ event.preventDefault();
744
+ this.selectedIndex = Math.min(this.selectedIndex + 1, this.filteredOptions.length - 1);
745
+ setTimeout(() => this.scrollToSelected(), 0);
746
+ break;
747
+ case 'ArrowUp':
748
+ event.preventDefault();
749
+ this.selectedIndex = Math.max(this.selectedIndex - 1, -1);
750
+ setTimeout(() => this.scrollToSelected(), 0);
751
+ break;
752
+ case 'Enter':
753
+ event.preventDefault();
754
+ if (this.selectedIndex >= 0 &&
755
+ this.selectedIndex < this.filteredOptions.length) {
756
+ this.selectOption(this.filteredOptions[this.selectedIndex]);
757
+ }
758
+ break;
759
+ case 'Escape':
760
+ event.preventDefault();
761
+ this.isOpen = false;
762
+ this.selectedIndex = -1;
763
+ break;
764
+ }
765
+ }
766
+ scrollToSelected() {
767
+ try {
768
+ if (this.dropdownRef?.nativeElement && this.selectedIndex >= 0) {
769
+ const selectedElement = this.dropdownRef.nativeElement.querySelector(`[data-index="${this.selectedIndex}"]`);
770
+ if (selectedElement && selectedElement instanceof HTMLElement) {
771
+ selectedElement.scrollIntoView({
772
+ block: 'nearest',
773
+ behavior: 'smooth',
774
+ });
775
+ }
776
+ }
777
+ }
778
+ catch (error) {
779
+ console.warn('Could not scroll to selected option:', error);
780
+ }
781
+ }
782
+ clearValue() {
783
+ this.searchText = '';
784
+ this.value = null;
785
+ this.valueChange.emit(null);
786
+ this.isOpen = false;
787
+ this.filteredOptions = [];
788
+ if (this.inputRef?.nativeElement) {
789
+ this.inputRef.nativeElement.focus();
790
+ }
791
+ }
792
+ get inputClasses() {
793
+ return [
794
+ 'sefin-autocomplete__input',
795
+ `sefin-autocomplete__input--${this.size}`,
796
+ this.disabled ? 'sefin-autocomplete__input--disabled' : '',
797
+ this.class,
798
+ ]
799
+ .filter(Boolean)
800
+ .join(' ');
801
+ }
802
+ get containerClasses() {
803
+ return [
804
+ 'sefin-autocomplete',
805
+ this.isOpen && this.filteredOptions.length > 0
806
+ ? 'sefin-autocomplete--open'
807
+ : '',
808
+ ]
809
+ .filter(Boolean)
810
+ .join(' ');
811
+ }
812
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AutocompleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
813
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.6", type: AutocompleteComponent, isStandalone: true, selector: "sefin-autocomplete", inputs: { options: "options", placeholder: "placeholder", disabled: "disabled", size: "size", class: "class", value: "value", minChars: "minChars", maxResults: "maxResults" }, outputs: { valueChange: "valueChange", optionSelected: "optionSelected", inputChange: "inputChange" }, host: { listeners: { "document:click": "onClickOutside($event)" } }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true }, { propertyName: "dropdownRef", first: true, predicate: ["dropdownRef"], descendants: true }, { propertyName: "containerRef", first: true, predicate: ["containerRef"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<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>\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", styles: [".sefin-autocomplete{position:relative;width:100%}.sefin-autocomplete__wrapper{position:relative;display:flex;align-items:center;width:100%}.sefin-autocomplete__input{width:100%;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}.sefin-autocomplete__input::placeholder{color:var(--sefin-color-text-secondary);font-family:var(--sefin-font-family-base)}.sefin-autocomplete__input:focus{border-color:var(--sefin-color-border-focus);box-shadow:0 0 0 3px var(--sefin-color-primary-light)}.sefin-autocomplete__input:disabled{background-color:var(--sefin-color-surface-hover);color:var(--sefin-color-text-disabled);cursor:not-allowed;opacity:.6}.sefin-autocomplete__input--sm{padding:var(--sefin-spacing-sm) var(--sefin-spacing-md);padding-right:calc(var(--sefin-spacing-md) * 2.5);font-size:var(--sefin-font-size-sm);line-height:var(--sefin-line-height-normal);min-height:32px}.sefin-autocomplete__input--md{padding:var(--sefin-spacing-md) var(--sefin-spacing-lg);padding-right:calc(var(--sefin-spacing-lg) * 2);font-size:var(--sefin-font-size-base);line-height:var(--sefin-line-height-normal);min-height:40px}.sefin-autocomplete__input--lg{padding:var(--sefin-spacing-lg) var(--sefin-spacing-xl);padding-right:calc(var(--sefin-spacing-xl) * 1.75);font-size:var(--sefin-font-size-lg);line-height:var(--sefin-line-height-normal);min-height:48px}.sefin-autocomplete__input--disabled{cursor:not-allowed}.sefin-autocomplete__actions{position:absolute;right:var(--sefin-spacing-sm);display:flex;align-items:center;gap:var(--sefin-spacing-xs)}.sefin-autocomplete__clear{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;border-radius:var(--sefin-radius-sm);color:var(--sefin-color-text-secondary);cursor:pointer;transition:all .2s ease-in-out}.sefin-autocomplete__clear:hover{background-color:var(--sefin-color-surface-hover);color:var(--sefin-color-text)}.sefin-autocomplete__clear:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-autocomplete__clear svg{width:16px;height:16px}.sefin-autocomplete__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}.sefin-autocomplete__dropdown--empty{padding:var(--sefin-spacing-md)}.sefin-autocomplete__list{list-style:none;margin:0;padding:var(--sefin-spacing-xs)}.sefin-autocomplete__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-autocomplete__option:hover:not(.sefin-autocomplete__option--disabled){background-color:var(--sefin-color-surface-hover)}.sefin-autocomplete__option--selected{background-color:var(--sefin-color-primary-light);color:var(--sefin-color-primary);font-weight:var(--sefin-font-weight-medium)}.sefin-autocomplete__option--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.sefin-autocomplete__no-results{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-autocomplete--open .sefin-autocomplete__input{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"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
814
+ }
815
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: AutocompleteComponent, decorators: [{
816
+ type: Component,
817
+ args: [{ selector: 'sefin-autocomplete', standalone: true, imports: [CommonModule, FormsModule], changeDetection: ChangeDetectionStrategy.Default, template: "<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>\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", styles: [".sefin-autocomplete{position:relative;width:100%}.sefin-autocomplete__wrapper{position:relative;display:flex;align-items:center;width:100%}.sefin-autocomplete__input{width:100%;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}.sefin-autocomplete__input::placeholder{color:var(--sefin-color-text-secondary);font-family:var(--sefin-font-family-base)}.sefin-autocomplete__input:focus{border-color:var(--sefin-color-border-focus);box-shadow:0 0 0 3px var(--sefin-color-primary-light)}.sefin-autocomplete__input:disabled{background-color:var(--sefin-color-surface-hover);color:var(--sefin-color-text-disabled);cursor:not-allowed;opacity:.6}.sefin-autocomplete__input--sm{padding:var(--sefin-spacing-sm) var(--sefin-spacing-md);padding-right:calc(var(--sefin-spacing-md) * 2.5);font-size:var(--sefin-font-size-sm);line-height:var(--sefin-line-height-normal);min-height:32px}.sefin-autocomplete__input--md{padding:var(--sefin-spacing-md) var(--sefin-spacing-lg);padding-right:calc(var(--sefin-spacing-lg) * 2);font-size:var(--sefin-font-size-base);line-height:var(--sefin-line-height-normal);min-height:40px}.sefin-autocomplete__input--lg{padding:var(--sefin-spacing-lg) var(--sefin-spacing-xl);padding-right:calc(var(--sefin-spacing-xl) * 1.75);font-size:var(--sefin-font-size-lg);line-height:var(--sefin-line-height-normal);min-height:48px}.sefin-autocomplete__input--disabled{cursor:not-allowed}.sefin-autocomplete__actions{position:absolute;right:var(--sefin-spacing-sm);display:flex;align-items:center;gap:var(--sefin-spacing-xs)}.sefin-autocomplete__clear{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;border-radius:var(--sefin-radius-sm);color:var(--sefin-color-text-secondary);cursor:pointer;transition:all .2s ease-in-out}.sefin-autocomplete__clear:hover{background-color:var(--sefin-color-surface-hover);color:var(--sefin-color-text)}.sefin-autocomplete__clear:focus-visible{outline:2px solid var(--sefin-color-border-focus);outline-offset:2px}.sefin-autocomplete__clear svg{width:16px;height:16px}.sefin-autocomplete__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}.sefin-autocomplete__dropdown--empty{padding:var(--sefin-spacing-md)}.sefin-autocomplete__list{list-style:none;margin:0;padding:var(--sefin-spacing-xs)}.sefin-autocomplete__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-autocomplete__option:hover:not(.sefin-autocomplete__option--disabled){background-color:var(--sefin-color-surface-hover)}.sefin-autocomplete__option--selected{background-color:var(--sefin-color-primary-light);color:var(--sefin-color-primary);font-weight:var(--sefin-font-weight-medium)}.sefin-autocomplete__option--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.sefin-autocomplete__no-results{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-autocomplete--open .sefin-autocomplete__input{border-color:var(--sefin-color-border-focus)}\n"] }]
818
+ }], propDecorators: { inputRef: [{
819
+ type: ViewChild,
820
+ args: ['inputRef', { static: false }]
821
+ }], dropdownRef: [{
822
+ type: ViewChild,
823
+ args: ['dropdownRef', { static: false }]
824
+ }], containerRef: [{
825
+ type: ViewChild,
826
+ args: ['containerRef', { static: false }]
827
+ }], options: [{
828
+ type: Input
829
+ }], placeholder: [{
830
+ type: Input
831
+ }], disabled: [{
832
+ type: Input
833
+ }], size: [{
834
+ type: Input
835
+ }], class: [{
836
+ type: Input
837
+ }], value: [{
838
+ type: Input
839
+ }], minChars: [{
840
+ type: Input
841
+ }], maxResults: [{
842
+ type: Input
843
+ }], valueChange: [{
844
+ type: Output
845
+ }], optionSelected: [{
846
+ type: Output
847
+ }], inputChange: [{
848
+ type: Output
849
+ }], onClickOutside: [{
850
+ type: HostListener,
851
+ args: ['document:click', ['$event']]
852
+ }] } });
853
+
594
854
  /**
595
855
  * Atoms index
596
856
  */
@@ -606,5 +866,5 @@ const STYLES_PATH = './styles/index.scss';
606
866
  * Generated bundle index. Do not edit.
607
867
  */
608
868
 
609
- export { BORDER_RADIUS_TOKENS, BRAND_THEME, ButtonComponent, COLOR_TOKENS, DARK_THEME, DESIGN_TOKENS, LIGHT_THEME, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, TYPOGRAPHY_TOKENS, ThemeLoader };
869
+ export { AutocompleteComponent, BORDER_RADIUS_TOKENS, BRAND_THEME, ButtonComponent, COLOR_TOKENS, DARK_THEME, DESIGN_TOKENS, LIGHT_THEME, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, TYPOGRAPHY_TOKENS, ThemeLoader };
610
870
  //# 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/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';\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","/**\n * Atoms index\n */\nexport * from './button/button.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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"}
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/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';\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>\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","/**\n * Atoms index\n */\nexport * from './button/button.component';\nexport * from './autocomplete/autocomplete.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.4",
3
+ "version": "0.0.3-dev.6",
4
4
  "description": "Sefin Design System - A comprehensive Angular UI library based on Atomic Design and design tokens",
5
5
  "keywords": [
6
6
  "angular",
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter } from '@angular/core';
2
+ import { EventEmitter, OnInit, OnDestroy, OnChanges, ElementRef, SimpleChanges } from '@angular/core';
3
3
 
4
4
  /**
5
5
  * Color design tokens as TypeScript constants
@@ -596,7 +596,49 @@ declare class ButtonComponent {
596
596
  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>;
597
597
  }
598
598
 
599
+ interface AutocompleteOption {
600
+ value: string | number;
601
+ label: string;
602
+ disabled?: boolean;
603
+ }
604
+ declare class AutocompleteComponent implements OnInit, OnDestroy, OnChanges {
605
+ inputRef?: ElementRef<HTMLInputElement>;
606
+ dropdownRef?: ElementRef<HTMLDivElement>;
607
+ containerRef?: ElementRef<HTMLDivElement>;
608
+ options: AutocompleteOption[];
609
+ placeholder: string;
610
+ disabled: boolean;
611
+ size: InputSize;
612
+ class: string;
613
+ value: string | number | null;
614
+ minChars: number;
615
+ maxResults: number;
616
+ valueChange: EventEmitter<string | number>;
617
+ optionSelected: EventEmitter<AutocompleteOption>;
618
+ inputChange: EventEmitter<string>;
619
+ searchText: string;
620
+ filteredOptions: AutocompleteOption[];
621
+ isOpen: boolean;
622
+ selectedIndex: number;
623
+ ngOnInit(): void;
624
+ ngOnChanges(changes: SimpleChanges): void;
625
+ ngOnDestroy(): void;
626
+ onClickOutside(event: MouseEvent): void;
627
+ onInputChange(value: string): void;
628
+ filterOptions(): void;
629
+ selectOption(option: AutocompleteOption): void;
630
+ onInputFocus(): void;
631
+ onInputBlur(): void;
632
+ onKeyDown(event: KeyboardEvent): void;
633
+ private scrollToSelected;
634
+ clearValue(): void;
635
+ get inputClasses(): string;
636
+ get containerClasses(): string;
637
+ static ɵfac: i0.ɵɵFactoryDeclaration<AutocompleteComponent, never>;
638
+ static ɵcmp: i0.ɵɵComponentDeclaration<AutocompleteComponent, "sefin-autocomplete", 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; }; "minChars": { "alias": "minChars"; "required": false; }; "maxResults": { "alias": "maxResults"; "required": false; }; }, { "valueChange": "valueChange"; "optionSelected": "optionSelected"; "inputChange": "inputChange"; }, never, never, true, never>;
639
+ }
640
+
599
641
  declare const STYLES_PATH = "./styles/index.scss";
600
642
 
601
- export { BORDER_RADIUS_TOKENS, BRAND_THEME, ButtonComponent, COLOR_TOKENS, DARK_THEME, DESIGN_TOKENS, LIGHT_THEME, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, TYPOGRAPHY_TOKENS, ThemeLoader };
602
- export type { BaseComponent, BorderRadiusToken, ButtonSize, ButtonVariant, CardVariant, ColorShade, ColorTokenName, CustomTheme, InputSize, ShadowToken, SpacingToken, Theme, ThemeColors, TypographyToken };
643
+ export { AutocompleteComponent, BORDER_RADIUS_TOKENS, BRAND_THEME, ButtonComponent, COLOR_TOKENS, DARK_THEME, DESIGN_TOKENS, LIGHT_THEME, SHADOW_TOKENS, SPACING_TOKENS, STYLES_PATH, TYPOGRAPHY_TOKENS, ThemeLoader };
644
+ export type { AutocompleteOption, BaseComponent, BorderRadiusToken, ButtonSize, ButtonVariant, CardVariant, ColorShade, ColorTokenName, CustomTheme, InputSize, ShadowToken, SpacingToken, Theme, ThemeColors, TypographyToken };