codexly-ui 0.10.107 → 0.10.109

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.
@@ -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)
@@ -777,6 +784,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
777
784
  }]
778
785
  }], 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
786
 
787
+ // ── Context ───────────────────────────────────────────────────────────────────
788
+ /** Provided by clx-table-actions so nested clx-button instances default to the theme's
789
+ * secondaryColor instead of primaryColor when they don't pass their own [color] — any button
790
+ * that DOES pass [color] explicitly still overrides this, same as CLX_CARD_DISABLED_CONTEXT. */
791
+ const CLX_TABLE_ACTIONS_CONTEXT = new InjectionToken('CLX_TABLE_ACTIONS_CONTEXT');
780
792
  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
793
  const BUTTON_SIZE_MAP = {
782
794
  xxs: 'text-xs px-1.5 py-0.5 gap-0.5',
@@ -947,7 +959,8 @@ class ClxButtonComponent {
947
959
  textColor = input(undefined, ...(ngDevMode ? [{ debugName: "textColor" }] : /* istanbul ignore next */ []));
948
960
  size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
949
961
  shape = input(undefined, ...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
950
- _color = computed(() => this.color() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
962
+ _tableActionsColor = inject(CLX_TABLE_ACTIONS_CONTEXT, { optional: true });
963
+ _color = computed(() => this.color() ?? this._tableActionsColor?.() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
951
964
  _size = computed(() => this.size() ?? this._themeSvc.config().defaultSize, ...(ngDevMode ? [{ debugName: "_size" }] : /* istanbul ignore next */ []));
952
965
  _shape = computed(() => this.shape() ?? this._themeSvc.config().defaultShape, ...(ngDevMode ? [{ debugName: "_shape" }] : /* istanbul ignore next */ []));
953
966
  loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
@@ -999,8 +1012,12 @@ class ClxButtonComponent {
999
1012
  if (!textOverride)
1000
1013
  return cls;
1001
1014
  // Strip any text-* class the variant branch above already added, then apply the override —
1002
- // avoids two text-* classes of equal CSS specificity racing on source order.
1003
- return cls.replace(/(?:^|\s)text-\S+/g, '').trim() + ` ${resolveColor(textOverride).text}`;
1015
+ // avoids two text-* classes of equal CSS specificity racing on source order. Uses the literal
1016
+ // text-{color}-{shade} class (not resolveColor().text, which ignores the chosen color and
1017
+ // auto-picks white/dark-800 for contrast against a background — the override IS the user's
1018
+ // explicit color choice, not a background to contrast against).
1019
+ const { color: oc, shade: os } = parseColorInput(textOverride);
1020
+ return cls.replace(/(?:^|\s)text-\S+/g, '').trim() + ` text-${oc}-${os}`;
1004
1021
  }, ...(ngDevMode ? [{ debugName: "_colorClass" }] : /* istanbul ignore next */ []));
1005
1022
  /** Auto-applies primaryButtonTextColor/secondaryButtonTextColor from the theme when this
1006
1023
  * button's own resolved color IS the theme's primaryColor/secondaryColor and no explicit
@@ -1504,7 +1521,7 @@ class ClxCardComponent {
1504
1521
  headerTitle = input(undefined, ...(ngDevMode ? [{ debugName: "headerTitle" }] : /* istanbul ignore next */ []));
1505
1522
  /** Optional secondary line under headerTitle. */
1506
1523
  headerSubtitle = input(undefined, ...(ngDevMode ? [{ debugName: "headerSubtitle" }] : /* istanbul ignore next */ []));
1507
- _color = computed(() => this.color() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
1524
+ _color = computed(() => this.color() ?? this._themeSvc.cardBorderColor(), ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
1508
1525
  _titleClass = computed(() => `text-sm font-[${this._themeSvc.cardTitleStyle().weight}] text-clx-text-label leading-tight truncate`, ...(ngDevMode ? [{ debugName: "_titleClass" }] : /* istanbul ignore next */ []));
1509
1526
  _headerSlot = contentChild(ClxCardHeaderDirective, ...(ngDevMode ? [{ debugName: "_headerSlot" }] : /* istanbul ignore next */ []));
1510
1527
  _headerActionsSlot = contentChild(ClxCardHeaderActionsDirective, ...(ngDevMode ? [{ debugName: "_headerActionsSlot" }] : /* istanbul ignore next */ []));
@@ -1821,7 +1838,7 @@ const LIST_SIZE_MAP = {
1821
1838
  class ClxListComponent {
1822
1839
  _themeSvc = inject(ClxThemeService);
1823
1840
  color = input(undefined, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
1824
- resolvedColor = computed(() => this.color() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "resolvedColor" }] : /* istanbul ignore next */ []));
1841
+ resolvedColor = computed(() => this.color() ?? this._themeSvc.listBorderColor(), ...(ngDevMode ? [{ debugName: "resolvedColor" }] : /* istanbul ignore next */ []));
1825
1842
  variant = input('flat', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
1826
1843
  size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
1827
1844
  numbered = input(false, ...(ngDevMode ? [{ debugName: "numbered" }] : /* istanbul ignore next */ []));
@@ -10884,10 +10901,10 @@ class ClxProfileComponent {
10884
10901
  const t = resolveColor(this._color());
10885
10902
  return `focus-visible:${t.ringBase}`;
10886
10903
  }, ...(ngDevMode ? [{ debugName: "_ringClass" }] : /* istanbul ignore next */ []));
10887
- _headerBgClass = computed(() => {
10904
+ _avatarRingClass = computed(() => {
10888
10905
  const t = resolveColor(this._color());
10889
- return `${t.bgSubtle}`;
10890
- }, ...(ngDevMode ? [{ debugName: "_headerBgClass" }] : /* istanbul ignore next */ []));
10906
+ return `border-2 ${t.borderLight}`;
10907
+ }, ...(ngDevMode ? [{ debugName: "_avatarRingClass" }] : /* istanbul ignore next */ []));
10891
10908
  // ── Methods ──────────────────────────────────────────────────────────────────
10892
10909
  _toggle() { this._isOpen.update(v => !v); }
10893
10910
  _close() { this._isOpen.set(false); }
@@ -10931,60 +10948,55 @@ class ClxProfileComponent {
10931
10948
  (overlayOutsideClick)="_close()"
10932
10949
  (overlayKeydown)="_onKeydown($event)">
10933
10950
 
10934
- <div class="w-64 bg-clx-surface rounded-2xl shadow-xl border border-clx-border overflow-hidden mt-2">
10951
+ <div class="w-72 bg-clx-surface rounded-2xl shadow-xl border border-clx-border-soft overflow-hidden mt-2">
10935
10952
 
10936
- <!-- Header: avatar + name + role -->
10937
- <div class="px-4 py-4 flex items-center gap-3" [class]="_headerBgClass()">
10938
- <clx-avatar
10939
- [initials]="_initials()"
10940
- [src]="avatarSrc()"
10941
- [color]="_color()"
10942
- size="md" />
10953
+ <!-- Header: avatar ring + name + role badge, subtle surface (not a solid color block) -->
10954
+ <div class="px-4 pt-5 pb-4 flex items-center gap-3 bg-clx-surface-2">
10955
+ <div class="rounded-full p-0.5" [class]="_avatarRingClass()">
10956
+ <clx-avatar
10957
+ [initials]="_initials()"
10958
+ [src]="avatarSrc()"
10959
+ [color]="_color()"
10960
+ size="md" />
10961
+ </div>
10943
10962
  <div class="flex-1 min-w-0">
10944
10963
  <p class="text-sm font-semibold text-clx-text-label truncate">{{ fullName() }}</p>
10945
10964
  <p class="text-xs text-clx-text-muted truncate">{{ username() }}</p>
10946
10965
  @if (role()) {
10947
- <span clx-badge [color]="_color()" variant="light" size="sm" class="mt-1">{{ role() }}</span>
10966
+ <span clx-badge [color]="_color()" variant="light" size="xs" class="mt-1.5">{{ role() }}</span>
10948
10967
  }
10949
10968
  </div>
10950
10969
  </div>
10951
10970
 
10952
- <!-- Divider -->
10953
- <div class="border-t border-clx-border-soft"></div>
10954
-
10955
10971
  <!-- Menu items -->
10956
10972
  @if (menuItems().length) {
10957
- <div class="p-1.5">
10973
+ <div class="py-1.5">
10958
10974
  @for (item of menuItems(); track item.action) {
10959
- <button clx-button type="button" variant="ghost" [color]="_color()" [block]="true" [icon]="item.icon"
10960
- class="justify-start rounded-xl!"
10961
- (click)="_onAction(item.action)">
10962
- {{ item.label }}
10963
- </button>
10975
+ <clx-menu-item [label]="item.label" [icon]="item.icon"
10976
+ (itemClick)="_onAction(item.action)" />
10964
10977
  }
10965
10978
  </div>
10966
- <div class="border-t border-clx-border-soft mx-3"></div>
10967
10979
  }
10968
10980
 
10969
- <!-- Sign out -->
10970
- <div class="p-1.5">
10971
- <button clx-button type="button" variant="ghost" color="red" [block]="true" icon="logout"
10972
- class="justify-start rounded-xl!"
10973
- (click)="_onSignOut()">
10974
- {{ signOutLabel() }}
10975
- </button>
10981
+ <!-- Divider -->
10982
+ <div class="border-t border-clx-border-soft"></div>
10983
+
10984
+ <!-- Sign out — always red regardless of theme (destructive action convention) -->
10985
+ <div class="py-1.5">
10986
+ <clx-menu-item [label]="signOutLabel()" icon="logout" [style]="{ color: 'red' }"
10987
+ (itemClick)="_onSignOut()" />
10976
10988
  </div>
10977
10989
 
10978
10990
  </div>
10979
10991
  </ng-template>
10980
- `, 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 });
10992
+ `, 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 });
10981
10993
  }
10982
10994
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxProfileComponent, decorators: [{
10983
10995
  type: Component,
10984
10996
  args: [{
10985
10997
  selector: 'clx-profile',
10986
10998
  standalone: true,
10987
- imports: [OverlayModule, ClxAvatarComponent, ClxButtonComponent, ClxBadgeComponent],
10999
+ imports: [OverlayModule, ClxAvatarComponent, ClxBadgeComponent, ClxMenuItemComponent],
10988
11000
  template: `
10989
11001
  <!-- ── Trigger ─────────────────────────────────────────────────────────── -->
10990
11002
  <button
@@ -11012,48 +11024,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
11012
11024
  (overlayOutsideClick)="_close()"
11013
11025
  (overlayKeydown)="_onKeydown($event)">
11014
11026
 
11015
- <div class="w-64 bg-clx-surface rounded-2xl shadow-xl border border-clx-border overflow-hidden mt-2">
11027
+ <div class="w-72 bg-clx-surface rounded-2xl shadow-xl border border-clx-border-soft overflow-hidden mt-2">
11016
11028
 
11017
- <!-- Header: avatar + name + role -->
11018
- <div class="px-4 py-4 flex items-center gap-3" [class]="_headerBgClass()">
11019
- <clx-avatar
11020
- [initials]="_initials()"
11021
- [src]="avatarSrc()"
11022
- [color]="_color()"
11023
- size="md" />
11029
+ <!-- Header: avatar ring + name + role badge, subtle surface (not a solid color block) -->
11030
+ <div class="px-4 pt-5 pb-4 flex items-center gap-3 bg-clx-surface-2">
11031
+ <div class="rounded-full p-0.5" [class]="_avatarRingClass()">
11032
+ <clx-avatar
11033
+ [initials]="_initials()"
11034
+ [src]="avatarSrc()"
11035
+ [color]="_color()"
11036
+ size="md" />
11037
+ </div>
11024
11038
  <div class="flex-1 min-w-0">
11025
11039
  <p class="text-sm font-semibold text-clx-text-label truncate">{{ fullName() }}</p>
11026
11040
  <p class="text-xs text-clx-text-muted truncate">{{ username() }}</p>
11027
11041
  @if (role()) {
11028
- <span clx-badge [color]="_color()" variant="light" size="sm" class="mt-1">{{ role() }}</span>
11042
+ <span clx-badge [color]="_color()" variant="light" size="xs" class="mt-1.5">{{ role() }}</span>
11029
11043
  }
11030
11044
  </div>
11031
11045
  </div>
11032
11046
 
11033
- <!-- Divider -->
11034
- <div class="border-t border-clx-border-soft"></div>
11035
-
11036
11047
  <!-- Menu items -->
11037
11048
  @if (menuItems().length) {
11038
- <div class="p-1.5">
11049
+ <div class="py-1.5">
11039
11050
  @for (item of menuItems(); track item.action) {
11040
- <button clx-button type="button" variant="ghost" [color]="_color()" [block]="true" [icon]="item.icon"
11041
- class="justify-start rounded-xl!"
11042
- (click)="_onAction(item.action)">
11043
- {{ item.label }}
11044
- </button>
11051
+ <clx-menu-item [label]="item.label" [icon]="item.icon"
11052
+ (itemClick)="_onAction(item.action)" />
11045
11053
  }
11046
11054
  </div>
11047
- <div class="border-t border-clx-border-soft mx-3"></div>
11048
11055
  }
11049
11056
 
11050
- <!-- Sign out -->
11051
- <div class="p-1.5">
11052
- <button clx-button type="button" variant="ghost" color="red" [block]="true" icon="logout"
11053
- class="justify-start rounded-xl!"
11054
- (click)="_onSignOut()">
11055
- {{ signOutLabel() }}
11056
- </button>
11057
+ <!-- Divider -->
11058
+ <div class="border-t border-clx-border-soft"></div>
11059
+
11060
+ <!-- Sign out — always red regardless of theme (destructive action convention) -->
11061
+ <div class="py-1.5">
11062
+ <clx-menu-item [label]="signOutLabel()" icon="logout" [style]="{ color: 'red' }"
11063
+ (itemClick)="_onSignOut()" />
11057
11064
  </div>
11058
11065
 
11059
11066
  </div>
@@ -13706,6 +13713,7 @@ class ClxTableComponent {
13706
13713
  * theme configured in Editar tema → Tablas) when unset. */
13707
13714
  headerColor = input(undefined, ...(ngDevMode ? [{ debugName: "headerColor" }] : /* istanbul ignore next */ []));
13708
13715
  headerTextColor = input(undefined, ...(ngDevMode ? [{ debugName: "headerTextColor" }] : /* istanbul ignore next */ []));
13716
+ borderColor = input(undefined, ...(ngDevMode ? [{ debugName: "borderColor" }] : /* istanbul ignore next */ []));
13709
13717
  shadow = input(undefined, ...(ngDevMode ? [{ debugName: "shadow" }] : /* istanbul ignore next */ []));
13710
13718
  bordered = input(undefined, ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
13711
13719
  _tableStyle = computed(() => {
@@ -13713,6 +13721,7 @@ class ClxTableComponent {
13713
13721
  return {
13714
13722
  headerColor: this.headerColor() ?? theme.headerColor,
13715
13723
  headerTextColor: this.headerTextColor() ?? theme.headerTextColor,
13724
+ borderColor: this.borderColor() ?? theme.borderColor,
13716
13725
  shadow: this.shadow() ?? theme.shadow,
13717
13726
  bordered: this.bordered() ?? theme.bordered,
13718
13727
  };
@@ -13742,7 +13751,7 @@ class ClxTableComponent {
13742
13751
  };
13743
13752
  _tableWrapperClass = computed(() => {
13744
13753
  const s = this._tableStyle();
13745
- const { color } = parseColorInput(s.headerColor);
13754
+ const { color } = parseColorInput(s.borderColor);
13746
13755
  const border = s.bordered ? `border border-${color}-200` : '';
13747
13756
  const shadow = ClxTableComponent._SHADOW_CLASS[s.shadow];
13748
13757
  return `overflow-x-auto overflow-y-hidden rounded-lg ${border} ${shadow}`.trim();
@@ -13869,7 +13878,7 @@ class ClxTableComponent {
13869
13878
  this.selectionChange.emit({ selected: this.selectedItems(), allSelected: false });
13870
13879
  }
13871
13880
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13872
- 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: `
13881
+ 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: `
13873
13882
  <!-- ── Toolbar: búsqueda ──────────────────────────────────────────────── -->
13874
13883
  @if (searchable() && !serverSide() && !loading() && _filteredData().length > 0) {
13875
13884
  <div class="mb-3 max-w-80 min-w-40">
@@ -14151,7 +14160,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
14151
14160
  changeDetection: ChangeDetectionStrategy.OnPush,
14152
14161
  host: { class: 'block' },
14153
14162
  }]
14154
- }], 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 }] }] } });
14163
+ }], 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 }] }] } });
14164
+
14165
+ /** Wraps the action buttons in a clx-table column (edit/delete/view/...) so every nested
14166
+ * clx-button defaults to the theme's secondaryColor instead of primaryColor, without each one
14167
+ * having to pass [color] by hand. Any button that DOES pass its own [color] (e.g. a one-off
14168
+ * danger action) still overrides this default — same override precedence as every other
14169
+ * per-instance color input in the library. */
14170
+ class ClxTableActionsComponent {
14171
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxTableActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14172
+ 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: [
14173
+ { provide: CLX_TABLE_ACTIONS_CONTEXT, useFactory: () => {
14174
+ const themeSvc = inject(ClxThemeService);
14175
+ return computed(() => themeSvc.config().secondaryColor);
14176
+ } },
14177
+ ], ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
14178
+ }
14179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxTableActionsComponent, decorators: [{
14180
+ type: Component,
14181
+ args: [{
14182
+ selector: 'clx-table-actions',
14183
+ standalone: true,
14184
+ template: `<ng-content />`,
14185
+ encapsulation: ViewEncapsulation.None,
14186
+ changeDetection: ChangeDetectionStrategy.OnPush,
14187
+ host: { class: 'flex items-center gap-2' },
14188
+ providers: [
14189
+ { provide: CLX_TABLE_ACTIONS_CONTEXT, useFactory: () => {
14190
+ const themeSvc = inject(ClxThemeService);
14191
+ return computed(() => themeSvc.config().secondaryColor);
14192
+ } },
14193
+ ],
14194
+ }]
14195
+ }] });
14155
14196
 
14156
14197
  class ClxPageNotFoundComponent {
14157
14198
  title = input('Página no encontrada', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
@@ -17016,5 +17057,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
17016
17057
  * Generated bundle index. Do not edit.
17017
17058
  */
17018
17059
 
17019
- 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 };
17060
+ 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 };
17020
17061
  //# sourceMappingURL=codexly-ui.mjs.map