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.
- package/fesm2022/codexly-ui.mjs +327 -7
- package/fesm2022/codexly-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/codexly-ui.d.ts +132 -4
package/fesm2022/codexly-ui.mjs
CHANGED
|
@@ -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
|
|
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
|