codexly-ui 0.11.0 → 0.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codexly-ui",
3
- "version": "0.11.0",
3
+ "version": "0.11.2",
4
4
  "description": "Standalone, signal-based Angular UI component library for Codexly, styled with Tailwind CSS.",
5
5
  "keywords": [
6
6
  "angular",
@@ -1863,6 +1863,8 @@ interface ClxTabItem {
1863
1863
  label: string;
1864
1864
  icon?: string;
1865
1865
  disabled?: boolean;
1866
+ /** Optional count/label shown as a small pill next to the tab label — omit for no badge. */
1867
+ badge?: number | string;
1866
1868
  }
1867
1869
 
1868
1870
  declare class ClxWizardComponent implements AfterContentInit {
@@ -2464,44 +2466,50 @@ interface ClxNotificationItem {
2464
2466
  createdAt: string;
2465
2467
  /** Opaque payload the caller can use to navigate/act on itemClick — never read by the component. */
2466
2468
  actionUrl?: string;
2469
+ /** Opaque grouping key for the optional third tab (see ClxNotificationComponent's
2470
+ * categoryTab input) — e.g. "orders". The component never interprets this value, it only
2471
+ * matches it against categoryTab.id. */
2472
+ category?: string;
2467
2473
  }
2468
2474
 
2469
2475
  interface ClxNotificationGroup {
2470
2476
  label: string;
2471
2477
  items: ClxNotificationItem[];
2472
2478
  }
2473
- /** "Dumb" panel: renders whatever list of items it's given via `items()` and emits intent
2474
- * (itemClick/markRead/markAllRead/delete/deleteAllRead) outward it never fetches, persists,
2475
- * or connects to a real-time source itself. Callers (e.g. codexly-app's NotificationService,
2476
- * backed by SSE) own that and just feed the current list in. Meant to be projected inside
2477
- * clx-drawer's body, same as any other content. */
2479
+ /** Self-contained bell trigger + floating panel same overlay pattern as clx-profile (CDK
2480
+ * Overlay anchored to the trigger, no page-level backdrop), not a full-height clx-drawer. It's
2481
+ * "dumb" beyond that: renders whatever `items()` it's given and emits intent (itemClick/
2482
+ * markRead/delete/...) outward. Callers (e.g. a NotificationService backed by SSE) own fetching
2483
+ * and persistence this component never calls an API itself. */
2478
2484
  declare class ClxNotificationComponent {
2479
2485
  private readonly _themeSvc;
2480
2486
  readonly items: _angular_core.InputSignal<ClxNotificationItem[]>;
2481
2487
  readonly color: _angular_core.InputSignal<ClxColorInput | undefined>;
2482
- readonly size: _angular_core.InputSignal<ClxNotificationSize | undefined>;
2488
+ /** Optional third tab that filters items by ClxNotificationItem.category e.g.
2489
+ * `{ id: 'orders', label: 'Órdenes' }`. Omit for just Todas/Sin leer. */
2490
+ readonly categoryTab: _angular_core.InputSignal<{
2491
+ id: string;
2492
+ label: string;
2493
+ } | undefined>;
2483
2494
  readonly itemClick: _angular_core.OutputEmitterRef<ClxNotificationItem>;
2484
2495
  readonly markRead: _angular_core.OutputEmitterRef<string>;
2485
2496
  readonly markAllRead: _angular_core.OutputEmitterRef<void>;
2486
2497
  readonly delete: _angular_core.OutputEmitterRef<string>;
2487
2498
  readonly deleteAllRead: _angular_core.OutputEmitterRef<void>;
2488
- protected readonly _filter: _angular_core.WritableSignal<"all" | "unread">;
2489
- private readonly _style;
2499
+ protected readonly _style: _angular_core.Signal<codexly_ui.ClxResolvedNotificationStyle>;
2490
2500
  protected readonly _color: _angular_core.Signal<ClxColorInput>;
2491
- protected readonly _resolvedSize: _angular_core.Signal<ClxNotificationSize>;
2492
- protected readonly _sizeTokens: _angular_core.Signal<{
2493
- row: string;
2494
- iconWrap: string;
2495
- iconSize: codexly_ui.ClxSize;
2496
- title: string;
2497
- detail: string;
2498
- time: string;
2499
- }>;
2501
+ private readonly _sso;
2502
+ readonly _scrollStrategy: _angular_cdk_overlay.RepositionScrollStrategy;
2503
+ readonly _positions: ConnectedPosition[];
2504
+ protected readonly _isOpen: _angular_core.WritableSignal<boolean>;
2505
+ protected readonly _filter: _angular_core.WritableSignal<string>;
2506
+ protected readonly _ringClass: _angular_core.Signal<string>;
2507
+ protected readonly _panelClass: _angular_core.Signal<string>;
2500
2508
  protected readonly _unreadCount: _angular_core.Signal<number>;
2501
2509
  protected readonly _readCount: _angular_core.Signal<number>;
2510
+ protected readonly _tabs: _angular_core.Signal<ClxTabItem[]>;
2502
2511
  private readonly _visibleItems;
2503
2512
  protected readonly _groups: _angular_core.Signal<ClxNotificationGroup[]>;
2504
- protected readonly _wrapClass: _angular_core.Signal<string>;
2505
2513
  protected readonly _groupLabelClass: _angular_core.Signal<string>;
2506
2514
  protected readonly _linkClass: _angular_core.Signal<string>;
2507
2515
  protected readonly _unreadRailClass: _angular_core.Signal<string>;
@@ -2511,12 +2519,14 @@ declare class ClxNotificationComponent {
2511
2519
  protected _iconWrapClass(item: ClxNotificationItem): string;
2512
2520
  protected _defaultIcon(severity: ClxNotificationItem['severity']): string;
2513
2521
  protected _open(item: ClxNotificationItem): void;
2514
- protected _countBadgeClass(tab: 'all' | 'unread'): string;
2522
+ protected _toggle(): void;
2523
+ protected _close(): void;
2524
+ protected _onKeydown(event: KeyboardEvent): void;
2515
2525
  private _severityColor;
2516
2526
  private _dayLabel;
2517
2527
  protected _timeOf(iso: string): string;
2518
2528
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxNotificationComponent, never>;
2519
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxNotificationComponent, "clx-notification", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "markRead": "markRead"; "markAllRead": "markAllRead"; "delete": "delete"; "deleteAllRead": "deleteAllRead"; }, never, never, true, never>;
2529
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxNotificationComponent, "clx-notification", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "categoryTab": { "alias": "categoryTab"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "markRead": "markRead"; "markAllRead": "markAllRead"; "delete": "delete"; "deleteAllRead": "deleteAllRead"; }, never, never, true, never>;
2520
2530
  }
2521
2531
 
2522
2532
  declare class ClxAlertComponent implements OnInit, OnDestroy {
@@ -2686,6 +2696,7 @@ declare class ClxTabsComponent {
2686
2696
  protected readonly _clxColor: _angular_core.Signal<ClxColorInput>;
2687
2697
  protected readonly _panels: _angular_core.Signal<readonly ClxTabDirective[]>;
2688
2698
  protected readonly _underlineClass: _angular_core.Signal<string>;
2699
+ protected _badgeClass(tabId: string): string;
2689
2700
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClxTabsComponent, never>;
2690
2701
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClxTabsComponent, "clx-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "clxColor": { "alias": "clxColor"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; }, ["_panels"], never, true, never>;
2691
2702
  }