codexly-ui 0.10.108 → 0.10.110

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.
@@ -28,7 +28,7 @@
28
28
  ::-webkit-scrollbar { width: 0.5rem; height: 0.5rem; }
29
29
  ::-webkit-scrollbar-track { background-color: transparent; }
30
30
  ::-webkit-scrollbar-thumb {
31
- background-color: var(--clx-primary-light);
31
+ background-color: var(--clx-scroll-light, var(--clx-primary-light));
32
32
  border-radius: 0.5rem;
33
33
  }
34
- ::-webkit-scrollbar-thumb:hover { background-color: var(--clx-primary); }
34
+ ::-webkit-scrollbar-thumb:hover { background-color: var(--clx-scroll, var(--clx-primary)); }
@@ -611,6 +611,7 @@ class ClxThemeService {
611
611
  return {
612
612
  headerColor: t?.headerColor ?? this._config().primaryColor,
613
613
  headerTextColor: t?.headerTextColor ?? t?.headerColor ?? this._config().primaryColor,
614
+ borderColor: t?.borderColor ?? this._config().primaryColor,
614
615
  shadow: t?.shadow ?? 'none',
615
616
  bordered: t?.bordered ?? true,
616
617
  };
@@ -633,6 +634,12 @@ class ClxThemeService {
633
634
  ? this._config().primaryButtonTextColor
634
635
  : this._config().secondaryButtonTextColor;
635
636
  }
637
+ /** Resolved border color for ClxCardComponent (outlined/elevated variants) — falls back to
638
+ * primaryColor when unset. Per-instance `[color]` input on clx-card still takes precedence. */
639
+ cardBorderColor = computed(() => this._config().cardBorderColor ?? this._config().primaryColor, ...(ngDevMode ? [{ debugName: "cardBorderColor" }] : /* istanbul ignore next */ []));
640
+ /** Resolved divider/border color for ClxListComponent — falls back to primaryColor when unset.
641
+ * Per-instance `[color]` input on clx-list still takes precedence. */
642
+ listBorderColor = computed(() => this._config().listBorderColor ?? this._config().primaryColor, ...(ngDevMode ? [{ debugName: "listBorderColor" }] : /* istanbul ignore next */ []));
636
643
  constructor() {
637
644
  effect(() => {
638
645
  if (!this._isBrowser)
@@ -645,6 +652,7 @@ class ClxThemeService {
645
652
  const cfg = this._config();
646
653
  this._applyColorVar('--clx-primary', '--clx-primary-light', cfg.primaryColor);
647
654
  this._applyColorVar('--clx-secondary', '--clx-secondary-light', cfg.secondaryColor);
655
+ this._applyColorVar('--clx-scroll', '--clx-scroll-light', cfg.scrollColor ?? cfg.primaryColor);
648
656
  this._applyTextColor(cfg.textColor, this.isDark());
649
657
  });
650
658
  effect(() => {
@@ -777,6 +785,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
777
785
  }]
778
786
  }], propDecorators: { platform: [{ type: i0.Input, args: [{ isSignal: true, alias: "platform", required: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
779
787
 
788
+ // ── Context ───────────────────────────────────────────────────────────────────
789
+ /** Provided by clx-table-actions so nested clx-button instances default to the theme's
790
+ * secondaryColor instead of primaryColor when they don't pass their own [color] — any button
791
+ * that DOES pass [color] explicitly still overrides this, same as CLX_CARD_DISABLED_CONTEXT. */
792
+ const CLX_TABLE_ACTIONS_CONTEXT = new InjectionToken('CLX_TABLE_ACTIONS_CONTEXT');
780
793
  const BUTTON_BASE_CLASS = 'relative overflow-hidden inline-flex items-center justify-center font-medium select-none transition-[color,background-color,border-color,box-shadow] duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2';
781
794
  const BUTTON_SIZE_MAP = {
782
795
  xxs: 'text-xs px-1.5 py-0.5 gap-0.5',
@@ -947,7 +960,8 @@ class ClxButtonComponent {
947
960
  textColor = input(undefined, ...(ngDevMode ? [{ debugName: "textColor" }] : /* istanbul ignore next */ []));
948
961
  size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
949
962
  shape = input(undefined, ...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
950
- _color = computed(() => this.color() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
963
+ _tableActionsColor = inject(CLX_TABLE_ACTIONS_CONTEXT, { optional: true });
964
+ _color = computed(() => this.color() ?? this._tableActionsColor?.() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
951
965
  _size = computed(() => this.size() ?? this._themeSvc.config().defaultSize, ...(ngDevMode ? [{ debugName: "_size" }] : /* istanbul ignore next */ []));
952
966
  _shape = computed(() => this.shape() ?? this._themeSvc.config().defaultShape, ...(ngDevMode ? [{ debugName: "_shape" }] : /* istanbul ignore next */ []));
953
967
  loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
@@ -1508,7 +1522,7 @@ class ClxCardComponent {
1508
1522
  headerTitle = input(undefined, ...(ngDevMode ? [{ debugName: "headerTitle" }] : /* istanbul ignore next */ []));
1509
1523
  /** Optional secondary line under headerTitle. */
1510
1524
  headerSubtitle = input(undefined, ...(ngDevMode ? [{ debugName: "headerSubtitle" }] : /* istanbul ignore next */ []));
1511
- _color = computed(() => this.color() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
1525
+ _color = computed(() => this.color() ?? this._themeSvc.cardBorderColor(), ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
1512
1526
  _titleClass = computed(() => `text-sm font-[${this._themeSvc.cardTitleStyle().weight}] text-clx-text-label leading-tight truncate`, ...(ngDevMode ? [{ debugName: "_titleClass" }] : /* istanbul ignore next */ []));
1513
1527
  _headerSlot = contentChild(ClxCardHeaderDirective, ...(ngDevMode ? [{ debugName: "_headerSlot" }] : /* istanbul ignore next */ []));
1514
1528
  _headerActionsSlot = contentChild(ClxCardHeaderActionsDirective, ...(ngDevMode ? [{ debugName: "_headerActionsSlot" }] : /* istanbul ignore next */ []));
@@ -1825,7 +1839,7 @@ const LIST_SIZE_MAP = {
1825
1839
  class ClxListComponent {
1826
1840
  _themeSvc = inject(ClxThemeService);
1827
1841
  color = input(undefined, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
1828
- resolvedColor = computed(() => this.color() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "resolvedColor" }] : /* istanbul ignore next */ []));
1842
+ resolvedColor = computed(() => this.color() ?? this._themeSvc.listBorderColor(), ...(ngDevMode ? [{ debugName: "resolvedColor" }] : /* istanbul ignore next */ []));
1829
1843
  variant = input('flat', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
1830
1844
  size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
1831
1845
  numbered = input(false, ...(ngDevMode ? [{ debugName: "numbered" }] : /* istanbul ignore next */ []));
@@ -10888,10 +10902,10 @@ class ClxProfileComponent {
10888
10902
  const t = resolveColor(this._color());
10889
10903
  return `focus-visible:${t.ringBase}`;
10890
10904
  }, ...(ngDevMode ? [{ debugName: "_ringClass" }] : /* istanbul ignore next */ []));
10891
- _headerBgClass = computed(() => {
10905
+ _avatarRingClass = computed(() => {
10892
10906
  const t = resolveColor(this._color());
10893
- return `${t.bgSubtle}`;
10894
- }, ...(ngDevMode ? [{ debugName: "_headerBgClass" }] : /* istanbul ignore next */ []));
10907
+ return `border-2 ${t.borderLight}`;
10908
+ }, ...(ngDevMode ? [{ debugName: "_avatarRingClass" }] : /* istanbul ignore next */ []));
10895
10909
  // ── Methods ──────────────────────────────────────────────────────────────────
10896
10910
  _toggle() { this._isOpen.update(v => !v); }
10897
10911
  _close() { this._isOpen.set(false); }
@@ -10935,60 +10949,55 @@ class ClxProfileComponent {
10935
10949
  (overlayOutsideClick)="_close()"
10936
10950
  (overlayKeydown)="_onKeydown($event)">
10937
10951
 
10938
- <div class="w-64 bg-clx-surface rounded-2xl shadow-xl border border-clx-border overflow-hidden mt-2">
10952
+ <div class="w-72 bg-clx-surface rounded-2xl shadow-xl border border-clx-border-soft overflow-hidden mt-2">
10939
10953
 
10940
- <!-- Header: avatar + name + role -->
10941
- <div class="px-4 py-4 flex items-center gap-3" [class]="_headerBgClass()">
10942
- <clx-avatar
10943
- [initials]="_initials()"
10944
- [src]="avatarSrc()"
10945
- [color]="_color()"
10946
- size="md" />
10954
+ <!-- Header: avatar ring + name + role badge, subtle surface (not a solid color block) -->
10955
+ <div class="px-4 pt-5 pb-4 flex items-center gap-3 bg-clx-surface-2">
10956
+ <div class="rounded-full p-0.5" [class]="_avatarRingClass()">
10957
+ <clx-avatar
10958
+ [initials]="_initials()"
10959
+ [src]="avatarSrc()"
10960
+ [color]="_color()"
10961
+ size="md" />
10962
+ </div>
10947
10963
  <div class="flex-1 min-w-0">
10948
10964
  <p class="text-sm font-semibold text-clx-text-label truncate">{{ fullName() }}</p>
10949
10965
  <p class="text-xs text-clx-text-muted truncate">{{ username() }}</p>
10950
10966
  @if (role()) {
10951
- <span clx-badge [color]="_color()" variant="light" size="sm" class="mt-1">{{ role() }}</span>
10967
+ <span clx-badge [color]="_color()" variant="light" size="xs" class="mt-1.5">{{ role() }}</span>
10952
10968
  }
10953
10969
  </div>
10954
10970
  </div>
10955
10971
 
10956
- <!-- Divider -->
10957
- <div class="border-t border-clx-border-soft"></div>
10958
-
10959
10972
  <!-- Menu items -->
10960
10973
  @if (menuItems().length) {
10961
- <div class="p-1.5">
10974
+ <div class="py-1.5">
10962
10975
  @for (item of menuItems(); track item.action) {
10963
- <button clx-button type="button" variant="ghost" [color]="_color()" [block]="true" [icon]="item.icon"
10964
- class="justify-start rounded-xl!"
10965
- (click)="_onAction(item.action)">
10966
- {{ item.label }}
10967
- </button>
10976
+ <clx-menu-item [label]="item.label" [icon]="item.icon"
10977
+ (itemClick)="_onAction(item.action)" />
10968
10978
  }
10969
10979
  </div>
10970
- <div class="border-t border-clx-border-soft mx-3"></div>
10971
10980
  }
10972
10981
 
10973
- <!-- Sign out -->
10974
- <div class="p-1.5">
10975
- <button clx-button type="button" variant="ghost" color="red" [block]="true" icon="logout"
10976
- class="justify-start rounded-xl!"
10977
- (click)="_onSignOut()">
10978
- {{ signOutLabel() }}
10979
- </button>
10982
+ <!-- Divider -->
10983
+ <div class="border-t border-clx-border-soft"></div>
10984
+
10985
+ <!-- Sign out — always red regardless of theme (destructive action convention) -->
10986
+ <div class="py-1.5">
10987
+ <clx-menu-item [label]="signOutLabel()" icon="logout" [style]="{ color: 'red' }"
10988
+ (itemClick)="_onSignOut()" />
10980
10989
  </div>
10981
10990
 
10982
10991
  </div>
10983
10992
  </ng-template>
10984
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ClxAvatarComponent, selector: "clx-avatar", inputs: ["src", "initials", "iconName", "color", "size", "shape", "alt"] }, { kind: "component", type: ClxButtonComponent, selector: "button[clx-button], a[clx-button]", inputs: ["variant", "color", "textColor", "size", "shape", "loading", "disabled", "block", "icon", "iconPosition", "iconOnly", "badge", "badgeColor"] }, { kind: "component", type: ClxBadgeComponent, selector: "span[clx-badge]", inputs: ["variant", "color", "size", "shape", "positioned"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
10993
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: ClxAvatarComponent, selector: "clx-avatar", inputs: ["src", "initials", "iconName", "color", "size", "shape", "alt"] }, { kind: "component", type: ClxBadgeComponent, selector: "span[clx-badge]", inputs: ["variant", "color", "size", "shape", "positioned"] }, { kind: "component", type: ClxMenuItemComponent, selector: "clx-menu-item", inputs: ["label", "icon", "active", "style", "nested", "collapsed", "routerLink", "routerLinkActiveOptions"], outputs: ["itemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
10985
10994
  }
10986
10995
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxProfileComponent, decorators: [{
10987
10996
  type: Component,
10988
10997
  args: [{
10989
10998
  selector: 'clx-profile',
10990
10999
  standalone: true,
10991
- imports: [OverlayModule, ClxAvatarComponent, ClxButtonComponent, ClxBadgeComponent],
11000
+ imports: [OverlayModule, ClxAvatarComponent, ClxBadgeComponent, ClxMenuItemComponent],
10992
11001
  template: `
10993
11002
  <!-- ── Trigger ─────────────────────────────────────────────────────────── -->
10994
11003
  <button
@@ -11016,48 +11025,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
11016
11025
  (overlayOutsideClick)="_close()"
11017
11026
  (overlayKeydown)="_onKeydown($event)">
11018
11027
 
11019
- <div class="w-64 bg-clx-surface rounded-2xl shadow-xl border border-clx-border overflow-hidden mt-2">
11028
+ <div class="w-72 bg-clx-surface rounded-2xl shadow-xl border border-clx-border-soft overflow-hidden mt-2">
11020
11029
 
11021
- <!-- Header: avatar + name + role -->
11022
- <div class="px-4 py-4 flex items-center gap-3" [class]="_headerBgClass()">
11023
- <clx-avatar
11024
- [initials]="_initials()"
11025
- [src]="avatarSrc()"
11026
- [color]="_color()"
11027
- size="md" />
11030
+ <!-- Header: avatar ring + name + role badge, subtle surface (not a solid color block) -->
11031
+ <div class="px-4 pt-5 pb-4 flex items-center gap-3 bg-clx-surface-2">
11032
+ <div class="rounded-full p-0.5" [class]="_avatarRingClass()">
11033
+ <clx-avatar
11034
+ [initials]="_initials()"
11035
+ [src]="avatarSrc()"
11036
+ [color]="_color()"
11037
+ size="md" />
11038
+ </div>
11028
11039
  <div class="flex-1 min-w-0">
11029
11040
  <p class="text-sm font-semibold text-clx-text-label truncate">{{ fullName() }}</p>
11030
11041
  <p class="text-xs text-clx-text-muted truncate">{{ username() }}</p>
11031
11042
  @if (role()) {
11032
- <span clx-badge [color]="_color()" variant="light" size="sm" class="mt-1">{{ role() }}</span>
11043
+ <span clx-badge [color]="_color()" variant="light" size="xs" class="mt-1.5">{{ role() }}</span>
11033
11044
  }
11034
11045
  </div>
11035
11046
  </div>
11036
11047
 
11037
- <!-- Divider -->
11038
- <div class="border-t border-clx-border-soft"></div>
11039
-
11040
11048
  <!-- Menu items -->
11041
11049
  @if (menuItems().length) {
11042
- <div class="p-1.5">
11050
+ <div class="py-1.5">
11043
11051
  @for (item of menuItems(); track item.action) {
11044
- <button clx-button type="button" variant="ghost" [color]="_color()" [block]="true" [icon]="item.icon"
11045
- class="justify-start rounded-xl!"
11046
- (click)="_onAction(item.action)">
11047
- {{ item.label }}
11048
- </button>
11052
+ <clx-menu-item [label]="item.label" [icon]="item.icon"
11053
+ (itemClick)="_onAction(item.action)" />
11049
11054
  }
11050
11055
  </div>
11051
- <div class="border-t border-clx-border-soft mx-3"></div>
11052
11056
  }
11053
11057
 
11054
- <!-- Sign out -->
11055
- <div class="p-1.5">
11056
- <button clx-button type="button" variant="ghost" color="red" [block]="true" icon="logout"
11057
- class="justify-start rounded-xl!"
11058
- (click)="_onSignOut()">
11059
- {{ signOutLabel() }}
11060
- </button>
11058
+ <!-- Divider -->
11059
+ <div class="border-t border-clx-border-soft"></div>
11060
+
11061
+ <!-- Sign out — always red regardless of theme (destructive action convention) -->
11062
+ <div class="py-1.5">
11063
+ <clx-menu-item [label]="signOutLabel()" icon="logout" [style]="{ color: 'red' }"
11064
+ (itemClick)="_onSignOut()" />
11061
11065
  </div>
11062
11066
 
11063
11067
  </div>
@@ -13710,6 +13714,7 @@ class ClxTableComponent {
13710
13714
  * theme configured in Editar tema → Tablas) when unset. */
13711
13715
  headerColor = input(undefined, ...(ngDevMode ? [{ debugName: "headerColor" }] : /* istanbul ignore next */ []));
13712
13716
  headerTextColor = input(undefined, ...(ngDevMode ? [{ debugName: "headerTextColor" }] : /* istanbul ignore next */ []));
13717
+ borderColor = input(undefined, ...(ngDevMode ? [{ debugName: "borderColor" }] : /* istanbul ignore next */ []));
13713
13718
  shadow = input(undefined, ...(ngDevMode ? [{ debugName: "shadow" }] : /* istanbul ignore next */ []));
13714
13719
  bordered = input(undefined, ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
13715
13720
  _tableStyle = computed(() => {
@@ -13717,6 +13722,7 @@ class ClxTableComponent {
13717
13722
  return {
13718
13723
  headerColor: this.headerColor() ?? theme.headerColor,
13719
13724
  headerTextColor: this.headerTextColor() ?? theme.headerTextColor,
13725
+ borderColor: this.borderColor() ?? theme.borderColor,
13720
13726
  shadow: this.shadow() ?? theme.shadow,
13721
13727
  bordered: this.bordered() ?? theme.bordered,
13722
13728
  };
@@ -13746,7 +13752,7 @@ class ClxTableComponent {
13746
13752
  };
13747
13753
  _tableWrapperClass = computed(() => {
13748
13754
  const s = this._tableStyle();
13749
- const { color } = parseColorInput(s.headerColor);
13755
+ const { color } = parseColorInput(s.borderColor);
13750
13756
  const border = s.bordered ? `border border-${color}-200` : '';
13751
13757
  const shadow = ClxTableComponent._SHADOW_CLASS[s.shadow];
13752
13758
  return `overflow-x-auto overflow-y-hidden rounded-lg ${border} ${shadow}`.trim();
@@ -13873,7 +13879,7 @@ class ClxTableComponent {
13873
13879
  this.selectionChange.emit({ selected: this.selectedItems(), allSelected: false });
13874
13880
  }
13875
13881
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13876
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxTableComponent, isStandalone: true, selector: "clx-table", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, singleSelect: { classPropertyName: "singleSelect", publicName: "singleSelect", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, emptyIcon: { classPropertyName: "emptyIcon", publicName: "emptyIcon", isSignal: true, isRequired: false, transformFunction: null }, emptyTitle: { classPropertyName: "emptyTitle", publicName: "emptyTitle", isSignal: true, isRequired: false, transformFunction: null }, emptyDescription: { classPropertyName: "emptyDescription", publicName: "emptyDescription", isSignal: true, isRequired: false, transformFunction: null }, headerColor: { classPropertyName: "headerColor", publicName: "headerColor", isSignal: true, isRequired: false, transformFunction: null }, headerTextColor: { classPropertyName: "headerTextColor", publicName: "headerTextColor", isSignal: true, isRequired: false, transformFunction: null }, shadow: { classPropertyName: "shadow", publicName: "shadow", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, sortKey: { classPropertyName: "sortKey", publicName: "sortKey", isSignal: true, isRequired: false, transformFunction: null }, sortDir: { classPropertyName: "sortDir", publicName: "sortDir", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, _currentPage: { classPropertyName: "_currentPage", publicName: "_currentPage", isSignal: true, isRequired: false, transformFunction: null }, searchQuery: { classPropertyName: "searchQuery", publicName: "searchQuery", isSignal: true, isRequired: false, transformFunction: null }, selectedItems: { classPropertyName: "selectedItems", publicName: "selectedItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortKey: "sortKeyChange", sortDir: "sortDirChange", pageIndex: "pageIndexChange", pageSize: "pageSizeChange", _currentPage: "_currentPageChange", searchQuery: "searchQueryChange", selectedItems: "selectedItemsChange", sortChange: "sortChange", pageChange: "pageChange", selectionChange: "selectionChange" }, host: { classAttribute: "block" }, queries: [{ propertyName: "_columnDefs", predicate: ClxColumnDefDirective, isSignal: true }], ngImport: i0, template: `
13882
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxTableComponent, isStandalone: true, selector: "clx-table", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, singleSelect: { classPropertyName: "singleSelect", publicName: "singleSelect", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, pagination: { classPropertyName: "pagination", publicName: "pagination", isSignal: true, isRequired: false, transformFunction: null }, serverSide: { classPropertyName: "serverSide", publicName: "serverSide", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, emptyIcon: { classPropertyName: "emptyIcon", publicName: "emptyIcon", isSignal: true, isRequired: false, transformFunction: null }, emptyTitle: { classPropertyName: "emptyTitle", publicName: "emptyTitle", isSignal: true, isRequired: false, transformFunction: null }, emptyDescription: { classPropertyName: "emptyDescription", publicName: "emptyDescription", isSignal: true, isRequired: false, transformFunction: null }, headerColor: { classPropertyName: "headerColor", publicName: "headerColor", isSignal: true, isRequired: false, transformFunction: null }, headerTextColor: { classPropertyName: "headerTextColor", publicName: "headerTextColor", isSignal: true, isRequired: false, transformFunction: null }, borderColor: { classPropertyName: "borderColor", publicName: "borderColor", isSignal: true, isRequired: false, transformFunction: null }, shadow: { classPropertyName: "shadow", publicName: "shadow", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, sortKey: { classPropertyName: "sortKey", publicName: "sortKey", isSignal: true, isRequired: false, transformFunction: null }, sortDir: { classPropertyName: "sortDir", publicName: "sortDir", isSignal: true, isRequired: false, transformFunction: null }, pageIndex: { classPropertyName: "pageIndex", publicName: "pageIndex", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, _currentPage: { classPropertyName: "_currentPage", publicName: "_currentPage", isSignal: true, isRequired: false, transformFunction: null }, searchQuery: { classPropertyName: "searchQuery", publicName: "searchQuery", isSignal: true, isRequired: false, transformFunction: null }, selectedItems: { classPropertyName: "selectedItems", publicName: "selectedItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortKey: "sortKeyChange", sortDir: "sortDirChange", pageIndex: "pageIndexChange", pageSize: "pageSizeChange", _currentPage: "_currentPageChange", searchQuery: "searchQueryChange", selectedItems: "selectedItemsChange", sortChange: "sortChange", pageChange: "pageChange", selectionChange: "selectionChange" }, host: { classAttribute: "block" }, queries: [{ propertyName: "_columnDefs", predicate: ClxColumnDefDirective, isSignal: true }], ngImport: i0, template: `
13877
13883
  <!-- ── Toolbar: búsqueda ──────────────────────────────────────────────── -->
13878
13884
  @if (searchable() && !serverSide() && !loading() && _filteredData().length > 0) {
13879
13885
  <div class="mb-3 max-w-80 min-w-40">
@@ -14155,7 +14161,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
14155
14161
  changeDetection: ChangeDetectionStrategy.OnPush,
14156
14162
  host: { class: 'block' },
14157
14163
  }]
14158
- }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], singleSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "singleSelect", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], pagination: [{ type: i0.Input, args: [{ isSignal: true, alias: "pagination", required: false }] }], serverSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSide", required: false }] }], totalItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalItems", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], emptyIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyIcon", required: false }] }], emptyTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyTitle", required: false }] }], emptyDescription: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyDescription", required: false }] }], headerColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerColor", required: false }] }], headerTextColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTextColor", required: false }] }], shadow: [{ type: i0.Input, args: [{ isSignal: true, alias: "shadow", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], sortKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortKey", required: false }] }, { type: i0.Output, args: ["sortKeyChange"] }], sortDir: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortDir", required: false }] }, { type: i0.Output, args: ["sortDirChange"] }], pageIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageIndex", required: false }] }, { type: i0.Output, args: ["pageIndexChange"] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }, { type: i0.Output, args: ["pageSizeChange"] }], _currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "_currentPage", required: false }] }, { type: i0.Output, args: ["_currentPageChange"] }], searchQuery: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchQuery", required: false }] }, { type: i0.Output, args: ["searchQueryChange"] }], selectedItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedItems", required: false }] }, { type: i0.Output, args: ["selectedItemsChange"] }], sortChange: [{ type: i0.Output, args: ["sortChange"] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], _columnDefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ClxColumnDefDirective), { isSignal: true }] }] } });
14164
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], singleSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "singleSelect", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], pagination: [{ type: i0.Input, args: [{ isSignal: true, alias: "pagination", required: false }] }], serverSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "serverSide", required: false }] }], totalItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalItems", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], emptyIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyIcon", required: false }] }], emptyTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyTitle", required: false }] }], emptyDescription: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyDescription", required: false }] }], headerColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerColor", required: false }] }], headerTextColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTextColor", required: false }] }], borderColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderColor", required: false }] }], shadow: [{ type: i0.Input, args: [{ isSignal: true, alias: "shadow", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], sortKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortKey", required: false }] }, { type: i0.Output, args: ["sortKeyChange"] }], sortDir: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortDir", required: false }] }, { type: i0.Output, args: ["sortDirChange"] }], pageIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageIndex", required: false }] }, { type: i0.Output, args: ["pageIndexChange"] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }, { type: i0.Output, args: ["pageSizeChange"] }], _currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "_currentPage", required: false }] }, { type: i0.Output, args: ["_currentPageChange"] }], searchQuery: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchQuery", required: false }] }, { type: i0.Output, args: ["searchQueryChange"] }], selectedItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedItems", required: false }] }, { type: i0.Output, args: ["selectedItemsChange"] }], sortChange: [{ type: i0.Output, args: ["sortChange"] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], _columnDefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ClxColumnDefDirective), { isSignal: true }] }] } });
14165
+
14166
+ /** Wraps the action buttons in a clx-table column (edit/delete/view/...) so every nested
14167
+ * clx-button defaults to the theme's secondaryColor instead of primaryColor, without each one
14168
+ * having to pass [color] by hand. Any button that DOES pass its own [color] (e.g. a one-off
14169
+ * danger action) still overrides this default — same override precedence as every other
14170
+ * per-instance color input in the library. */
14171
+ class ClxTableActionsComponent {
14172
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxTableActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14173
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.15", type: ClxTableActionsComponent, isStandalone: true, selector: "clx-table-actions", host: { classAttribute: "flex items-center gap-2" }, providers: [
14174
+ { provide: CLX_TABLE_ACTIONS_CONTEXT, useFactory: () => {
14175
+ const themeSvc = inject(ClxThemeService);
14176
+ return computed(() => themeSvc.config().secondaryColor);
14177
+ } },
14178
+ ], ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
14179
+ }
14180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxTableActionsComponent, decorators: [{
14181
+ type: Component,
14182
+ args: [{
14183
+ selector: 'clx-table-actions',
14184
+ standalone: true,
14185
+ template: `<ng-content />`,
14186
+ encapsulation: ViewEncapsulation.None,
14187
+ changeDetection: ChangeDetectionStrategy.OnPush,
14188
+ host: { class: 'flex items-center gap-2' },
14189
+ providers: [
14190
+ { provide: CLX_TABLE_ACTIONS_CONTEXT, useFactory: () => {
14191
+ const themeSvc = inject(ClxThemeService);
14192
+ return computed(() => themeSvc.config().secondaryColor);
14193
+ } },
14194
+ ],
14195
+ }]
14196
+ }] });
14159
14197
 
14160
14198
  class ClxPageNotFoundComponent {
14161
14199
  title = input('Página no encontrada', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
@@ -17020,5 +17058,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
17020
17058
  * Generated bundle index. Do not edit.
17021
17059
  */
17022
17060
 
17023
- export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxCollapseComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxMenuItemTrailingDirective, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNumberComponent, ClxOtpComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProductQuickViewComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
17061
+ export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxCollapseComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxMenuItemTrailingDirective, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNumberComponent, ClxOtpComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProductQuickViewComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableActionsComponent, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
17024
17062
  //# sourceMappingURL=codexly-ui.mjs.map