@spartan-ng/cli 0.0.1-alpha.336 → 0.0.1-alpha.338

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 (164) hide show
  1. package/package.json +4 -4
  2. package/src/generators/base/generator.js +8 -3
  3. package/src/generators/base/generator.js.map +1 -1
  4. package/src/generators/base/lib/build-dependency-array.js +1 -0
  5. package/src/generators/base/lib/build-dependency-array.js.map +1 -1
  6. package/src/generators/base/versions.d.ts +2 -1
  7. package/src/generators/base/versions.js +3 -2
  8. package/src/generators/base/versions.js.map +1 -1
  9. package/src/generators/theme/libs/add-theme-to-application-styles.js.map +1 -1
  10. package/src/generators/ui/generator.js +9 -2
  11. package/src/generators/ui/generator.js.map +1 -1
  12. package/src/generators/ui/libs/ui-accordion-helm/files/lib/hlm-accordion-content.directive.ts.template +3 -8
  13. package/src/generators/ui/libs/ui-accordion-helm/files/lib/hlm-accordion-icon.directive.ts.template +7 -11
  14. package/src/generators/ui/libs/ui-accordion-helm/files/lib/hlm-accordion-item.directive.ts.template +9 -9
  15. package/src/generators/ui/libs/ui-accordion-helm/files/lib/hlm-accordion-trigger.directive.ts.template +3 -8
  16. package/src/generators/ui/libs/ui-accordion-helm/files/lib/hlm-accordion.directive.ts.template +4 -9
  17. package/src/generators/ui/libs/ui-alert-dialog-helm/files/lib/hlm-alert-dialog-cancel-button.directive.ts.template +3 -8
  18. package/src/generators/ui/libs/ui-alert-dialog-helm/files/lib/hlm-alert-dialog-content.component.ts.template +3 -8
  19. package/src/generators/ui/libs/ui-alert-dialog-helm/files/lib/hlm-alert-dialog-description.directive.ts.template +3 -8
  20. package/src/generators/ui/libs/ui-alert-dialog-helm/files/lib/hlm-alert-dialog-footer.component.ts.template +3 -7
  21. package/src/generators/ui/libs/ui-alert-dialog-helm/files/lib/hlm-alert-dialog-header.component.ts.template +3 -7
  22. package/src/generators/ui/libs/ui-alert-dialog-helm/files/lib/hlm-alert-dialog-overlay.directive.ts.template +3 -7
  23. package/src/generators/ui/libs/ui-alert-dialog-helm/files/lib/hlm-alert-dialog-title.directive.ts.template +3 -7
  24. package/src/generators/ui/libs/ui-alert-dialog-helm/files/lib/hlm-alert-dialog.component.ts.template +1 -2
  25. package/src/generators/ui/libs/ui-alert-helm/files/lib/hlm-alert-description.directive.ts.template +3 -11
  26. package/src/generators/ui/libs/ui-alert-helm/files/lib/hlm-alert-title.directive.ts.template +3 -11
  27. package/src/generators/ui/libs/ui-alert-helm/files/lib/hlm-alert.directive.ts.template +3 -11
  28. package/src/generators/ui/libs/ui-aspect-ratio-helm/files/lib/helm-aspect-ratio.directive.ts.template +3 -8
  29. package/src/generators/ui/libs/ui-avatar-helm/files/lib/hlm-avatar.component.spec.ts.template +10 -6
  30. package/src/generators/ui/libs/ui-avatar-helm/files/lib/hlm-avatar.component.ts.template +5 -11
  31. package/src/generators/ui/libs/ui-avatar-helm/files/lib/image/hlm-avatar-image.directive.ts.template +3 -11
  32. package/src/generators/ui/libs/ui-badge-helm/files/lib/hlm-badge.directive.ts.template +5 -14
  33. package/src/generators/ui/libs/ui-button-helm/files/.DS_Store.template +0 -0
  34. package/src/generators/ui/libs/ui-button-helm/files/lib/hlm-button.directive.ts.template +11 -11
  35. package/src/generators/ui/libs/ui-card-helm/files/lib/hlm-card-content.directive.ts.template +3 -11
  36. package/src/generators/ui/libs/ui-card-helm/files/lib/hlm-card-description.directive.ts.template +3 -11
  37. package/src/generators/ui/libs/ui-card-helm/files/lib/hlm-card-footer.directive.ts.template +4 -16
  38. package/src/generators/ui/libs/ui-card-helm/files/lib/hlm-card-header.directive.ts.template +4 -16
  39. package/src/generators/ui/libs/ui-card-helm/files/lib/hlm-card-title.directive.ts.template +3 -11
  40. package/src/generators/ui/libs/ui-card-helm/files/lib/hlm-card.directive.ts.template +3 -11
  41. package/src/generators/ui/libs/ui-carousel-helm/files/index.ts.template +26 -0
  42. package/src/generators/ui/libs/ui-carousel-helm/files/lib/hlm-carousel-content.component.ts.template +25 -0
  43. package/src/generators/ui/libs/ui-carousel-helm/files/lib/hlm-carousel-item.component.ts.template +26 -0
  44. package/src/generators/ui/libs/ui-carousel-helm/files/lib/hlm-carousel-next.component.ts.template +62 -0
  45. package/src/generators/ui/libs/ui-carousel-helm/files/lib/hlm-carousel-previous.component.ts.template +62 -0
  46. package/src/generators/ui/libs/ui-carousel-helm/files/lib/hlm-carousel.component.ts.template +93 -0
  47. package/src/generators/ui/libs/ui-carousel-helm/generator.d.ts +3 -0
  48. package/src/generators/ui/libs/ui-carousel-helm/generator.js +12 -0
  49. package/src/generators/ui/libs/ui-carousel-helm/generator.js.map +1 -0
  50. package/src/generators/ui/libs/ui-checkbox-helm/files/lib/hlm-checkbox-checkicon.component.ts.template +11 -20
  51. package/src/generators/ui/libs/ui-checkbox-helm/files/lib/hlm-checkbox.component.ts.template +50 -46
  52. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-dialog-close-button.directive.ts.template +3 -11
  53. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-dialog.directive.ts.template +8 -14
  54. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-empty.directive.ts.template +3 -11
  55. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-group.directive.ts.template +7 -13
  56. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-input-wrapper.component.ts.template +5 -14
  57. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-input.directive.ts.template +7 -12
  58. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-item-icon.directive.ts.template +3 -10
  59. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-item.directive.ts.template +7 -12
  60. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-list.directive.ts.template +3 -11
  61. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-shortcut.component.ts.template +5 -11
  62. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command.directive.ts.template +7 -13
  63. package/src/generators/ui/libs/ui-dialog-helm/files/.DS_Store.template +0 -0
  64. package/src/generators/ui/libs/ui-dialog-helm/files/index.ts.template +1 -0
  65. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog-close.directive.ts.template +7 -13
  66. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog-content.component.ts.template +24 -17
  67. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog-description.directive.ts.template +3 -11
  68. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog-footer.component.ts.template +5 -11
  69. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog-header.component.ts.template +5 -11
  70. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog-overlay.directive.ts.template +9 -13
  71. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog-title.directive.ts.template +3 -11
  72. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog.component.ts.template +1 -2
  73. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog.service.ts.template +35 -0
  74. package/src/generators/ui/libs/ui-hover-card-helm/files/lib/hlm-hover-card-content.component.ts.template +3 -10
  75. package/src/generators/ui/libs/ui-icon-helm/files/lib/hlm-icon.component.spec.ts.template +3 -3
  76. package/src/generators/ui/libs/ui-icon-helm/files/lib/hlm-icon.component.ts.template +4 -4
  77. package/src/generators/ui/libs/ui-input-helm/files/lib/hlm-input-error.directive.ts.template +3 -11
  78. package/src/generators/ui/libs/ui-input-helm/files/lib/hlm-input.directive.ts.template +5 -10
  79. package/src/generators/ui/libs/ui-label-helm/files/lib/hlm-label.directive.ts.template +4 -10
  80. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-bar-item.directive.ts.template +7 -13
  81. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-bar.component.ts.template +5 -11
  82. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-item-check.component.ts.template +12 -14
  83. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-item-checkbox.directive.ts.template +8 -21
  84. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-item-icon.directive.ts.template +3 -10
  85. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-item-radio.component.ts.template +12 -14
  86. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-item-radio.directive.ts.template +8 -21
  87. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-item-sub-indicator.component.ts.template +6 -14
  88. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-item.directive.ts.template +5 -15
  89. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-label.component.ts.template +5 -11
  90. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-separator.component.ts.template +3 -11
  91. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu-shortcut.component.ts.template +5 -11
  92. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-menu.component.ts.template +4 -12
  93. package/src/generators/ui/libs/ui-menu-helm/files/lib/hlm-sub-menu.component.ts.template +7 -13
  94. package/src/generators/ui/libs/ui-pagination-helm/files/index.ts.template +33 -0
  95. package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-pagination-content.directive.ts.template +21 -0
  96. package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-pagination-ellipsis.componet.ts.template +23 -0
  97. package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-pagination-item.directive.ts.template +22 -0
  98. package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-pagination-link.directive.ts.template +56 -0
  99. package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-pagination-next.componet.ts.template +31 -0
  100. package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-pagination-previous.componet.ts.template +31 -0
  101. package/src/generators/ui/libs/ui-pagination-helm/files/lib/hlm-pagination.directive.ts.template +25 -0
  102. package/src/generators/ui/libs/ui-pagination-helm/generator.d.ts +3 -0
  103. package/src/generators/ui/libs/ui-pagination-helm/generator.js +12 -0
  104. package/src/generators/ui/libs/ui-pagination-helm/generator.js.map +1 -0
  105. package/src/generators/ui/libs/ui-popover-helm/files/lib/hlm-popover-close.directive.ts.template +7 -13
  106. package/src/generators/ui/libs/ui-popover-helm/files/lib/hlm-popover-content.directive.ts.template +7 -13
  107. package/src/generators/ui/libs/ui-progress-helm/files/lib/hlm-progress-indicator.directive.ts.template +5 -11
  108. package/src/generators/ui/libs/ui-progress-helm/files/lib/hlm-progress.directive.ts.template +5 -11
  109. package/src/generators/ui/libs/ui-radio-group-helm/files/lib/hlm-radio-group.directive.ts.template +3 -11
  110. package/src/generators/ui/libs/ui-radio-group-helm/files/lib/hlm-radio-indicator.component.ts.template +3 -11
  111. package/src/generators/ui/libs/ui-radio-group-helm/files/lib/hlm-radio.directive.ts.template +5 -11
  112. package/src/generators/ui/libs/ui-select-helm/files/index.ts.template +38 -0
  113. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select-content.directive.ts.template +34 -0
  114. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select-group.directive.ts.template +22 -0
  115. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select-label.directive.ts.template +38 -0
  116. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select-option.component.ts.template +54 -0
  117. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select-scroll-down.component.ts.template +17 -0
  118. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select-scroll-up.component.ts.template +17 -0
  119. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select-trigger.component.ts.template +44 -0
  120. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select-value.directive.ts.template +26 -0
  121. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select.directive.ts.template +21 -0
  122. package/src/generators/ui/libs/ui-select-helm/generator.d.ts +3 -0
  123. package/src/generators/ui/libs/ui-select-helm/generator.js +12 -0
  124. package/src/generators/ui/libs/ui-select-helm/generator.js.map +1 -0
  125. package/src/generators/ui/libs/ui-separator-helm/files/lib/hlm-separator.directive.ts.template +7 -13
  126. package/src/generators/ui/libs/ui-sheet-helm/files/lib/hlm-sheet-close.directive.ts.template +7 -13
  127. package/src/generators/ui/libs/ui-sheet-helm/files/lib/hlm-sheet-content.component.ts.template +6 -14
  128. package/src/generators/ui/libs/ui-sheet-helm/files/lib/hlm-sheet-description.directive.ts.template +3 -11
  129. package/src/generators/ui/libs/ui-sheet-helm/files/lib/hlm-sheet-footer.component.ts.template +5 -11
  130. package/src/generators/ui/libs/ui-sheet-helm/files/lib/hlm-sheet-header.component.ts.template +3 -11
  131. package/src/generators/ui/libs/ui-sheet-helm/files/lib/hlm-sheet-overlay.directive.ts.template +11 -17
  132. package/src/generators/ui/libs/ui-sheet-helm/files/lib/hlm-sheet-title.directive.ts.template +3 -11
  133. package/src/generators/ui/libs/ui-sheet-helm/files/lib/hlm-sheet.component.ts.template +1 -2
  134. package/src/generators/ui/libs/ui-skeleton-helm/files/lib/hlm-skeleton.component.ts.template +3 -11
  135. package/src/generators/ui/libs/ui-spinner-helm/files/lib/hlm-spinner.component.ts.template +5 -11
  136. package/src/generators/ui/libs/ui-switch-helm/files/lib/hlm-switch-thumb.directive.ts.template +7 -13
  137. package/src/generators/ui/libs/ui-switch-helm/files/lib/hlm-switch.component.ts.template +19 -14
  138. package/src/generators/ui/libs/ui-table-helm/files/lib/hlm-caption.component.ts.template +10 -28
  139. package/src/generators/ui/libs/ui-table-helm/files/lib/hlm-table.component.ts.template +11 -27
  140. package/src/generators/ui/libs/ui-table-helm/files/lib/hlm-td.component.ts.template +8 -12
  141. package/src/generators/ui/libs/ui-table-helm/files/lib/hlm-th.component.ts.template +22 -23
  142. package/src/generators/ui/libs/ui-table-helm/files/lib/hlm-trow.component.ts.template +7 -24
  143. package/src/generators/ui/libs/ui-tabs-helm/files/index.ts.template +8 -1
  144. package/src/generators/ui/libs/ui-tabs-helm/files/lib/hlm-tabs-content.directive.ts.template +9 -21
  145. package/src/generators/ui/libs/ui-tabs-helm/files/lib/hlm-tabs-list.component.ts.template +5 -17
  146. package/src/generators/ui/libs/ui-tabs-helm/files/lib/hlm-tabs-trigger.directive.ts.template +9 -21
  147. package/src/generators/ui/libs/ui-tabs-helm/files/lib/hlm-tabs.component.ts.template +17 -0
  148. package/src/generators/ui/libs/ui-toggle-helm/files/lib/hlm-toggle-group.directive.ts.template +7 -13
  149. package/src/generators/ui/libs/ui-toggle-helm/files/lib/hlm-toggle.directive.ts.template +5 -11
  150. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-blockquote.directive.ts.template +3 -11
  151. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-code.directive.ts.template +3 -11
  152. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-h1.directive.ts.template +3 -11
  153. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-h2.directive.ts.template +3 -11
  154. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-h3.directive.ts.template +3 -11
  155. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-h4.directive.ts.template +3 -11
  156. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-large.directive.ts.template +3 -11
  157. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-lead.directive.ts.template +3 -11
  158. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-muted.directive.ts.template +3 -11
  159. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-p.directive.ts.template +3 -11
  160. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-small.directive.ts.template +3 -11
  161. package/src/generators/ui/libs/ui-typography-helm/files/lib/hlm-ul.directive.ts.template +3 -11
  162. package/src/generators/ui/supported-ui-libraries.json +115 -81
  163. package/src/utils/get-project-names.js.map +1 -1
  164. package/src/utils/version-utils.js.map +1 -1
@@ -1,4 +1,4 @@
1
- import { Directive, Input, computed, signal } from '@angular/core';
1
+ import { Directive, computed, input } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/ui-core';
3
3
  import { ClassValue } from 'clsx';
4
4
 
@@ -10,17 +10,11 @@ import { ClassValue } from 'clsx';
10
10
  },
11
11
  })
12
12
  export class HlmSwitchThumbDirective {
13
- private readonly _userCls = signal<ClassValue>('');
14
- @Input()
15
- set class(userCls: ClassValue) {
16
- this._userCls.set(userCls);
17
- }
18
-
19
- protected _computedClass = computed(() => this._generateClass());
20
- private _generateClass() {
21
- return hlm(
13
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
+ protected _computedClass = computed(() =>
15
+ hlm(
22
16
  'block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform group-data-[state=checked]:translate-x-5 group-data-[state=unchecked]:translate-x-0',
23
- this._userCls(),
24
- );
25
- }
17
+ this.userClass(),
18
+ ),
19
+ );
26
20
  }
@@ -1,4 +1,14 @@
1
- import { Component, EventEmitter, Input, Output, booleanAttribute, computed, forwardRef, signal } from '@angular/core';
1
+ import {
2
+ Component,
3
+ EventEmitter,
4
+ Input,
5
+ Output,
6
+ booleanAttribute,
7
+ computed,
8
+ forwardRef,
9
+ input,
10
+ signal,
11
+ } from '@angular/core';
2
12
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
13
  import { hlm } from '@spartan-ng/ui-core';
4
14
  import { BrnSwitchComponent, BrnSwitchThumbComponent } from '@spartan-ng/ui-switch-brain';
@@ -40,11 +50,14 @@ export const HLM_SWITCH_VALUE_ACCESSOR = {
40
50
  providers: [HLM_SWITCH_VALUE_ACCESSOR],
41
51
  })
42
52
  export class HlmSwitchComponent {
43
- private readonly _userCls = signal<ClassValue>('');
44
- @Input()
45
- set class(userCls: ClassValue) {
46
- this._userCls.set(userCls);
47
- }
53
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
54
+ protected _computedClass = computed(() =>
55
+ hlm(
56
+ 'group inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',
57
+ this._disabled() ? 'cursor-not-allowed opacity-50' : '',
58
+ this.userClass(),
59
+ ),
60
+ );
48
61
 
49
62
  @Output()
50
63
  public changed = new EventEmitter<boolean>();
@@ -83,14 +96,6 @@ export class HlmSwitchComponent {
83
96
  @Input('aria-describedby')
84
97
  ariaDescribedby: string | null = null;
85
98
 
86
- protected _computedClass = computed(() =>
87
- hlm(
88
- 'group inline-flex h-[24px] w-[44px] shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',
89
- this._disabled() ? 'cursor-not-allowed opacity-50' : '',
90
- this._userCls(),
91
- ),
92
- );
93
-
94
99
  /** CONROL VALUE ACCESSOR */
95
100
 
96
101
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -5,8 +5,7 @@ import {
5
5
  computed,
6
6
  effect,
7
7
  inject,
8
- Input,
9
- signal,
8
+ input,
10
9
  ViewEncapsulation,
11
10
  } from '@angular/core';
12
11
  import { hlm } from '@spartan-ng/ui-core';
@@ -20,7 +19,7 @@ let captionIdSequence = 0;
20
19
  standalone: true,
21
20
  host: {
22
21
  '[class]': '_computedClass()',
23
- '[id]': '_id()',
22
+ '[id]': 'id()',
24
23
  },
25
24
  template: `
26
25
  <ng-content />
@@ -31,41 +30,24 @@ let captionIdSequence = 0;
31
30
  export class HlmCaptionComponent {
32
31
  private readonly _table = inject(HlmTableComponent, { optional: true });
33
32
 
34
- private readonly _hidden = signal(false);
35
- private readonly _userCls = signal<ClassValue>('');
33
+ protected readonly id = input<string | null | undefined>(`${captionIdSequence++}`);
34
+
35
+ public readonly hidden = input(false, { transform: booleanAttribute });
36
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
36
37
  protected readonly _computedClass = computed(() =>
37
38
  hlm(
38
39
  'text-center block mt-4 text-sm text-muted-foreground',
39
- this._hidden() ? 'sr-only' : 'order-last',
40
- this._userCls(),
40
+ this.hidden() ? 'sr-only' : 'order-last',
41
+ this.userClass(),
41
42
  ),
42
43
  );
43
- protected readonly _id = signal<string | null | undefined>(`${captionIdSequence++}`);
44
-
45
- @Input({ transform: booleanAttribute })
46
- public truncate = false;
47
-
48
- @Input()
49
- set class(inputs: ClassValue) {
50
- this._userCls.set(inputs);
51
- }
52
-
53
- @Input()
54
- set id(value: string | null | undefined) {
55
- this._id.set(value);
56
- }
57
-
58
- @Input({ transform: booleanAttribute })
59
- set hidden(value: boolean) {
60
- this._hidden.set(value);
61
- }
62
44
 
63
45
  constructor() {
64
46
  effect(
65
47
  () => {
66
- const id = this._id();
48
+ const id = this.id();
67
49
  if (!this._table) return;
68
- this._table.labeledBy = id;
50
+ this._table.labeledBy.set(id);
69
51
  },
70
52
  { allowSignalWrites: true },
71
53
  );
@@ -1,12 +1,4 @@
1
- import {
2
- booleanAttribute,
3
- ChangeDetectionStrategy,
4
- Component,
5
- computed,
6
- Input,
7
- signal,
8
- ViewEncapsulation,
9
- } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, effect, input, signal, ViewEncapsulation } from '@angular/core';
10
2
  import { hlm } from '@spartan-ng/ui-core';
11
3
  import { ClassValue } from 'clsx';
12
4
 
@@ -16,7 +8,7 @@ import { ClassValue } from 'clsx';
16
8
  host: {
17
9
  '[class]': '_computedClass()',
18
10
  role: 'table',
19
- '[attr.aria-labelledby]': '_labeledBy()',
11
+ '[attr.aria-labelledby]': 'labeledBy()',
20
12
  },
21
13
  template: `
22
14
  <ng-content />
@@ -25,24 +17,16 @@ import { ClassValue } from 'clsx';
25
17
  encapsulation: ViewEncapsulation.None,
26
18
  })
27
19
  export class HlmTableComponent {
28
- @Input({ transform: booleanAttribute })
29
- public truncate = false;
20
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
21
+ protected readonly _computedClass = computed(() =>
22
+ hlm('flex flex-col text-sm [&_hlm-trow:last-child]:border-0', this.userClass()),
23
+ );
30
24
 
31
- private readonly _userCls = signal<ClassValue>('');
32
- @Input()
33
- set class(inputs: ClassValue) {
34
- this._userCls.set(inputs);
35
- }
36
-
37
- protected readonly _labeledBy = signal<string | null | undefined>(undefined);
38
- // eslint-disable-next-line @angular-eslint/no-input-rename
39
- @Input({ alias: 'aria-labelledby' })
40
- set labeledBy(value: string | null | undefined) {
41
- this._labeledBy.set(value);
42
- }
25
+ // we aria-labelledby to be settable from outside but use the input by default.
26
+ public readonly _labeledByInput = input<string | null | undefined>(undefined, { alias: 'aria-labelledby' });
27
+ public readonly labeledBy = signal<string | null | undefined>(undefined);
43
28
 
44
- protected _computedClass = computed(() => this._generateClass());
45
- private _generateClass() {
46
- return hlm('flex flex-col text-sm [&_hlm-trow:last-child]:border-0', this._userCls());
29
+ constructor() {
30
+ effect(() => this.labeledBy.set(this._labeledByInput()), { allowSignalWrites: true });
47
31
  }
48
32
  }
@@ -4,11 +4,12 @@ import {
4
4
  ChangeDetectionStrategy,
5
5
  Component,
6
6
  computed,
7
- Input,
8
- signal,
7
+ inject,
8
+ input,
9
9
  ViewEncapsulation,
10
10
  } from '@angular/core';
11
11
  import { hlm } from '@spartan-ng/ui-core';
12
+ import { BrnColumnDefComponent } from '@spartan-ng/ui-table-brain';
12
13
  import { ClassValue } from 'clsx';
13
14
 
14
15
  @Component({
@@ -22,7 +23,7 @@ import { ClassValue } from 'clsx';
22
23
  <ng-template #content>
23
24
  <ng-content />
24
25
  </ng-template>
25
- @if (truncate) {
26
+ @if (truncate()) {
26
27
  <span class="flex-1 truncate">
27
28
  <ng-container [ngTemplateOutlet]="content" />
28
29
  </span>
@@ -34,16 +35,11 @@ import { ClassValue } from 'clsx';
34
35
  encapsulation: ViewEncapsulation.None,
35
36
  })
36
37
  export class HlmTdComponent {
37
- @Input({ transform: booleanAttribute })
38
- public truncate = false;
38
+ private readonly _columnDef? = inject(BrnColumnDefComponent, { optional: true });
39
+ public readonly truncate = input(false, { transform: booleanAttribute });
39
40
 
40
- private readonly _userCls = signal<ClassValue>('');
41
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
41
42
  protected readonly _computedClass = computed(() =>
42
- hlm('flex flex-none p-4 items-center [&:has([role=checkbox])]:pr-0', this._userCls()),
43
+ hlm('flex flex-none p-4 items-center [&:has([role=checkbox])]:pr-0', this._columnDef?.class(), this.userClass()),
43
44
  );
44
-
45
- @Input()
46
- set class(inputs: ClassValue) {
47
- this._userCls.set(inputs);
48
- }
49
45
  }
@@ -1,20 +1,21 @@
1
- import { NgIf, NgTemplateOutlet } from '@angular/common';
1
+ import { NgTemplateOutlet } from '@angular/common';
2
2
  import {
3
+ booleanAttribute,
3
4
  ChangeDetectionStrategy,
4
5
  Component,
5
- Input,
6
- ViewEncapsulation,
7
- booleanAttribute,
8
6
  computed,
9
- signal,
7
+ inject,
8
+ input,
9
+ ViewEncapsulation,
10
10
  } from '@angular/core';
11
11
  import { hlm } from '@spartan-ng/ui-core';
12
+ import { BrnColumnDefComponent } from '@spartan-ng/ui-table-brain';
12
13
  import { ClassValue } from 'clsx';
13
14
 
14
15
  @Component({
15
16
  selector: 'hlm-th',
16
17
  standalone: true,
17
- imports: [NgTemplateOutlet, NgIf],
18
+ imports: [NgTemplateOutlet],
18
19
  host: {
19
20
  '[class]': '_computedClass()',
20
21
  },
@@ -22,29 +23,27 @@ import { ClassValue } from 'clsx';
22
23
  <ng-template #content>
23
24
  <ng-content />
24
25
  </ng-template>
25
- <span *ngIf="truncate" class="flex-1 truncate">
26
+ @if (truncate()) {
27
+ <span class="flex-1 truncate">
28
+ <ng-container [ngTemplateOutlet]="content" />
29
+ </span>
30
+ } @else {
26
31
  <ng-container [ngTemplateOutlet]="content" />
27
- </span>
28
- <ng-container *ngIf="!truncate" [ngTemplateOutlet]="content" />
32
+ }
29
33
  `,
30
34
  changeDetection: ChangeDetectionStrategy.OnPush,
31
35
  encapsulation: ViewEncapsulation.None,
32
36
  })
33
37
  export class HlmThComponent {
34
- @Input({ transform: booleanAttribute })
35
- public truncate = false;
36
-
37
- private readonly _userCls = signal<ClassValue>('');
38
- @Input()
39
- set class(inputs: ClassValue) {
40
- this._userCls.set(inputs);
41
- }
38
+ private readonly _columnDef? = inject(BrnColumnDefComponent, { optional: true });
39
+ public readonly truncate = input(false, { transform: booleanAttribute });
42
40
 
43
- protected _computedClass = computed(() => this._generateClass());
44
- private _generateClass() {
45
- return hlm(
41
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
42
+ protected readonly _computedClass = computed(() =>
43
+ hlm(
46
44
  'flex flex-none h-12 px-4 text-sm items-center font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',
47
- this._userCls(),
48
- );
49
- }
45
+ this._columnDef?.class(),
46
+ this.userClass(),
47
+ ),
48
+ );
50
49
  }
@@ -1,12 +1,4 @@
1
- import {
2
- booleanAttribute,
3
- ChangeDetectionStrategy,
4
- Component,
5
- computed,
6
- Input,
7
- signal,
8
- ViewEncapsulation,
9
- } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';
10
2
  import { hlm } from '@spartan-ng/ui-core';
11
3
  import { ClassValue } from 'clsx';
12
4
 
@@ -24,20 +16,11 @@ import { ClassValue } from 'clsx';
24
16
  encapsulation: ViewEncapsulation.None,
25
17
  })
26
18
  export class HlmTrowComponent {
27
- @Input({ transform: booleanAttribute })
28
- public truncate = false;
29
-
30
- private readonly _userCls = signal<ClassValue>('');
31
- @Input()
32
- set class(inputs: ClassValue) {
33
- this._userCls.set(inputs);
34
- }
35
-
36
- protected _computedClass = computed(() => this._generateClass());
37
- private _generateClass() {
38
- return hlm(
19
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
20
+ protected _computedClass = computed(() =>
21
+ hlm(
39
22
  'flex flex border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',
40
- this._userCls(),
41
- );
42
- }
23
+ this.userClass(),
24
+ ),
25
+ );
43
26
  }
@@ -3,12 +3,19 @@ import { NgModule } from '@angular/core';
3
3
  import { HlmTabsContentDirective } from './lib/hlm-tabs-content.directive';
4
4
  import { HlmTabsListComponent } from './lib/hlm-tabs-list.component';
5
5
  import { HlmTabsTriggerDirective } from './lib/hlm-tabs-trigger.directive';
6
+ import { HlmTabsComponent } from './lib/hlm-tabs.component';
6
7
 
7
8
  export * from './lib/hlm-tabs-content.directive';
8
9
  export * from './lib/hlm-tabs-list.component';
9
10
  export * from './lib/hlm-tabs-trigger.directive';
11
+ export * from './lib/hlm-tabs.component';
10
12
 
11
- export const HlmTabsImports = [HlmTabsListComponent, HlmTabsTriggerDirective, HlmTabsContentDirective] as const;
13
+ export const HlmTabsImports = [
14
+ HlmTabsComponent,
15
+ HlmTabsListComponent,
16
+ HlmTabsTriggerDirective,
17
+ HlmTabsContentDirective,
18
+ ] as const;
12
19
 
13
20
  @NgModule({
14
21
  imports: [...HlmTabsImports],
@@ -1,4 +1,4 @@
1
- import { Directive, Input, computed, inject, signal } from '@angular/core';
1
+ import { Directive, computed, input } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/ui-core';
3
3
  import { BrnTabsContentDirective } from '@spartan-ng/ui-tabs-brain';
4
4
  import { ClassValue } from 'clsx';
@@ -6,31 +6,19 @@ import { ClassValue } from 'clsx';
6
6
  @Directive({
7
7
  selector: '[hlmTabsContent]',
8
8
  standalone: true,
9
- hostDirectives: [BrnTabsContentDirective],
9
+ hostDirectives: [{ directive: BrnTabsContentDirective, inputs: ['brnTabsContent: hlmTabsContent'] }],
10
10
  host: {
11
11
  '[class]': '_computedClass()',
12
12
  },
13
13
  })
14
14
  export class HlmTabsContentDirective {
15
- private readonly _brn = inject(BrnTabsContentDirective);
16
- private readonly _userCls = signal<ClassValue>('');
17
- @Input()
18
- set class(userCls: ClassValue) {
19
- this._userCls.set(userCls);
20
- }
15
+ public readonly contentFor = input.required<string>({ alias: 'hlmTabsContent' });
21
16
 
22
- @Input('hlmTabsContent')
23
- set contentFor(key: string) {
24
- if (this._brn) {
25
- this._brn.contentFor = key;
26
- }
27
- }
28
-
29
- protected _computedClass = computed(() => this._generateClass());
30
- private _generateClass() {
31
- return hlm(
17
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
18
+ protected _computedClass = computed(() =>
19
+ hlm(
32
20
  'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
33
- this._userCls(),
34
- );
35
- }
21
+ this.userClass(),
22
+ ),
23
+ );
36
24
  }
@@ -1,7 +1,7 @@
1
- import { Component, computed, Input, signal } from '@angular/core';
1
+ import { Component, computed, input } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/ui-core';
3
3
  import { BrnTabsListDirective } from '@spartan-ng/ui-tabs-brain';
4
- import { cva, VariantProps } from 'class-variance-authority';
4
+ import { VariantProps, cva } from 'class-variance-authority';
5
5
  import { ClassValue } from 'clsx';
6
6
 
7
7
  export const listVariants = cva(
@@ -30,20 +30,8 @@ type ListVariants = VariantProps<typeof listVariants>;
30
30
  },
31
31
  })
32
32
  export class HlmTabsListComponent {
33
- private readonly _userCls = signal<ClassValue>('');
34
- @Input()
35
- set class(userCls: ClassValue) {
36
- this._userCls.set(userCls);
37
- }
33
+ public readonly orientation = input<ListVariants['orientation']>('horizontal');
38
34
 
39
- private readonly _orientation = signal<ListVariants['orientation']>('horizontal');
40
- @Input()
41
- set orientation(value: ListVariants['orientation']) {
42
- this._orientation.set(value);
43
- }
44
-
45
- protected _computedClass = computed(() => this._generateClass());
46
- private _generateClass() {
47
- return hlm(listVariants({ orientation: this._orientation() }), this._userCls());
48
- }
35
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
36
+ protected _computedClass = computed(() => hlm(listVariants({ orientation: this.orientation() }), this.userClass()));
49
37
  }
@@ -1,4 +1,4 @@
1
- import { Directive, Input, computed, inject, signal } from '@angular/core';
1
+ import { Directive, computed, input } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/ui-core';
3
3
  import { BrnTabsTriggerDirective } from '@spartan-ng/ui-tabs-brain';
4
4
  import { ClassValue } from 'clsx';
@@ -6,31 +6,19 @@ import { ClassValue } from 'clsx';
6
6
  @Directive({
7
7
  selector: '[hlmTabsTrigger]',
8
8
  standalone: true,
9
+ hostDirectives: [{ directive: BrnTabsTriggerDirective, inputs: ['brnTabsTrigger: hlmTabsTrigger', 'disabled'] }],
9
10
  host: {
10
11
  '[class]': '_computedClass()',
11
12
  },
12
- hostDirectives: [BrnTabsTriggerDirective],
13
13
  })
14
14
  export class HlmTabsTriggerDirective {
15
- private readonly _brn = inject(BrnTabsTriggerDirective);
16
- private readonly _userCls = signal<ClassValue>('');
17
- @Input()
18
- set class(userCls: ClassValue) {
19
- this._userCls.set(userCls);
20
- }
15
+ public readonly triggerFor = input.required<string>({ alias: 'hlmTabsTrigger' });
21
16
 
22
- @Input('hlmTabsTrigger')
23
- set triggerFor(key: string) {
24
- if (this._brn) {
25
- this._brn.triggerFor = key;
26
- }
27
- }
28
-
29
- protected _computedClass = computed(() => this._generateClass());
30
- private _generateClass() {
31
- return hlm(
17
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
18
+ protected _computedClass = computed(() =>
19
+ hlm(
32
20
  'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',
33
- this._userCls(),
34
- );
35
- }
21
+ this.userClass(),
22
+ ),
23
+ );
36
24
  }
@@ -0,0 +1,17 @@
1
+ import { Component, input } from '@angular/core';
2
+ import { BrnTabsDirective } from '@spartan-ng/ui-tabs-brain';
3
+
4
+ @Component({
5
+ selector: 'hlm-tabs',
6
+ standalone: true,
7
+ hostDirectives: [
8
+ {
9
+ directive: BrnTabsDirective,
10
+ inputs: ['orientation', 'direction', 'activationMode', 'brnTabs: tab'],
11
+ },
12
+ ],
13
+ template: '<ng-content/>',
14
+ })
15
+ export class HlmTabsComponent {
16
+ public readonly tab = input.required<string>();
17
+ }
@@ -1,4 +1,4 @@
1
- import { Directive, Input, computed, signal } from '@angular/core';
1
+ import { Directive, computed, input } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/ui-core';
3
3
  import { ClassValue } from 'clsx';
4
4
 
@@ -10,17 +10,11 @@ import { ClassValue } from 'clsx';
10
10
  },
11
11
  })
12
12
  export class HlmToggleGroupDirective {
13
- private readonly _userCls = signal<ClassValue>('');
14
- @Input()
15
- set class(userCls: ClassValue) {
16
- this._userCls.set(userCls);
17
- }
18
-
19
- protected _computedClass = computed(() => this._generateClass());
20
- private _generateClass() {
21
- return hlm(
13
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
+ protected _computedClass = computed(() =>
15
+ hlm(
22
16
  'inline-flex items-center rounded-md [&>[hlm][brnToggle][variant="outline"]]:-mx-[0.5px] [&>[hlm][brnToggle]]:rounded-none focus:[&>[hlm][brnToggle]]:z-10 first-of-type:[&>[hlm][brnToggle]]:rounded-l-md last-of-type:[&>[hlm][brnToggle]]:rounded-r-md',
23
- this._userCls(),
24
- );
25
- }
17
+ this.userClass(),
18
+ ),
19
+ );
26
20
  }
@@ -1,4 +1,4 @@
1
- import { computed, Directive, Input, signal } from '@angular/core';
1
+ import { computed, Directive, Input, input, signal } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/ui-core';
3
3
  import { cva, VariantProps } from 'class-variance-authority';
4
4
  import { ClassValue } from 'clsx';
@@ -45,14 +45,8 @@ export class HlmToggleDirective {
45
45
  this._size.set(value);
46
46
  }
47
47
 
48
- private readonly _userCls = signal<ClassValue>('');
49
- @Input()
50
- set class(userCls: ClassValue) {
51
- this._userCls.set(userCls);
52
- }
53
-
54
- protected _computedClass = computed(() => this._generateClass());
55
- private _generateClass() {
56
- return hlm(toggleVariants({ variant: this._variant(), size: this._size() }), this._userCls());
57
- }
48
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
49
+ protected _computedClass = computed(() =>
50
+ hlm(toggleVariants({ variant: this._variant(), size: this._size() }), this.userClass()),
51
+ );
58
52
  }
@@ -1,4 +1,4 @@
1
- import { Directive, Input, computed, signal } from '@angular/core';
1
+ import { Directive, computed, input } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/ui-core';
3
3
  import { ClassValue } from 'clsx';
4
4
 
@@ -12,14 +12,6 @@ export const hlmBlockquote = 'mt-6 border-border border-l-2 pl-6 italic';
12
12
  },
13
13
  })
14
14
  export class HlmBlockquoteDirective {
15
- private readonly _userCls = signal<ClassValue>('');
16
- @Input()
17
- set class(userCls: ClassValue) {
18
- this._userCls.set(userCls);
19
- }
20
-
21
- protected _computedClass = computed(() => this._generateClass());
22
- private _generateClass() {
23
- return hlm(hlmBlockquote, this._userCls());
24
- }
15
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
16
+ protected _computedClass = computed(() => hlm(hlmBlockquote, this.userClass()));
25
17
  }
@@ -1,4 +1,4 @@
1
- import { Directive, Input, computed, signal } from '@angular/core';
1
+ import { Directive, computed, input } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/ui-core';
3
3
  import { ClassValue } from 'clsx';
4
4
 
@@ -12,14 +12,6 @@ export const hlmCode = 'relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-m
12
12
  },
13
13
  })
14
14
  export class HlmCodeDirective {
15
- private readonly _userCls = signal<ClassValue>('');
16
- @Input()
17
- set class(userCls: ClassValue) {
18
- this._userCls.set(userCls);
19
- }
20
-
21
- protected _computedClass = computed(() => this._generateClass());
22
- private _generateClass() {
23
- return hlm(hlmCode, this._userCls());
24
- }
15
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
16
+ protected _computedClass = computed(() => hlm(hlmCode, this.userClass()));
25
17
  }
@@ -1,4 +1,4 @@
1
- import { Directive, Input, computed, signal } from '@angular/core';
1
+ import { Directive, computed, input } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/ui-core';
3
3
  import { ClassValue } from 'clsx';
4
4
 
@@ -12,14 +12,6 @@ export const hlmH1 = 'scroll-m-20 text-4xl font-extrabold tracking-tight lg:text
12
12
  },
13
13
  })
14
14
  export class HlmH1Directive {
15
- private readonly _userCls = signal<ClassValue>('');
16
- @Input()
17
- set class(userCls: ClassValue) {
18
- this._userCls.set(userCls);
19
- }
20
-
21
- protected _computedClass = computed(() => this._generateClass());
22
- private _generateClass() {
23
- return hlm(hlmH1, this._userCls());
24
- }
15
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
16
+ protected _computedClass = computed(() => hlm(hlmH1, this.userClass()));
25
17
  }