@ng-solid/design-system 22.2.0 → 22.2.2

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.
@@ -2608,6 +2608,306 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
2608
2608
  args: ['trigger']
2609
2609
  }] } });
2610
2610
 
2611
+ class NsDropdownItemDirective {
2612
+ key = input.required(...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
2613
+ label = input.required(...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
2614
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2615
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsDropdownItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2616
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.21", type: NsDropdownItemDirective, isStandalone: true, selector: "ns-dropdown-item", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
2617
+ }
2618
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsDropdownItemDirective, decorators: [{
2619
+ type: Directive,
2620
+ args: [{
2621
+ selector: 'ns-dropdown-item',
2622
+ standalone: true
2623
+ }]
2624
+ }], propDecorators: { key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
2625
+
2626
+ class NsSkeletonComponent {
2627
+ width = input('100%', ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
2628
+ height = input('1rem', ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
2629
+ animated = input(true, { ...(ngDevMode ? { debugName: "animated" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2630
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2631
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.21", type: NsSkeletonComponent, isStandalone: true, selector: "ns-skeleton", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, animated: { classPropertyName: "animated", publicName: "animated", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, properties: { "class.ns-skeleton": "true", "class.ns-skeleton--animated": "animated()", "style.inline-size": "width()", "style.block-size": "height()" } }, ngImport: i0, template: '', isInline: true, styles: [":host{display:block;overflow:hidden;border-radius:var(--ns-component-skeleton-radius);background:var(--ns-component-skeleton-background)}:host(.ns-skeleton--animated){background:linear-gradient(90deg,var(--ns-component-skeleton-background) 25%,var(--ns-component-skeleton-highlight) 50%,var(--ns-component-skeleton-background) 75%);background-size:200% 100%;animation:ns-skeleton-shimmer var(--ns-component-skeleton-duration) linear infinite}@keyframes ns-skeleton-shimmer{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){:host(.ns-skeleton--animated){animation:none}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2632
+ }
2633
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsSkeletonComponent, decorators: [{
2634
+ type: Component,
2635
+ args: [{ selector: 'ns-skeleton', standalone: true, template: '', host: {
2636
+ 'aria-hidden': 'true',
2637
+ '[class.ns-skeleton]': 'true',
2638
+ '[class.ns-skeleton--animated]': 'animated()',
2639
+ '[style.inline-size]': 'width()',
2640
+ '[style.block-size]': 'height()'
2641
+ }, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;overflow:hidden;border-radius:var(--ns-component-skeleton-radius);background:var(--ns-component-skeleton-background)}:host(.ns-skeleton--animated){background:linear-gradient(90deg,var(--ns-component-skeleton-background) 25%,var(--ns-component-skeleton-highlight) 50%,var(--ns-component-skeleton-background) 75%);background-size:200% 100%;animation:ns-skeleton-shimmer var(--ns-component-skeleton-duration) linear infinite}@keyframes ns-skeleton-shimmer{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){:host(.ns-skeleton--animated){animation:none}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
2642
+ }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], animated: [{ type: i0.Input, args: [{ isSignal: true, alias: "animated", required: false }] }] } });
2643
+
2644
+ function normalizeNsDropdownLabel(value) {
2645
+ return value
2646
+ .toLocaleLowerCase()
2647
+ .normalize('NFD')
2648
+ .replace(/\p{Diacritic}/gu, '');
2649
+ }
2650
+ class NsDropdownComponent extends NsValueAccessor {
2651
+ collection = input([], ...(ngDevMode ? [{ debugName: "collection" }] : /* istanbul ignore next */ []));
2652
+ contentItems = contentChildren(NsDropdownItemDirective, ...(ngDevMode ? [{ debugName: "contentItems" }] : /* istanbul ignore next */ []));
2653
+ selectionMode = input('single', ...(ngDevMode ? [{ debugName: "selectionMode" }] : /* istanbul ignore next */ []));
2654
+ loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2655
+ searchable = input(true, { ...(ngDevMode ? { debugName: "searchable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
2656
+ searchPlaceholder = input('Search', ...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : /* istanbul ignore next */ []));
2657
+ emptyText = input('No results', ...(ngDevMode ? [{ debugName: "emptyText" }] : /* istanbul ignore next */ []));
2658
+ placement = input('bottom-start', ...(ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []));
2659
+ open = model(false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
2660
+ opened = output();
2661
+ closed = output();
2662
+ trigger;
2663
+ menu;
2664
+ searchInput;
2665
+ listbox;
2666
+ overlay = inject(NsOverlayService);
2667
+ destroyRef = inject(DestroyRef);
2668
+ typeahead = new NsTypeaheadController();
2669
+ overlayRef;
2670
+ destroyed = false;
2671
+ query = signal('', ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
2672
+ activeIndex = signal(-1, ...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
2673
+ listboxId = `${this.id}-listbox`;
2674
+ searchId = `${this.id}-search`;
2675
+ skeletonRows = [0, 1, 2, 3];
2676
+ items = computed(() => {
2677
+ const projected = this.contentItems();
2678
+ if (projected.length) {
2679
+ return projected.map((item) => ({
2680
+ key: item.key(),
2681
+ label: item.label(),
2682
+ disabled: item.disabled()
2683
+ }));
2684
+ }
2685
+ return this.collection().map((item) => ({
2686
+ key: item.key,
2687
+ label: item.label,
2688
+ disabled: item.disabled ?? false
2689
+ }));
2690
+ }, ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
2691
+ visibleItems = computed(() => {
2692
+ const normalized = normalizeNsDropdownLabel(this.query());
2693
+ const items = this.items();
2694
+ if (!normalized) {
2695
+ return items;
2696
+ }
2697
+ return items.filter((item) => normalizeNsDropdownLabel(item.label).includes(normalized));
2698
+ }, ...(ngDevMode ? [{ debugName: "visibleItems" }] : /* istanbul ignore next */ []));
2699
+ selectedKeys = computed(() => {
2700
+ const value = this.value();
2701
+ if (value === null || value === undefined) {
2702
+ return new Set();
2703
+ }
2704
+ return new Set(Array.isArray(value) ? value : [value]);
2705
+ }, ...(ngDevMode ? [{ debugName: "selectedKeys" }] : /* istanbul ignore next */ []));
2706
+ selectedLabel = computed(() => {
2707
+ const keys = this.selectedKeys();
2708
+ if (!keys.size) {
2709
+ return '';
2710
+ }
2711
+ return this.items()
2712
+ .filter((item) => keys.has(item.key))
2713
+ .map((item) => item.label)
2714
+ .join(', ');
2715
+ }, ...(ngDevMode ? [{ debugName: "selectedLabel" }] : /* istanbul ignore next */ []));
2716
+ activeId = computed(() => {
2717
+ const item = this.visibleItems()[this.activeIndex()];
2718
+ return item ? `${this.listboxId}-${String(item.key)}` : undefined;
2719
+ }, ...(ngDevMode ? [{ debugName: "activeId" }] : /* istanbul ignore next */ []));
2720
+ constructor() {
2721
+ super();
2722
+ this.destroyRef.onDestroy(() => {
2723
+ this.destroyed = true;
2724
+ this.overlayRef?.close('programmatic');
2725
+ });
2726
+ }
2727
+ toggle() {
2728
+ this.open() ? this.close() : this.show();
2729
+ }
2730
+ select(key) {
2731
+ const item = this.items().find((candidate) => candidate.key === key);
2732
+ if (!item || item.disabled || this.selectionMode() === 'none') {
2733
+ return;
2734
+ }
2735
+ if (this.selectionMode() === 'multiple') {
2736
+ const current = new Set(this.selectedKeys());
2737
+ current.has(key) ? current.delete(key) : current.add(key);
2738
+ this.setValue([...current]);
2739
+ this.onTouched();
2740
+ }
2741
+ else {
2742
+ this.setValue(key);
2743
+ this.onTouched();
2744
+ this.close();
2745
+ }
2746
+ }
2747
+ onNativeChange(event) {
2748
+ const select = event.target;
2749
+ const items = this.items();
2750
+ if (this.selectionMode() === 'multiple') {
2751
+ const keys = Array.from(select.selectedOptions)
2752
+ .map((option) => items.find((item) => String(item.key) === option.value)?.key)
2753
+ .filter((key) => key !== undefined);
2754
+ this.setValue(keys);
2755
+ this.onTouched();
2756
+ return;
2757
+ }
2758
+ const item = items.find((candidate) => String(candidate.key) === select.value);
2759
+ if (item) {
2760
+ this.select(item.key);
2761
+ }
2762
+ }
2763
+ onSearchInput(event) {
2764
+ const value = event.target.value;
2765
+ this.query.set(value);
2766
+ this.activeIndex.set(this.visibleItems().length ? 0 : -1);
2767
+ }
2768
+ onTriggerKeydown(event) {
2769
+ if (this.disabled()) {
2770
+ return;
2771
+ }
2772
+ if (event.key === 'Escape' && this.open()) {
2773
+ event.preventDefault();
2774
+ this.close();
2775
+ return;
2776
+ }
2777
+ if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {
2778
+ event.preventDefault();
2779
+ if (!this.open()) {
2780
+ this.show();
2781
+ }
2782
+ }
2783
+ }
2784
+ onSearchKeydown(event) {
2785
+ const items = this.visibleItems();
2786
+ if (event.key === 'Escape') {
2787
+ event.preventDefault();
2788
+ this.close();
2789
+ return;
2790
+ }
2791
+ if (event.key === 'Enter') {
2792
+ event.preventDefault();
2793
+ const active = items[this.activeIndex()];
2794
+ if (active) {
2795
+ this.select(active.key);
2796
+ }
2797
+ return;
2798
+ }
2799
+ if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {
2800
+ const next = getNsNextNavigableIndex(items.map((item) => ({ key: item.key, disabled: item.disabled })), this.activeIndex(), event.key);
2801
+ if (next >= 0) {
2802
+ event.preventDefault();
2803
+ this.activeIndex.set(next);
2804
+ }
2805
+ }
2806
+ }
2807
+ onListboxKeydown(event) {
2808
+ if (this.searchable()) {
2809
+ return;
2810
+ }
2811
+ const items = this.visibleItems();
2812
+ if (event.key === 'Escape') {
2813
+ event.preventDefault();
2814
+ this.close();
2815
+ return;
2816
+ }
2817
+ if (event.key === 'Enter' || event.key === ' ') {
2818
+ event.preventDefault();
2819
+ const active = items[this.activeIndex()];
2820
+ if (active) {
2821
+ this.select(active.key);
2822
+ }
2823
+ return;
2824
+ }
2825
+ let next = -1;
2826
+ if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {
2827
+ next = getNsNextNavigableIndex(items.map((item) => ({ key: item.key, disabled: item.disabled })), this.activeIndex(), event.key);
2828
+ }
2829
+ else {
2830
+ next = this.typeahead.find(items.map((item) => ({ label: item.label, disabled: item.disabled })), event.key, this.activeIndex());
2831
+ }
2832
+ if (next >= 0) {
2833
+ event.preventDefault();
2834
+ this.activeIndex.set(next);
2835
+ }
2836
+ }
2837
+ show() {
2838
+ if (this.disabled() || this.open() || !this.menu || !this.trigger) {
2839
+ return;
2840
+ }
2841
+ this.open.set(true);
2842
+ this.query.set('');
2843
+ this.activeIndex.set(-1);
2844
+ this.overlayRef = this.overlay.open({
2845
+ origin: this.trigger.nativeElement,
2846
+ placement: this.placement(),
2847
+ matchOriginWidth: true,
2848
+ restoreFocus: true
2849
+ });
2850
+ this.overlayRef.attach(this.menu.nativeElement);
2851
+ this.overlayRef.onClose(() => {
2852
+ const wasDestroyed = this.destroyed;
2853
+ this.overlayRef = undefined;
2854
+ if (!wasDestroyed) {
2855
+ this.open.set(false);
2856
+ this.query.set('');
2857
+ this.closed.emit();
2858
+ }
2859
+ });
2860
+ this.opened.emit();
2861
+ queueMicrotask(() => {
2862
+ if (this.searchable()) {
2863
+ this.searchInput?.nativeElement.focus();
2864
+ }
2865
+ else {
2866
+ this.listbox?.nativeElement.focus();
2867
+ }
2868
+ });
2869
+ }
2870
+ close() {
2871
+ this.overlayRef?.close();
2872
+ }
2873
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2874
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.21", type: NsDropdownComponent, isStandalone: true, selector: "ns-dropdown", inputs: { collection: { classPropertyName: "collection", publicName: "collection", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", opened: "opened", closed: "closed" }, host: { properties: { "class.ns-dropdown": "true", "class.ns-dropdown--open": "open()", "class.ns-dropdown--disabled": "disabled()", "class.ns-dropdown--invalid": "invalid()", "attr.data-state": "open() ? 'open' : 'closed'" } }, providers: [
2875
+ {
2876
+ provide: NG_VALUE_ACCESSOR,
2877
+ useExisting: NsDropdownComponent,
2878
+ multi: true
2879
+ }
2880
+ ], queries: [{ propertyName: "contentItems", predicate: NsDropdownItemDirective, isSignal: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "listbox", first: true, predicate: ["listbox"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (label()) {\n <label class=\"ns-dropdown__label\" [attr.for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n}\n<button\n #trigger\n type=\"button\"\n class=\"ns-dropdown__trigger\"\n role=\"combobox\"\n [id]=\"controlId()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"listboxId\"\n aria-haspopup=\"listbox\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (blur)=\"onTouched()\"\n>\n <span\n class=\"ns-dropdown__trigger-value\"\n [class.ns-dropdown__trigger-value--placeholder]=\"!selectedLabel()\"\n >{{ selectedLabel() || placeholder() }}</span\n >\n <ns-icon\n class=\"ns-dropdown__trigger-icon\"\n name=\"chevron-down\"\n size=\"18\"\n aria-hidden=\"true\"\n />\n</button>\n<select\n class=\"ns-dropdown__native-control\"\n [attr.name]=\"name()\"\n [multiple]=\"selectionMode() === 'multiple'\"\n [disabled]=\"disabled()\"\n (change)=\"onNativeChange($event)\"\n (blur)=\"onTouched()\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n @for (item of items(); track item.key) {\n <option\n [value]=\"item.key\"\n [selected]=\"selectedKeys().has(item.key)\"\n [disabled]=\"item.disabled\"\n >\n {{ item.label }}\n </option>\n }\n</select>\n<div #menu class=\"ns-dropdown__menu\" role=\"presentation\">\n @if (searchable()) {\n <div class=\"ns-dropdown__search\">\n <input\n #searchInput\n class=\"ns-dropdown__search-input\"\n type=\"text\"\n [id]=\"searchId\"\n [attr.placeholder]=\"searchPlaceholder()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeId()\"\n [value]=\"query()\"\n autocomplete=\"off\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n />\n <ns-icon\n class=\"ns-dropdown__search-icon\"\n name=\"search\"\n size=\"16\"\n aria-hidden=\"true\"\n />\n </div>\n }\n <div\n #listbox\n class=\"ns-dropdown__listbox\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-multiselectable]=\"selectionMode() === 'multiple'\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.tabindex]=\"searchable() ? null : 0\"\n (keydown)=\"onListboxKeydown($event)\"\n >\n @if (loading()) {\n @for (row of skeletonRows; track row) {\n <div class=\"ns-dropdown__skeleton-row\">\n <ns-skeleton />\n </div>\n }\n } @else if (visibleItems().length === 0) {\n <div class=\"ns-dropdown__empty\" role=\"status\">{{ emptyText() }}</div>\n } @else {\n @for (item of visibleItems(); track item.key; let index = $index) {\n <div\n class=\"ns-dropdown__option\"\n role=\"option\"\n [id]=\"listboxId + '-' + item.key\"\n [class.ns-dropdown__option--selected]=\"selectedKeys().has(item.key)\"\n [class.ns-dropdown__option--active]=\"index === activeIndex()\"\n [class.ns-dropdown__option--disabled]=\"item.disabled\"\n [attr.aria-selected]=\"selectedKeys().has(item.key)\"\n [attr.aria-disabled]=\"item.disabled\"\n (click)=\"select(item.key)\"\n >\n {{ item.label }}\n </div>\n }\n }\n </div>\n</div>\n@if (description()) {\n <p class=\"ns-dropdown__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n}\n@if (invalid() && errorMessage()) {\n <p class=\"ns-dropdown__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n}\n", styles: ["@layer properties;:host{display:block;width:100%}.ns-dropdown__label{margin-bottom:calc(var(--ns-primitive-space-1) * 2);display:block;--tw-leading: calc(var(--ns-primitive-space-1) * 5);line-height:calc(var(--ns-primitive-space-1) * 5);color:var(--ns-component-dropdown-label-color);font-size:var(--ns-component-dropdown-label-size);font-weight:var(--ns-component-dropdown-label-weight)}.ns-dropdown__trigger{display:flex;width:100%;cursor:pointer;align-items:center;justify-content:space-between;border-style:var(--tw-border-style);border-width:1px;text-align:start;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);box-sizing:border-box;min-height:var(--ns-component-dropdown-trigger-min-height);padding:var(--ns-component-dropdown-trigger-padding-block) var(--ns-component-dropdown-trigger-padding-inline);gap:var(--ns-component-dropdown-trigger-gap);border:var(--ns-component-dropdown-trigger-border-width) solid var(--ns-component-dropdown-trigger-border-color);border-radius:var(--ns-component-dropdown-trigger-radius);background:var(--ns-component-dropdown-trigger-background);color:var(--ns-component-dropdown-trigger-color);transition-duration:var(--ns-component-dropdown-trigger-duration);transition-timing-function:var(--ns-component-dropdown-trigger-easing)}.ns-dropdown__trigger:hover:not(:disabled){border-color:var(--ns-component-dropdown-trigger-border-hover-color)}.ns-dropdown__trigger:focus-visible{outline:none;border-color:var(--ns-component-dropdown-trigger-border-focus-color);box-shadow:var(--ns-component-dropdown-trigger-focus-shadow)}.ns-dropdown__trigger:disabled{cursor:not-allowed;background:var(--ns-component-dropdown-trigger-disabled-background);color:var(--ns-component-dropdown-trigger-disabled-color)}:host(.ns-dropdown--invalid) .ns-dropdown__trigger{border-color:var(--ns-component-dropdown-trigger-invalid-border-color)}.ns-dropdown__trigger-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ns-dropdown__trigger-value--placeholder{color:var(--ns-component-dropdown-trigger-placeholder-color)}.ns-dropdown__trigger-icon{flex-shrink:0;transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);color:var(--ns-component-dropdown-trigger-icon-color);transition-duration:var(--ns-component-dropdown-trigger-duration);transition-timing-function:var(--ns-component-dropdown-trigger-easing)}:host(.ns-dropdown--open) .ns-dropdown__trigger-icon{rotate:180deg}.ns-dropdown__native-control{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.ns-dropdown__menu{display:flex;flex-direction:column;overflow:hidden;max-height:var(--ns-component-dropdown-menu-max-height);padding:var(--ns-component-dropdown-menu-padding);gap:var(--ns-component-dropdown-menu-gap);border:var(--ns-component-dropdown-menu-border-width) solid var(--ns-component-dropdown-menu-border-color);border-radius:var(--ns-component-dropdown-menu-radius);background:var(--ns-component-dropdown-menu-background);color:var(--ns-component-dropdown-menu-color);box-shadow:var(--ns-component-dropdown-menu-shadow);animation:ns-dropdown-enter var(--ns-component-dropdown-menu-enter-duration) var(--ns-component-dropdown-menu-enter-easing)}:host.ns-dropdown:not(.ns-dropdown--open) .ns-dropdown__menu{display:none}.ns-dropdown__search{position:relative;display:flex;align-items:center}.ns-dropdown__search-input{width:100%;border-style:var(--tw-border-style);border-width:1px;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);--tw-outline-style: none;outline-style:none;box-sizing:border-box;min-height:var(--ns-component-dropdown-search-min-height);padding:var(--ns-component-dropdown-search-padding-block) var(--ns-component-dropdown-search-padding-inline);border:var(--ns-component-dropdown-search-border-width) solid var(--ns-component-dropdown-search-border-color);border-radius:var(--ns-component-dropdown-search-radius);background:var(--ns-component-dropdown-search-background);color:var(--ns-component-dropdown-search-color);font:inherit}.ns-dropdown__search-input::placeholder{color:var(--ns-component-dropdown-search-placeholder-color)}.ns-dropdown__search-input:focus-visible{border-color:var(--ns-component-dropdown-search-border-focus-color);box-shadow:var(--ns-component-dropdown-search-focus-shadow)}.ns-dropdown__search-icon{pointer-events:none;position:absolute;inset-inline-end:var(--ns-component-dropdown-search-padding-inline);color:var(--ns-component-dropdown-search-icon-color)}.ns-dropdown__listbox{display:flex;flex-direction:column;overflow-y:auto;--tw-outline-style: none;outline-style:none}.ns-dropdown__option{display:block;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);padding:var(--ns-component-dropdown-option-padding-block) var(--ns-component-dropdown-option-padding-inline);border-radius:var(--ns-component-dropdown-option-radius)}.ns-dropdown__option:hover:not(.ns-dropdown__option--disabled){background:var(--ns-component-dropdown-option-background-hover)}.ns-dropdown__option--active{background:var(--ns-component-dropdown-option-active-background)}.ns-dropdown__option--selected{background:var(--ns-component-dropdown-option-selected-background);color:var(--ns-component-dropdown-option-selected-color);font-weight:var(--ns-component-dropdown-option-selected-weight)}.ns-dropdown__option--disabled{cursor:not-allowed;opacity:50%}.ns-dropdown__skeleton-row{padding:var(--ns-component-dropdown-option-padding-block) var(--ns-component-dropdown-option-padding-inline)}.ns-dropdown__empty{text-align:center;padding:var(--ns-component-dropdown-empty-padding);color:var(--ns-component-dropdown-empty-color);font-size:var(--ns-component-dropdown-empty-size)}.ns-dropdown__description,.ns-dropdown__error{margin-top:calc(var(--ns-primitive-space-1) * 2);font-size:var(--ns-semantic-common-text-xs);--tw-leading: calc(var(--ns-primitive-space-1) * 4);line-height:calc(var(--ns-primitive-space-1) * 4)}.ns-dropdown__description{color:var(--ns-component-dropdown-description-color)}.ns-dropdown__error{color:var(--ns-component-dropdown-error-color)}@media(prefers-reduced-motion:reduce){.ns-dropdown__trigger-icon{transition:none}.ns-dropdown__menu{animation:none}}@keyframes ns-dropdown-enter{0%{opacity:0;transform:scale(.98) translateY(calc(var(--ns-component-dropdown-menu-padding) * -1))}to{opacity:1;transform:scale(1) translateY(0)}}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: NsIconsComponent, selector: "ns-icon", inputs: ["name", "color", "size", "strokeWidth", "viewBox"] }, { kind: "component", type: NsSkeletonComponent, selector: "ns-skeleton", inputs: ["width", "height", "animated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2881
+ }
2882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsDropdownComponent, decorators: [{
2883
+ type: Component,
2884
+ args: [{ selector: 'ns-dropdown', standalone: true, imports: [NsIconsComponent, NsSkeletonComponent], host: {
2885
+ '[class.ns-dropdown]': 'true',
2886
+ '[class.ns-dropdown--open]': 'open()',
2887
+ '[class.ns-dropdown--disabled]': 'disabled()',
2888
+ '[class.ns-dropdown--invalid]': 'invalid()',
2889
+ '[attr.data-state]': "open() ? 'open' : 'closed'"
2890
+ }, providers: [
2891
+ {
2892
+ provide: NG_VALUE_ACCESSOR,
2893
+ useExisting: NsDropdownComponent,
2894
+ multi: true
2895
+ }
2896
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (label()) {\n <label class=\"ns-dropdown__label\" [attr.for]=\"controlId()\"\n >{{ label() }}\n @if (required()) {\n <span aria-hidden=\"true\"> *</span>\n }\n </label>\n}\n<button\n #trigger\n type=\"button\"\n class=\"ns-dropdown__trigger\"\n role=\"combobox\"\n [id]=\"controlId()\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"listboxId\"\n aria-haspopup=\"listbox\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-required]=\"required() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-describedby]=\"describedBy()\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n (keydown)=\"onTriggerKeydown($event)\"\n (blur)=\"onTouched()\"\n>\n <span\n class=\"ns-dropdown__trigger-value\"\n [class.ns-dropdown__trigger-value--placeholder]=\"!selectedLabel()\"\n >{{ selectedLabel() || placeholder() }}</span\n >\n <ns-icon\n class=\"ns-dropdown__trigger-icon\"\n name=\"chevron-down\"\n size=\"18\"\n aria-hidden=\"true\"\n />\n</button>\n<select\n class=\"ns-dropdown__native-control\"\n [attr.name]=\"name()\"\n [multiple]=\"selectionMode() === 'multiple'\"\n [disabled]=\"disabled()\"\n (change)=\"onNativeChange($event)\"\n (blur)=\"onTouched()\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n @for (item of items(); track item.key) {\n <option\n [value]=\"item.key\"\n [selected]=\"selectedKeys().has(item.key)\"\n [disabled]=\"item.disabled\"\n >\n {{ item.label }}\n </option>\n }\n</select>\n<div #menu class=\"ns-dropdown__menu\" role=\"presentation\">\n @if (searchable()) {\n <div class=\"ns-dropdown__search\">\n <input\n #searchInput\n class=\"ns-dropdown__search-input\"\n type=\"text\"\n [id]=\"searchId\"\n [attr.placeholder]=\"searchPlaceholder()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-activedescendant]=\"activeId()\"\n [value]=\"query()\"\n autocomplete=\"off\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onSearchKeydown($event)\"\n />\n <ns-icon\n class=\"ns-dropdown__search-icon\"\n name=\"search\"\n size=\"16\"\n aria-hidden=\"true\"\n />\n </div>\n }\n <div\n #listbox\n class=\"ns-dropdown__listbox\"\n role=\"listbox\"\n [id]=\"listboxId\"\n [attr.aria-multiselectable]=\"selectionMode() === 'multiple'\"\n [attr.aria-busy]=\"loading() ? 'true' : null\"\n [attr.tabindex]=\"searchable() ? null : 0\"\n (keydown)=\"onListboxKeydown($event)\"\n >\n @if (loading()) {\n @for (row of skeletonRows; track row) {\n <div class=\"ns-dropdown__skeleton-row\">\n <ns-skeleton />\n </div>\n }\n } @else if (visibleItems().length === 0) {\n <div class=\"ns-dropdown__empty\" role=\"status\">{{ emptyText() }}</div>\n } @else {\n @for (item of visibleItems(); track item.key; let index = $index) {\n <div\n class=\"ns-dropdown__option\"\n role=\"option\"\n [id]=\"listboxId + '-' + item.key\"\n [class.ns-dropdown__option--selected]=\"selectedKeys().has(item.key)\"\n [class.ns-dropdown__option--active]=\"index === activeIndex()\"\n [class.ns-dropdown__option--disabled]=\"item.disabled\"\n [attr.aria-selected]=\"selectedKeys().has(item.key)\"\n [attr.aria-disabled]=\"item.disabled\"\n (click)=\"select(item.key)\"\n >\n {{ item.label }}\n </div>\n }\n }\n </div>\n</div>\n@if (description()) {\n <p class=\"ns-dropdown__description\" [id]=\"descriptionId\">\n {{ description() }}\n </p>\n}\n@if (invalid() && errorMessage()) {\n <p class=\"ns-dropdown__error\" [id]=\"errorId\" role=\"alert\">\n {{ errorMessage() }}\n </p>\n}\n", styles: ["@layer properties;:host{display:block;width:100%}.ns-dropdown__label{margin-bottom:calc(var(--ns-primitive-space-1) * 2);display:block;--tw-leading: calc(var(--ns-primitive-space-1) * 5);line-height:calc(var(--ns-primitive-space-1) * 5);color:var(--ns-component-dropdown-label-color);font-size:var(--ns-component-dropdown-label-size);font-weight:var(--ns-component-dropdown-label-weight)}.ns-dropdown__trigger{display:flex;width:100%;cursor:pointer;align-items:center;justify-content:space-between;border-style:var(--tw-border-style);border-width:1px;text-align:start;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);box-sizing:border-box;min-height:var(--ns-component-dropdown-trigger-min-height);padding:var(--ns-component-dropdown-trigger-padding-block) var(--ns-component-dropdown-trigger-padding-inline);gap:var(--ns-component-dropdown-trigger-gap);border:var(--ns-component-dropdown-trigger-border-width) solid var(--ns-component-dropdown-trigger-border-color);border-radius:var(--ns-component-dropdown-trigger-radius);background:var(--ns-component-dropdown-trigger-background);color:var(--ns-component-dropdown-trigger-color);transition-duration:var(--ns-component-dropdown-trigger-duration);transition-timing-function:var(--ns-component-dropdown-trigger-easing)}.ns-dropdown__trigger:hover:not(:disabled){border-color:var(--ns-component-dropdown-trigger-border-hover-color)}.ns-dropdown__trigger:focus-visible{outline:none;border-color:var(--ns-component-dropdown-trigger-border-focus-color);box-shadow:var(--ns-component-dropdown-trigger-focus-shadow)}.ns-dropdown__trigger:disabled{cursor:not-allowed;background:var(--ns-component-dropdown-trigger-disabled-background);color:var(--ns-component-dropdown-trigger-disabled-color)}:host(.ns-dropdown--invalid) .ns-dropdown__trigger{border-color:var(--ns-component-dropdown-trigger-invalid-border-color)}.ns-dropdown__trigger-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ns-dropdown__trigger-value--placeholder{color:var(--ns-component-dropdown-trigger-placeholder-color)}.ns-dropdown__trigger-icon{flex-shrink:0;transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);color:var(--ns-component-dropdown-trigger-icon-color);transition-duration:var(--ns-component-dropdown-trigger-duration);transition-timing-function:var(--ns-component-dropdown-trigger-easing)}:host(.ns-dropdown--open) .ns-dropdown__trigger-icon{rotate:180deg}.ns-dropdown__native-control{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.ns-dropdown__menu{display:flex;flex-direction:column;overflow:hidden;max-height:var(--ns-component-dropdown-menu-max-height);padding:var(--ns-component-dropdown-menu-padding);gap:var(--ns-component-dropdown-menu-gap);border:var(--ns-component-dropdown-menu-border-width) solid var(--ns-component-dropdown-menu-border-color);border-radius:var(--ns-component-dropdown-menu-radius);background:var(--ns-component-dropdown-menu-background);color:var(--ns-component-dropdown-menu-color);box-shadow:var(--ns-component-dropdown-menu-shadow);animation:ns-dropdown-enter var(--ns-component-dropdown-menu-enter-duration) var(--ns-component-dropdown-menu-enter-easing)}:host.ns-dropdown:not(.ns-dropdown--open) .ns-dropdown__menu{display:none}.ns-dropdown__search{position:relative;display:flex;align-items:center}.ns-dropdown__search-input{width:100%;border-style:var(--tw-border-style);border-width:1px;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);--tw-outline-style: none;outline-style:none;box-sizing:border-box;min-height:var(--ns-component-dropdown-search-min-height);padding:var(--ns-component-dropdown-search-padding-block) var(--ns-component-dropdown-search-padding-inline);border:var(--ns-component-dropdown-search-border-width) solid var(--ns-component-dropdown-search-border-color);border-radius:var(--ns-component-dropdown-search-radius);background:var(--ns-component-dropdown-search-background);color:var(--ns-component-dropdown-search-color);font:inherit}.ns-dropdown__search-input::placeholder{color:var(--ns-component-dropdown-search-placeholder-color)}.ns-dropdown__search-input:focus-visible{border-color:var(--ns-component-dropdown-search-border-focus-color);box-shadow:var(--ns-component-dropdown-search-focus-shadow)}.ns-dropdown__search-icon{pointer-events:none;position:absolute;inset-inline-end:var(--ns-component-dropdown-search-padding-inline);color:var(--ns-component-dropdown-search-icon-color)}.ns-dropdown__listbox{display:flex;flex-direction:column;overflow-y:auto;--tw-outline-style: none;outline-style:none}.ns-dropdown__option{display:block;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);padding:var(--ns-component-dropdown-option-padding-block) var(--ns-component-dropdown-option-padding-inline);border-radius:var(--ns-component-dropdown-option-radius)}.ns-dropdown__option:hover:not(.ns-dropdown__option--disabled){background:var(--ns-component-dropdown-option-background-hover)}.ns-dropdown__option--active{background:var(--ns-component-dropdown-option-active-background)}.ns-dropdown__option--selected{background:var(--ns-component-dropdown-option-selected-background);color:var(--ns-component-dropdown-option-selected-color);font-weight:var(--ns-component-dropdown-option-selected-weight)}.ns-dropdown__option--disabled{cursor:not-allowed;opacity:50%}.ns-dropdown__skeleton-row{padding:var(--ns-component-dropdown-option-padding-block) var(--ns-component-dropdown-option-padding-inline)}.ns-dropdown__empty{text-align:center;padding:var(--ns-component-dropdown-empty-padding);color:var(--ns-component-dropdown-empty-color);font-size:var(--ns-component-dropdown-empty-size)}.ns-dropdown__description,.ns-dropdown__error{margin-top:calc(var(--ns-primitive-space-1) * 2);font-size:var(--ns-semantic-common-text-xs);--tw-leading: calc(var(--ns-primitive-space-1) * 4);line-height:calc(var(--ns-primitive-space-1) * 4)}.ns-dropdown__description{color:var(--ns-component-dropdown-description-color)}.ns-dropdown__error{color:var(--ns-component-dropdown-error-color)}@media(prefers-reduced-motion:reduce){.ns-dropdown__trigger-icon{transition:none}.ns-dropdown__menu{animation:none}}@keyframes ns-dropdown-enter{0%{opacity:0;transform:scale(.98) translateY(calc(var(--ns-component-dropdown-menu-padding) * -1))}to{opacity:1;transform:scale(1) translateY(0)}}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-leading: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
2897
+ }], ctorParameters: () => [], propDecorators: { collection: [{ type: i0.Input, args: [{ isSignal: true, alias: "collection", required: false }] }], contentItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NsDropdownItemDirective), { isSignal: true }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }], trigger: [{
2898
+ type: ViewChild,
2899
+ args: ['trigger']
2900
+ }], menu: [{
2901
+ type: ViewChild,
2902
+ args: ['menu']
2903
+ }], searchInput: [{
2904
+ type: ViewChild,
2905
+ args: ['searchInput']
2906
+ }], listbox: [{
2907
+ type: ViewChild,
2908
+ args: ['listbox']
2909
+ }] } });
2910
+
2611
2911
  class NsInputComponent extends NsValueAccessor {
2612
2912
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2613
2913
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.21", type: NsInputComponent, isStandalone: true, selector: "ns-input", host: { properties: { "class.ns-input": "true", "class.ns-input--invalid": "invalid()", "class.ns-input--disabled": "disabled()" } }, providers: [
@@ -3471,7 +3771,7 @@ class NsSwitchComponent extends NsValueAccessor {
3471
3771
  <p class="ns-switch__error" [id]="errorId" role="alert">
3472
3772
  {{ errorMessage() }}
3473
3773
  </p>
3474
- }`, isInline: true, styles: ["@layer properties;:host{display:inline-flex;min-height:calc(var(--ns-primitive-space-1) * 10);flex-wrap:wrap;align-items:center}.ns-switch__input{position:relative;margin:0;cursor:pointer;appearance:none;border-style:var(--tw-border-style);border-width:1px;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);--tw-outline-style: none;outline-style:none;width:var(--ns-component-switch-track-width);height:var(--ns-component-switch-track-height);border-color:transparent;border-radius:var(--ns-component-switch-radius);background:var(--ns-component-switch-background)}.ns-switch__input:after{position:absolute;border-radius:calc(infinity * 1px);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);content:\"\";inset-inline-start:calc(var(--ns-component-switch-thumb-inset) - 1px);top:calc(var(--ns-component-switch-thumb-inset) - 1px);width:var(--ns-component-switch-thumb-size);height:var(--ns-component-switch-thumb-size);background:var(--ns-component-switch-thumb-color)}.ns-switch__input:checked{background:var(--ns-component-switch-active-background)}.ns-switch__input:checked:after{transform:translate(var(--ns-component-switch-thumb-translate))}.ns-switch__input:focus-visible{box-shadow:var(--ns-component-switch-focus-shadow)}.ns-switch__input[aria-invalid=true]{border-color:var(--ns-component-switch-invalid-border-color)}.ns-switch__input:disabled{cursor:not-allowed;opacity:50%}.ns-switch__label{margin-inline-start:calc(var(--ns-primitive-space-1) * 3);--tw-leading: calc(var(--ns-primitive-space-1) * 5);line-height:calc(var(--ns-primitive-space-1) * 5);color:var(--ns-component-switch-color)}.ns-switch__description,.ns-switch__error{margin-inline-start:calc(var(--ns-primitive-space-1) * 14);margin-top:calc(var(--ns-primitive-space-1) * 2);flex-basis:100%;font-size:var(--ns-semantic-common-text-xs);--tw-leading: calc(var(--ns-primitive-space-1) * 4);line-height:calc(var(--ns-primitive-space-1) * 4)}.ns-switch__description{color:var(--ns-component-switch-description-color)}.ns-switch__error{color:var(--ns-component-switch-error-color)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3774
+ }`, isInline: true, styles: ["@layer properties;:host{display:inline-flex;min-height:calc(var(--ns-primitive-space-1) * 10);flex-wrap:wrap;align-items:center}.ns-switch__input{position:relative;margin:0;cursor:pointer;appearance:none;border-style:var(--tw-border-style);border-width:1px;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);--tw-outline-style: none;outline-style:none;width:var(--ns-component-switch-track-width);height:var(--ns-component-switch-track-height);border-color:transparent;border-radius:var(--ns-component-switch-radius);background:var(--ns-component-switch-background)}.ns-switch__input:after{position:absolute;border-radius:calc(infinity * 1px);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);content:\"\";inset-inline-start:calc(var(--ns-component-switch-thumb-inset) - var(--ns-component-switch-thumb-border-offset));top:calc(var(--ns-component-switch-thumb-inset) - var(--ns-component-switch-thumb-border-offset));width:var(--ns-component-switch-thumb-size);height:var(--ns-component-switch-thumb-size);background:var(--ns-component-switch-thumb-color)}.ns-switch__input:checked{background:var(--ns-component-switch-active-background)}.ns-switch__input:checked:after{transform:translate(var(--ns-component-switch-thumb-translate))}.ns-switch__input:focus-visible{box-shadow:var(--ns-component-switch-focus-shadow)}.ns-switch__input[aria-invalid=true]{border-color:var(--ns-component-switch-invalid-border-color)}.ns-switch__input:disabled{cursor:not-allowed;opacity:50%}.ns-switch__label{margin-inline-start:calc(var(--ns-primitive-space-1) * 3);--tw-leading: calc(var(--ns-primitive-space-1) * 5);line-height:calc(var(--ns-primitive-space-1) * 5);color:var(--ns-component-switch-color)}.ns-switch__description,.ns-switch__error{margin-inline-start:calc(var(--ns-primitive-space-1) * 14);margin-top:calc(var(--ns-primitive-space-1) * 2);flex-basis:100%;font-size:var(--ns-semantic-common-text-xs);--tw-leading: calc(var(--ns-primitive-space-1) * 4);line-height:calc(var(--ns-primitive-space-1) * 4)}.ns-switch__description{color:var(--ns-component-switch-description-color)}.ns-switch__error{color:var(--ns-component-switch-error-color)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.CheckboxRequiredValidator, selector: "input[type=checkbox][required][formControlName],input[type=checkbox][required][formControl],input[type=checkbox][required][ngModel]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3475
3775
  }
3476
3776
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsSwitchComponent, decorators: [{
3477
3777
  type: Component,
@@ -3510,7 +3810,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
3510
3810
  useExisting: forwardRef(() => NsSwitchComponent),
3511
3811
  multi: true
3512
3812
  }
3513
- ], host: { '[class.ns-switch]': 'true' }, styles: ["@layer properties;:host{display:inline-flex;min-height:calc(var(--ns-primitive-space-1) * 10);flex-wrap:wrap;align-items:center}.ns-switch__input{position:relative;margin:0;cursor:pointer;appearance:none;border-style:var(--tw-border-style);border-width:1px;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);--tw-outline-style: none;outline-style:none;width:var(--ns-component-switch-track-width);height:var(--ns-component-switch-track-height);border-color:transparent;border-radius:var(--ns-component-switch-radius);background:var(--ns-component-switch-background)}.ns-switch__input:after{position:absolute;border-radius:calc(infinity * 1px);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);content:\"\";inset-inline-start:calc(var(--ns-component-switch-thumb-inset) - 1px);top:calc(var(--ns-component-switch-thumb-inset) - 1px);width:var(--ns-component-switch-thumb-size);height:var(--ns-component-switch-thumb-size);background:var(--ns-component-switch-thumb-color)}.ns-switch__input:checked{background:var(--ns-component-switch-active-background)}.ns-switch__input:checked:after{transform:translate(var(--ns-component-switch-thumb-translate))}.ns-switch__input:focus-visible{box-shadow:var(--ns-component-switch-focus-shadow)}.ns-switch__input[aria-invalid=true]{border-color:var(--ns-component-switch-invalid-border-color)}.ns-switch__input:disabled{cursor:not-allowed;opacity:50%}.ns-switch__label{margin-inline-start:calc(var(--ns-primitive-space-1) * 3);--tw-leading: calc(var(--ns-primitive-space-1) * 5);line-height:calc(var(--ns-primitive-space-1) * 5);color:var(--ns-component-switch-color)}.ns-switch__description,.ns-switch__error{margin-inline-start:calc(var(--ns-primitive-space-1) * 14);margin-top:calc(var(--ns-primitive-space-1) * 2);flex-basis:100%;font-size:var(--ns-semantic-common-text-xs);--tw-leading: calc(var(--ns-primitive-space-1) * 4);line-height:calc(var(--ns-primitive-space-1) * 4)}.ns-switch__description{color:var(--ns-component-switch-description-color)}.ns-switch__error{color:var(--ns-component-switch-error-color)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
3813
+ ], host: { '[class.ns-switch]': 'true' }, styles: ["@layer properties;:host{display:inline-flex;min-height:calc(var(--ns-primitive-space-1) * 10);flex-wrap:wrap;align-items:center}.ns-switch__input{position:relative;margin:0;cursor:pointer;appearance:none;border-style:var(--tw-border-style);border-width:1px;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);--tw-outline-style: none;outline-style:none;width:var(--ns-component-switch-track-width);height:var(--ns-component-switch-track-height);border-color:transparent;border-radius:var(--ns-component-switch-radius);background:var(--ns-component-switch-background)}.ns-switch__input:after{position:absolute;border-radius:calc(infinity * 1px);transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);content:\"\";inset-inline-start:calc(var(--ns-component-switch-thumb-inset) - var(--ns-component-switch-thumb-border-offset));top:calc(var(--ns-component-switch-thumb-inset) - var(--ns-component-switch-thumb-border-offset));width:var(--ns-component-switch-thumb-size);height:var(--ns-component-switch-thumb-size);background:var(--ns-component-switch-thumb-color)}.ns-switch__input:checked{background:var(--ns-component-switch-active-background)}.ns-switch__input:checked:after{transform:translate(var(--ns-component-switch-thumb-translate))}.ns-switch__input:focus-visible{box-shadow:var(--ns-component-switch-focus-shadow)}.ns-switch__input[aria-invalid=true]{border-color:var(--ns-component-switch-invalid-border-color)}.ns-switch__input:disabled{cursor:not-allowed;opacity:50%}.ns-switch__label{margin-inline-start:calc(var(--ns-primitive-space-1) * 3);--tw-leading: calc(var(--ns-primitive-space-1) * 5);line-height:calc(var(--ns-primitive-space-1) * 5);color:var(--ns-component-switch-color)}.ns-switch__description,.ns-switch__error{margin-inline-start:calc(var(--ns-primitive-space-1) * 14);margin-top:calc(var(--ns-primitive-space-1) * 2);flex-basis:100%;font-size:var(--ns-semantic-common-text-xs);--tw-leading: calc(var(--ns-primitive-space-1) * 4);line-height:calc(var(--ns-primitive-space-1) * 4)}.ns-switch__description{color:var(--ns-component-switch-description-color)}.ns-switch__error{color:var(--ns-component-switch-error-color)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-leading{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-leading: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
3514
3814
  }] });
3515
3815
 
3516
3816
  class NsTextAreaComponent extends NsValueAccessor {
@@ -4199,275 +4499,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
4199
4499
  args: [{ selector: 'ns-editor-list', imports: [NsEditorLabelPipe], template: "<button\n type=\"button\"\n class=\"ns-editor__button\"\n [attr.aria-label]=\"'bullet_list' | nsEditorLabel\"\n (click)=\"command(commands.INSERT_UNORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M6 8c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 5c0-.552.444-1 1-1 .552 0 1 .444 1 1 0 .552-.444 1-1 1-.552 0-1-.444-1-1zm5-1h6a1 1 0 010 2h-6a1 1 0 010-2z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n\n<button\n type=\"button\"\n class=\"ns-editor__button\"\n [attr.aria-label]=\"'ordered_list' | nsEditorLabel\"\n (click)=\"command(commands.INSERT_ORDERED_LIST)\"\n>\n <svg viewBox=\"0 0 24 24\" role=\"presentation\">\n <path\n d=\"M11 7h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm0 4h6a1 1 0 010 2h-6a1 1 0 010-2zm-5 0h3v1H6v-1zm0 2h3v1H6v-1zm1-9H6V7h2v3H7V8zm-1 3h3v1.333h-.6V13H7.2v-.667H6V11zm0 2h3v1H6v-1zm2 3h2v1H8v-1z\"\n fill-rule=\"evenodd\"\n ></path>\n </svg>\n</button>\n", styles: ["@layer properties;:host{display:inline-flex;align-items:center;gap:var(--ns-component-editor-gap)}.ns-editor__button{position:relative;display:inline-flex;width:calc(var(--ns-primitive-space-1) * 10);height:calc(var(--ns-primitive-space-1) * 10);cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);--tw-outline-style: none;outline-style:none;border-radius:var(--ns-component-editor-radius);color:var(--ns-component-editor-color)}.ns-editor__button:hover,.ns-editor__button:focus-visible{background:var(--ns-component-editor-action-background)}.ns-editor__button:focus-visible{box-shadow:var(--ns-component-editor-action-focus-shadow)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
4200
4500
  }] });
4201
4501
 
4202
- class NsSelectorListItemComponent {
4203
- key = input.required(...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
4204
- label = input.required(...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
4205
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
4206
- element = inject((ElementRef));
4207
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsSelectorListItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4208
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.21", type: NsSelectorListItemComponent, isStandalone: true, selector: "ns-selector-list-item", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "option" }, properties: { "attr.data-ns-selector-key": "key()", "attr.aria-disabled": "disabled()", "class.ns-selector-list-item": "true", "class.ns-selector-list-item--disabled": "disabled()", "attr.data-disabled": "disabled()" } }, ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer properties;:host.ns-selector-list{display:block}.ns-selector-list__label{display:block;margin-bottom:var(--ns-component-selector-list-label-gap);color:var(--ns-component-selector-list-label-color);font-size:var(--ns-component-selector-list-label-size);font-weight:var(--ns-component-selector-list-label-weight)}.ns-selector-list__trigger{display:flex;width:100%;cursor:pointer;align-items:center;justify-content:space-between;border-style:var(--tw-border-style);border-width:1px;text-align:start;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-height:var(--ns-component-selector-list-trigger-min-height);padding:var(--ns-component-selector-list-trigger-padding-block) var(--ns-component-selector-list-trigger-padding-inline);border-color:var(--ns-component-selector-list-trigger-border-color);border-radius:var(--ns-component-selector-list-trigger-radius);background:var(--ns-component-selector-list-trigger-background);color:var(--ns-component-selector-list-trigger-color)}.ns-selector-list__trigger:after{content:\"\";inline-size:var(--ns-component-selector-list-item-padding-block);block-size:var(--ns-component-selector-list-item-padding-block);margin-inline-start:auto;border-right:var(--ns-component-selector-list-trigger-border-width) solid currentColor;border-bottom:var(--ns-component-selector-list-trigger-border-width) solid currentColor;transform:rotate(45deg) translateY(-25%);transition:transform var(--ns-component-selector-list-trigger-duration) var(--ns-component-selector-list-trigger-easing)}.ns-selector-list__trigger:hover:not(:disabled){border-color:var(--ns-component-selector-list-trigger-border-hover-color)}.ns-selector-list__trigger:focus-visible{outline:none;border-color:var(--ns-component-selector-list-trigger-border-focus-color);box-shadow:var(--ns-component-selector-list-trigger-focus-shadow)}:host.ns-selector-list--open .ns-selector-list__trigger:after{transform:rotate(225deg) translateY(-25%)}.ns-selector-list__native-control{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.ns-selector-list__menu{min-width:calc(var(--ns-primitive-space-1) * 48);overflow:auto;padding:var(--ns-primitive-space-1);max-height:var(--ns-component-selector-list-menu-max-height);border:var(--ns-component-selector-list-menu-border-width) solid var(--ns-component-selector-list-menu-border-color);border-radius:var(--ns-component-selector-list-menu-radius);background:var(--ns-component-selector-list-menu-background);color:var(--ns-component-selector-list-menu-color);box-shadow:var(--ns-component-selector-list-menu-shadow)}:host.ns-selector-list:not(.ns-selector-list--open) .ns-selector-list__menu{display:none}:host.ns-selector-list-item{display:block;cursor:pointer;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-block-size:var(--ns-semantic-common-size-control-md);padding:var(--ns-component-selector-list-item-padding-block) var(--ns-component-selector-list-item-padding-inline);border-radius:var(--ns-component-selector-list-item-radius)}:host.ns-selector-list-item:hover,:host.ns-selector-list-item[aria-selected=true]{background:var(--ns-component-selector-list-item-active-background)}:host.ns-selector-list-item[aria-selected=true]{color:var(--ns-component-selector-list-item-selected-color);font-weight:var(--ns-component-selector-list-item-selected-weight)}:host.ns-selector-list-item.ns-selector-list-item--disabled{cursor:not-allowed;opacity:50%}@media(prefers-reduced-motion:reduce){.ns-selector-list__trigger:after{transition:none}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4209
- }
4210
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsSelectorListItemComponent, decorators: [{
4211
- type: Component,
4212
- args: [{ selector: 'ns-selector-list-item', standalone: true, template: '<ng-content />', host: {
4213
- role: 'option',
4214
- '[attr.data-ns-selector-key]': 'key()',
4215
- '[attr.aria-disabled]': 'disabled()',
4216
- '[class.ns-selector-list-item]': 'true',
4217
- '[class.ns-selector-list-item--disabled]': 'disabled()',
4218
- '[attr.data-disabled]': 'disabled()'
4219
- }, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@layer properties;:host.ns-selector-list{display:block}.ns-selector-list__label{display:block;margin-bottom:var(--ns-component-selector-list-label-gap);color:var(--ns-component-selector-list-label-color);font-size:var(--ns-component-selector-list-label-size);font-weight:var(--ns-component-selector-list-label-weight)}.ns-selector-list__trigger{display:flex;width:100%;cursor:pointer;align-items:center;justify-content:space-between;border-style:var(--tw-border-style);border-width:1px;text-align:start;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-height:var(--ns-component-selector-list-trigger-min-height);padding:var(--ns-component-selector-list-trigger-padding-block) var(--ns-component-selector-list-trigger-padding-inline);border-color:var(--ns-component-selector-list-trigger-border-color);border-radius:var(--ns-component-selector-list-trigger-radius);background:var(--ns-component-selector-list-trigger-background);color:var(--ns-component-selector-list-trigger-color)}.ns-selector-list__trigger:after{content:\"\";inline-size:var(--ns-component-selector-list-item-padding-block);block-size:var(--ns-component-selector-list-item-padding-block);margin-inline-start:auto;border-right:var(--ns-component-selector-list-trigger-border-width) solid currentColor;border-bottom:var(--ns-component-selector-list-trigger-border-width) solid currentColor;transform:rotate(45deg) translateY(-25%);transition:transform var(--ns-component-selector-list-trigger-duration) var(--ns-component-selector-list-trigger-easing)}.ns-selector-list__trigger:hover:not(:disabled){border-color:var(--ns-component-selector-list-trigger-border-hover-color)}.ns-selector-list__trigger:focus-visible{outline:none;border-color:var(--ns-component-selector-list-trigger-border-focus-color);box-shadow:var(--ns-component-selector-list-trigger-focus-shadow)}:host.ns-selector-list--open .ns-selector-list__trigger:after{transform:rotate(225deg) translateY(-25%)}.ns-selector-list__native-control{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.ns-selector-list__menu{min-width:calc(var(--ns-primitive-space-1) * 48);overflow:auto;padding:var(--ns-primitive-space-1);max-height:var(--ns-component-selector-list-menu-max-height);border:var(--ns-component-selector-list-menu-border-width) solid var(--ns-component-selector-list-menu-border-color);border-radius:var(--ns-component-selector-list-menu-radius);background:var(--ns-component-selector-list-menu-background);color:var(--ns-component-selector-list-menu-color);box-shadow:var(--ns-component-selector-list-menu-shadow)}:host.ns-selector-list:not(.ns-selector-list--open) .ns-selector-list__menu{display:none}:host.ns-selector-list-item{display:block;cursor:pointer;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-block-size:var(--ns-semantic-common-size-control-md);padding:var(--ns-component-selector-list-item-padding-block) var(--ns-component-selector-list-item-padding-inline);border-radius:var(--ns-component-selector-list-item-radius)}:host.ns-selector-list-item:hover,:host.ns-selector-list-item[aria-selected=true]{background:var(--ns-component-selector-list-item-active-background)}:host.ns-selector-list-item[aria-selected=true]{color:var(--ns-component-selector-list-item-selected-color);font-weight:var(--ns-component-selector-list-item-selected-weight)}:host.ns-selector-list-item.ns-selector-list-item--disabled{cursor:not-allowed;opacity:50%}@media(prefers-reduced-motion:reduce){.ns-selector-list__trigger:after{transition:none}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
4220
- }], propDecorators: { key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
4221
- class NsSelectorListComponent extends NsValueAccessor {
4222
- name = input(undefined, ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
4223
- placement = input('bottom-start', ...(ngDevMode ? [{ debugName: "placement" }] : /* istanbul ignore next */ []));
4224
- items = contentChildren(NsSelectorListItemComponent, ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
4225
- trigger;
4226
- menu;
4227
- overlay = inject(NsOverlayService);
4228
- destroyRef = inject(DestroyRef);
4229
- typeahead = new NsTypeaheadController();
4230
- overlayRef;
4231
- activeIndex = -1;
4232
- destroyed = false;
4233
- open = model(false, ...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
4234
- listboxId = `${this.id}-listbox`;
4235
- constructor() {
4236
- super();
4237
- effect(() => this.syncSelection());
4238
- this.destroyRef.onDestroy(() => {
4239
- this.destroyed = true;
4240
- this.menu?.nativeElement.removeEventListener('click', this.onMenuClickBound);
4241
- this.overlayRef?.close('programmatic');
4242
- });
4243
- }
4244
- get activeId() {
4245
- const item = this.items()[this.activeIndex];
4246
- return item ? `${this.listboxId}-${String(item.key())}` : undefined;
4247
- }
4248
- selectedLabel() {
4249
- return this.items()
4250
- .find((item) => item.key() === this.value())
4251
- ?.label();
4252
- }
4253
- toggle() {
4254
- this.open() ? this.close() : this.show();
4255
- }
4256
- select(key) {
4257
- const item = this.items().find((candidate) => candidate.key() === key);
4258
- if (!item || item.disabled()) {
4259
- return;
4260
- }
4261
- this.setValue(key);
4262
- this.onTouched();
4263
- this.close();
4264
- }
4265
- selectNative(event) {
4266
- const value = event.target.value;
4267
- const item = this.items().find((candidate) => String(candidate.key()) === value);
4268
- if (item) {
4269
- this.select(item.key());
4270
- }
4271
- }
4272
- onKeydown(event) {
4273
- const items = this.items();
4274
- if (event.key === 'Escape' && this.open()) {
4275
- event.preventDefault();
4276
- this.close();
4277
- return;
4278
- }
4279
- if (event.key === 'Enter' || event.key === ' ') {
4280
- event.preventDefault();
4281
- if (this.open() && this.activeIndex >= 0) {
4282
- this.select(items[this.activeIndex].key());
4283
- }
4284
- else {
4285
- this.show();
4286
- }
4287
- return;
4288
- }
4289
- let next = -1;
4290
- if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {
4291
- next = getNsNextNavigableIndex(items.map((item) => ({ key: item.key(), disabled: item.disabled() })), this.activeIndex, event.key);
4292
- }
4293
- else {
4294
- next = this.typeahead.find(items.map((item) => ({
4295
- label: item.label(),
4296
- disabled: item.disabled()
4297
- })), event.key, this.activeIndex);
4298
- }
4299
- if (next >= 0) {
4300
- event.preventDefault();
4301
- this.activeIndex = next;
4302
- if (!this.open()) {
4303
- this.show();
4304
- }
4305
- }
4306
- }
4307
- onMenuClick(event) {
4308
- const target = event.target;
4309
- const item = this.items().find((candidate) => candidate.element.nativeElement.contains(target));
4310
- if (item) {
4311
- this.select(item.key());
4312
- }
4313
- }
4314
- show() {
4315
- if (this.disabled() || this.open() || !this.menu || !this.trigger) {
4316
- return;
4317
- }
4318
- this.open.set(true);
4319
- this.activeIndex = this.selectedIndex();
4320
- this.overlayRef = this.overlay.open({
4321
- origin: this.trigger.nativeElement,
4322
- placement: this.placement(),
4323
- restoreFocus: false
4324
- });
4325
- this.overlayRef.attach(this.menu.nativeElement);
4326
- this.menu.nativeElement.addEventListener('click', this.onMenuClickBound);
4327
- this.overlayRef.onClose(() => {
4328
- if (!this.destroyed) {
4329
- this.open.set(false);
4330
- }
4331
- this.menu?.nativeElement.removeEventListener('click', this.onMenuClickBound);
4332
- this.overlayRef = undefined;
4333
- });
4334
- }
4335
- close() {
4336
- this.overlayRef?.close();
4337
- }
4338
- selectedIndex() {
4339
- return this.items().findIndex((item) => item.key() === this.value());
4340
- }
4341
- syncSelection() {
4342
- const selected = this.value();
4343
- for (const item of this.items()) {
4344
- item.element.nativeElement.id = `${this.listboxId}-${String(item.key())}`;
4345
- item.element.nativeElement.setAttribute('aria-selected', String(item.key() === selected));
4346
- }
4347
- }
4348
- onMenuClickBound = (event) => this.onMenuClick(event);
4349
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsSelectorListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4350
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.21", type: NsSelectorListComponent, isStandalone: true, selector: "ns-selector-list", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { properties: { "class.ns-selector-list": "true", "class.ns-selector-list--open": "open()", "attr.data-state": "open() ? 'open' : 'closed'" } }, providers: [
4351
- {
4352
- provide: NG_VALUE_ACCESSOR,
4353
- useExisting: forwardRef(() => NsSelectorListComponent),
4354
- multi: true
4355
- }
4356
- ], queries: [{ propertyName: "items", predicate: NsSelectorListItemComponent, isSignal: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, read: ElementRef }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: `
4357
- @if (label()) {
4358
- <label class="ns-selector-list__label" [attr.for]="id">{{
4359
- label()
4360
- }}</label>
4361
- }
4362
- <button
4363
- #trigger
4364
- class="ns-selector-list__trigger"
4365
- type="button"
4366
- role="combobox"
4367
- [id]="id"
4368
- [attr.aria-expanded]="open()"
4369
- [attr.aria-controls]="listboxId"
4370
- [attr.aria-activedescendant]="activeId"
4371
- [disabled]="disabled()"
4372
- (click)="toggle()"
4373
- (keydown)="onKeydown($event)"
4374
- >
4375
- {{ selectedLabel() || placeholder() }}
4376
- </button>
4377
- <select
4378
- class="ns-selector-list__native-control"
4379
- [attr.name]="name()"
4380
- [value]="value()"
4381
- [disabled]="disabled()"
4382
- (change)="selectNative($event)"
4383
- (blur)="onTouched()"
4384
- tabindex="-1"
4385
- aria-hidden="true"
4386
- >
4387
- @for (item of items(); track item.key()) {
4388
- <option [value]="item.key()" [disabled]="item.disabled()">
4389
- {{ item.label() }}
4390
- </option>
4391
- }
4392
- </select>
4393
- <div
4394
- #menu
4395
- class="ns-selector-list__menu"
4396
- [id]="listboxId"
4397
- role="listbox"
4398
- [attr.aria-labelledby]="id"
4399
- >
4400
- <ng-content />
4401
- </div>
4402
- `, isInline: true, styles: ["@layer properties;:host.ns-selector-list{display:block}.ns-selector-list__label{display:block;margin-bottom:var(--ns-component-selector-list-label-gap);color:var(--ns-component-selector-list-label-color);font-size:var(--ns-component-selector-list-label-size);font-weight:var(--ns-component-selector-list-label-weight)}.ns-selector-list__trigger{display:flex;width:100%;cursor:pointer;align-items:center;justify-content:space-between;border-style:var(--tw-border-style);border-width:1px;text-align:start;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-height:var(--ns-component-selector-list-trigger-min-height);padding:var(--ns-component-selector-list-trigger-padding-block) var(--ns-component-selector-list-trigger-padding-inline);border-color:var(--ns-component-selector-list-trigger-border-color);border-radius:var(--ns-component-selector-list-trigger-radius);background:var(--ns-component-selector-list-trigger-background);color:var(--ns-component-selector-list-trigger-color)}.ns-selector-list__trigger:after{content:\"\";inline-size:var(--ns-component-selector-list-item-padding-block);block-size:var(--ns-component-selector-list-item-padding-block);margin-inline-start:auto;border-right:var(--ns-component-selector-list-trigger-border-width) solid currentColor;border-bottom:var(--ns-component-selector-list-trigger-border-width) solid currentColor;transform:rotate(45deg) translateY(-25%);transition:transform var(--ns-component-selector-list-trigger-duration) var(--ns-component-selector-list-trigger-easing)}.ns-selector-list__trigger:hover:not(:disabled){border-color:var(--ns-component-selector-list-trigger-border-hover-color)}.ns-selector-list__trigger:focus-visible{outline:none;border-color:var(--ns-component-selector-list-trigger-border-focus-color);box-shadow:var(--ns-component-selector-list-trigger-focus-shadow)}:host.ns-selector-list--open .ns-selector-list__trigger:after{transform:rotate(225deg) translateY(-25%)}.ns-selector-list__native-control{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.ns-selector-list__menu{min-width:calc(var(--ns-primitive-space-1) * 48);overflow:auto;padding:var(--ns-primitive-space-1);max-height:var(--ns-component-selector-list-menu-max-height);border:var(--ns-component-selector-list-menu-border-width) solid var(--ns-component-selector-list-menu-border-color);border-radius:var(--ns-component-selector-list-menu-radius);background:var(--ns-component-selector-list-menu-background);color:var(--ns-component-selector-list-menu-color);box-shadow:var(--ns-component-selector-list-menu-shadow)}:host.ns-selector-list:not(.ns-selector-list--open) .ns-selector-list__menu{display:none}:host.ns-selector-list-item{display:block;cursor:pointer;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-block-size:var(--ns-semantic-common-size-control-md);padding:var(--ns-component-selector-list-item-padding-block) var(--ns-component-selector-list-item-padding-inline);border-radius:var(--ns-component-selector-list-item-radius)}:host.ns-selector-list-item:hover,:host.ns-selector-list-item[aria-selected=true]{background:var(--ns-component-selector-list-item-active-background)}:host.ns-selector-list-item[aria-selected=true]{color:var(--ns-component-selector-list-item-selected-color);font-weight:var(--ns-component-selector-list-item-selected-weight)}:host.ns-selector-list-item.ns-selector-list-item--disabled{cursor:not-allowed;opacity:50%}@media(prefers-reduced-motion:reduce){.ns-selector-list__trigger:after{transition:none}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4403
- }
4404
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsSelectorListComponent, decorators: [{
4405
- type: Component,
4406
- args: [{ selector: 'ns-selector-list', standalone: true, template: `
4407
- @if (label()) {
4408
- <label class="ns-selector-list__label" [attr.for]="id">{{
4409
- label()
4410
- }}</label>
4411
- }
4412
- <button
4413
- #trigger
4414
- class="ns-selector-list__trigger"
4415
- type="button"
4416
- role="combobox"
4417
- [id]="id"
4418
- [attr.aria-expanded]="open()"
4419
- [attr.aria-controls]="listboxId"
4420
- [attr.aria-activedescendant]="activeId"
4421
- [disabled]="disabled()"
4422
- (click)="toggle()"
4423
- (keydown)="onKeydown($event)"
4424
- >
4425
- {{ selectedLabel() || placeholder() }}
4426
- </button>
4427
- <select
4428
- class="ns-selector-list__native-control"
4429
- [attr.name]="name()"
4430
- [value]="value()"
4431
- [disabled]="disabled()"
4432
- (change)="selectNative($event)"
4433
- (blur)="onTouched()"
4434
- tabindex="-1"
4435
- aria-hidden="true"
4436
- >
4437
- @for (item of items(); track item.key()) {
4438
- <option [value]="item.key()" [disabled]="item.disabled()">
4439
- {{ item.label() }}
4440
- </option>
4441
- }
4442
- </select>
4443
- <div
4444
- #menu
4445
- class="ns-selector-list__menu"
4446
- [id]="listboxId"
4447
- role="listbox"
4448
- [attr.aria-labelledby]="id"
4449
- >
4450
- <ng-content />
4451
- </div>
4452
- `, host: {
4453
- '[class.ns-selector-list]': 'true',
4454
- '[class.ns-selector-list--open]': 'open()',
4455
- '[attr.data-state]': "open() ? 'open' : 'closed'"
4456
- }, providers: [
4457
- {
4458
- provide: NG_VALUE_ACCESSOR,
4459
- useExisting: forwardRef(() => NsSelectorListComponent),
4460
- multi: true
4461
- }
4462
- ], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@layer properties;:host.ns-selector-list{display:block}.ns-selector-list__label{display:block;margin-bottom:var(--ns-component-selector-list-label-gap);color:var(--ns-component-selector-list-label-color);font-size:var(--ns-component-selector-list-label-size);font-weight:var(--ns-component-selector-list-label-weight)}.ns-selector-list__trigger{display:flex;width:100%;cursor:pointer;align-items:center;justify-content:space-between;border-style:var(--tw-border-style);border-width:1px;text-align:start;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-height:var(--ns-component-selector-list-trigger-min-height);padding:var(--ns-component-selector-list-trigger-padding-block) var(--ns-component-selector-list-trigger-padding-inline);border-color:var(--ns-component-selector-list-trigger-border-color);border-radius:var(--ns-component-selector-list-trigger-radius);background:var(--ns-component-selector-list-trigger-background);color:var(--ns-component-selector-list-trigger-color)}.ns-selector-list__trigger:after{content:\"\";inline-size:var(--ns-component-selector-list-item-padding-block);block-size:var(--ns-component-selector-list-item-padding-block);margin-inline-start:auto;border-right:var(--ns-component-selector-list-trigger-border-width) solid currentColor;border-bottom:var(--ns-component-selector-list-trigger-border-width) solid currentColor;transform:rotate(45deg) translateY(-25%);transition:transform var(--ns-component-selector-list-trigger-duration) var(--ns-component-selector-list-trigger-easing)}.ns-selector-list__trigger:hover:not(:disabled){border-color:var(--ns-component-selector-list-trigger-border-hover-color)}.ns-selector-list__trigger:focus-visible{outline:none;border-color:var(--ns-component-selector-list-trigger-border-focus-color);box-shadow:var(--ns-component-selector-list-trigger-focus-shadow)}:host.ns-selector-list--open .ns-selector-list__trigger:after{transform:rotate(225deg) translateY(-25%)}.ns-selector-list__native-control{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border-width:0}.ns-selector-list__menu{min-width:calc(var(--ns-primitive-space-1) * 48);overflow:auto;padding:var(--ns-primitive-space-1);max-height:var(--ns-component-selector-list-menu-max-height);border:var(--ns-component-selector-list-menu-border-width) solid var(--ns-component-selector-list-menu-border-color);border-radius:var(--ns-component-selector-list-menu-radius);background:var(--ns-component-selector-list-menu-background);color:var(--ns-component-selector-list-menu-color);box-shadow:var(--ns-component-selector-list-menu-shadow)}:host.ns-selector-list:not(.ns-selector-list--open) .ns-selector-list__menu{display:none}:host.ns-selector-list-item{display:block;cursor:pointer;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-block-size:var(--ns-semantic-common-size-control-md);padding:var(--ns-component-selector-list-item-padding-block) var(--ns-component-selector-list-item-padding-inline);border-radius:var(--ns-component-selector-list-item-radius)}:host.ns-selector-list-item:hover,:host.ns-selector-list-item[aria-selected=true]{background:var(--ns-component-selector-list-item-active-background)}:host.ns-selector-list-item[aria-selected=true]{color:var(--ns-component-selector-list-item-selected-color);font-weight:var(--ns-component-selector-list-item-selected-weight)}:host.ns-selector-list-item.ns-selector-list-item--disabled{cursor:not-allowed;opacity:50%}@media(prefers-reduced-motion:reduce){.ns-selector-list__trigger:after{transition:none}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
4463
- }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NsSelectorListItemComponent), { isSignal: true }] }], trigger: [{
4464
- type: ViewChild,
4465
- args: ['trigger', { read: ElementRef }]
4466
- }], menu: [{
4467
- type: ViewChild,
4468
- args: ['menu', { read: ElementRef }]
4469
- }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }] } });
4470
-
4471
4502
  class NsEditorParagraphComponent {
4472
4503
  editor = inject(NsEditorService);
4473
4504
  id = Guid.create();
@@ -4479,16 +4510,16 @@ class NsEditorParagraphComponent {
4479
4510
  this.editor.formatBlock(heading);
4480
4511
  }
4481
4512
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsEditorParagraphComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4482
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.21", type: NsEditorParagraphComponent, isStandalone: true, selector: "ns-editor-paragraph", ngImport: i0, template: "<ns-selector-list [(ngModel)]=\"value\">\n <ns-selector-list-item [label]=\"'paragraph' | nsEditorLabel\" key=\"p\">{{\n 'paragraph' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h1' | nsEditorLabel\" key=\"h1\">{{\n 'h1' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h2' | nsEditorLabel\" key=\"h2\">{{\n 'h2' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h3' | nsEditorLabel\" key=\"h3\">{{\n 'h3' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h4' | nsEditorLabel\" key=\"h4\">{{\n 'h4' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h5' | nsEditorLabel\" key=\"h5\">{{\n 'h5' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h6' | nsEditorLabel\" key=\"h6\">{{\n 'h6' | nsEditorLabel\n }}</ns-selector-list-item>\n</ns-selector-list>\n", styles: [":host{display:inline-block}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: NsSelectorListComponent, selector: "ns-selector-list", inputs: ["name", "placement", "open"], outputs: ["openChange"] }, { kind: "component", type: NsSelectorListItemComponent, selector: "ns-selector-list-item", inputs: ["key", "label", "disabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: NsEditorLabelPipe, name: "nsEditorLabel" }] });
4513
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.21", type: NsEditorParagraphComponent, isStandalone: true, selector: "ns-editor-paragraph", ngImport: i0, template: "<ns-dropdown [searchable]=\"false\" [(ngModel)]=\"value\">\n <ns-dropdown-item [label]=\"'paragraph' | nsEditorLabel\" key=\"p\" />\n <ns-dropdown-item [label]=\"'h1' | nsEditorLabel\" key=\"h1\" />\n <ns-dropdown-item [label]=\"'h2' | nsEditorLabel\" key=\"h2\" />\n <ns-dropdown-item [label]=\"'h3' | nsEditorLabel\" key=\"h3\" />\n <ns-dropdown-item [label]=\"'h4' | nsEditorLabel\" key=\"h4\" />\n <ns-dropdown-item [label]=\"'h5' | nsEditorLabel\" key=\"h5\" />\n <ns-dropdown-item [label]=\"'h6' | nsEditorLabel\" key=\"h6\" />\n</ns-dropdown>\n", styles: [":host{display:inline-block}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: NsDropdownComponent, selector: "ns-dropdown", inputs: ["collection", "selectionMode", "loading", "searchable", "searchPlaceholder", "emptyText", "placement", "open"], outputs: ["openChange", "opened", "closed"] }, { kind: "directive", type: NsDropdownItemDirective, selector: "ns-dropdown-item", inputs: ["key", "label", "disabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: NsEditorLabelPipe, name: "nsEditorLabel" }] });
4483
4514
  }
4484
4515
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsEditorParagraphComponent, decorators: [{
4485
4516
  type: Component,
4486
4517
  args: [{ selector: 'ns-editor-paragraph', imports: [
4487
- NsSelectorListComponent,
4488
- NsSelectorListItemComponent,
4518
+ NsDropdownComponent,
4519
+ NsDropdownItemDirective,
4489
4520
  FormsModule,
4490
4521
  NsEditorLabelPipe
4491
- ], template: "<ns-selector-list [(ngModel)]=\"value\">\n <ns-selector-list-item [label]=\"'paragraph' | nsEditorLabel\" key=\"p\">{{\n 'paragraph' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h1' | nsEditorLabel\" key=\"h1\">{{\n 'h1' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h2' | nsEditorLabel\" key=\"h2\">{{\n 'h2' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h3' | nsEditorLabel\" key=\"h3\">{{\n 'h3' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h4' | nsEditorLabel\" key=\"h4\">{{\n 'h4' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h5' | nsEditorLabel\" key=\"h5\">{{\n 'h5' | nsEditorLabel\n }}</ns-selector-list-item>\n <ns-selector-list-item [label]=\"'h6' | nsEditorLabel\" key=\"h6\">{{\n 'h6' | nsEditorLabel\n }}</ns-selector-list-item>\n</ns-selector-list>\n", styles: [":host{display:inline-block}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
4522
+ ], template: "<ns-dropdown [searchable]=\"false\" [(ngModel)]=\"value\">\n <ns-dropdown-item [label]=\"'paragraph' | nsEditorLabel\" key=\"p\" />\n <ns-dropdown-item [label]=\"'h1' | nsEditorLabel\" key=\"h1\" />\n <ns-dropdown-item [label]=\"'h2' | nsEditorLabel\" key=\"h2\" />\n <ns-dropdown-item [label]=\"'h3' | nsEditorLabel\" key=\"h3\" />\n <ns-dropdown-item [label]=\"'h4' | nsEditorLabel\" key=\"h4\" />\n <ns-dropdown-item [label]=\"'h5' | nsEditorLabel\" key=\"h5\" />\n <ns-dropdown-item [label]=\"'h6' | nsEditorLabel\" key=\"h6\" />\n</ns-dropdown>\n", styles: [":host{display:inline-block}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
4492
4523
  }] });
4493
4524
 
4494
4525
  class NsEditorToggleCommandComponent {
@@ -4807,130 +4838,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
4807
4838
  }, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:inline}.ns-link__anchor{--tw-outline-style: none;outline-style:none;border-radius:var(--ns-component-link-radius);color:var(--ns-component-link-color);font-weight:var(--ns-component-link-font-weight);text-decoration:var(--ns-component-link-decoration);text-underline-offset:var(--ns-component-link-underline-offset);transition:color var(--ns-component-link-transition-duration),opacity var(--ns-component-link-transition-duration)}.ns-link__anchor:hover:not([aria-disabled=true]){opacity:var(--ns-component-link-hover-opacity)}.ns-link__anchor:active:not([aria-disabled=true]){opacity:var(--ns-component-link-hover-opacity)}.ns-link__anchor:focus-visible{outline:var(--ns-component-link-focus-outline);outline-offset:var(--ns-component-link-focus-offset)}:host(.ns-link--disabled) .ns-link__anchor{cursor:not-allowed;color:var(--ns-component-link-disabled-color)}:host(.ns-link--success) .ns-link__anchor{color:var(--ns-component-link-success-color)}:host(.ns-link--warning) .ns-link__anchor{color:var(--ns-component-link-warning-color)}:host(.ns-link--danger) .ns-link__anchor{color:var(--ns-component-link-danger-color)}@media(prefers-reduced-motion:reduce){.ns-link__anchor{transition:none}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
4808
4839
  }], propDecorators: { href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], rel: [{ type: i0.Input, args: [{ isSignal: true, alias: "rel", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
4809
4840
 
4810
- class NsListBoxOptionComponent {
4811
- key = input.required(...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
4812
- label = input.required(...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
4813
- disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
4814
- selected = signal(false, ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
4815
- active = signal(false, ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
4816
- element = inject((ElementRef));
4817
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsListBoxOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4818
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.21", type: NsListBoxOptionComponent, isStandalone: true, selector: "ns-list-box-option", inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "option" }, properties: { "attr.data-ns-list-box-key": "key()", "attr.aria-disabled": "disabled()", "attr.aria-selected": "selected()", "attr.tabindex": "active() ? 0 : -1", "class.ns-list-box-option": "true", "class.ns-list-box-option--selected": "selected()", "class.ns-list-box-option--disabled": "disabled()", "attr.data-selected": "selected()", "attr.data-disabled": "disabled()" } }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host.ns-list-box{display:block;overflow:auto;padding:var(--ns-primitive-space-1);border:var(--ns-component-list-box-border-width) solid var(--ns-component-list-box-border-color);border-radius:var(--ns-component-list-box-radius);background:var(--ns-component-list-box-background);color:var(--ns-component-list-box-color)}:host.ns-list-box-option{display:block;cursor:pointer;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-block-size:var(--ns-semantic-common-size-control-md);padding:var(--ns-component-list-box-option-padding-block) var(--ns-component-list-box-option-padding-inline);border-radius:var(--ns-component-list-box-radius)}:host.ns-list-box-option:not(:last-child){border-bottom:var(--ns-component-list-box-border-width) solid var(--ns-component-list-box-border-color)}:host.ns-list-box-option:focus-visible{outline:none;box-shadow:var(--ns-component-list-box-option-focus-shadow)}:host.ns-list-box-option:hover:not(.ns-list-box-option--disabled):not(.ns-list-box-option--selected){background:var(--ns-component-list-box-option-background-hover)}:host.ns-list-box-option.ns-list-box-option--selected{background:var(--ns-component-list-box-option-selected-background);color:var(--ns-component-list-box-option-selected-color);font-weight:var(--ns-component-list-box-option-selected-weight)}:host.ns-list-box-option.ns-list-box-option--disabled{cursor:not-allowed;opacity:50%}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4819
- }
4820
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsListBoxOptionComponent, decorators: [{
4821
- type: Component,
4822
- args: [{ selector: 'ns-list-box-option', standalone: true, template: '<ng-content />', host: {
4823
- role: 'option',
4824
- '[attr.data-ns-list-box-key]': 'key()',
4825
- '[attr.aria-disabled]': 'disabled()',
4826
- '[attr.aria-selected]': 'selected()',
4827
- '[attr.tabindex]': 'active() ? 0 : -1',
4828
- '[class.ns-list-box-option]': 'true',
4829
- '[class.ns-list-box-option--selected]': 'selected()',
4830
- '[class.ns-list-box-option--disabled]': 'disabled()',
4831
- '[attr.data-selected]': 'selected()',
4832
- '[attr.data-disabled]': 'disabled()'
4833
- }, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host.ns-list-box{display:block;overflow:auto;padding:var(--ns-primitive-space-1);border:var(--ns-component-list-box-border-width) solid var(--ns-component-list-box-border-color);border-radius:var(--ns-component-list-box-radius);background:var(--ns-component-list-box-background);color:var(--ns-component-list-box-color)}:host.ns-list-box-option{display:block;cursor:pointer;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-block-size:var(--ns-semantic-common-size-control-md);padding:var(--ns-component-list-box-option-padding-block) var(--ns-component-list-box-option-padding-inline);border-radius:var(--ns-component-list-box-radius)}:host.ns-list-box-option:not(:last-child){border-bottom:var(--ns-component-list-box-border-width) solid var(--ns-component-list-box-border-color)}:host.ns-list-box-option:focus-visible{outline:none;box-shadow:var(--ns-component-list-box-option-focus-shadow)}:host.ns-list-box-option:hover:not(.ns-list-box-option--disabled):not(.ns-list-box-option--selected){background:var(--ns-component-list-box-option-background-hover)}:host.ns-list-box-option.ns-list-box-option--selected{background:var(--ns-component-list-box-option-selected-background);color:var(--ns-component-list-box-option-selected-color);font-weight:var(--ns-component-list-box-option-selected-weight)}:host.ns-list-box-option.ns-list-box-option--disabled{cursor:not-allowed;opacity:50%}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
4834
- }], propDecorators: { key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
4835
- class NsListBoxComponent {
4836
- label = input('Options', ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
4837
- selectionMode = input('single', ...(ngDevMode ? [{ debugName: "selectionMode" }] : /* istanbul ignore next */ []));
4838
- selectedKeys = model([], ...(ngDevMode ? [{ debugName: "selectedKeys" }] : /* istanbul ignore next */ []));
4839
- options = contentChildren(NsListBoxOptionComponent, ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
4840
- typeahead = new NsTypeaheadController();
4841
- activeIndex = -1;
4842
- ngAfterContentInit() {
4843
- this.syncState();
4844
- }
4845
- onClick(event) {
4846
- const option = this.optionFor(event.target);
4847
- if (option) {
4848
- this.select(option.key());
4849
- }
4850
- }
4851
- onKeydown(event) {
4852
- const options = this.options();
4853
- if (!options.length) {
4854
- return;
4855
- }
4856
- if (event.key === ' ' || event.key === 'Enter') {
4857
- const option = options[this.activeIndex] ?? options.find((item) => !item.disabled());
4858
- if (option) {
4859
- event.preventDefault();
4860
- this.select(option.key());
4861
- }
4862
- return;
4863
- }
4864
- let next = -1;
4865
- if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {
4866
- next = getNsNextNavigableIndex(options.map((option) => ({
4867
- key: option.key(),
4868
- disabled: option.disabled()
4869
- })), this.activeIndex, event.key);
4870
- }
4871
- else {
4872
- next = this.typeahead.find(options.map((option) => ({
4873
- label: option.label(),
4874
- disabled: option.disabled()
4875
- })), event.key, this.activeIndex);
4876
- }
4877
- if (next >= 0) {
4878
- event.preventDefault();
4879
- this.focus(next);
4880
- }
4881
- }
4882
- select(key) {
4883
- const option = this.options().find((candidate) => candidate.key() === key);
4884
- if (!option || option.disabled() || this.selectionMode() === 'none') {
4885
- return;
4886
- }
4887
- const selected = new Set(this.selectedKeys());
4888
- if (this.selectionMode() === 'multiple') {
4889
- selected.has(key) ? selected.delete(key) : selected.add(key);
4890
- }
4891
- else {
4892
- selected.clear();
4893
- selected.add(key);
4894
- }
4895
- this.selectedKeys.set([...selected]);
4896
- this.syncState();
4897
- }
4898
- optionFor(target) {
4899
- return this.options().find((option) => option.element.nativeElement.contains(target));
4900
- }
4901
- focus(index) {
4902
- this.activeIndex = index;
4903
- for (const [optionIndex, option] of this.options().entries()) {
4904
- option.active.set(optionIndex === index);
4905
- }
4906
- this.options()[index].element.nativeElement.focus();
4907
- }
4908
- syncState() {
4909
- const selected = new Set(this.selectedKeys());
4910
- for (const option of this.options()) {
4911
- option.selected.set(selected.has(option.key()));
4912
- }
4913
- }
4914
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsListBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4915
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.21", type: NsListBoxComponent, isStandalone: true, selector: "ns-list-box", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, selectedKeys: { classPropertyName: "selectedKeys", publicName: "selectedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedKeys: "selectedKeysChange" }, host: { attributes: { "role": "listbox" }, listeners: { "click": "onClick($event)", "keydown": "onKeydown($event)" }, properties: { "attr.aria-label": "label()", "attr.aria-multiselectable": "selectionMode() === 'multiple'", "attr.tabindex": "0", "class.ns-list-box": "true" } }, queries: [{ propertyName: "options", predicate: NsListBoxOptionComponent, isSignal: true }], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host.ns-list-box{display:block;overflow:auto;padding:var(--ns-primitive-space-1);border:var(--ns-component-list-box-border-width) solid var(--ns-component-list-box-border-color);border-radius:var(--ns-component-list-box-radius);background:var(--ns-component-list-box-background);color:var(--ns-component-list-box-color)}:host.ns-list-box-option{display:block;cursor:pointer;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-block-size:var(--ns-semantic-common-size-control-md);padding:var(--ns-component-list-box-option-padding-block) var(--ns-component-list-box-option-padding-inline);border-radius:var(--ns-component-list-box-radius)}:host.ns-list-box-option:not(:last-child){border-bottom:var(--ns-component-list-box-border-width) solid var(--ns-component-list-box-border-color)}:host.ns-list-box-option:focus-visible{outline:none;box-shadow:var(--ns-component-list-box-option-focus-shadow)}:host.ns-list-box-option:hover:not(.ns-list-box-option--disabled):not(.ns-list-box-option--selected){background:var(--ns-component-list-box-option-background-hover)}:host.ns-list-box-option.ns-list-box-option--selected{background:var(--ns-component-list-box-option-selected-background);color:var(--ns-component-list-box-option-selected-color);font-weight:var(--ns-component-list-box-option-selected-weight)}:host.ns-list-box-option.ns-list-box-option--disabled{cursor:not-allowed;opacity:50%}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4916
- }
4917
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsListBoxComponent, decorators: [{
4918
- type: Component,
4919
- args: [{ selector: 'ns-list-box', standalone: true, template: '<ng-content />', host: {
4920
- role: 'listbox',
4921
- '[attr.aria-label]': 'label()',
4922
- '[attr.aria-multiselectable]': "selectionMode() === 'multiple'",
4923
- '[attr.tabindex]': '0',
4924
- '[class.ns-list-box]': 'true'
4925
- }, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host.ns-list-box{display:block;overflow:auto;padding:var(--ns-primitive-space-1);border:var(--ns-component-list-box-border-width) solid var(--ns-component-list-box-border-color);border-radius:var(--ns-component-list-box-radius);background:var(--ns-component-list-box-background);color:var(--ns-component-list-box-color)}:host.ns-list-box-option{display:block;cursor:pointer;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s);min-block-size:var(--ns-semantic-common-size-control-md);padding:var(--ns-component-list-box-option-padding-block) var(--ns-component-list-box-option-padding-inline);border-radius:var(--ns-component-list-box-radius)}:host.ns-list-box-option:not(:last-child){border-bottom:var(--ns-component-list-box-border-width) solid var(--ns-component-list-box-border-color)}:host.ns-list-box-option:focus-visible{outline:none;box-shadow:var(--ns-component-list-box-option-focus-shadow)}:host.ns-list-box-option:hover:not(.ns-list-box-option--disabled):not(.ns-list-box-option--selected){background:var(--ns-component-list-box-option-background-hover)}:host.ns-list-box-option.ns-list-box-option--selected{background:var(--ns-component-list-box-option-selected-background);color:var(--ns-component-list-box-option-selected-color);font-weight:var(--ns-component-list-box-option-selected-weight)}:host.ns-list-box-option.ns-list-box-option--disabled{cursor:not-allowed;opacity:50%}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
4926
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], selectedKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedKeys", required: false }] }, { type: i0.Output, args: ["selectedKeysChange"] }], options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NsListBoxOptionComponent), { isSignal: true }] }], onClick: [{
4927
- type: HostListener,
4928
- args: ['click', ['$event']]
4929
- }], onKeydown: [{
4930
- type: HostListener,
4931
- args: ['keydown', ['$event']]
4932
- }] } });
4933
-
4934
4841
  class NsMeterComponent {
4935
4842
  value = input(0, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: numberAttribute });
4936
4843
  min = input(0, { ...(ngDevMode ? { debugName: "min" } : /* istanbul ignore next */ {}), transform: numberAttribute });
@@ -5704,7 +5611,7 @@ class NsScheduleComponent {
5704
5611
  this.selected.set(new Date(date.year, date.month - 1, date.day));
5705
5612
  }
5706
5613
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsScheduleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5707
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.21", type: NsScheduleComponent, isStandalone: true, selector: "ns-schedule", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, selectedDay: { classPropertyName: "selectedDay", publicName: "selectedDay", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { view: "viewChange", selected: "selectedChange", selectedDay: "selectedDayChange", onClick: "onClick" }, host: { properties: { "class.ns-schedule": "true" } }, ngImport: i0, template: "<div class=\"ns-schedule__tools\">\n <ns-button class=\"ns-schedule__today\" (click)=\"goToday()\">Hoy</ns-button>\n\n <ns-date-picker\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"selectDate($event)\"\n />\n\n <ns-selector-list\n class=\"ns-schedule__view\"\n [ngModel]=\"view()\"\n (ngModelChange)=\"view.set($event)\"\n >\n <ns-selector-list-item label=\"Day\" key=\"day\">Day</ns-selector-list-item>\n <ns-selector-list-item label=\"Work week\" key=\"workweek\"\n >Work week</ns-selector-list-item\n >\n <ns-selector-list-item label=\"Week\" key=\"week\">Week</ns-selector-list-item>\n </ns-selector-list>\n</div>\n\n@switch (view()) {\n @case ('day') {\n <ns-schedule-day\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @case ('week') {\n <ns-schedule-week\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @default {\n <ns-schedule-workweek\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n}\n", styles: ["@layer properties;:host{display:block;width:100%;overflow:hidden;border-style:var(--tw-border-style);border-width:1px;border-color:var(--ns-component-schedule-border-color);border-radius:var(--ns-component-schedule-border-radius);background:var(--ns-component-schedule-surface);color:var(--ns-component-schedule-color);box-shadow:var(--ns-component-schedule-shadow)}.ns-schedule__tools{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:center;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;gap:var(--ns-component-schedule-gap);padding:var(--ns-component-schedule-padding);border-color:var(--ns-component-schedule-divider-color);background:var(--ns-component-schedule-surface-muted)}.ns-schedule__view{grid-column:span 4 / span 4;margin-inline-start:auto}.ns-schedule__header-wrap{position:sticky;top:0;z-index:10;display:grid;background:var(--ns-component-schedule-surface)}.ns-schedule__header{display:flex;flex-direction:column;border-style:var(--tw-border-style);border-width:1px;padding:var(--ns-component-schedule-padding);border-color:var(--ns-component-schedule-border-color);background:var(--ns-component-schedule-surface-muted)}.ns-schedule__header-date{font-size:var(--ns-semantic-common-text-sm);--tw-font-weight: var(--ns-semantic-common-font-weight-semibold);font-weight:var(--ns-semantic-common-font-weight-semibold);color:var(--ns-component-schedule-color)}.ns-schedule__timeline{display:grid}.ns-schedule__timeline-day{position:relative;display:flex;min-height:calc(var(--ns-primitive-space-1) * 24);flex-direction:column;border-style:var(--tw-border-style);border-width:1px;border-top-style:var(--tw-border-style);border-top-width:0px;border-color:var(--ns-component-schedule-border-color);background:var(--ns-component-schedule-surface)}.ns-schedule__timeline-cell{flex:1;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s)}.ns-schedule__timeline-cell:hover:not(:disabled){background:var(--ns-component-schedule-surface-muted)}.ns-schedule__selected{background:var(--ns-component-schedule-selected-background);color:var(--ns-component-schedule-primary)}@media(prefers-reduced-motion:reduce){.ns-schedule__timeline-cell{transition:none}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: NsButtonComponent, selector: "ns-button", inputs: ["type", "variant", "size", "icon", "iconOnly", "ariaLabel", "block", "disabled", "loading", "selected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DayComponent, selector: "ns-schedule-day", inputs: ["schedules", "currentDate"] }, { kind: "component", type: WeekComponent, selector: "ns-schedule-week", inputs: ["schedules", "currentDate"] }, { kind: "component", type: NsWorkweekComponent, selector: "ns-schedule-workweek", inputs: ["schedules", "currentDate"] }, { kind: "component", type: NsDatePickerComponent, selector: "ns-date-picker", inputs: ["minDate", "maxDate", "unavailableDates", "firstDayOfWeek"] }, { kind: "component", type: NsSelectorListComponent, selector: "ns-selector-list", inputs: ["name", "placement", "open"], outputs: ["openChange"] }, { kind: "component", type: NsSelectorListItemComponent, selector: "ns-selector-list-item", inputs: ["key", "label", "disabled"] }], encapsulation: i0.ViewEncapsulation.None });
5614
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.21", type: NsScheduleComponent, isStandalone: true, selector: "ns-schedule", inputs: { view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, selectedDay: { classPropertyName: "selectedDay", publicName: "selectedDay", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { view: "viewChange", selected: "selectedChange", selectedDay: "selectedDayChange", onClick: "onClick" }, host: { properties: { "class.ns-schedule": "true" } }, ngImport: i0, template: "<div class=\"ns-schedule__tools\">\n <ns-button class=\"ns-schedule__today\" (click)=\"goToday()\">Hoy</ns-button>\n\n <ns-date-picker\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"selectDate($event)\"\n />\n\n <ns-dropdown\n class=\"ns-schedule__view\"\n [searchable]=\"false\"\n [ngModel]=\"view()\"\n (ngModelChange)=\"view.set($event)\"\n >\n <ns-dropdown-item label=\"Day\" key=\"day\" />\n <ns-dropdown-item label=\"Work week\" key=\"workweek\" />\n <ns-dropdown-item label=\"Week\" key=\"week\" />\n </ns-dropdown>\n</div>\n\n@switch (view()) {\n @case ('day') {\n <ns-schedule-day\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @case ('week') {\n <ns-schedule-week\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @default {\n <ns-schedule-workweek\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n}\n", styles: ["@layer properties;:host{display:block;width:100%;overflow:hidden;border-style:var(--tw-border-style);border-width:1px;border-color:var(--ns-component-schedule-border-color);border-radius:var(--ns-component-schedule-border-radius);background:var(--ns-component-schedule-surface);color:var(--ns-component-schedule-color);box-shadow:var(--ns-component-schedule-shadow)}.ns-schedule__tools{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:center;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;gap:var(--ns-component-schedule-gap);padding:var(--ns-component-schedule-padding);border-color:var(--ns-component-schedule-divider-color);background:var(--ns-component-schedule-surface-muted)}.ns-schedule__view{grid-column:span 4 / span 4;margin-inline-start:auto}.ns-schedule__header-wrap{position:sticky;top:0;z-index:10;display:grid;background:var(--ns-component-schedule-surface)}.ns-schedule__header{display:flex;flex-direction:column;border-style:var(--tw-border-style);border-width:1px;padding:var(--ns-component-schedule-padding);border-color:var(--ns-component-schedule-border-color);background:var(--ns-component-schedule-surface-muted)}.ns-schedule__header-date{font-size:var(--ns-semantic-common-text-sm);--tw-font-weight: var(--ns-semantic-common-font-weight-semibold);font-weight:var(--ns-semantic-common-font-weight-semibold);color:var(--ns-component-schedule-color)}.ns-schedule__timeline{display:grid}.ns-schedule__timeline-day{position:relative;display:flex;min-height:calc(var(--ns-primitive-space-1) * 24);flex-direction:column;border-style:var(--tw-border-style);border-width:1px;border-top-style:var(--tw-border-style);border-top-width:0px;border-color:var(--ns-component-schedule-border-color);background:var(--ns-component-schedule-surface)}.ns-schedule__timeline-cell{flex:1;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s)}.ns-schedule__timeline-cell:hover:not(:disabled){background:var(--ns-component-schedule-surface-muted)}.ns-schedule__selected{background:var(--ns-component-schedule-selected-background);color:var(--ns-component-schedule-primary)}@media(prefers-reduced-motion:reduce){.ns-schedule__timeline-cell{transition:none}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: NsButtonComponent, selector: "ns-button", inputs: ["type", "variant", "size", "icon", "iconOnly", "ariaLabel", "block", "disabled", "loading", "selected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DayComponent, selector: "ns-schedule-day", inputs: ["schedules", "currentDate"] }, { kind: "component", type: WeekComponent, selector: "ns-schedule-week", inputs: ["schedules", "currentDate"] }, { kind: "component", type: NsWorkweekComponent, selector: "ns-schedule-workweek", inputs: ["schedules", "currentDate"] }, { kind: "component", type: NsDatePickerComponent, selector: "ns-date-picker", inputs: ["minDate", "maxDate", "unavailableDates", "firstDayOfWeek"] }, { kind: "component", type: NsDropdownComponent, selector: "ns-dropdown", inputs: ["collection", "selectionMode", "loading", "searchable", "searchPlaceholder", "emptyText", "placement", "open"], outputs: ["openChange", "opened", "closed"] }, { kind: "directive", type: NsDropdownItemDirective, selector: "ns-dropdown-item", inputs: ["key", "label", "disabled"] }], encapsulation: i0.ViewEncapsulation.None });
5708
5615
  }
5709
5616
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsScheduleComponent, decorators: [{
5710
5617
  type: Component,
@@ -5715,11 +5622,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
5715
5622
  WeekComponent,
5716
5623
  NsWorkweekComponent,
5717
5624
  NsDatePickerComponent,
5718
- NsSelectorListComponent,
5719
- NsSelectorListItemComponent
5625
+ NsDropdownComponent,
5626
+ NsDropdownItemDirective
5720
5627
  ], encapsulation: ViewEncapsulation.None, host: {
5721
5628
  '[class.ns-schedule]': 'true'
5722
- }, template: "<div class=\"ns-schedule__tools\">\n <ns-button class=\"ns-schedule__today\" (click)=\"goToday()\">Hoy</ns-button>\n\n <ns-date-picker\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"selectDate($event)\"\n />\n\n <ns-selector-list\n class=\"ns-schedule__view\"\n [ngModel]=\"view()\"\n (ngModelChange)=\"view.set($event)\"\n >\n <ns-selector-list-item label=\"Day\" key=\"day\">Day</ns-selector-list-item>\n <ns-selector-list-item label=\"Work week\" key=\"workweek\"\n >Work week</ns-selector-list-item\n >\n <ns-selector-list-item label=\"Week\" key=\"week\">Week</ns-selector-list-item>\n </ns-selector-list>\n</div>\n\n@switch (view()) {\n @case ('day') {\n <ns-schedule-day\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @case ('week') {\n <ns-schedule-week\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @default {\n <ns-schedule-workweek\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n}\n", styles: ["@layer properties;:host{display:block;width:100%;overflow:hidden;border-style:var(--tw-border-style);border-width:1px;border-color:var(--ns-component-schedule-border-color);border-radius:var(--ns-component-schedule-border-radius);background:var(--ns-component-schedule-surface);color:var(--ns-component-schedule-color);box-shadow:var(--ns-component-schedule-shadow)}.ns-schedule__tools{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:center;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;gap:var(--ns-component-schedule-gap);padding:var(--ns-component-schedule-padding);border-color:var(--ns-component-schedule-divider-color);background:var(--ns-component-schedule-surface-muted)}.ns-schedule__view{grid-column:span 4 / span 4;margin-inline-start:auto}.ns-schedule__header-wrap{position:sticky;top:0;z-index:10;display:grid;background:var(--ns-component-schedule-surface)}.ns-schedule__header{display:flex;flex-direction:column;border-style:var(--tw-border-style);border-width:1px;padding:var(--ns-component-schedule-padding);border-color:var(--ns-component-schedule-border-color);background:var(--ns-component-schedule-surface-muted)}.ns-schedule__header-date{font-size:var(--ns-semantic-common-text-sm);--tw-font-weight: var(--ns-semantic-common-font-weight-semibold);font-weight:var(--ns-semantic-common-font-weight-semibold);color:var(--ns-component-schedule-color)}.ns-schedule__timeline{display:grid}.ns-schedule__timeline-day{position:relative;display:flex;min-height:calc(var(--ns-primitive-space-1) * 24);flex-direction:column;border-style:var(--tw-border-style);border-width:1px;border-top-style:var(--tw-border-style);border-top-width:0px;border-color:var(--ns-component-schedule-border-color);background:var(--ns-component-schedule-surface)}.ns-schedule__timeline-cell{flex:1;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s)}.ns-schedule__timeline-cell:hover:not(:disabled){background:var(--ns-component-schedule-surface-muted)}.ns-schedule__selected{background:var(--ns-component-schedule-selected-background);color:var(--ns-component-schedule-primary)}@media(prefers-reduced-motion:reduce){.ns-schedule__timeline-cell{transition:none}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
5629
+ }, template: "<div class=\"ns-schedule__tools\">\n <ns-button class=\"ns-schedule__today\" (click)=\"goToday()\">Hoy</ns-button>\n\n <ns-date-picker\n [ngModel]=\"selectedDay()\"\n (ngModelChange)=\"selectDate($event)\"\n />\n\n <ns-dropdown\n class=\"ns-schedule__view\"\n [searchable]=\"false\"\n [ngModel]=\"view()\"\n (ngModelChange)=\"view.set($event)\"\n >\n <ns-dropdown-item label=\"Day\" key=\"day\" />\n <ns-dropdown-item label=\"Work week\" key=\"workweek\" />\n <ns-dropdown-item label=\"Week\" key=\"week\" />\n </ns-dropdown>\n</div>\n\n@switch (view()) {\n @case ('day') {\n <ns-schedule-day\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @case ('week') {\n <ns-schedule-week\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n @default {\n <ns-schedule-workweek\n [currentDate]=\"selected()\"\n [schedules]=\"data()\"\n [style.height.px]=\"height()\"\n />\n }\n}\n", styles: ["@layer properties;:host{display:block;width:100%;overflow:hidden;border-style:var(--tw-border-style);border-width:1px;border-color:var(--ns-component-schedule-border-color);border-radius:var(--ns-component-schedule-border-radius);background:var(--ns-component-schedule-surface);color:var(--ns-component-schedule-color);box-shadow:var(--ns-component-schedule-shadow)}.ns-schedule__tools{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:center;border-bottom-style:var(--tw-border-style);border-bottom-width:1px;gap:var(--ns-component-schedule-gap);padding:var(--ns-component-schedule-padding);border-color:var(--ns-component-schedule-divider-color);background:var(--ns-component-schedule-surface-muted)}.ns-schedule__view{grid-column:span 4 / span 4;margin-inline-start:auto}.ns-schedule__header-wrap{position:sticky;top:0;z-index:10;display:grid;background:var(--ns-component-schedule-surface)}.ns-schedule__header{display:flex;flex-direction:column;border-style:var(--tw-border-style);border-width:1px;padding:var(--ns-component-schedule-padding);border-color:var(--ns-component-schedule-border-color);background:var(--ns-component-schedule-surface-muted)}.ns-schedule__header-date{font-size:var(--ns-semantic-common-text-sm);--tw-font-weight: var(--ns-semantic-common-font-weight-semibold);font-weight:var(--ns-semantic-common-font-weight-semibold);color:var(--ns-component-schedule-color)}.ns-schedule__timeline{display:grid}.ns-schedule__timeline-day{position:relative;display:flex;min-height:calc(var(--ns-primitive-space-1) * 24);flex-direction:column;border-style:var(--tw-border-style);border-width:1px;border-top-style:var(--tw-border-style);border-top-width:0px;border-color:var(--ns-component-schedule-border-color);background:var(--ns-component-schedule-surface)}.ns-schedule__timeline-cell{flex:1;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, ease);transition-duration:var(--tw-duration, 0s)}.ns-schedule__timeline-cell:hover:not(:disabled){background:var(--ns-component-schedule-surface-muted)}.ns-schedule__selected{background:var(--ns-component-schedule-selected-background);color:var(--ns-component-schedule-primary)}@media(prefers-reduced-motion:reduce){.ns-schedule__timeline-cell{transition:none}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
5723
5630
  }], propDecorators: { view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }, { type: i0.Output, args: ["viewChange"] }], selected: [{ type: i0.Input, args: [{ isSignal: true, alias: "selected", required: false }] }, { type: i0.Output, args: ["selectedChange"] }], selectedDay: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedDay", required: false }] }, { type: i0.Output, args: ["selectedDayChange"] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }] } });
5724
5631
 
5725
5632
  class NsSchemaMarkupComponent {
@@ -5746,24 +5653,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
5746
5653
  args: ['innerHTML']
5747
5654
  }] } });
5748
5655
 
5749
- class NsSkeletonComponent {
5750
- width = input('100%', ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
5751
- height = input('1rem', ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
5752
- animated = input(true, { ...(ngDevMode ? { debugName: "animated" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5753
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5754
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.21", type: NsSkeletonComponent, isStandalone: true, selector: "ns-skeleton", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, animated: { classPropertyName: "animated", publicName: "animated", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, properties: { "class.ns-skeleton": "true", "class.ns-skeleton--animated": "animated()", "style.inline-size": "width()", "style.block-size": "height()" } }, ngImport: i0, template: '', isInline: true, styles: [":host{display:block;overflow:hidden;border-radius:var(--ns-component-skeleton-radius);background:var(--ns-component-skeleton-background)}:host(.ns-skeleton--animated){background:linear-gradient(90deg,var(--ns-component-skeleton-background) 25%,var(--ns-component-skeleton-highlight) 50%,var(--ns-component-skeleton-background) 75%);background-size:200% 100%;animation:ns-skeleton-shimmer var(--ns-component-skeleton-duration) linear infinite}@keyframes ns-skeleton-shimmer{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){:host(.ns-skeleton--animated){animation:none}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5755
- }
5756
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImport: i0, type: NsSkeletonComponent, decorators: [{
5757
- type: Component,
5758
- args: [{ selector: 'ns-skeleton', standalone: true, template: '', host: {
5759
- 'aria-hidden': 'true',
5760
- '[class.ns-skeleton]': 'true',
5761
- '[class.ns-skeleton--animated]': 'animated()',
5762
- '[style.inline-size]': 'width()',
5763
- '[style.block-size]': 'height()'
5764
- }, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;overflow:hidden;border-radius:var(--ns-component-skeleton-radius);background:var(--ns-component-skeleton-background)}:host(.ns-skeleton--animated){background:linear-gradient(90deg,var(--ns-component-skeleton-background) 25%,var(--ns-component-skeleton-highlight) 50%,var(--ns-component-skeleton-background) 75%);background-size:200% 100%;animation:ns-skeleton-shimmer var(--ns-component-skeleton-duration) linear infinite}@keyframes ns-skeleton-shimmer{to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){:host(.ns-skeleton--animated){animation:none}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
5765
- }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], animated: [{ type: i0.Input, args: [{ isSignal: true, alias: "animated", required: false }] }] } });
5766
-
5767
5656
  class TemplateDirective {
5768
5657
  name = input(undefined, { ...(ngDevMode ? { debugName: "name" } : /* istanbul ignore next */ {}), alias: 'nsTemplate' });
5769
5658
  styleClass = input(undefined, ...(ngDevMode ? [{ debugName: "styleClass" }] : /* istanbul ignore next */ []));
@@ -5966,7 +5855,7 @@ const Arvisfy = {
5966
5855
  modalXl: '71.25rem',
5967
5856
  modalViewportInset: '2rem',
5968
5857
  popover: '12rem',
5969
- selectorListMenu: '15rem',
5858
+ dropdownMenu: '15rem',
5970
5859
  tooltip: '20rem',
5971
5860
  toastMaxWidth: '25rem',
5972
5861
  toastMinHeight: '3.5rem'
@@ -6073,7 +5962,7 @@ const Arvisfy = {
6073
5962
  modalXl: '{primitive.size.modalXl}',
6074
5963
  modalViewportInset: '{primitive.size.modalViewportInset}',
6075
5964
  popover: '{primitive.size.popover}',
6076
- selectorListMenu: '{primitive.size.selectorListMenu}',
5965
+ dropdownMenu: '{primitive.size.dropdownMenu}',
6077
5966
  tooltip: '{primitive.size.tooltip}',
6078
5967
  toastMaxWidth: '{primitive.size.toastMaxWidth}',
6079
5968
  toastMinHeight: '{primitive.size.toastMinHeight}'
@@ -6633,7 +6522,8 @@ const Arvisfy = {
6633
6522
  trackHeight: '{semantic.size.switchTrackHeight}',
6634
6523
  thumbSize: '{semantic.size.switchThumbSize}',
6635
6524
  thumbInset: '{semantic.size.switchThumbInset}',
6636
- thumbTranslate: '{semantic.size.switchThumbTranslate}'
6525
+ thumbTranslate: '{semantic.size.switchThumbTranslate}',
6526
+ thumbBorderOffset: '{semantic.border.thin}'
6637
6527
  },
6638
6528
  textarea: {
6639
6529
  labelColor: '{semantic.color.text}',
@@ -6907,13 +6797,7 @@ const Arvisfy = {
6907
6797
  valueTransitionDuration: '{semantic.motion.normal}',
6908
6798
  backgroundTransitionDuration: '{semantic.motion.fast}'
6909
6799
  },
6910
- selectorList: {
6911
- menuMaxHeight: '{semantic.size.selectorListMenu}',
6912
- menuBackground: '{semantic.color.surface}',
6913
- menuColor: '{semantic.color.text}',
6914
- itemPaddingBlock: '{semantic.space.sm}',
6915
- itemPaddingInline: '{semantic.space.md}',
6916
- itemActiveBackground: '{semantic.color.surfaceMuted}',
6800
+ dropdown: {
6917
6801
  labelGap: '{semantic.space.sm}',
6918
6802
  labelColor: '{semantic.color.text}',
6919
6803
  labelSize: '{semantic.text.sm}',
@@ -6921,23 +6805,58 @@ const Arvisfy = {
6921
6805
  triggerMinHeight: '{semantic.size.controlMd}',
6922
6806
  triggerPaddingBlock: '{semantic.space.sm}',
6923
6807
  triggerPaddingInline: '{semantic.space.md}',
6808
+ triggerGap: '{semantic.space.sm}',
6809
+ triggerBorderWidth: '{semantic.border.thin}',
6924
6810
  triggerBorderColor: '{semantic.color.border}',
6925
6811
  triggerBorderHoverColor: '{semantic.color.borderStrong}',
6926
6812
  triggerBorderFocusColor: '{semantic.color.focus}',
6927
6813
  triggerRadius: '{semantic.radius.control}',
6928
6814
  triggerBackground: '{semantic.color.surface}',
6929
6815
  triggerColor: '{semantic.color.text}',
6816
+ triggerPlaceholderColor: '{semantic.color.textMuted}',
6930
6817
  triggerFocusShadow: '{semantic.shadow.focus}',
6931
- triggerBorderWidth: '{semantic.border.thin}',
6818
+ triggerDisabledBackground: '{semantic.color.surfaceMuted}',
6819
+ triggerDisabledColor: '{semantic.color.textMuted}',
6820
+ triggerInvalidBorderColor: '{semantic.status.danger}',
6821
+ triggerIconColor: '{semantic.color.textMuted}',
6932
6822
  triggerDuration: '{semantic.motion.normal}',
6933
6823
  triggerEasing: '{semantic.motion.easing}',
6824
+ menuMaxHeight: '{semantic.size.dropdownMenu}',
6825
+ menuPadding: '{semantic.space.md}',
6826
+ menuGap: '{semantic.space.sm}',
6934
6827
  menuBorderWidth: '{semantic.border.thin}',
6935
6828
  menuBorderColor: '{semantic.color.border}',
6936
6829
  menuRadius: '{semantic.radius.overlay}',
6830
+ menuBackground: '{semantic.color.surface}',
6831
+ menuColor: '{semantic.color.text}',
6937
6832
  menuShadow: '{semantic.shadow.overlay}',
6938
- itemRadius: '{semantic.radius.control}',
6939
- itemSelectedColor: '{semantic.color.primary}',
6940
- itemSelectedWeight: '{semantic.fontWeight.semibold}'
6833
+ menuEnterDuration: '{semantic.motion.enter}',
6834
+ menuEnterEasing: '{semantic.motion.easing}',
6835
+ searchMinHeight: '{semantic.size.controlMd}',
6836
+ searchPaddingBlock: '{semantic.space.sm}',
6837
+ searchPaddingInline: '{semantic.space.md}',
6838
+ searchBorderWidth: '{semantic.border.thin}',
6839
+ searchBorderColor: '{semantic.color.border}',
6840
+ searchBorderFocusColor: '{semantic.color.focus}',
6841
+ searchRadius: '{semantic.radius.control}',
6842
+ searchBackground: '{semantic.color.surface}',
6843
+ searchColor: '{semantic.color.text}',
6844
+ searchPlaceholderColor: '{semantic.color.textMuted}',
6845
+ searchIconColor: '{semantic.color.textMuted}',
6846
+ searchFocusShadow: '{semantic.shadow.focus}',
6847
+ optionPaddingBlock: '{semantic.space.sm}',
6848
+ optionPaddingInline: '{semantic.space.md}',
6849
+ optionRadius: '{semantic.radius.control}',
6850
+ optionBackgroundHover: '{semantic.color.surfaceMuted}',
6851
+ optionActiveBackground: '{semantic.color.surfaceMuted}',
6852
+ optionSelectedBackground: '{semantic.color.surfaceMuted}',
6853
+ optionSelectedColor: '{semantic.color.primary}',
6854
+ optionSelectedWeight: '{semantic.fontWeight.semibold}',
6855
+ emptyPadding: '{semantic.space.md}',
6856
+ emptyColor: '{semantic.color.textMuted}',
6857
+ emptySize: '{semantic.text.sm}',
6858
+ descriptionColor: '{semantic.color.textMuted}',
6859
+ errorColor: '{semantic.status.danger}'
6941
6860
  },
6942
6861
  skeleton: {
6943
6862
  background: '{semantic.color.surfaceMuted}',
@@ -6983,20 +6902,6 @@ const Arvisfy = {
6983
6902
  closeBackgroundHover: '{semantic.color.surfaceMuted}',
6984
6903
  closeFocusShadow: '{semantic.shadow.focus}'
6985
6904
  },
6986
- listBox: {
6987
- borderWidth: '{semantic.border.thin}',
6988
- borderColor: '{semantic.color.border}',
6989
- radius: '{semantic.radius.surface}',
6990
- background: '{semantic.color.surface}',
6991
- color: '{semantic.color.text}',
6992
- optionPaddingBlock: '{semantic.space.sm}',
6993
- optionPaddingInline: '{semantic.space.md}',
6994
- optionFocusShadow: '{semantic.shadow.focus}',
6995
- optionBackgroundHover: '{semantic.color.surfaceMuted}',
6996
- optionSelectedBackground: '{semantic.color.surfaceMuted}',
6997
- optionSelectedColor: '{semantic.color.primary}',
6998
- optionSelectedWeight: '{semantic.fontWeight.semibold}'
6999
- },
7000
6905
  pagination: {
7001
6906
  gap: '{semantic.space.sm}',
7002
6907
  minWidth: '{semantic.size.buttonMin}',
@@ -8045,5 +7950,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.21", ngImpo
8045
7950
  * Generated bundle index. Do not edit.
8046
7951
  */
8047
7952
 
8048
- export { Arvisfy, NS_THEME_OPTIONS, NS_TOAST_OPTIONS, NsAccordionComponent, NsAccordionItemComponent, NsAlertComponent, NsAvatarComponent, NsBadgeComponent, NsBreadcrumbItemComponent, NsBreadcrumbsComponent, NsButtonComponent, NsButtonGroupComponent, NsCardBodyComponent, NsCardComponent, NsCardFooterComponent, NsCardHeaderComponent, NsCheckboxComponent, NsChipComponent, NsCollectionController, NsCommentComponent, NsContentEditableComponent, NsDatePickerComponent, NsDateRangePickerComponent, NsDescriptionComponent, NsDividerComponent, NsDrawerComponent, NsDrawerRef, NsDrawerService, NsEditorColorPickerComponent, NsEditorComponent, NsEditorLinkComponent, NsEditorListComponent, NsEditorParagraphComponent, NsEditorToggleCommandComponent, NsFieldContext, NsFieldDirective, NsImageUploadComponent, NsInputCodeComponent, NsInputComponent, NsInputGroupAddonComponent, NsInputGroupComponent, NsInputNumberComponent, NsInputSearchComponent, NsLinkComponent, NsListBoxComponent, NsListBoxOptionComponent, NsMeterComponent, NsModalComponent, NsModalRef, NsModalService, NsOverlayRef, NsOverlayService, NsPaginationComponent, NsPasswordComponent, NsPopoverComponent, NsProgressBarComponent, NsRadioComponent, NsRadioGroupComponent, NsSchedule, NsScheduleComponent, NsScheduleService, NsSchemaMarkupComponent, NsSelectorListComponent, NsSelectorListItemComponent, NsSkeletonComponent, NsSliderComponent, NsSurfaceComponent, NsSwitchComponent, NsTabComponent, NsTabsComponent, NsTagComponent, NsTagGroupComponent, NsTextAreaComponent, NsThemeService, NsToastComponent, NsToastHandle, NsToastService, NsTooltipComponent, NsTooltipDirective, NsValueAccessor, TemplateDirective, defineNsPreset, flattenTokens, getNsOverlayPosition, provideNsTheme, referenceToCssVariable, tokenPathToCssVariable, validateNsPreset };
7953
+ export { Arvisfy, NS_THEME_OPTIONS, NS_TOAST_OPTIONS, NsAccordionComponent, NsAccordionItemComponent, NsAlertComponent, NsAvatarComponent, NsBadgeComponent, NsBreadcrumbItemComponent, NsBreadcrumbsComponent, NsButtonComponent, NsButtonGroupComponent, NsCardBodyComponent, NsCardComponent, NsCardFooterComponent, NsCardHeaderComponent, NsCheckboxComponent, NsChipComponent, NsCollectionController, NsCommentComponent, NsContentEditableComponent, NsDatePickerComponent, NsDateRangePickerComponent, NsDescriptionComponent, NsDividerComponent, NsDrawerComponent, NsDrawerRef, NsDrawerService, NsDropdownComponent, NsDropdownItemDirective, NsEditorColorPickerComponent, NsEditorComponent, NsEditorLinkComponent, NsEditorListComponent, NsEditorParagraphComponent, NsEditorToggleCommandComponent, NsFieldContext, NsFieldDirective, NsImageUploadComponent, NsInputCodeComponent, NsInputComponent, NsInputGroupAddonComponent, NsInputGroupComponent, NsInputNumberComponent, NsInputSearchComponent, NsLinkComponent, NsMeterComponent, NsModalComponent, NsModalRef, NsModalService, NsOverlayRef, NsOverlayService, NsPaginationComponent, NsPasswordComponent, NsPopoverComponent, NsProgressBarComponent, NsRadioComponent, NsRadioGroupComponent, NsSchedule, NsScheduleComponent, NsScheduleService, NsSchemaMarkupComponent, NsSkeletonComponent, NsSliderComponent, NsSurfaceComponent, NsSwitchComponent, NsTabComponent, NsTabsComponent, NsTagComponent, NsTagGroupComponent, NsTextAreaComponent, NsThemeService, NsToastComponent, NsToastHandle, NsToastService, NsTooltipComponent, NsTooltipDirective, NsValueAccessor, TemplateDirective, defineNsPreset, flattenTokens, getNsOverlayPosition, provideNsTheme, referenceToCssVariable, tokenPathToCssVariable, validateNsPreset };
8049
7954
  //# sourceMappingURL=ng-solid-design-system.mjs.map