ngx-com 0.0.21 → 0.1.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.
Files changed (114) hide show
  1. package/README.md +137 -33
  2. package/fesm2022/ngx-com-components-alert.mjs +21 -11
  3. package/fesm2022/ngx-com-components-alert.mjs.map +1 -1
  4. package/fesm2022/ngx-com-components-avatar.mjs +9 -7
  5. package/fesm2022/ngx-com-components-avatar.mjs.map +1 -1
  6. package/fesm2022/ngx-com-components-button.mjs +1 -1
  7. package/fesm2022/ngx-com-components-button.mjs.map +1 -1
  8. package/fesm2022/ngx-com-components-calendar.mjs +27 -3112
  9. package/fesm2022/ngx-com-components-calendar.mjs.map +1 -1
  10. package/fesm2022/ngx-com-components-card.mjs +8 -8
  11. package/fesm2022/ngx-com-components-card.mjs.map +1 -1
  12. package/fesm2022/ngx-com-components-carousel.mjs +16 -4
  13. package/fesm2022/ngx-com-components-carousel.mjs.map +1 -1
  14. package/fesm2022/ngx-com-components-checkbox.mjs +1 -1
  15. package/fesm2022/ngx-com-components-checkbox.mjs.map +1 -1
  16. package/fesm2022/ngx-com-components-code-block.mjs +9 -9
  17. package/fesm2022/ngx-com-components-code-block.mjs.map +1 -1
  18. package/fesm2022/ngx-com-components-collapsible.mjs +15 -13
  19. package/fesm2022/ngx-com-components-collapsible.mjs.map +1 -1
  20. package/fesm2022/ngx-com-components-confirm.mjs +4 -4
  21. package/fesm2022/ngx-com-components-confirm.mjs.map +1 -1
  22. package/fesm2022/ngx-com-components-datepicker.mjs +2334 -0
  23. package/fesm2022/ngx-com-components-datepicker.mjs.map +1 -0
  24. package/fesm2022/ngx-com-components-dialog.mjs +47 -45
  25. package/fesm2022/ngx-com-components-dialog.mjs.map +1 -1
  26. package/fesm2022/ngx-com-components-dropdown.mjs +446 -340
  27. package/fesm2022/ngx-com-components-dropdown.mjs.map +1 -1
  28. package/fesm2022/ngx-com-components-empty-state.mjs +5 -3
  29. package/fesm2022/ngx-com-components-empty-state.mjs.map +1 -1
  30. package/fesm2022/ngx-com-components-form-field.mjs +11 -6
  31. package/fesm2022/ngx-com-components-form-field.mjs.map +1 -1
  32. package/fesm2022/ngx-com-components-icon-lucide.mjs +41 -0
  33. package/fesm2022/ngx-com-components-icon-lucide.mjs.map +1 -0
  34. package/fesm2022/ngx-com-components-icon.mjs +89 -61
  35. package/fesm2022/ngx-com-components-icon.mjs.map +1 -1
  36. package/fesm2022/ngx-com-components-item.mjs +14 -4
  37. package/fesm2022/ngx-com-components-item.mjs.map +1 -1
  38. package/fesm2022/ngx-com-components-menu.mjs +61 -69
  39. package/fesm2022/ngx-com-components-menu.mjs.map +1 -1
  40. package/fesm2022/ngx-com-components-native-control.mjs +170 -0
  41. package/fesm2022/ngx-com-components-native-control.mjs.map +1 -0
  42. package/fesm2022/ngx-com-components-paginator.mjs +11 -3
  43. package/fesm2022/ngx-com-components-paginator.mjs.map +1 -1
  44. package/fesm2022/ngx-com-components-popover.mjs +58 -33
  45. package/fesm2022/ngx-com-components-popover.mjs.map +1 -1
  46. package/fesm2022/ngx-com-components-radio.mjs +4 -4
  47. package/fesm2022/ngx-com-components-radio.mjs.map +1 -1
  48. package/fesm2022/ngx-com-components-segmented-control.mjs +6 -4
  49. package/fesm2022/ngx-com-components-segmented-control.mjs.map +1 -1
  50. package/fesm2022/ngx-com-components-sort.mjs +63 -57
  51. package/fesm2022/ngx-com-components-sort.mjs.map +1 -1
  52. package/fesm2022/ngx-com-components-spinner.mjs +6 -6
  53. package/fesm2022/ngx-com-components-spinner.mjs.map +1 -1
  54. package/fesm2022/ngx-com-components-switch.mjs +18 -9
  55. package/fesm2022/ngx-com-components-switch.mjs.map +1 -1
  56. package/fesm2022/ngx-com-components-table.mjs +23 -9
  57. package/fesm2022/ngx-com-components-table.mjs.map +1 -1
  58. package/fesm2022/ngx-com-components-tabs.mjs +81 -58
  59. package/fesm2022/ngx-com-components-tabs.mjs.map +1 -1
  60. package/fesm2022/ngx-com-components-timepicker.mjs +1048 -0
  61. package/fesm2022/ngx-com-components-timepicker.mjs.map +1 -0
  62. package/fesm2022/ngx-com-components-toast.mjs +18 -14
  63. package/fesm2022/ngx-com-components-toast.mjs.map +1 -1
  64. package/fesm2022/ngx-com-components-tooltip.mjs +5 -5
  65. package/fesm2022/ngx-com-components-tooltip.mjs.map +1 -1
  66. package/fesm2022/ngx-com-components.mjs +0 -13
  67. package/fesm2022/ngx-com-components.mjs.map +1 -1
  68. package/fesm2022/ngx-com-tokens.mjs +0 -8
  69. package/fesm2022/ngx-com-tokens.mjs.map +1 -1
  70. package/fesm2022/ngx-com-utils.mjs +13 -1
  71. package/fesm2022/ngx-com-utils.mjs.map +1 -1
  72. package/fesm2022/ngx-com.mjs +1 -1
  73. package/fesm2022/ngx-com.mjs.map +1 -1
  74. package/package.json +51 -8
  75. package/styles/animations.css +38 -0
  76. package/styles/candy.css +121 -0
  77. package/styles/dark.css +159 -0
  78. package/styles/forest.css +117 -0
  79. package/styles/ocean.css +117 -0
  80. package/styles/themes.css +7 -0
  81. package/styles/tokens.css +277 -0
  82. package/styles/utilities.css +16 -0
  83. package/types/ngx-com-components-alert.d.ts +14 -4
  84. package/types/ngx-com-components-avatar.d.ts +2 -0
  85. package/types/ngx-com-components-calendar.d.ts +3 -747
  86. package/types/ngx-com-components-card.d.ts +2 -2
  87. package/types/ngx-com-components-carousel.d.ts +11 -1
  88. package/types/ngx-com-components-code-block.d.ts +4 -4
  89. package/types/ngx-com-components-collapsible.d.ts +10 -2
  90. package/types/ngx-com-components-confirm.d.ts +2 -2
  91. package/types/ngx-com-components-datepicker.d.ts +623 -0
  92. package/types/ngx-com-components-dialog.d.ts +5 -2
  93. package/types/ngx-com-components-dropdown.d.ts +22 -4
  94. package/types/ngx-com-components-empty-state.d.ts +2 -0
  95. package/types/ngx-com-components-form-field.d.ts +4 -1
  96. package/types/ngx-com-components-icon-lucide.d.ts +32 -0
  97. package/types/ngx-com-components-icon.d.ts +49 -35
  98. package/types/ngx-com-components-item.d.ts +12 -2
  99. package/types/ngx-com-components-menu.d.ts +38 -38
  100. package/types/ngx-com-components-native-control.d.ts +99 -0
  101. package/types/ngx-com-components-paginator.d.ts +2 -0
  102. package/types/ngx-com-components-popover.d.ts +19 -12
  103. package/types/ngx-com-components-segmented-control.d.ts +3 -1
  104. package/types/ngx-com-components-sort.d.ts +13 -10
  105. package/types/ngx-com-components-switch.d.ts +7 -2
  106. package/types/ngx-com-components-table.d.ts +16 -2
  107. package/types/ngx-com-components-tabs.d.ts +46 -34
  108. package/types/ngx-com-components-timepicker.d.ts +273 -0
  109. package/types/ngx-com-components-toast.d.ts +4 -2
  110. package/types/ngx-com-components-tooltip.d.ts +1 -1
  111. package/types/ngx-com-components.d.ts +6 -7
  112. package/types/ngx-com-tokens.d.ts +5 -3
  113. package/types/ngx-com-utils.d.ts +11 -1
  114. package/types/ngx-com.d.ts +1 -1
@@ -11,7 +11,7 @@ interface RootMenuTrigger {
11
11
  close(): void;
12
12
  /** Whether to close the menu when an item is selected. */
13
13
  menuCloseOnSelect(): boolean;
14
- /** Called by MenuComponent to register itself when attached. */
14
+ /** Called by ComMenuComponent to register itself when attached. */
15
15
  registerMenu?(menu: MenuRef): void;
16
16
  }
17
17
  /**
@@ -47,7 +47,7 @@ type MenuAlignment = 'start' | 'center' | 'end';
47
47
  /**
48
48
  * Menu panel styling variants.
49
49
  *
50
- * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-lg`, `--radius-popover`
50
+ * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-overlay`, `--radius-popover`
51
51
  */
52
52
  declare const menuPanelVariants: ReturnType<typeof cva<{
53
53
  size: Record<MenuSize, string>;
@@ -101,7 +101,7 @@ type MenuSide = 'left' | 'right';
101
101
  * **Root context** (outside a menu): Opens on click, has backdrop.
102
102
  * **Submenu context** (inside a menu): Opens on hover/ArrowRight, no backdrop.
103
103
  *
104
- * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-lg`
104
+ * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-overlay`
105
105
  *
106
106
  * @example Root trigger
107
107
  * ```html
@@ -122,7 +122,7 @@ type MenuSide = 'left' | 'right';
122
122
  * </button>
123
123
  * ```
124
124
  */
125
- declare class MenuTriggerDirective implements RootMenuTrigger {
125
+ declare class ComMenuTrigger implements RootMenuTrigger {
126
126
  private readonly overlay;
127
127
  private readonly elementRef;
128
128
  private readonly viewContainerRef;
@@ -178,7 +178,7 @@ declare class MenuTriggerDirective implements RootMenuTrigger {
178
178
  close(): void;
179
179
  /** Toggle the menu open/close state. */
180
180
  toggle(): void;
181
- /** Called by MenuComponent to register itself when attached. */
181
+ /** Called by ComMenuComponent to register itself when attached. */
182
182
  registerMenu(menu: MenuRef): void;
183
183
  protected onClick(event: Event): void;
184
184
  protected onArrowDown(event: Event): void;
@@ -205,15 +205,15 @@ declare class MenuTriggerDirective implements RootMenuTrigger {
205
205
  private cancelCloseTimer;
206
206
  private disposeOverlay;
207
207
  private cleanupSubmenuListeners;
208
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuTriggerDirective, never>;
209
- static ɵdir: i0.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[comMenuTrigger]", ["comMenuTrigger"], { "comMenuTrigger": { "alias": "comMenuTrigger"; "required": true; "isSignal": true; }; "menuPosition": { "alias": "menuPosition"; "required": false; "isSignal": true; }; "menuAlignment": { "alias": "menuAlignment"; "required": false; "isSignal": true; }; "menuOffset": { "alias": "menuOffset"; "required": false; "isSignal": true; }; "menuDisabled": { "alias": "menuDisabled"; "required": false; "isSignal": true; }; "menuOpen": { "alias": "menuOpen"; "required": false; "isSignal": true; }; "menuPanelClass": { "alias": "menuPanelClass"; "required": false; "isSignal": true; }; "menuCloseOnSelect": { "alias": "menuCloseOnSelect"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "subMenuOpenDelay": { "alias": "subMenuOpenDelay"; "required": false; "isSignal": true; }; "subMenuCloseDelay": { "alias": "subMenuCloseDelay"; "required": false; "isSignal": true; }; }, { "menuOpen": "menuOpenChange"; "menuOpened": "menuOpened"; "menuClosed": "menuClosed"; }, never, never, true, never>;
208
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuTrigger, never>;
209
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComMenuTrigger, "[comMenuTrigger]", ["comMenuTrigger"], { "comMenuTrigger": { "alias": "comMenuTrigger"; "required": true; "isSignal": true; }; "menuPosition": { "alias": "menuPosition"; "required": false; "isSignal": true; }; "menuAlignment": { "alias": "menuAlignment"; "required": false; "isSignal": true; }; "menuOffset": { "alias": "menuOffset"; "required": false; "isSignal": true; }; "menuDisabled": { "alias": "menuDisabled"; "required": false; "isSignal": true; }; "menuOpen": { "alias": "menuOpen"; "required": false; "isSignal": true; }; "menuPanelClass": { "alias": "menuPanelClass"; "required": false; "isSignal": true; }; "menuCloseOnSelect": { "alias": "menuCloseOnSelect"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "subMenuOpenDelay": { "alias": "subMenuOpenDelay"; "required": false; "isSignal": true; }; "subMenuCloseDelay": { "alias": "subMenuCloseDelay"; "required": false; "isSignal": true; }; }, { "menuOpen": "menuOpenChange"; "menuOpened": "menuOpened"; "menuClosed": "menuClosed"; }, never, never, true, never>;
210
210
  }
211
211
 
212
212
  /**
213
213
  * Base class for focusable menu items.
214
214
  * All item directives must implement this interface for FocusKeyManager.
215
215
  */
216
- declare abstract class MenuItemBase implements FocusableOption {
216
+ declare abstract class ComMenuItemBase implements FocusableOption {
217
217
  abstract focus(): void;
218
218
  abstract getLabel(): string;
219
219
  /** Whether the item is disabled. */
@@ -223,7 +223,7 @@ declare abstract class MenuItemBase implements FocusableOption {
223
223
  * Menu panel component that renders inside an overlay.
224
224
  * Manages keyboard navigation across its items using CDK FocusKeyManager.
225
225
  *
226
- * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-lg`
226
+ * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-overlay`
227
227
  *
228
228
  * @example
229
229
  * ```html
@@ -233,7 +233,7 @@ declare abstract class MenuItemBase implements FocusableOption {
233
233
  * </com-menu>
234
234
  * ```
235
235
  */
236
- declare class MenuComponent implements MenuRef {
236
+ declare class ComMenuComponent implements MenuRef {
237
237
  private readonly rootTrigger;
238
238
  private keyManager;
239
239
  /** Size variant for the menu panel. */
@@ -257,8 +257,8 @@ declare class MenuComponent implements MenuRef {
257
257
  /** Close this menu level. */
258
258
  close(): void;
259
259
  protected onKeydown(event: KeyboardEvent): void;
260
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
261
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "com-menu", never, { "menuSize": { "alias": "menuSize"; "required": false; "isSignal": true; }; "menuVariant": { "alias": "menuVariant"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; }, {}, ["items"], ["*"], true, never>;
260
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuComponent, never>;
261
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComMenuComponent, "com-menu", never, { "menuSize": { "alias": "menuSize"; "required": false; "isSignal": true; }; "menuVariant": { "alias": "menuVariant"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; }, {}, ["items"], ["*"], true, never>;
262
262
  }
263
263
 
264
264
  /**
@@ -274,7 +274,7 @@ declare class MenuComponent implements MenuRef {
274
274
  * <button comMenuItem destructive>Delete</button>
275
275
  * ```
276
276
  */
277
- declare class MenuItemDirective extends MenuItemBase {
277
+ declare class ComMenuItem extends ComMenuItemBase {
278
278
  private readonly elementRef;
279
279
  private readonly menu;
280
280
  private readonly rootTrigger;
@@ -293,8 +293,8 @@ declare class MenuItemDirective extends MenuItemBase {
293
293
  protected onAction(event: Event): void;
294
294
  protected onMouseEnter(): void;
295
295
  protected onMouseLeave(): void;
296
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemDirective, never>;
297
- static ɵdir: i0.ɵɵDirectiveDeclaration<MenuItemDirective, "[comMenuItem]", ["comMenuItem"], { "menuItemDisabled": { "alias": "menuItemDisabled"; "required": false; "isSignal": true; }; "destructive": { "alias": "destructive"; "required": false; "isSignal": true; }; }, { "menuItemSelect": "menuItemSelect"; }, never, never, true, never>;
296
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuItem, never>;
297
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComMenuItem, "[comMenuItem]", ["comMenuItem"], { "menuItemDisabled": { "alias": "menuItemDisabled"; "required": false; "isSignal": true; }; "destructive": { "alias": "destructive"; "required": false; "isSignal": true; }; }, { "menuItemSelect": "menuItemSelect"; }, never, never, true, never>;
298
298
  }
299
299
 
300
300
  /**
@@ -307,7 +307,7 @@ declare class MenuItemDirective extends MenuItemBase {
307
307
  * <button comMenuItemCheckbox [(checked)]="showSidebar">Sidebar</button>
308
308
  * ```
309
309
  */
310
- declare class MenuItemCheckboxComponent extends MenuItemBase {
310
+ declare class ComMenuItemCheckbox extends ComMenuItemBase {
311
311
  private readonly elementRef;
312
312
  private readonly menu;
313
313
  /** Disables the item. */
@@ -324,8 +324,8 @@ declare class MenuItemCheckboxComponent extends MenuItemBase {
324
324
  protected toggle(event: Event): void;
325
325
  protected onMouseEnter(): void;
326
326
  protected onMouseLeave(): void;
327
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemCheckboxComponent, never>;
328
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemCheckboxComponent, "[comMenuItemCheckbox]", ["comMenuItemCheckbox"], { "menuItemDisabled": { "alias": "menuItemDisabled"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, ["*"], true, never>;
327
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuItemCheckbox, never>;
328
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComMenuItemCheckbox, "[comMenuItemCheckbox]", ["comMenuItemCheckbox"], { "menuItemDisabled": { "alias": "menuItemDisabled"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, ["*"], true, never>;
329
329
  }
330
330
 
331
331
  /**
@@ -341,7 +341,7 @@ declare class MenuItemCheckboxComponent extends MenuItemBase {
341
341
  * </div>
342
342
  * ```
343
343
  */
344
- declare class MenuItemRadioComponent extends MenuItemBase {
344
+ declare class ComMenuItemRadio extends ComMenuItemBase {
345
345
  private readonly elementRef;
346
346
  private readonly menu;
347
347
  private readonly rootTrigger;
@@ -362,14 +362,14 @@ declare class MenuItemRadioComponent extends MenuItemBase {
362
362
  protected select(event: Event): void;
363
363
  protected onMouseEnter(): void;
364
364
  protected onMouseLeave(): void;
365
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemRadioComponent, never>;
366
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemRadioComponent, "[comMenuItemRadio]", ["comMenuItemRadio"], { "menuItemDisabled": { "alias": "menuItemDisabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
365
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuItemRadio, never>;
366
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComMenuItemRadio, "[comMenuItemRadio]", ["comMenuItemRadio"], { "menuItemDisabled": { "alias": "menuItemDisabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
367
367
  }
368
368
 
369
369
  /**
370
370
  * Token for menu group to allow radio items to coordinate.
371
371
  */
372
- declare abstract class MenuGroupRef {
372
+ declare abstract class ComMenuGroupRef {
373
373
  abstract readonly groupValue: () => unknown;
374
374
  abstract setGroupValue(value: unknown): void;
375
375
  }
@@ -387,14 +387,14 @@ declare abstract class MenuGroupRef {
387
387
  *
388
388
  * @tokens None - uses only ARIA attributes
389
389
  */
390
- declare class MenuGroupDirective extends MenuGroupRef {
390
+ declare class ComMenuGroup extends ComMenuGroupRef {
391
391
  /** Optional accessible label for the group. */
392
392
  readonly ariaLabel: InputSignal<string | null>;
393
393
  /** Two-way bindable value for radio groups. */
394
394
  readonly groupValue: ModelSignal<unknown>;
395
395
  setGroupValue(value: unknown): void;
396
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuGroupDirective, never>;
397
- static ɵdir: i0.ɵɵDirectiveDeclaration<MenuGroupDirective, "[comMenuGroup]", ["comMenuGroup"], { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "groupValue": { "alias": "groupValue"; "required": false; "isSignal": true; }; }, { "groupValue": "groupValueChange"; }, never, never, true, never>;
396
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuGroup, never>;
397
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComMenuGroup, "[comMenuGroup]", ["comMenuGroup"], { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "groupValue": { "alias": "groupValue"; "required": false; "isSignal": true; }; }, { "groupValue": "groupValueChange"; }, never, never, true, never>;
398
398
  }
399
399
 
400
400
  /**
@@ -408,14 +408,14 @@ declare class MenuGroupDirective extends MenuGroupRef {
408
408
  * <button comMenuItem>View Members</button>
409
409
  * ```
410
410
  */
411
- declare class MenuLabelDirective {
411
+ declare class ComMenuLabel {
412
412
  private readonly menu;
413
413
  /** Unique ID that can be referenced by aria-labelledby. */
414
414
  readonly labelId: string;
415
415
  private readonly size;
416
416
  protected readonly labelClasses: Signal<string>;
417
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuLabelDirective, never>;
418
- static ɵdir: i0.ɵɵDirectiveDeclaration<MenuLabelDirective, "[comMenuLabel]", ["comMenuLabel"], {}, {}, never, never, true, never>;
417
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuLabel, never>;
418
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComMenuLabel, "[comMenuLabel]", ["comMenuLabel"], {}, {}, never, never, true, never>;
419
419
  }
420
420
 
421
421
  /**
@@ -430,9 +430,9 @@ declare class MenuLabelDirective {
430
430
  * <button comMenuItem>Delete</button>
431
431
  * ```
432
432
  */
433
- declare class MenuDividerDirective {
434
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuDividerDirective, never>;
435
- static ɵdir: i0.ɵɵDirectiveDeclaration<MenuDividerDirective, "[comMenuDivider]", ["comMenuDivider"], {}, {}, never, never, true, never>;
433
+ declare class ComMenuDivider {
434
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuDivider, never>;
435
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComMenuDivider, "[comMenuDivider]", ["comMenuDivider"], {}, {}, never, never, true, never>;
436
436
  }
437
437
 
438
438
  /**
@@ -449,9 +449,9 @@ declare class MenuDividerDirective {
449
449
  * </button>
450
450
  * ```
451
451
  */
452
- declare class MenuSubIndicatorComponent {
453
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuSubIndicatorComponent, never>;
454
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuSubIndicatorComponent, "com-menu-sub-indicator", never, {}, {}, never, never, true, never>;
452
+ declare class ComMenuSubIndicator {
453
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuSubIndicator, never>;
454
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComMenuSubIndicator, "com-menu-sub-indicator", never, {}, {}, never, never, true, never>;
455
455
  }
456
456
 
457
457
  /**
@@ -467,13 +467,13 @@ declare class MenuSubIndicatorComponent {
467
467
  * </button>
468
468
  * ```
469
469
  */
470
- declare class MenuShortcutDirective {
470
+ declare class ComMenuShortcut {
471
471
  private readonly menu;
472
472
  private readonly size;
473
473
  protected readonly shortcutClasses: Signal<string>;
474
- static ɵfac: i0.ɵɵFactoryDeclaration<MenuShortcutDirective, never>;
475
- static ɵdir: i0.ɵɵDirectiveDeclaration<MenuShortcutDirective, "[comMenuShortcut]", ["comMenuShortcut"], {}, {}, never, never, true, never>;
474
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComMenuShortcut, never>;
475
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComMenuShortcut, "[comMenuShortcut]", ["comMenuShortcut"], {}, {}, never, never, true, never>;
476
476
  }
477
477
 
478
- export { MENU_REF, MenuComponent, MenuDividerDirective, MenuGroupDirective, MenuGroupRef, MenuItemBase, MenuItemCheckboxComponent, MenuItemDirective, MenuItemRadioComponent, MenuLabelDirective, MenuShortcutDirective, MenuSubIndicatorComponent, MenuTriggerDirective, ROOT_MENU_TRIGGER, menuCheckIndicatorVariants, menuItemVariants, menuLabelVariants, menuPanelVariants, menuShortcutVariants };
478
+ export { ComMenuComponent, ComMenuDivider, ComMenuGroup, ComMenuGroupRef, ComMenuItem, ComMenuItemBase, ComMenuItemCheckbox, ComMenuItemRadio, ComMenuLabel, ComMenuShortcut, ComMenuSubIndicator, ComMenuTrigger, MENU_REF, ROOT_MENU_TRIGGER, menuCheckIndicatorVariants, menuItemVariants, menuLabelVariants, menuPanelVariants, menuShortcutVariants };
479
479
  export type { MenuAlignment, MenuCheckIndicatorVariants, MenuItemVariants, MenuLabelVariants, MenuPanelVariants, MenuPosition, MenuRef, MenuShortcutVariants, MenuSide, MenuSize, MenuVariant, RootMenuTrigger };
@@ -0,0 +1,99 @@
1
+ import * as i0 from '@angular/core';
2
+ import { DoCheck, InputSignal, InputSignalWithTransform, Signal } from '@angular/core';
3
+ import { NgControl } from '@angular/forms';
4
+ import { ErrorStateMatcher } from 'ngx-com/components/form-field';
5
+ import { VariantProps } from 'class-variance-authority';
6
+
7
+ /**
8
+ * Size type for native control.
9
+ */
10
+ type NativeControlSize = 'sm' | 'default' | 'lg';
11
+ /**
12
+ * Visual variant for native control.
13
+ */
14
+ type NativeControlVariant = 'outline' | 'filled' | 'ghost';
15
+ /**
16
+ * CVA variants for the native control directive.
17
+ *
18
+ * @tokens `--color-input-border`, `--color-input-background`, `--color-input-foreground`,
19
+ * `--color-input-placeholder`, `--color-disabled`, `--color-disabled-foreground`,
20
+ * `--color-ring`, `--color-warn`, `--color-muted`, `--color-border`,
21
+ * `--radius-input`
22
+ */
23
+ declare const nativeControlVariants: (props?: {
24
+ variant?: NativeControlVariant;
25
+ size?: NativeControlSize;
26
+ error?: boolean;
27
+ }) => string;
28
+ type NativeControlVariants = VariantProps<typeof nativeControlVariants>;
29
+
30
+ /**
31
+ * Standalone styling directive for native `<input>`, `<select>`, and `<textarea>` elements.
32
+ *
33
+ * Applies consistent borders, background, text color, focus outline, disabled state,
34
+ * error state, and size scaling via CVA. Integrates with both Reactive Forms (via NgControl)
35
+ * and Signal Forms (via `invalid`/`touched` inputs set by `[formField]`).
36
+ *
37
+ * For full form integration (label, hint, error), use `com-form-field` + `comInput`.
38
+ *
39
+ * @tokens `--color-input-border`, `--color-input-background`, `--color-input-foreground`,
40
+ * `--color-input-placeholder`, `--color-disabled`, `--color-disabled-foreground`,
41
+ * `--color-ring`, `--color-warn`, `--color-muted`, `--color-border`,
42
+ * `--radius-input`
43
+ *
44
+ * @example Basic usage
45
+ * ```html
46
+ * <input comNativeControl placeholder="Enter your name" />
47
+ * ```
48
+ *
49
+ * @example Variants
50
+ * ```html
51
+ * <input comNativeControl variant="outline" placeholder="Outline (default)" />
52
+ * <input comNativeControl variant="filled" placeholder="Filled" />
53
+ * <input comNativeControl variant="ghost" placeholder="Ghost" />
54
+ * ```
55
+ *
56
+ * @example Reactive Forms
57
+ * ```html
58
+ * <input comNativeControl [formControl]="nameCtrl" />
59
+ * ```
60
+ *
61
+ * @example Signal Forms
62
+ * ```html
63
+ * <input comNativeControl [formField]="myForm.name" />
64
+ * ```
65
+ */
66
+ declare class ComNativeControl implements DoCheck {
67
+ private readonly defaultErrorStateMatcher;
68
+ private readonly parentForm;
69
+ private readonly parentFormGroup;
70
+ /** NgControl bound to this element (if using reactive forms). */
71
+ readonly ngControl: NgControl | null;
72
+ /** Whether the form system is Signal Forms (no NgControl present). */
73
+ private readonly isSignalForms;
74
+ /** Visual variant — outline (bordered), filled (bg fill), or ghost (transparent) */
75
+ readonly variant: InputSignal<NativeControlVariant>;
76
+ /** Control size — affects height, padding, and font size */
77
+ readonly size: InputSignal<NativeControlSize>;
78
+ /** Consumer CSS classes — merged with variant classes via mergeClasses() */
79
+ readonly userClass: InputSignal<string>;
80
+ /** Custom error state matcher (overrides the default). */
81
+ readonly errorStateMatcher: InputSignal<ErrorStateMatcher | undefined>;
82
+ readonly sfInvalid: InputSignalWithTransform<boolean, unknown>;
83
+ readonly sfTouched: InputSignalWithTransform<boolean, unknown>;
84
+ /**
85
+ * Reactive Forms error state — imperatively updated in DoCheck because
86
+ * NgControl properties (touched, invalid) are not signals.
87
+ */
88
+ private readonly _reactiveErrorState;
89
+ /** Whether the control is in an error state. */
90
+ readonly errorState: Signal<boolean>;
91
+ /** @internal Computed host class from CVA + consumer overrides */
92
+ protected readonly computedClass: Signal<string>;
93
+ ngDoCheck(): void;
94
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComNativeControl, never>;
95
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComNativeControl, "input[comNativeControl], select[comNativeControl], textarea[comNativeControl]", ["comNativeControl"], { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; "sfInvalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "sfTouched": { "alias": "touched"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
96
+ }
97
+
98
+ export { ComNativeControl, nativeControlVariants };
99
+ export type { NativeControlSize, NativeControlVariant, NativeControlVariants };
@@ -219,6 +219,8 @@ declare class ComPaginator {
219
219
  protected readonly iconSize: Signal<'xs' | 'sm'>;
220
220
  /** Unique ID for page size label. */
221
221
  protected readonly pageSizeLabelId: Signal<string>;
222
+ /** Unique ID for page size select element. */
223
+ protected readonly pageSizeSelectId: Signal<string>;
222
224
  /** Classes for the container. */
223
225
  protected readonly containerClasses: Signal<string>;
224
226
  /** Classes for navigation buttons. */
@@ -12,7 +12,7 @@ type PopoverSide = 'top' | 'bottom' | 'left' | 'right';
12
12
  /**
13
13
  * Popover panel styling variants.
14
14
  *
15
- * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-lg`, `--radius-popover`, `--radius-overlay`
15
+ * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-overlay`, `--radius-popover`, `--radius-overlay`
16
16
  */
17
17
  declare const popoverPanelVariants: ReturnType<typeof cva<{
18
18
  variant: Record<PopoverVariant, string>;
@@ -34,7 +34,7 @@ type PopoverArrowVariants = VariantProps<typeof popoverArrowVariants>;
34
34
  * Applied to the trigger element, it handles opening, closing, positioning,
35
35
  * and accessibility for floating popover content.
36
36
  *
37
- * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-lg`, `--color-ring`
37
+ * @tokens `--color-popover`, `--color-popover-foreground`, `--color-border`, `--shadow-overlay`, `--color-ring`
38
38
  *
39
39
  * @example Basic usage with template
40
40
  * ```html
@@ -80,7 +80,7 @@ type PopoverArrowVariants = VariantProps<typeof popoverArrowVariants>;
80
80
  * </button>
81
81
  * ```
82
82
  */
83
- declare class PopoverTriggerDirective {
83
+ declare class ComPopoverTrigger {
84
84
  private readonly overlay;
85
85
  private readonly elementRef;
86
86
  private readonly viewContainerRef;
@@ -91,6 +91,8 @@ declare class PopoverTriggerDirective {
91
91
  private overlayRef;
92
92
  private focusTrap;
93
93
  private scrollCleanup;
94
+ private closeTimeoutId;
95
+ private destroyed;
94
96
  private readonly popoverId;
95
97
  /** Content to render: TemplateRef or Component class. */
96
98
  readonly comPopoverTrigger: InputSignal<TemplateRef<unknown> | Type<unknown>>;
@@ -153,6 +155,7 @@ declare class PopoverTriggerDirective {
153
155
  protected onEscapeKey(event: Event): void;
154
156
  private openPopover;
155
157
  private closePopover;
158
+ private cancelPendingClose;
156
159
  private subscribeToScrollEvents;
157
160
  private unsubscribeFromScrollEvents;
158
161
  private createOverlay;
@@ -163,14 +166,16 @@ declare class PopoverTriggerDirective {
163
166
  private setupFocusTrap;
164
167
  private destroyFocusTrap;
165
168
  private disposeOverlay;
166
- static ɵfac: i0.ɵɵFactoryDeclaration<PopoverTriggerDirective, never>;
167
- static ɵdir: i0.ɵɵDirectiveDeclaration<PopoverTriggerDirective, "[comPopoverTrigger]", ["comPopoverTrigger"], { "comPopoverTrigger": { "alias": "comPopoverTrigger"; "required": true; "isSignal": true; }; "popoverPosition": { "alias": "popoverPosition"; "required": false; "isSignal": true; }; "popoverAlignment": { "alias": "popoverAlignment"; "required": false; "isSignal": true; }; "popoverTriggerOn": { "alias": "popoverTriggerOn"; "required": false; "isSignal": true; }; "popoverOffset": { "alias": "popoverOffset"; "required": false; "isSignal": true; }; "popoverShowArrow": { "alias": "popoverShowArrow"; "required": false; "isSignal": true; }; "popoverVariant": { "alias": "popoverVariant"; "required": false; "isSignal": true; }; "popoverBackdrop": { "alias": "popoverBackdrop"; "required": false; "isSignal": true; }; "popoverCloseOnOutside": { "alias": "popoverCloseOnOutside"; "required": false; "isSignal": true; }; "popoverCloseOnEscape": { "alias": "popoverCloseOnEscape"; "required": false; "isSignal": true; }; "popoverCloseOnScroll": { "alias": "popoverCloseOnScroll"; "required": false; "isSignal": true; }; "popoverDisabled": { "alias": "popoverDisabled"; "required": false; "isSignal": true; }; "popoverOpen": { "alias": "popoverOpen"; "required": false; "isSignal": true; }; "popoverData": { "alias": "popoverData"; "required": false; "isSignal": true; }; "popoverPanelClass": { "alias": "popoverPanelClass"; "required": false; "isSignal": true; }; "popoverTrapFocus": { "alias": "popoverTrapFocus"; "required": false; "isSignal": true; }; "popoverAriaLabel": { "alias": "popoverAriaLabel"; "required": false; "isSignal": true; }; }, { "popoverOpen": "popoverOpenChange"; "popoverOpened": "popoverOpened"; "popoverClosed": "popoverClosed"; }, never, never, true, never>;
169
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComPopoverTrigger, never>;
170
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComPopoverTrigger, "[comPopoverTrigger]", ["comPopoverTrigger"], { "comPopoverTrigger": { "alias": "comPopoverTrigger"; "required": true; "isSignal": true; }; "popoverPosition": { "alias": "popoverPosition"; "required": false; "isSignal": true; }; "popoverAlignment": { "alias": "popoverAlignment"; "required": false; "isSignal": true; }; "popoverTriggerOn": { "alias": "popoverTriggerOn"; "required": false; "isSignal": true; }; "popoverOffset": { "alias": "popoverOffset"; "required": false; "isSignal": true; }; "popoverShowArrow": { "alias": "popoverShowArrow"; "required": false; "isSignal": true; }; "popoverVariant": { "alias": "popoverVariant"; "required": false; "isSignal": true; }; "popoverBackdrop": { "alias": "popoverBackdrop"; "required": false; "isSignal": true; }; "popoverCloseOnOutside": { "alias": "popoverCloseOnOutside"; "required": false; "isSignal": true; }; "popoverCloseOnEscape": { "alias": "popoverCloseOnEscape"; "required": false; "isSignal": true; }; "popoverCloseOnScroll": { "alias": "popoverCloseOnScroll"; "required": false; "isSignal": true; }; "popoverDisabled": { "alias": "popoverDisabled"; "required": false; "isSignal": true; }; "popoverOpen": { "alias": "popoverOpen"; "required": false; "isSignal": true; }; "popoverData": { "alias": "popoverData"; "required": false; "isSignal": true; }; "popoverPanelClass": { "alias": "popoverPanelClass"; "required": false; "isSignal": true; }; "popoverTrapFocus": { "alias": "popoverTrapFocus"; "required": false; "isSignal": true; }; "popoverAriaLabel": { "alias": "popoverAriaLabel"; "required": false; "isSignal": true; }; }, { "popoverOpen": "popoverOpenChange"; "popoverOpened": "popoverOpened"; "popoverClosed": "popoverClosed"; }, never, never, true, never>;
168
171
  }
169
172
 
170
173
  /**
171
174
  * Convenience directive that closes the parent popover when clicked.
172
175
  * Applied to elements inside the popover that should dismiss it.
173
176
  *
177
+ * @tokens none
178
+ *
174
179
  * @example
175
180
  * ```html
176
181
  * <ng-template #confirmPop>
@@ -190,7 +195,7 @@ declare class PopoverTriggerDirective {
190
195
  * <button [comPopoverClose]="'cancelled'">No</button>
191
196
  * ```
192
197
  */
193
- declare class PopoverCloseDirective {
198
+ declare class ComPopoverClose {
194
199
  private readonly popoverRef;
195
200
  /**
196
201
  * Optional result value to pass when closing.
@@ -198,8 +203,8 @@ declare class PopoverCloseDirective {
198
203
  */
199
204
  readonly comPopoverClose: InputSignal<unknown>;
200
205
  protected closePopover(): void;
201
- static ɵfac: i0.ɵɵFactoryDeclaration<PopoverCloseDirective, never>;
202
- static ɵdir: i0.ɵɵDirectiveDeclaration<PopoverCloseDirective, "[comPopoverClose]", ["comPopoverClose"], { "comPopoverClose": { "alias": "comPopoverClose"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
206
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComPopoverClose, never>;
207
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComPopoverClose, "[comPopoverClose]", ["comPopoverClose"], { "comPopoverClose": { "alias": "comPopoverClose"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
203
208
  }
204
209
 
205
210
  /**
@@ -210,6 +215,8 @@ declare class PopoverCloseDirective {
210
215
  * This directive is primarily semantic — it marks the template as popover content
211
216
  * and provides access to the TemplateRef for potential content queries.
212
217
  *
218
+ * @tokens none
219
+ *
213
220
  * @example
214
221
  * ```html
215
222
  * <button [comPopoverTrigger]="helpContent">Help</button>
@@ -226,11 +233,11 @@ declare class PopoverCloseDirective {
226
233
  * </ng-template>
227
234
  * ```
228
235
  */
229
- declare class PopoverTemplateDirective {
236
+ declare class ComPopoverTemplate {
230
237
  /** Reference to the template for rendering. */
231
238
  readonly templateRef: TemplateRef<unknown>;
232
- static ɵfac: i0.ɵɵFactoryDeclaration<PopoverTemplateDirective, never>;
233
- static ɵdir: i0.ɵɵDirectiveDeclaration<PopoverTemplateDirective, "[comPopoverTemplate]", ["comPopoverTemplate"], {}, {}, never, never, true, never>;
239
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComPopoverTemplate, never>;
240
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComPopoverTemplate, "[comPopoverTemplate]", ["comPopoverTemplate"], {}, {}, never, never, true, never>;
234
241
  }
235
242
 
236
243
  /**
@@ -305,5 +312,5 @@ declare function deriveSideFromPosition(pair: ConnectionPositionPair): PopoverSi
305
312
  */
306
313
  declare function deriveAlignmentFromPosition(pair: ConnectionPositionPair): PopoverAlignment;
307
314
 
308
- export { POPOVER_DATA, POPOVER_REF, PopoverCloseDirective, PopoverTemplateDirective, PopoverTriggerDirective, buildPopoverPositions, deriveAlignmentFromPosition, deriveSideFromPosition, popoverArrowVariants, popoverPanelVariants };
315
+ export { ComPopoverClose, ComPopoverTemplate, ComPopoverTrigger, POPOVER_DATA, POPOVER_REF, buildPopoverPositions, deriveAlignmentFromPosition, deriveSideFromPosition, popoverArrowVariants, popoverPanelVariants };
309
316
  export type { PopoverAlignment, PopoverArrowVariants, PopoverBackdrop, PopoverPanelVariants, PopoverPosition, PopoverRef, PopoverSide, PopoverTriggerOn, PopoverVariant };
@@ -31,6 +31,8 @@ interface SegmentTemplateContext<T = unknown> {
31
31
  * inner content of each segment while the component manages the button,
32
32
  * styling, and ARIA attributes.
33
33
  *
34
+ * @tokens none
35
+ *
34
36
  * @example Icon + text
35
37
  * ```html
36
38
  * <com-segmented-control [options]="viewOptions" [(value)]="currentView">
@@ -150,7 +152,7 @@ interface SegmentOption<T = unknown> {
150
152
  * <span>{{ option.label }}</span>
151
153
  * <span
152
154
  * class="ml-1.5 rounded-pill px-1.5 text-xs"
153
- * [class]="active ? 'bg-accent-foreground/20 text-accent-foreground' : 'bg-muted text-muted-foreground'"
155
+ * [class]="active ? 'bg-accent-subtle text-accent-subtle-foreground' : 'bg-muted text-muted-foreground'"
154
156
  * >
155
157
  * {{ option.value === 'open' ? openCount : closedCount }}
156
158
  * </span>
@@ -29,7 +29,7 @@ declare const sortIconVariants: (props?: {
29
29
  }) => string;
30
30
 
31
31
  /**
32
- * Sortable header component — child of [uiSort] directive.
32
+ * Sortable header component — child of [comSort] directive.
33
33
  *
34
34
  * Apply to table headers, div columns, or any clickable element that should trigger sorting.
35
35
  *
@@ -48,9 +48,10 @@ declare const sortIconVariants: (props?: {
48
48
  * <th comSortHeader="name" comSortHeaderArrowPosition="before">Name</th>
49
49
  * ```
50
50
  */
51
- declare class SortHeaderComponent implements OnInit {
51
+ declare class ComSortHeader implements OnInit {
52
52
  private readonly sort;
53
53
  private readonly destroyRef;
54
+ private readonly elementRef;
54
55
  /** The column id — aliased from the selector */
55
56
  readonly id: InputSignal<string>;
56
57
  /** Disable sorting for this specific header */
@@ -69,6 +70,8 @@ declare class SortHeaderComponent implements OnInit {
69
70
  readonly showUnsortedIndicator: Signal<boolean>;
70
71
  /** Whether sorting is disabled for this header */
71
72
  readonly isDisabled: Signal<boolean>;
73
+ /** Role — only set on non-<th> elements (th has implicit columnheader role) */
74
+ readonly hostRole: Signal<'columnheader' | null>;
72
75
  /** aria-sort attribute value */
73
76
  readonly ariaSort: Signal<'ascending' | 'descending' | 'none'>;
74
77
  /** CVA-generated host classes */
@@ -76,14 +79,14 @@ declare class SortHeaderComponent implements OnInit {
76
79
  constructor();
77
80
  ngOnInit(): void;
78
81
  protected onClick(): void;
79
- static ɵfac: i0.ɵɵFactoryDeclaration<SortHeaderComponent, never>;
80
- static ɵcmp: i0.ɵɵComponentDeclaration<SortHeaderComponent, "[comSortHeader]", never, { "id": { "alias": "comSortHeader"; "required": true; "isSignal": true; }; "sortHeaderDisabled": { "alias": "sortHeaderDisabled"; "required": false; "isSignal": true; }; "sortHeaderShowIndicator": { "alias": "sortHeaderShowIndicator"; "required": false; "isSignal": true; }; "sortHeaderArrowPosition": { "alias": "comSortHeaderArrowPosition"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
82
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComSortHeader, never>;
83
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComSortHeader, "[comSortHeader]", never, { "id": { "alias": "comSortHeader"; "required": true; "isSignal": true; }; "sortHeaderDisabled": { "alias": "sortHeaderDisabled"; "required": false; "isSignal": true; }; "sortHeaderShowIndicator": { "alias": "sortHeaderShowIndicator"; "required": false; "isSignal": true; }; "sortHeaderArrowPosition": { "alias": "comSortHeaderArrowPosition"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
81
84
  }
82
85
 
83
86
  /**
84
87
  * Parent directive that manages sort state for a group of sortable headers.
85
88
  *
86
- * Apply to a container element (e.g., `<tr>`, `<div>`) that contains `[uiSortHeader]` children.
89
+ * Apply to a container element (e.g., `<tr>`, `<div>`) that contains `[comSortHeader]` children.
87
90
  * Children inject this directive via DI and read its signals directly.
88
91
  *
89
92
  * @tokens `--color-foreground`, `--color-muted-foreground`
@@ -103,7 +106,7 @@ declare class SortHeaderComponent implements OnInit {
103
106
  * </tr>
104
107
  * ```
105
108
  */
106
- declare class SortDirective {
109
+ declare class ComSort {
107
110
  /** Currently active sort column id — two-way via model() */
108
111
  readonly sortActive: ModelSignal<string | undefined>;
109
112
  /** Current sort direction — two-way via model() */
@@ -118,16 +121,16 @@ declare class SortDirective {
118
121
  readonly sortChange: OutputEmitterRef<SortEvent>;
119
122
  private readonly headers;
120
123
  /** Register a sort header with this parent */
121
- register(header: SortHeaderComponent): void;
124
+ register(header: ComSortHeader): void;
122
125
  /** Deregister a sort header */
123
126
  deregister(id: string): void;
124
127
  /** Programmatically sort by a column */
125
128
  sort(id: string): void;
126
129
  /** Returns the next direction in the cycle for a given column */
127
130
  getNextDirection(id: string): SortDirection;
128
- static ɵfac: i0.ɵɵFactoryDeclaration<SortDirective, never>;
129
- static ɵdir: i0.ɵɵDirectiveDeclaration<SortDirective, "[comSort]", ["comSort"], { "sortActive": { "alias": "sortActive"; "required": false; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "sortDisabled": { "alias": "sortDisabled"; "required": false; "isSignal": true; }; "sortCycle": { "alias": "sortCycle"; "required": false; "isSignal": true; }; "sortShowIndicator": { "alias": "sortShowIndicator"; "required": false; "isSignal": true; }; }, { "sortActive": "sortActiveChange"; "sortDirection": "sortDirectionChange"; "sortChange": "sortChange"; }, never, never, true, never>;
131
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComSort, never>;
132
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ComSort, "[comSort]", ["comSort"], { "sortActive": { "alias": "sortActive"; "required": false; "isSignal": true; }; "sortDirection": { "alias": "sortDirection"; "required": false; "isSignal": true; }; "sortDisabled": { "alias": "sortDisabled"; "required": false; "isSignal": true; }; "sortCycle": { "alias": "sortCycle"; "required": false; "isSignal": true; }; "sortShowIndicator": { "alias": "sortShowIndicator"; "required": false; "isSignal": true; }; }, { "sortActive": "sortActiveChange"; "sortDirection": "sortDirectionChange"; "sortChange": "sortChange"; }, never, never, true, never>;
130
133
  }
131
134
 
132
- export { SortDirective, SortHeaderComponent, sortHeaderVariants, sortIconVariants };
135
+ export { ComSort, ComSortHeader, sortHeaderVariants, sortIconVariants };
133
136
  export type { SortCycle, SortDirection, SortEvent };
@@ -79,12 +79,16 @@ declare class ComSwitch implements ControlValueAccessor {
79
79
  readonly variant: InputSignal<SwitchVariant>;
80
80
  readonly checked: ModelSignal<boolean>;
81
81
  readonly disabled: ModelSignal<boolean>;
82
- readonly value: InputSignal<string | undefined>;
82
+ readonly htmlValue: InputSignal<string | undefined>;
83
83
  readonly name: InputSignal<string | undefined>;
84
84
  readonly id: InputSignal<string | undefined>;
85
85
  readonly ariaLabel: InputSignal<string | null>;
86
86
  readonly ariaLabelledby: InputSignal<string | null>;
87
87
  readonly ariaDescribedby: InputSignal<string | null>;
88
+ readonly touched: ModelSignal<boolean>;
89
+ readonly invalid: InputSignal<boolean>;
90
+ readonly sfErrors: InputSignal<readonly unknown[]>;
91
+ readonly sfRequired: InputSignal<boolean>;
88
92
  readonly changed: OutputEmitterRef<SwitchChange>;
89
93
  readonly inputId: Signal<string>;
90
94
  protected readonly trackClasses: Signal<string>;
@@ -97,13 +101,14 @@ declare class ComSwitch implements ControlValueAccessor {
97
101
  registerOnChange(fn: (value: boolean) => void): void;
98
102
  registerOnTouched(fn: () => void): void;
99
103
  setDisabledState(isDisabled: boolean): void;
104
+ protected onBlur(): void;
100
105
  protected onInputChange(event: Event): void;
101
106
  /** Focuses this switch's input element. */
102
107
  focus(): void;
103
108
  /** Toggles the switch state programmatically. */
104
109
  toggle(): void;
105
110
  static ɵfac: i0.ɵɵFactoryDeclaration<ComSwitch, never>;
106
- static ɵcmp: i0.ɵɵComponentDeclaration<ComSwitch, "com-switch", ["comSwitch"], { "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "disabled": "disabledChange"; "changed": "changed"; }, never, ["*"], true, never>;
111
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComSwitch, "com-switch", ["comSwitch"], { "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "htmlValue": { "alias": "value"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "sfErrors": { "alias": "errors"; "required": false; "isSignal": true; }; "sfRequired": { "alias": "required"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "disabled": "disabledChange"; "touched": "touchedChange"; "changed": "changed"; }, never, ["*"], true, never>;
107
112
  }
108
113
 
109
114
  export { ComSwitch, SWITCH_LABEL_SIZES, SWITCH_THUMB_SIZES, SWITCH_THUMB_TRANSLATE, switchTrackVariants };