codexly-ui 0.10.112 → 0.11.0

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.
@@ -627,6 +627,28 @@ class ClxThemeService {
627
627
  bordered: t?.bordered ?? true,
628
628
  };
629
629
  }, ...(ngDevMode ? [{ debugName: "paginationStyle" }] : /* istanbul ignore next */ []));
630
+ /** Resolved style for ClxNotificationComponent — severity colors fall back to built-in
631
+ * green/amber/sky/red, unreadColor to primaryColor, borderColor to listBorderColor then
632
+ * primaryColor, radius to the app-wide borderRadius. Per-instance inputs on clx-notification
633
+ * still take precedence over this theme-wide default. */
634
+ notificationStyle = computed(() => {
635
+ const n = this._config().notification;
636
+ return {
637
+ severityColors: {
638
+ success: n?.severityColors?.success ?? this._config().successColor,
639
+ warning: n?.severityColors?.warning ?? this._config().warningColor,
640
+ info: n?.severityColors?.info ?? 'sky',
641
+ error: n?.severityColors?.error ?? this._config().dangerColor,
642
+ },
643
+ unreadColor: n?.unreadColor ?? this._config().primaryColor,
644
+ size: n?.size ?? 'md',
645
+ borderColor: n?.borderColor ?? this._config().listBorderColor ?? this._config().primaryColor,
646
+ radius: n?.radius ?? this._config().borderRadius,
647
+ titleWeight: n?.titleWeight ?? 600,
648
+ detailColor: n?.detailColor,
649
+ groupLabelWeight: n?.groupLabelWeight ?? 700,
650
+ };
651
+ }, ...(ngDevMode ? [{ debugName: "notificationStyle" }] : /* istanbul ignore next */ []));
630
652
  /** Resolved text color for solid primary/secondary buttons — undefined means "let
631
653
  * resolveColor() auto-pick white/dark-800 based on shade", same as today. */
632
654
  buttonTextColor(role) {
@@ -11236,6 +11258,300 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
11236
11258
  }]
11237
11259
  }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], showClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClose", required: false }] }], confirmButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "confirmButton", required: false }] }], cancelButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "cancelButton", required: false }] }], showCancelButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCancelButton", required: false }] }], confirmClick: [{ type: i0.Output, args: ["confirmClick"] }], cancelClick: [{ type: i0.Output, args: ["cancelClick"] }] } });
11238
11260
 
11261
+ // ── Size map — same density-token shape as LIST_SIZE_MAP ──────────────────────
11262
+ const NOTIFICATION_SIZE_MAP = {
11263
+ sm: { row: 'py-2', iconWrap: 'w-7 h-7', iconSize: 'xs', title: 'text-xs', detail: 'text-[11px]', time: 'text-[10px]' },
11264
+ md: { row: 'py-2.5', iconWrap: 'w-8.5 h-8.5', iconSize: 'sm', title: 'text-[13px]', detail: 'text-xs', time: 'text-[11px]' },
11265
+ lg: { row: 'py-3', iconWrap: 'w-10 h-10', iconSize: 'md', title: 'text-sm', detail: 'text-[13px]', time: 'text-xs' },
11266
+ };
11267
+ // ── Default icon per severity — used when an item doesn't specify its own `icon` ──
11268
+ const NOTIFICATION_SEVERITY_ICON = {
11269
+ success: 'check_circle',
11270
+ warning: 'notifications_active',
11271
+ info: 'info',
11272
+ error: 'error',
11273
+ };
11274
+
11275
+ /** "Dumb" panel: renders whatever list of items it's given via `items()` and emits intent
11276
+ * (itemClick/markRead/markAllRead/delete/deleteAllRead) outward — it never fetches, persists,
11277
+ * or connects to a real-time source itself. Callers (e.g. codexly-app's NotificationService,
11278
+ * backed by SSE) own that and just feed the current list in. Meant to be projected inside
11279
+ * clx-drawer's body, same as any other content. */
11280
+ class ClxNotificationComponent {
11281
+ _themeSvc = inject(ClxThemeService);
11282
+ items = input.required(...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
11283
+ color = input(undefined, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
11284
+ size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
11285
+ itemClick = output();
11286
+ markRead = output();
11287
+ markAllRead = output();
11288
+ delete = output();
11289
+ deleteAllRead = output();
11290
+ _filter = signal('all', ...(ngDevMode ? [{ debugName: "_filter" }] : /* istanbul ignore next */ []));
11291
+ _style = this._themeSvc.notificationStyle;
11292
+ _color = computed(() => this.color() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
11293
+ _resolvedSize = computed(() => this.size() ?? this._style().size, ...(ngDevMode ? [{ debugName: "_resolvedSize" }] : /* istanbul ignore next */ []));
11294
+ _sizeTokens = computed(() => NOTIFICATION_SIZE_MAP[this._resolvedSize()], ...(ngDevMode ? [{ debugName: "_sizeTokens" }] : /* istanbul ignore next */ []));
11295
+ _unreadCount = computed(() => this.items().filter(i => !i.read).length, ...(ngDevMode ? [{ debugName: "_unreadCount" }] : /* istanbul ignore next */ []));
11296
+ _readCount = computed(() => this.items().filter(i => i.read).length, ...(ngDevMode ? [{ debugName: "_readCount" }] : /* istanbul ignore next */ []));
11297
+ _visibleItems = computed(() => this._filter() === 'unread' ? this.items().filter(i => !i.read) : this.items(), ...(ngDevMode ? [{ debugName: "_visibleItems" }] : /* istanbul ignore next */ []));
11298
+ _groups = computed(() => {
11299
+ const byLabel = new Map();
11300
+ for (const item of this._visibleItems()) {
11301
+ const label = this._dayLabel(item.createdAt);
11302
+ const bucket = byLabel.get(label);
11303
+ if (bucket)
11304
+ bucket.push(item);
11305
+ else
11306
+ byLabel.set(label, [item]);
11307
+ }
11308
+ return Array.from(byLabel, ([label, items]) => ({ label, items }));
11309
+ }, ...(ngDevMode ? [{ debugName: "_groups" }] : /* istanbul ignore next */ []));
11310
+ _wrapClass = computed(() => `flex flex-col ${resolveContainerRadius(this._style().radius)}`, ...(ngDevMode ? [{ debugName: "_wrapClass" }] : /* istanbul ignore next */ []));
11311
+ _groupLabelClass = computed(() => {
11312
+ const w = this._style().groupLabelWeight;
11313
+ return `px-1 pt-3 pb-1.5 text-[11px] uppercase tracking-wide text-clx-text-subtle font-[${w}]`;
11314
+ }, ...(ngDevMode ? [{ debugName: "_groupLabelClass" }] : /* istanbul ignore next */ []));
11315
+ _linkClass = computed(() => resolveColor(this._color()).textSubtle, ...(ngDevMode ? [{ debugName: "_linkClass" }] : /* istanbul ignore next */ []));
11316
+ _unreadRailClass = computed(() => resolveColor(this._style().unreadColor).bg, ...(ngDevMode ? [{ debugName: "_unreadRailClass" }] : /* istanbul ignore next */ []));
11317
+ _unreadDotClass = computed(() => `w-1.5 h-1.5 rounded-full shrink-0 ${resolveColor(this._style().unreadColor).bg}`, ...(ngDevMode ? [{ debugName: "_unreadDotClass" }] : /* istanbul ignore next */ []));
11318
+ _detailClass = computed(() => this._style().detailColor ? resolveColor(this._style().detailColor).textSubtle : 'text-clx-text-muted', ...(ngDevMode ? [{ debugName: "_detailClass" }] : /* istanbul ignore next */ []));
11319
+ _titleClass(item) {
11320
+ const weight = item.read ? 500 : this._style().titleWeight;
11321
+ return `text-clx-text-label font-[${weight}]`;
11322
+ }
11323
+ _iconWrapClass(item) {
11324
+ const c = resolveColor(this._severityColor(item.severity));
11325
+ return `flex items-center justify-center rounded-lg shrink-0 ${c.bgSubtle} ${c.textSubtle} ${this._sizeTokens().iconWrap}`;
11326
+ }
11327
+ _defaultIcon(severity) {
11328
+ return NOTIFICATION_SEVERITY_ICON[severity];
11329
+ }
11330
+ _open(item) {
11331
+ this.itemClick.emit(item);
11332
+ if (!item.read)
11333
+ this.markRead.emit(item.id);
11334
+ }
11335
+ _countBadgeClass(tab) {
11336
+ const active = this._filter() === tab;
11337
+ return active
11338
+ ? 'ml-0.5 text-[10px] font-bold tabular-nums'
11339
+ : 'ml-0.5 text-[10px] font-bold tabular-nums text-clx-text-subtle';
11340
+ }
11341
+ _severityColor(severity) {
11342
+ return this._style().severityColors[severity];
11343
+ }
11344
+ _dayLabel(iso) {
11345
+ const date = new Date(iso);
11346
+ const now = new Date();
11347
+ const startOf = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();
11348
+ const diffDays = Math.round((startOf(now) - startOf(date)) / 86_400_000);
11349
+ if (diffDays === 0)
11350
+ return 'Hoy';
11351
+ if (diffDays === 1)
11352
+ return 'Ayer';
11353
+ if (diffDays > 1 && diffDays < 7)
11354
+ return `Hace ${diffDays} días`;
11355
+ return date.toLocaleDateString('es-CO', { day: 'numeric', month: 'short' });
11356
+ }
11357
+ _timeOf(iso) {
11358
+ return new Date(iso).toLocaleTimeString('es-CO', { hour: '2-digit', minute: '2-digit' });
11359
+ }
11360
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11361
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxNotificationComponent, isStandalone: true, selector: "clx-notification", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", markRead: "markRead", markAllRead: "markAllRead", delete: "delete", deleteAllRead: "deleteAllRead" }, ngImport: i0, template: `
11362
+ <div [class]="_wrapClass()">
11363
+ <!-- Filter -->
11364
+ <div class="flex items-center gap-2 px-1 pb-3">
11365
+ <button clx-button type="button" size="xs" shape="pill"
11366
+ [variant]="_filter() === 'all' ? 'solid' : 'ghost'"
11367
+ [color]="_filter() === 'all' ? _color() : 'slate'"
11368
+ (click)="_filter.set('all')">
11369
+ Todas
11370
+ @if (items().length) {
11371
+ <span [class]="_countBadgeClass('all')">{{ items().length }}</span>
11372
+ }
11373
+ </button>
11374
+ <button clx-button type="button" size="xs" shape="pill"
11375
+ [variant]="_filter() === 'unread' ? 'solid' : 'ghost'"
11376
+ [color]="_filter() === 'unread' ? _color() : 'slate'"
11377
+ (click)="_filter.set('unread')">
11378
+ Sin leer
11379
+ @if (_unreadCount() > 0) {
11380
+ <span [class]="_countBadgeClass('unread')">{{ _unreadCount() }}</span>
11381
+ }
11382
+ </button>
11383
+ <div class="flex-1"></div>
11384
+ @if (_unreadCount() > 0) {
11385
+ <button type="button" class="text-xs font-semibold shrink-0" [class]="_linkClass()"
11386
+ (click)="markAllRead.emit()">
11387
+ Marcar todo leído
11388
+ </button>
11389
+ }
11390
+ @if (_readCount() > 0) {
11391
+ <button type="button" class="text-xs font-semibold shrink-0 text-clx-text-subtle hover:text-red-500"
11392
+ (click)="deleteAllRead.emit()">
11393
+ Eliminar leídas
11394
+ </button>
11395
+ }
11396
+ </div>
11397
+
11398
+ <!-- List -->
11399
+ @if (_groups().length) {
11400
+ <div class="flex flex-col">
11401
+ @for (group of _groups(); track group.label) {
11402
+ <p [class]="_groupLabelClass()">{{ group.label }}</p>
11403
+ @for (item of group.items; track item.id) {
11404
+ <div
11405
+ class="group relative flex items-start gap-3 px-1 rounded-lg cursor-pointer hover:bg-clx-surface-2 {{ _sizeTokens().row }}"
11406
+ role="button"
11407
+ tabindex="0"
11408
+ (click)="_open(item)"
11409
+ (keydown.enter)="_open(item)">
11410
+
11411
+ <span class="absolute left-0 top-1.5 bottom-1.5 w-[3px] rounded-full {{ item.read ? '' : _unreadRailClass() }}"></span>
11412
+
11413
+ <span [class]="_iconWrapClass(item)">
11414
+ <span clx-icon [name]="item.icon || _defaultIcon(item.severity)" [size]="_sizeTokens().iconSize"></span>
11415
+ </span>
11416
+
11417
+ <div class="flex-1 min-w-0 pl-1.5">
11418
+ <p class="flex items-baseline gap-1.5 {{ _sizeTokens().title }}" [class]="_titleClass(item)">
11419
+ @if (!item.read) {
11420
+ <span [class]="_unreadDotClass()"></span>
11421
+ }
11422
+ <span class="truncate">{{ item.title }}</span>
11423
+ </p>
11424
+ @if (item.detail) {
11425
+ <p class="mt-0.5 line-clamp-2 {{ _sizeTokens().detail }}" [class]="_detailClass()">{{ item.detail }}</p>
11426
+ }
11427
+ </div>
11428
+
11429
+ <div class="flex flex-col items-end gap-1 shrink-0 pl-2">
11430
+ <span class="text-clx-text-subtle tabular-nums {{ _sizeTokens().time }}">{{ _timeOf(item.createdAt) }}</span>
11431
+ <button type="button"
11432
+ class="opacity-0 group-hover:opacity-100 focus-visible:opacity-100 transition-opacity rounded-md p-0.5 text-clx-text-subtle hover:text-red-500 hover:bg-red-50 dark:hover:bg-red-950"
11433
+ aria-label="Eliminar notificación"
11434
+ (click)="$event.stopPropagation(); delete.emit(item.id)">
11435
+ <span clx-icon name="close" size="xs"></span>
11436
+ </button>
11437
+ </div>
11438
+ </div>
11439
+ }
11440
+ }
11441
+ </div>
11442
+ } @else {
11443
+ <div class="flex flex-col items-center justify-center gap-2 py-14 text-center">
11444
+ <span clx-icon name="notifications_off" size="xl" class="text-clx-text-subtle"></span>
11445
+ <p class="text-sm font-medium text-clx-text-label">
11446
+ {{ _filter() === 'unread' ? 'No tienes notificaciones sin leer' : 'No hay notificaciones' }}
11447
+ </p>
11448
+ </div>
11449
+ }
11450
+ </div>
11451
+ `, isInline: true, dependencies: [{ 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: ClxIconComponent, selector: "span[clx-icon]", inputs: ["name", "size", "color", "fill"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11452
+ }
11453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxNotificationComponent, decorators: [{
11454
+ type: Component,
11455
+ args: [{
11456
+ selector: 'clx-notification',
11457
+ standalone: true,
11458
+ imports: [ClxButtonComponent, ClxIconComponent],
11459
+ template: `
11460
+ <div [class]="_wrapClass()">
11461
+ <!-- Filter -->
11462
+ <div class="flex items-center gap-2 px-1 pb-3">
11463
+ <button clx-button type="button" size="xs" shape="pill"
11464
+ [variant]="_filter() === 'all' ? 'solid' : 'ghost'"
11465
+ [color]="_filter() === 'all' ? _color() : 'slate'"
11466
+ (click)="_filter.set('all')">
11467
+ Todas
11468
+ @if (items().length) {
11469
+ <span [class]="_countBadgeClass('all')">{{ items().length }}</span>
11470
+ }
11471
+ </button>
11472
+ <button clx-button type="button" size="xs" shape="pill"
11473
+ [variant]="_filter() === 'unread' ? 'solid' : 'ghost'"
11474
+ [color]="_filter() === 'unread' ? _color() : 'slate'"
11475
+ (click)="_filter.set('unread')">
11476
+ Sin leer
11477
+ @if (_unreadCount() > 0) {
11478
+ <span [class]="_countBadgeClass('unread')">{{ _unreadCount() }}</span>
11479
+ }
11480
+ </button>
11481
+ <div class="flex-1"></div>
11482
+ @if (_unreadCount() > 0) {
11483
+ <button type="button" class="text-xs font-semibold shrink-0" [class]="_linkClass()"
11484
+ (click)="markAllRead.emit()">
11485
+ Marcar todo leído
11486
+ </button>
11487
+ }
11488
+ @if (_readCount() > 0) {
11489
+ <button type="button" class="text-xs font-semibold shrink-0 text-clx-text-subtle hover:text-red-500"
11490
+ (click)="deleteAllRead.emit()">
11491
+ Eliminar leídas
11492
+ </button>
11493
+ }
11494
+ </div>
11495
+
11496
+ <!-- List -->
11497
+ @if (_groups().length) {
11498
+ <div class="flex flex-col">
11499
+ @for (group of _groups(); track group.label) {
11500
+ <p [class]="_groupLabelClass()">{{ group.label }}</p>
11501
+ @for (item of group.items; track item.id) {
11502
+ <div
11503
+ class="group relative flex items-start gap-3 px-1 rounded-lg cursor-pointer hover:bg-clx-surface-2 {{ _sizeTokens().row }}"
11504
+ role="button"
11505
+ tabindex="0"
11506
+ (click)="_open(item)"
11507
+ (keydown.enter)="_open(item)">
11508
+
11509
+ <span class="absolute left-0 top-1.5 bottom-1.5 w-[3px] rounded-full {{ item.read ? '' : _unreadRailClass() }}"></span>
11510
+
11511
+ <span [class]="_iconWrapClass(item)">
11512
+ <span clx-icon [name]="item.icon || _defaultIcon(item.severity)" [size]="_sizeTokens().iconSize"></span>
11513
+ </span>
11514
+
11515
+ <div class="flex-1 min-w-0 pl-1.5">
11516
+ <p class="flex items-baseline gap-1.5 {{ _sizeTokens().title }}" [class]="_titleClass(item)">
11517
+ @if (!item.read) {
11518
+ <span [class]="_unreadDotClass()"></span>
11519
+ }
11520
+ <span class="truncate">{{ item.title }}</span>
11521
+ </p>
11522
+ @if (item.detail) {
11523
+ <p class="mt-0.5 line-clamp-2 {{ _sizeTokens().detail }}" [class]="_detailClass()">{{ item.detail }}</p>
11524
+ }
11525
+ </div>
11526
+
11527
+ <div class="flex flex-col items-end gap-1 shrink-0 pl-2">
11528
+ <span class="text-clx-text-subtle tabular-nums {{ _sizeTokens().time }}">{{ _timeOf(item.createdAt) }}</span>
11529
+ <button type="button"
11530
+ class="opacity-0 group-hover:opacity-100 focus-visible:opacity-100 transition-opacity rounded-md p-0.5 text-clx-text-subtle hover:text-red-500 hover:bg-red-50 dark:hover:bg-red-950"
11531
+ aria-label="Eliminar notificación"
11532
+ (click)="$event.stopPropagation(); delete.emit(item.id)">
11533
+ <span clx-icon name="close" size="xs"></span>
11534
+ </button>
11535
+ </div>
11536
+ </div>
11537
+ }
11538
+ }
11539
+ </div>
11540
+ } @else {
11541
+ <div class="flex flex-col items-center justify-center gap-2 py-14 text-center">
11542
+ <span clx-icon name="notifications_off" size="xl" class="text-clx-text-subtle"></span>
11543
+ <p class="text-sm font-medium text-clx-text-label">
11544
+ {{ _filter() === 'unread' ? 'No tienes notificaciones sin leer' : 'No hay notificaciones' }}
11545
+ </p>
11546
+ </div>
11547
+ }
11548
+ </div>
11549
+ `,
11550
+ encapsulation: ViewEncapsulation.None,
11551
+ changeDetection: ChangeDetectionStrategy.OnPush,
11552
+ }]
11553
+ }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], markRead: [{ type: i0.Output, args: ["markRead"] }], markAllRead: [{ type: i0.Output, args: ["markAllRead"] }], delete: [{ type: i0.Output, args: ["delete"] }], deleteAllRead: [{ type: i0.Output, args: ["deleteAllRead"] }] } });
11554
+
11239
11555
  // ─── CDK overlay token (carries the resolved ref into the component) ──────────
11240
11556
  const CLX_ALERT_OPTIONS = new InjectionToken('CLX_ALERT_OPTIONS');
11241
11557
  const CLX_ALERT_RESOLVE = new InjectionToken('CLX_ALERT_RESOLVE');
@@ -12229,9 +12545,14 @@ class ClxPaginationComponent {
12229
12545
  // ── Inputs ─────────────────────────────────────────────────────────────────
12230
12546
  totalItems = input.required(...(ngDevMode ? [{ debugName: "totalItems" }] : /* istanbul ignore next */ []));
12231
12547
  color = input(undefined, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
12548
+ /** Wrapper border color — independent of `color` (the page-button/select accent). Falls back to
12549
+ * the theme's pagination.borderColor, NOT to `color`/primaryColor — a caller (like clx-table)
12550
+ * passing its own accent `[color]` must never silently override the border's own themed color. */
12551
+ borderColor = input(undefined, ...(ngDevMode ? [{ debugName: "borderColor" }] : /* istanbul ignore next */ []));
12232
12552
  shadow = input(undefined, ...(ngDevMode ? [{ debugName: "shadow" }] : /* istanbul ignore next */ []));
12233
12553
  bordered = input(undefined, ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
12234
12554
  _color = computed(() => this.color() ?? this._themeSvc.paginationStyle().color, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
12555
+ _borderColor = computed(() => this.borderColor() ?? this._themeSvc.paginationStyle().borderColor, ...(ngDevMode ? [{ debugName: "_borderColor" }] : /* istanbul ignore next */ []));
12235
12556
  _shadow = computed(() => this.shadow() ?? this._themeSvc.paginationStyle().shadow, ...(ngDevMode ? [{ debugName: "_shadow" }] : /* istanbul ignore next */ []));
12236
12557
  _bordered = computed(() => this.bordered() ?? this._themeSvc.paginationStyle().bordered, ...(ngDevMode ? [{ debugName: "_bordered" }] : /* istanbul ignore next */ []));
12237
12558
  size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
@@ -12369,8 +12690,7 @@ class ClxPaginationComponent {
12369
12690
  none: '', sm: 'shadow-sm', md: 'shadow-md', lg: 'shadow-lg', xl: 'shadow-xl',
12370
12691
  };
12371
12692
  _wrapClass = computed(() => {
12372
- const borderColorInput = this._themeSvc.paginationStyle().borderColor;
12373
- const { color } = parseColorInput(this.color() ? this._color() : borderColorInput);
12693
+ const { color } = parseColorInput(this._borderColor());
12374
12694
  const border = this._bordered() ? `border border-${color}-200` : '';
12375
12695
  const shadow = ClxPaginationComponent._SHADOW_CLASS[this._shadow()];
12376
12696
  return `flex flex-wrap items-center justify-between ${this._cfg().gap} bg-clx-surface rounded-lg ${border} ${shadow} px-4 py-3`.trim();
@@ -12393,7 +12713,7 @@ class ClxPaginationComponent {
12393
12713
  this.pageChange.emit({ page: clamped, pageSize: this.pageSize() });
12394
12714
  }
12395
12715
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12396
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxPaginationComponent, isStandalone: true, selector: "clx-pagination", inputs: { totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", 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 }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, showPageSize: { classPropertyName: "showPageSize", publicName: "showPageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentPage: "currentPageChange", pageSize: "pageSizeChange", pageChange: "pageChange", sizeChange: "sizeChange" }, host: { classAttribute: "block" }, ngImport: i0, template: `
12716
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxPaginationComponent, isStandalone: true, selector: "clx-pagination", inputs: { totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: true, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", 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 }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, showPageSize: { classPropertyName: "showPageSize", publicName: "showPageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, currentPage: { classPropertyName: "currentPage", publicName: "currentPage", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentPage: "currentPageChange", pageSize: "pageSizeChange", pageChange: "pageChange", sizeChange: "sizeChange" }, host: { classAttribute: "block" }, ngImport: i0, template: `
12397
12717
  <div [class]="_wrapClass()">
12398
12718
 
12399
12719
  <!-- ── Info: "1 - 5 de 25 registros" ─────────────────────────────────── -->
@@ -12612,7 +12932,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
12612
12932
  changeDetection: ChangeDetectionStrategy.OnPush,
12613
12933
  host: { class: 'block' },
12614
12934
  }]
12615
- }], ctorParameters: () => [], propDecorators: { totalItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalItems", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], shadow: [{ type: i0.Input, args: [{ isSignal: true, alias: "shadow", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], showPageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPageSize", required: false }] }], pageSizeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSizeOptions", required: false }] }], currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPage", required: false }] }, { type: i0.Output, args: ["currentPageChange"] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }, { type: i0.Output, args: ["pageSizeChange"] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], sizeChange: [{ type: i0.Output, args: ["sizeChange"] }] } });
12935
+ }], ctorParameters: () => [], propDecorators: { totalItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalItems", required: true }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", 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 }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], showPageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPageSize", required: false }] }], pageSizeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSizeOptions", required: false }] }], currentPage: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPage", required: false }] }, { type: i0.Output, args: ["currentPageChange"] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }, { type: i0.Output, args: ["pageSizeChange"] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], sizeChange: [{ type: i0.Output, args: ["sizeChange"] }] } });
12616
12936
 
12617
12937
  class ClxFilterPanelComponent {
12618
12938
  _themeSvc = inject(ClxThemeService);
@@ -14012,7 +14332,7 @@ class ClxTableComponent {
14012
14332
  </div>
14013
14333
  }
14014
14334
  }
14015
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClxCheckboxComponent, selector: "clx-checkbox", inputs: ["color", "variant", "size", "label", "value", "disabled"] }, { kind: "component", type: ClxInputComponent, selector: "clx-input", inputs: ["label", "placeholder", "type", "color", "hint", "prefixIcon", "suffixIcon", "prefixText", "suffixText", "status", "statusMessage", "size", "value", "disabled", "autocomplete"] }, { kind: "component", type: ClxSkeletonComponent, selector: "clx-skeleton", inputs: ["variant", "size", "width", "height"] }, { kind: "component", type: ClxIconComponent, selector: "span[clx-icon]", inputs: ["name", "size", "color", "fill"] }, { kind: "component", type: ClxPaginationComponent, selector: "clx-pagination", inputs: ["totalItems", "color", "shadow", "bordered", "size", "showPageSize", "pageSizeOptions", "currentPage", "pageSize"], outputs: ["currentPageChange", "pageSizeChange", "pageChange", "sizeChange"] }, { kind: "component", type: ClxPageEmptyComponent, selector: "clx-page-empty", inputs: ["icon", "heading", "description", "ctaLabel", "ctaIcon", "ctaColor"], outputs: ["cta"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
14335
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ClxCheckboxComponent, selector: "clx-checkbox", inputs: ["color", "variant", "size", "label", "value", "disabled"] }, { kind: "component", type: ClxInputComponent, selector: "clx-input", inputs: ["label", "placeholder", "type", "color", "hint", "prefixIcon", "suffixIcon", "prefixText", "suffixText", "status", "statusMessage", "size", "value", "disabled", "autocomplete"] }, { kind: "component", type: ClxSkeletonComponent, selector: "clx-skeleton", inputs: ["variant", "size", "width", "height"] }, { kind: "component", type: ClxIconComponent, selector: "span[clx-icon]", inputs: ["name", "size", "color", "fill"] }, { kind: "component", type: ClxPaginationComponent, selector: "clx-pagination", inputs: ["totalItems", "color", "borderColor", "shadow", "bordered", "size", "showPageSize", "pageSizeOptions", "currentPage", "pageSize"], outputs: ["currentPageChange", "pageSizeChange", "pageChange", "sizeChange"] }, { kind: "component", type: ClxPageEmptyComponent, selector: "clx-page-empty", inputs: ["icon", "heading", "description", "ctaLabel", "ctaIcon", "ctaColor"], outputs: ["cta"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
14016
14336
  }
14017
14337
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxTableComponent, decorators: [{
14018
14338
  type: Component,
@@ -15635,7 +15955,7 @@ class ClxWishlistComponent {
15635
15955
  }
15636
15956
 
15637
15957
  </div>
15638
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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"] }, { kind: "component", type: ClxSkeletonComponent, selector: "clx-skeleton", inputs: ["variant", "size", "width", "height"] }, { kind: "component", type: ClxPaginationComponent, selector: "clx-pagination", inputs: ["totalItems", "color", "shadow", "bordered", "size", "showPageSize", "pageSizeOptions", "currentPage", "pageSize"], outputs: ["currentPageChange", "pageSizeChange", "pageChange", "sizeChange"] }, { kind: "component", type: ClxInputComponent, selector: "clx-input", inputs: ["label", "placeholder", "type", "color", "hint", "prefixIcon", "suffixIcon", "prefixText", "suffixText", "status", "statusMessage", "size", "value", "disabled", "autocomplete"] }, { kind: "component", type: ClxSelectComponent, selector: "clx-select", inputs: ["label", "placeholder", "options", "multiple", "searchable", "searchPlaceholder", "activeColor", "size", "hint", "errorMessage", "disabled", "async", "loadOptions", "debounceMs", "minChars"] }, { kind: "directive", type: ClxTooltipDirective, selector: "[clxTooltip]", inputs: ["clxTooltip", "clxTooltipPosition", "clxTooltipColor", "clxTooltipSize", "clxTooltipDelay"] }, { kind: "component", type: ClxPageEmptyComponent, selector: "clx-page-empty", inputs: ["icon", "heading", "description", "ctaLabel", "ctaIcon", "ctaColor"], outputs: ["cta"] }, { kind: "pipe", type: CurrencyPipe, name: "currency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15958
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { 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"] }, { kind: "component", type: ClxSkeletonComponent, selector: "clx-skeleton", inputs: ["variant", "size", "width", "height"] }, { kind: "component", type: ClxPaginationComponent, selector: "clx-pagination", inputs: ["totalItems", "color", "borderColor", "shadow", "bordered", "size", "showPageSize", "pageSizeOptions", "currentPage", "pageSize"], outputs: ["currentPageChange", "pageSizeChange", "pageChange", "sizeChange"] }, { kind: "component", type: ClxInputComponent, selector: "clx-input", inputs: ["label", "placeholder", "type", "color", "hint", "prefixIcon", "suffixIcon", "prefixText", "suffixText", "status", "statusMessage", "size", "value", "disabled", "autocomplete"] }, { kind: "component", type: ClxSelectComponent, selector: "clx-select", inputs: ["label", "placeholder", "options", "multiple", "searchable", "searchPlaceholder", "activeColor", "size", "hint", "errorMessage", "disabled", "async", "loadOptions", "debounceMs", "minChars"] }, { kind: "directive", type: ClxTooltipDirective, selector: "[clxTooltip]", inputs: ["clxTooltip", "clxTooltipPosition", "clxTooltipColor", "clxTooltipSize", "clxTooltipDelay"] }, { kind: "component", type: ClxPageEmptyComponent, selector: "clx-page-empty", inputs: ["icon", "heading", "description", "ctaLabel", "ctaIcon", "ctaColor"], outputs: ["cta"] }, { kind: "pipe", type: CurrencyPipe, name: "currency" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15639
15959
  }
15640
15960
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxWishlistComponent, decorators: [{
15641
15961
  type: Component,
@@ -17061,5 +17381,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
17061
17381
  * Generated bundle index. Do not edit.
17062
17382
  */
17063
17383
 
17064
- 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 };
17384
+ 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, ClxNotificationComponent, 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 };
17065
17385
  //# sourceMappingURL=codexly-ui.mjs.map