@spartan-ng/cli 0.0.1-alpha.396 → 0.0.1-alpha.397

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 (29) hide show
  1. package/package.json +1 -1
  2. package/src/generators/ui/libs/ui-accordion-helm/files/lib/hlm-accordion-icon.directive.ts.template +3 -3
  3. package/src/generators/ui/libs/ui-breadcrumb-helm/files/lib/breadcrumb-separator.component.ts.template +1 -1
  4. package/src/generators/ui/libs/ui-command-helm/files/index.ts.template +28 -26
  5. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-dialog-close-button.directive.ts.template +12 -5
  6. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-dialog.directive.ts.template +13 -5
  7. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-empty.directive.ts.template +2 -2
  8. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-group-label.component.ts.template +21 -0
  9. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-group.component.ts.template +22 -0
  10. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-icon.directive.ts.template +12 -0
  11. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-item.component.ts.template +45 -0
  12. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-list.component.ts.template +22 -0
  13. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-search-input.component.ts.template +25 -0
  14. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-search.component.ts.template +24 -0
  15. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-separator.component.ts.template +19 -0
  16. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-shortcut.component.ts.template +5 -14
  17. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command.component.ts.template +27 -0
  18. package/src/generators/ui/libs/ui-dialog-helm/files/lib/hlm-dialog-close.directive.ts.template +2 -1
  19. package/src/generators/ui/libs/ui-select-helm/files/lib/hlm-select-trigger.component.ts.template +1 -1
  20. package/src/generators/ui/supported-ui-libraries.json +37 -36
  21. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-group.directive.ts.template +0 -22
  22. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-input-wrapper.component.ts.template +0 -18
  23. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-input.directive.ts.template +0 -21
  24. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-item-icon.directive.ts.template +0 -17
  25. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-item.directive.ts.template +0 -28
  26. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-list.directive.ts.template +0 -15
  27. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-loader.directive.ts.template +0 -7
  28. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command-separator.directive.ts.template +0 -10
  29. package/src/generators/ui/libs/ui-command-helm/files/lib/hlm-command.directive.ts.template +0 -20
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spartan-ng/cli",
3
- "version": "0.0.1-alpha.396",
3
+ "version": "0.0.1-alpha.397",
4
4
  "type": "commonjs",
5
5
  "dependencies": {
6
6
  "@nx/angular": ">=20.0.0",
@@ -6,16 +6,16 @@ import { provideHlmIconConfig } from '@spartan-ng/ui-icon-helm';
6
6
  import type { ClassValue } from 'clsx';
7
7
 
8
8
  @Directive({
9
- selector: 'hlm-icon[hlmAccordionIcon], hlm-icon[hlmAccIcon]',
9
+ selector: 'ng-icon[hlmAccordionIcon], ng-icon[hlmAccIcon]',
10
10
  standalone: true,
11
- providers: [provideIcons({ lucideChevronDown }), provideHlmIconConfig({ size: 'none' })],
11
+ providers: [provideIcons({ lucideChevronDown }), provideHlmIconConfig({ size: 'sm' })],
12
12
  host: {
13
13
  '[class]': '_computedClass()',
14
14
  },
15
15
  })
16
16
  export class HlmAccordionIconDirective {
17
17
  public readonly userClass = input<ClassValue>('', { alias: 'class' });
18
- protected _computedClass = computed(() =>
18
+ protected readonly _computedClass = computed(() =>
19
19
  hlm('inline-block h-4 w-4 transition-transform [animation-duration:200]', this.userClass()),
20
20
  );
21
21
  }
@@ -26,6 +26,6 @@ export class HlmBreadcrumbSeparatorComponent {
26
26
  public readonly userClass = input<ClassValue>('', { alias: 'class' });
27
27
 
28
28
  protected readonly _computedClass = computed(() =>
29
- hlm('[&>hlm-icon]:w-3.5 [&>hlm-icon]:h-3.5 [&>hlm-icon]:flex flex items-center', this.userClass()),
29
+ hlm('[&>ng-icon]:w-3.5 [&>ng-icon]:h-3.5 [&>ng-icon]:flex', this.userClass()),
30
30
  );
31
31
  }
@@ -3,43 +3,45 @@ import { NgModule } from '@angular/core';
3
3
  import { HlmCommandDialogCloseButtonDirective } from './lib/hlm-command-dialog-close-button.directive';
4
4
  import { HlmCommandDialogDirective } from './lib/hlm-command-dialog.directive';
5
5
  import { HlmCommandEmptyDirective } from './lib/hlm-command-empty.directive';
6
- import { HlmCommandGroupDirective } from './lib/hlm-command-group.directive';
7
- import { HlmCommandInputWrapperComponent } from './lib/hlm-command-input-wrapper.component';
8
- import { HlmCommandInputDirective } from './lib/hlm-command-input.directive';
9
- import { HlmCommandItemIconDirective } from './lib/hlm-command-item-icon.directive';
10
- import { HlmCommandItemDirective } from './lib/hlm-command-item.directive';
11
- import { HlmCommandListDirective } from './lib/hlm-command-list.directive';
12
- import { HlmCommandSeparatorDirective } from './lib/hlm-command-separator.directive';
6
+ import { HlmCommandGroupLabelComponent } from './lib/hlm-command-group-label.component';
7
+ import { HlmCommandGroupComponent } from './lib/hlm-command-group.component';
8
+ import { HlmCommandIconDirective } from './lib/hlm-command-icon.directive';
9
+ import { HlmCommandItemComponent } from './lib/hlm-command-item.component';
10
+ import { HlmCommandListComponent } from './lib/hlm-command-list.component';
11
+ import { HlmCommandSearchInputComponent } from './lib/hlm-command-search-input.component';
12
+ import { HlmCommandSearchComponent } from './lib/hlm-command-search.component';
13
+ import { HlmCommandSeparatorComponent } from './lib/hlm-command-separator.component';
13
14
  import { HlmCommandShortcutComponent } from './lib/hlm-command-shortcut.component';
14
- import { HlmCommandDirective } from './lib/hlm-command.directive';
15
+ import { HlmCommandComponent } from './lib/hlm-command.component';
15
16
 
16
17
  export * from './lib/hlm-command-dialog-close-button.directive';
17
18
  export * from './lib/hlm-command-dialog.directive';
18
19
  export * from './lib/hlm-command-empty.directive';
19
- export * from './lib/hlm-command-group.directive';
20
- export * from './lib/hlm-command-input-wrapper.component';
21
- export * from './lib/hlm-command-input.directive';
22
- export * from './lib/hlm-command-item-icon.directive';
23
- export * from './lib/hlm-command-item.directive';
24
- export * from './lib/hlm-command-list.directive';
25
- export * from './lib/hlm-command-loader.directive';
26
- export * from './lib/hlm-command-separator.directive';
20
+ export * from './lib/hlm-command-group-label.component';
21
+ export * from './lib/hlm-command-group.component';
22
+ export * from './lib/hlm-command-icon.directive';
23
+ export * from './lib/hlm-command-item.component';
24
+ export * from './lib/hlm-command-list.component';
25
+ export * from './lib/hlm-command-search-input.component';
26
+ export * from './lib/hlm-command-search.component';
27
+ export * from './lib/hlm-command-separator.component';
27
28
  export * from './lib/hlm-command-shortcut.component';
28
- export * from './lib/hlm-command.directive';
29
+ export * from './lib/hlm-command.component';
29
30
 
30
31
  export const HlmCommandImports = [
31
- HlmCommandDirective,
32
- HlmCommandInputDirective,
33
- HlmCommandItemDirective,
34
- HlmCommandSeparatorDirective,
35
- HlmCommandGroupDirective,
36
- HlmCommandListDirective,
32
+ HlmCommandComponent,
33
+ HlmCommandItemComponent,
34
+ HlmCommandSeparatorComponent,
35
+ HlmCommandGroupComponent,
36
+ HlmCommandListComponent,
37
37
  HlmCommandShortcutComponent,
38
- HlmCommandItemIconDirective,
39
- HlmCommandEmptyDirective,
40
- HlmCommandInputWrapperComponent,
38
+ HlmCommandIconDirective,
41
39
  HlmCommandDialogCloseButtonDirective,
42
40
  HlmCommandDialogDirective,
41
+ HlmCommandSearchInputComponent,
42
+ HlmCommandSearchComponent,
43
+ HlmCommandGroupLabelComponent,
44
+ HlmCommandEmptyDirective,
43
45
  ] as const;
44
46
 
45
47
  @NgModule({
@@ -1,18 +1,25 @@
1
1
  import { Directive, computed, input } from '@angular/core';
2
2
  import { hlm } from '@spartan-ng/brain/core';
3
+ import { BrnDialogCloseDirective } from '@spartan-ng/brain/dialog';
3
4
  import { HlmButtonDirective, provideBrnButtonConfig } from '@spartan-ng/ui-button-helm';
5
+ import { provideHlmIconConfig } from '@spartan-ng/ui-icon-helm';
4
6
  import type { ClassValue } from 'clsx';
5
7
 
6
8
  @Directive({
7
- selector: '[hlmCmdDialogCloseBtn]',
9
+ selector: '[hlmCommandDialogCloseBtn]',
8
10
  standalone: true,
9
- hostDirectives: [HlmButtonDirective],
10
- providers: [provideBrnButtonConfig({ variant: 'ghost' })],
11
+ hostDirectives: [HlmButtonDirective, BrnDialogCloseDirective],
12
+ providers: [provideBrnButtonConfig({ variant: 'ghost' }), provideHlmIconConfig({ size: 'xs' })],
11
13
  host: {
12
- '[class]': 'computedClass()',
14
+ '[class]': '_computedClass()',
13
15
  },
14
16
  })
15
17
  export class HlmCommandDialogCloseButtonDirective {
16
18
  public readonly userClass = input<ClassValue>('', { alias: 'class' });
17
- protected readonly computedClass = computed(() => hlm('!p-1 !h-5 !w-5', this.userClass()));
19
+ protected readonly _computedClass = computed(() =>
20
+ hlm(
21
+ 'absolute top-3 right-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring font-medium h-10 hover:bg-accent hover:text-accent-foreground inline-flex items-center justify-center px-4 py-2 ring-offset-background rounded-md text-sm transition-colors !h-5 !p-1 !w-5',
22
+ this.userClass(),
23
+ ),
24
+ );
18
25
  }
@@ -1,22 +1,24 @@
1
- import { Directive, ElementRef, Renderer2, computed, effect, inject, input, signal } from '@angular/core';
1
+ import { Directive, ElementRef, Renderer2, computed, contentChild, effect, inject, input, signal } from '@angular/core';
2
+ import { BrnCommandSearchInputToken } from '@spartan-ng/brain/command';
2
3
  import { hlm, injectExposesStateProvider } from '@spartan-ng/brain/core';
3
4
  import type { ClassValue } from 'clsx';
4
- import { HlmCommandDirective } from './hlm-command.directive';
5
5
 
6
6
  @Directive({
7
- selector: '[hlmCmdDialog]',
7
+ selector: '[hlmCommandDialog]',
8
8
  standalone: true,
9
- hostDirectives: [HlmCommandDirective],
10
9
  host: {
11
10
  '[class]': '_computedClass()',
12
11
  },
13
12
  })
14
13
  export class HlmCommandDialogDirective {
15
14
  private readonly _stateProvider = injectExposesStateProvider({ host: true });
16
- public state = this._stateProvider.state ?? signal('closed').asReadonly();
15
+ public readonly state = this._stateProvider.state ?? signal('closed').asReadonly();
17
16
  private readonly _renderer = inject(Renderer2);
18
17
  private readonly _element = inject(ElementRef);
19
18
 
19
+ /** Access the search field */
20
+ private readonly _searchInput = contentChild(BrnCommandSearchInputToken, { read: ElementRef });
21
+
20
22
  public readonly userClass = input<ClassValue>('', { alias: 'class' });
21
23
  protected _computedClass = computed(() =>
22
24
  hlm(
@@ -28,6 +30,12 @@ export class HlmCommandDialogDirective {
28
30
  constructor() {
29
31
  effect(() => {
30
32
  this._renderer.setAttribute(this._element.nativeElement, 'data-state', this.state());
33
+
34
+ const searchInput = this._searchInput();
35
+
36
+ if (this.state() === 'open' && searchInput) {
37
+ searchInput.nativeElement.focus();
38
+ }
31
39
  });
32
40
  }
33
41
  }
@@ -3,7 +3,7 @@ import { hlm } from '@spartan-ng/brain/core';
3
3
  import type { ClassValue } from 'clsx';
4
4
 
5
5
  @Directive({
6
- selector: '[hlmCmdEmpty]',
6
+ selector: '[hlmCommandEmpty]',
7
7
  standalone: true,
8
8
  host: {
9
9
  '[class]': '_computedClass()',
@@ -11,5 +11,5 @@ import type { ClassValue } from 'clsx';
11
11
  })
12
12
  export class HlmCommandEmptyDirective {
13
13
  public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
- protected _computedClass = computed(() => hlm('py-6 text-center text-sm', this.userClass()));
14
+ protected readonly _computedClass = computed(() => hlm('py-6 text-center text-sm', this.userClass()));
15
15
  }
@@ -0,0 +1,21 @@
1
+ import { Component, computed, input } from '@angular/core';
2
+ import { hlm } from '@spartan-ng/brain/core';
3
+
4
+ @Component({
5
+ standalone: true,
6
+ selector: 'hlm-command-group-label',
7
+ template: '<ng-content />',
8
+ host: {
9
+ role: 'presentation',
10
+ '[class]': '_computedClass()',
11
+ },
12
+ })
13
+ export class HlmCommandGroupLabelComponent {
14
+ /*** The user defined class */
15
+ public readonly userClass = input<string>('', { alias: 'class' });
16
+
17
+ /*** The styles to apply */
18
+ protected readonly _computedClass = computed(() =>
19
+ hlm('font-medium px-2 py-1.5 text-muted-foreground text-xs', this.userClass()),
20
+ );
21
+ }
@@ -0,0 +1,22 @@
1
+ import { Component, computed, input } from '@angular/core';
2
+ import { BrnCommandGroupDirective } from '@spartan-ng/brain/command';
3
+ import { hlm } from '@spartan-ng/brain/core';
4
+
5
+ @Component({
6
+ standalone: true,
7
+ selector: 'hlm-command-group',
8
+ template: '<ng-content />',
9
+ hostDirectives: [BrnCommandGroupDirective],
10
+ host: {
11
+ '[class]': '_computedClass()',
12
+ },
13
+ })
14
+ export class HlmCommandGroupComponent {
15
+ /*** The user defined class */
16
+ public readonly userClass = input<string>('', { alias: 'class' });
17
+
18
+ /*** The styles to apply */
19
+ protected readonly _computedClass = computed(() =>
20
+ hlm('flex flex-col overflow-hidden p-1 text-foreground data-[hidden]:hidden', this.userClass()),
21
+ );
22
+ }
@@ -0,0 +1,12 @@
1
+ import { Directive } from '@angular/core';
2
+ import { provideHlmIconConfig } from '@spartan-ng/ui-icon-helm';
3
+
4
+ @Directive({
5
+ standalone: true,
6
+ selector: '[hlmCommandIcon]',
7
+ host: {
8
+ class: 'inline-flex mr-2 w-4 h-4',
9
+ },
10
+ providers: [provideHlmIconConfig({ size: 'sm' })],
11
+ })
12
+ export class HlmCommandIconDirective {}
@@ -0,0 +1,45 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { booleanAttribute, Component, computed, input, output } from '@angular/core';
3
+ import { BrnCommandItemDirective } from '@spartan-ng/brain/command';
4
+ import { hlm } from '@spartan-ng/brain/core';
5
+
6
+ @Component({
7
+ standalone: true,
8
+ selector: 'button[hlm-command-item]',
9
+ template: `
10
+ <ng-content />
11
+ `,
12
+ hostDirectives: [
13
+ {
14
+ directive: BrnCommandItemDirective,
15
+ inputs: ['value', 'disabled'],
16
+ outputs: ['selected'],
17
+ },
18
+ ],
19
+ host: {
20
+ '[class]': '_computedClass()',
21
+ },
22
+ })
23
+ export class HlmCommandItemComponent {
24
+ /** The value this item represents. */
25
+ public readonly value = input<string>();
26
+
27
+ /** Whether the item is disabled. */
28
+ public readonly disabled = input<boolean, BooleanInput>(false, {
29
+ transform: booleanAttribute,
30
+ });
31
+
32
+ /** Emits when the item is selected. */
33
+ public readonly selected = output<void>();
34
+
35
+ /*** The user defined class */
36
+ public readonly userClass = input<string>('', { alias: 'class' });
37
+
38
+ /*** The styles to apply */
39
+ protected readonly _computedClass = computed(() =>
40
+ hlm(
41
+ 'text-start aria-selected:bg-accent aria-selected:text-accent-foreground cursor-default disabled:opacity-50 disabled:pointer-events-none hover:bg-accent/50 items-center outline-none px-2 py-1.5 relative flex rounded-sm select-none text-sm data-[hidden]:hidden',
42
+ this.userClass(),
43
+ ),
44
+ );
45
+ }
@@ -0,0 +1,22 @@
1
+ import { Component, computed, input } from '@angular/core';
2
+ import { BrnCommandListDirective } from '@spartan-ng/brain/command';
3
+ import { hlm } from '@spartan-ng/brain/core';
4
+
5
+ @Component({
6
+ standalone: true,
7
+ selector: 'hlm-command-list',
8
+ template: '<ng-content />',
9
+ host: {
10
+ '[class]': '_computedClass()',
11
+ },
12
+ hostDirectives: [BrnCommandListDirective],
13
+ })
14
+ export class HlmCommandListComponent {
15
+ /** The user defined class */
16
+ public readonly userClass = input<string>('', { alias: 'class' });
17
+
18
+ /** The styles to apply */
19
+ protected readonly _computedClass = computed(() =>
20
+ hlm('max-h-[300px] overflow-x-hidden overflow-y-auto', this.userClass()),
21
+ );
22
+ }
@@ -0,0 +1,25 @@
1
+ import { Component, computed, input } from '@angular/core';
2
+ import { BrnCommandSearchInputDirective } from '@spartan-ng/brain/command';
3
+ import { hlm } from '@spartan-ng/brain/core';
4
+
5
+ @Component({
6
+ standalone: true,
7
+ selector: 'input[hlm-command-search-input]',
8
+ template: '',
9
+ hostDirectives: [BrnCommandSearchInputDirective],
10
+ host: {
11
+ '[class]': '_computedClass()',
12
+ },
13
+ })
14
+ export class HlmCommandSearchInputComponent {
15
+ /*** The user defined class */
16
+ public readonly userClass = input<string>('', { alias: 'class' });
17
+
18
+ /*** The styles to apply */
19
+ protected readonly _computedClass = computed(() =>
20
+ hlm(
21
+ 'bg-transparent disabled:cursor-not-allowed disabled:opacity-50 h-11 outline-none placeholder:text-muted-foreground py-3 text-sm w-full',
22
+ this.userClass(),
23
+ ),
24
+ );
25
+ }
@@ -0,0 +1,24 @@
1
+ import { Component, computed, input } from '@angular/core';
2
+ import { hlm } from '@spartan-ng/brain/core';
3
+ import { provideHlmIconConfig } from '@spartan-ng/ui-icon-helm';
4
+
5
+ @Component({
6
+ standalone: true,
7
+ selector: 'hlm-command-search',
8
+ template: `
9
+ <ng-content />
10
+ `,
11
+ host: {
12
+ '[class]': '_computedClass()',
13
+ },
14
+ providers: [provideHlmIconConfig({ size: 'sm' })],
15
+ })
16
+ export class HlmCommandSearchComponent {
17
+ /*** The user defined class */
18
+ public readonly userClass = input<string>('', { alias: 'class' });
19
+
20
+ /*** The styles to apply */
21
+ protected readonly _computedClass = computed(() =>
22
+ hlm('relative [&_ng-icon]:flex-none border-b border-border flex items-center px-3 space-x-2', this.userClass()),
23
+ );
24
+ }
@@ -0,0 +1,19 @@
1
+ import { Component, computed, input } from '@angular/core';
2
+ import { hlm } from '@spartan-ng/brain/core';
3
+
4
+ @Component({
5
+ standalone: true,
6
+ selector: 'hlm-command-separator',
7
+ template: '',
8
+ host: {
9
+ role: 'separator',
10
+ '[class]': '_computedClass()',
11
+ },
12
+ })
13
+ export class HlmCommandSeparatorComponent {
14
+ /*** The user defined class */
15
+ public readonly userClass = input<string>('', { alias: 'class' });
16
+
17
+ /*** The styles to apply */
18
+ protected readonly _computedClass = computed(() => hlm('h-px block w-full border-b border-border', this.userClass()));
19
+ }
@@ -1,20 +1,11 @@
1
- import { Component, computed, input } from '@angular/core';
2
- import { hlm } from '@spartan-ng/brain/core';
3
- import type { ClassValue } from 'clsx';
1
+ import { Component } from '@angular/core';
4
2
 
5
3
  @Component({
6
- selector: 'hlm-cmd-shortcut',
7
4
  standalone: true,
8
- template: `
9
- <ng-content />
10
- `,
5
+ selector: 'hlm-command-shortcut',
6
+ template: '<ng-content />',
11
7
  host: {
12
- '[class]': '_computedClass()',
8
+ class: 'font-light ml-auto opacity-60 text-xs tracking-widest',
13
9
  },
14
10
  })
15
- export class HlmCommandShortcutComponent {
16
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
17
- protected _computedClass = computed(() =>
18
- hlm('ml-auto font-light text-xs tracking-widest opacity-60', this.userClass()),
19
- );
20
- }
11
+ export class HlmCommandShortcutComponent {}
@@ -0,0 +1,27 @@
1
+ import { Component, computed, input } from '@angular/core';
2
+ import { BrnCommandDirective } from '@spartan-ng/brain/command';
3
+ import { hlm } from '@spartan-ng/brain/core';
4
+
5
+ @Component({
6
+ standalone: true,
7
+ selector: 'hlm-command',
8
+ template: `
9
+ <ng-content />
10
+ `,
11
+ hostDirectives: [BrnCommandDirective],
12
+ host: {
13
+ '[class]': '_computedClass()',
14
+ },
15
+ })
16
+ export class HlmCommandComponent {
17
+ /*** The user defined class */
18
+ public readonly userClass = input<string>('', { alias: 'class' });
19
+
20
+ /*** The styles to apply */
21
+ protected readonly _computedClass = computed(() =>
22
+ hlm(
23
+ 'w-96 bg-popover border border-border flex flex-col h-full overflow-hidden rounded-md text-popover-foreground',
24
+ this.userClass(),
25
+ ),
26
+ );
27
+ }
@@ -11,7 +11,8 @@ import type { ClassValue } from 'clsx';
11
11
  })
12
12
  export class HlmDialogCloseDirective {
13
13
  public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
- protected _computedClass = computed(() =>
14
+
15
+ protected readonly _computedClass = computed(() =>
15
16
  hlm(
16
17
  'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground',
17
18
  this.userClass(),
@@ -39,7 +39,7 @@ type SelectTriggerVariants = VariantProps<typeof selectTriggerVariants>;
39
39
  <button [class]="_computedClass()" #button hlmInput brnSelectTrigger type="button">
40
40
  <ng-content />
41
41
  @if (icon()) {
42
- <ng-content select="hlm-icon" />
42
+ <ng-content select="ng-icon" />
43
43
  } @else {
44
44
  <ng-icon hlm size="sm" class="ml-2 flex-none" name="lucideChevronDown" />
45
45
  }
@@ -5,7 +5,7 @@
5
5
  "@angular/core": ">=18.0.0",
6
6
  "@ng-icons/core": ">=29.0.0",
7
7
  "@ng-icons/lucide": ">=29.0.0",
8
- "@spartan-ng/brain": "0.0.1-alpha.396",
8
+ "@spartan-ng/brain": "0.0.1-alpha.397",
9
9
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
10
10
  "clsx": "^2.1.1"
11
11
  }
@@ -14,7 +14,7 @@
14
14
  "internalName": "ui-alert-helm",
15
15
  "peerDependencies": {
16
16
  "@angular/core": ">=18.0.0",
17
- "@spartan-ng/brain": "0.0.1-alpha.396",
17
+ "@spartan-ng/brain": "0.0.1-alpha.397",
18
18
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
19
19
  "class-variance-authority": "^0.7.0",
20
20
  "clsx": "^2.1.1"
@@ -24,7 +24,7 @@
24
24
  "internalName": "ui-alert-dialog-helm",
25
25
  "peerDependencies": {
26
26
  "@angular/core": ">=18.0.0",
27
- "@spartan-ng/brain": "0.0.1-alpha.396",
27
+ "@spartan-ng/brain": "0.0.1-alpha.397",
28
28
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
29
29
  "clsx": "^2.1.1"
30
30
  }
@@ -34,7 +34,7 @@
34
34
  "peerDependencies": {
35
35
  "@angular/cdk": ">=18.0.0",
36
36
  "@angular/core": ">=18.0.0",
37
- "@spartan-ng/brain": "0.0.1-alpha.396",
37
+ "@spartan-ng/brain": "0.0.1-alpha.397",
38
38
  "clsx": "^2.1.1"
39
39
  }
40
40
  },
@@ -42,7 +42,7 @@
42
42
  "internalName": "ui-avatar-helm",
43
43
  "peerDependencies": {
44
44
  "@angular/core": ">=18.0.0",
45
- "@spartan-ng/brain": "0.0.1-alpha.396",
45
+ "@spartan-ng/brain": "0.0.1-alpha.397",
46
46
  "class-variance-authority": "^0.7.0",
47
47
  "clsx": "^2.1.1"
48
48
  }
@@ -52,7 +52,7 @@
52
52
  "peerDependencies": {
53
53
  "@angular/cdk": ">=18.0.0",
54
54
  "@angular/core": ">=18.0.0",
55
- "@spartan-ng/brain": "0.0.1-alpha.396",
55
+ "@spartan-ng/brain": "0.0.1-alpha.397",
56
56
  "class-variance-authority": "^0.7.0",
57
57
  "clsx": "^2.1.1"
58
58
  }
@@ -64,7 +64,7 @@
64
64
  "@angular/router": "18.2.5",
65
65
  "@ng-icons/core": ">=29.0.0",
66
66
  "@ng-icons/lucide": ">=29.0.0",
67
- "@spartan-ng/brain": "0.0.1-alpha.396",
67
+ "@spartan-ng/brain": "0.0.1-alpha.397",
68
68
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
69
69
  "clsx": "^2.1.1"
70
70
  }
@@ -73,7 +73,7 @@
73
73
  "internalName": "ui-button-helm",
74
74
  "peerDependencies": {
75
75
  "@angular/core": ">=18.0.0",
76
- "@spartan-ng/brain": "0.0.1-alpha.396",
76
+ "@spartan-ng/brain": "0.0.1-alpha.397",
77
77
  "class-variance-authority": "^0.7.0",
78
78
  "clsx": "^2.1.1"
79
79
  }
@@ -85,7 +85,7 @@
85
85
  "@angular/core": ">=18.0.0",
86
86
  "@ng-icons/core": ">=29.0.0",
87
87
  "@ng-icons/lucide": ">=29.0.0",
88
- "@spartan-ng/brain": "0.0.1-alpha.396",
88
+ "@spartan-ng/brain": "0.0.1-alpha.397",
89
89
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
90
90
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381"
91
91
  }
@@ -94,7 +94,7 @@
94
94
  "internalName": "ui-card-helm",
95
95
  "peerDependencies": {
96
96
  "@angular/core": ">=18.0.0",
97
- "@spartan-ng/brain": "0.0.1-alpha.396",
97
+ "@spartan-ng/brain": "0.0.1-alpha.397",
98
98
  "class-variance-authority": "^0.7.0",
99
99
  "clsx": "^2.1.1"
100
100
  }
@@ -102,8 +102,9 @@
102
102
  "command": {
103
103
  "internalName": "ui-command-helm",
104
104
  "peerDependencies": {
105
+ "@angular/cdk": ">=18.0.0",
105
106
  "@angular/core": ">=18.0.0",
106
- "@spartan-ng/brain": "0.0.1-alpha.396",
107
+ "@spartan-ng/brain": "0.0.1-alpha.397",
107
108
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
108
109
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
109
110
  "clsx": "^2.1.1"
@@ -117,7 +118,7 @@
117
118
  "@angular/core": ">=18.0.0",
118
119
  "@ng-icons/core": ">=29.0.0",
119
120
  "@ng-icons/lucide": ">=29.0.0",
120
- "@spartan-ng/brain": "0.0.1-alpha.396",
121
+ "@spartan-ng/brain": "0.0.1-alpha.397",
121
122
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
122
123
  "clsx": "^2.1.1"
123
124
  }
@@ -133,7 +134,7 @@
133
134
  "peerDependencies": {
134
135
  "@angular/core": ">=18.0.0",
135
136
  "@angular/forms": ">=18.0.0",
136
- "@spartan-ng/brain": "0.0.1-alpha.396",
137
+ "@spartan-ng/brain": "0.0.1-alpha.397",
137
138
  "class-variance-authority": "^0.7.0",
138
139
  "clsx": "^2.1.1"
139
140
  }
@@ -142,7 +143,7 @@
142
143
  "internalName": "ui-label-helm",
143
144
  "peerDependencies": {
144
145
  "@angular/core": ">=18.0.0",
145
- "@spartan-ng/brain": "0.0.1-alpha.396",
146
+ "@spartan-ng/brain": "0.0.1-alpha.397",
146
147
  "class-variance-authority": "^0.7.0",
147
148
  "clsx": "^2.1.1"
148
149
  }
@@ -153,7 +154,7 @@
153
154
  "@angular/core": ">=18.0.0",
154
155
  "@ng-icons/core": ">=29.0.0",
155
156
  "@ng-icons/lucide": ">=29.0.0",
156
- "@spartan-ng/brain": "0.0.1-alpha.396",
157
+ "@spartan-ng/brain": "0.0.1-alpha.397",
157
158
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
158
159
  "class-variance-authority": "^0.7.0",
159
160
  "clsx": "^2.1.1"
@@ -163,7 +164,7 @@
163
164
  "internalName": "ui-popover-helm",
164
165
  "peerDependencies": {
165
166
  "@angular/core": ">=18.0.0",
166
- "@spartan-ng/brain": "0.0.1-alpha.396",
167
+ "@spartan-ng/brain": "0.0.1-alpha.397",
167
168
  "clsx": "^2.1.1"
168
169
  }
169
170
  },
@@ -171,7 +172,7 @@
171
172
  "internalName": "ui-progress-helm",
172
173
  "peerDependencies": {
173
174
  "@angular/core": ">=18.0.0",
174
- "@spartan-ng/brain": "0.0.1-alpha.396",
175
+ "@spartan-ng/brain": "0.0.1-alpha.397",
175
176
  "clsx": "^2.1.1"
176
177
  }
177
178
  },
@@ -179,7 +180,7 @@
179
180
  "internalName": "ui-radio-group-helm",
180
181
  "peerDependencies": {
181
182
  "@angular/core": ">=18.0.0",
182
- "@spartan-ng/brain": "0.0.1-alpha.396",
183
+ "@spartan-ng/brain": "0.0.1-alpha.397",
183
184
  "clsx": "^2.1.1"
184
185
  }
185
186
  },
@@ -187,7 +188,7 @@
187
188
  "internalName": "ui-scroll-area-helm",
188
189
  "peerDependencies": {
189
190
  "@angular/core": ">=18.0.0",
190
- "@spartan-ng/brain": "0.0.1-alpha.396",
191
+ "@spartan-ng/brain": "0.0.1-alpha.397",
191
192
  "clsx": "^2.1.1",
192
193
  "ngx-scrollbar": ">=16.0.0"
193
194
  }
@@ -196,7 +197,7 @@
196
197
  "internalName": "ui-separator-helm",
197
198
  "peerDependencies": {
198
199
  "@angular/core": ">=18.0.0",
199
- "@spartan-ng/brain": "0.0.1-alpha.396",
200
+ "@spartan-ng/brain": "0.0.1-alpha.397",
200
201
  "clsx": "^2.1.1"
201
202
  }
202
203
  },
@@ -206,7 +207,7 @@
206
207
  "@angular/core": ">=18.0.0",
207
208
  "@ng-icons/core": ">=29.0.0",
208
209
  "@ng-icons/lucide": ">=29.0.0",
209
- "@spartan-ng/brain": "0.0.1-alpha.396",
210
+ "@spartan-ng/brain": "0.0.1-alpha.397",
210
211
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
211
212
  "class-variance-authority": "^0.7.0",
212
213
  "clsx": "^2.1.1"
@@ -216,7 +217,7 @@
216
217
  "internalName": "ui-skeleton-helm",
217
218
  "peerDependencies": {
218
219
  "@angular/core": ">=18.0.0",
219
- "@spartan-ng/brain": "0.0.1-alpha.396",
220
+ "@spartan-ng/brain": "0.0.1-alpha.397",
220
221
  "clsx": "^2.1.1"
221
222
  }
222
223
  },
@@ -224,7 +225,7 @@
224
225
  "internalName": "ui-spinner-helm",
225
226
  "peerDependencies": {
226
227
  "@angular/core": ">=18.0.0",
227
- "@spartan-ng/brain": "0.0.1-alpha.396",
228
+ "@spartan-ng/brain": "0.0.1-alpha.397",
228
229
  "class-variance-authority": "^0.7.0",
229
230
  "clsx": "^2.1.1"
230
231
  }
@@ -235,7 +236,7 @@
235
236
  "@angular/cdk": ">=18.0.0",
236
237
  "@angular/core": ">=18.0.0",
237
238
  "@angular/forms": ">=18.0.0",
238
- "@spartan-ng/brain": "0.0.1-alpha.396",
239
+ "@spartan-ng/brain": "0.0.1-alpha.397",
239
240
  "clsx": "^2.1.1"
240
241
  }
241
242
  },
@@ -246,7 +247,7 @@
246
247
  "@angular/core": ">=18.0.0",
247
248
  "@ng-icons/core": ">=29.0.0",
248
249
  "@ng-icons/lucide": ">=29.0.0",
249
- "@spartan-ng/brain": "0.0.1-alpha.396",
250
+ "@spartan-ng/brain": "0.0.1-alpha.397",
250
251
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
251
252
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
252
253
  "class-variance-authority": "^0.7.0",
@@ -257,7 +258,7 @@
257
258
  "internalName": "ui-toggle-helm",
258
259
  "peerDependencies": {
259
260
  "@angular/core": ">=18.0.0",
260
- "@spartan-ng/brain": "0.0.1-alpha.396",
261
+ "@spartan-ng/brain": "0.0.1-alpha.397",
261
262
  "class-variance-authority": "^0.7.0",
262
263
  "clsx": "^2.1.1"
263
264
  }
@@ -266,7 +267,7 @@
266
267
  "internalName": "ui-typography-helm",
267
268
  "peerDependencies": {
268
269
  "@angular/core": ">=18.0.0",
269
- "@spartan-ng/brain": "0.0.1-alpha.396",
270
+ "@spartan-ng/brain": "0.0.1-alpha.397",
270
271
  "clsx": "^2.1.1"
271
272
  }
272
273
  },
@@ -275,7 +276,7 @@
275
276
  "peerDependencies": {
276
277
  "@angular/common": ">=18.0.0",
277
278
  "@angular/core": ">=18.0.0",
278
- "@spartan-ng/brain": "0.0.1-alpha.396",
279
+ "@spartan-ng/brain": "0.0.1-alpha.397",
279
280
  "clsx": "^2.1.1"
280
281
  }
281
282
  },
@@ -283,7 +284,7 @@
283
284
  "internalName": "ui-hover-card-helm",
284
285
  "peerDependencies": {
285
286
  "@angular/core": ">=18.0.0",
286
- "@spartan-ng/brain": "0.0.1-alpha.396",
287
+ "@spartan-ng/brain": "0.0.1-alpha.397",
287
288
  "clsx": "^2.1.1"
288
289
  }
289
290
  },
@@ -294,7 +295,7 @@
294
295
  "@angular/forms": ">=18.0.0",
295
296
  "@ng-icons/core": ">=29.0.0",
296
297
  "@ng-icons/lucide": ">=29.0.0",
297
- "@spartan-ng/brain": "0.0.1-alpha.396",
298
+ "@spartan-ng/brain": "0.0.1-alpha.397",
298
299
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
299
300
  "clsx": "^2.1.1"
300
301
  }
@@ -303,7 +304,7 @@
303
304
  "internalName": "ui-tooltip-helm",
304
305
  "peerDependencies": {
305
306
  "@angular/core": ">=18.0.0",
306
- "@spartan-ng/brain": "0.0.1-alpha.396"
307
+ "@spartan-ng/brain": "0.0.1-alpha.397"
307
308
  }
308
309
  },
309
310
  "pagination": {
@@ -315,7 +316,7 @@
315
316
  "@angular/router": ">=18.0.0",
316
317
  "@ng-icons/core": ">=29.0.0",
317
318
  "@ng-icons/lucide": ">=29.0.0",
318
- "@spartan-ng/brain": "0.0.1-alpha.396",
319
+ "@spartan-ng/brain": "0.0.1-alpha.397",
319
320
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
320
321
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
321
322
  "@spartan-ng/ui-select-helm": "0.0.1-alpha.381",
@@ -329,7 +330,7 @@
329
330
  "@angular/core": ">=18.0.0",
330
331
  "@ng-icons/core": ">=29.0.0",
331
332
  "@ng-icons/lucide": ">=29.0.0",
332
- "@spartan-ng/brain": "0.0.1-alpha.396",
333
+ "@spartan-ng/brain": "0.0.1-alpha.397",
333
334
  "@spartan-ng/ui-button-helm": "0.0.1-alpha.381",
334
335
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
335
336
  "clsx": "^2.1.1",
@@ -342,7 +343,7 @@
342
343
  "@angular/core": ">=18.0.0",
343
344
  "@ng-icons/core": ">=29.0.0",
344
345
  "@ng-icons/lucide": ">=29.0.0",
345
- "@spartan-ng/brain": "0.0.1-alpha.396",
346
+ "@spartan-ng/brain": "0.0.1-alpha.397",
346
347
  "@spartan-ng/ui-icon-helm": "0.0.1-alpha.381",
347
348
  "class-variance-authority": "^0.7.0",
348
349
  "clsx": "^2.1.1"
@@ -363,14 +364,14 @@
363
364
  "internalName": "ui-form-field-helm",
364
365
  "peerDependencies": {
365
366
  "@angular/core": ">=18.0.0",
366
- "@spartan-ng/brain": "0.0.1-alpha.396"
367
+ "@spartan-ng/brain": "0.0.1-alpha.397"
367
368
  }
368
369
  },
369
370
  "slider": {
370
371
  "internalName": "ui-slider-helm",
371
372
  "peerDependencies": {
372
373
  "@angular/core": ">=18.0.0",
373
- "@spartan-ng/brain": "0.0.1-alpha.396",
374
+ "@spartan-ng/brain": "0.0.1-alpha.397",
374
375
  "clsx": "^2.1.1"
375
376
  }
376
377
  }
@@ -1,22 +0,0 @@
1
- import { Directive, computed, input } from '@angular/core';
2
- import { hlm } from '@spartan-ng/brain/core';
3
- import type { ClassValue } from 'clsx';
4
-
5
- @Directive({
6
- selector: 'brn-cmd-group[hlm],cmdk-group[hlm]',
7
- standalone: true,
8
- host: {
9
- '[class]': '_computedClass()',
10
- },
11
- })
12
- export class HlmCommandGroupDirective {
13
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
- protected _computedClass = computed(() =>
15
- hlm(
16
- 'block [&[cmdk-hidden="true"]]:hidden\n' +
17
- '[&_.cmdk-group-label]:px-2 [&_.cmdk-group-label]:py-1.5 [&_.cmdk-group-label]:text-xs [&_.cmdk-group-label]:font-medium [&_.cmdk-group-label]:text-muted-foreground\n' +
18
- '[&_.cmdk-group-content]:flex [&_.cmdk-group-content]:flex-col [&_.cmdk-group-content]:flex-col overflow-hidden p-1 text-foreground',
19
- this.userClass(),
20
- ),
21
- );
22
- }
@@ -1,18 +0,0 @@
1
- import { Component, computed, input } from '@angular/core';
2
- import { hlm } from '@spartan-ng/brain/core';
3
- import type { ClassValue } from 'clsx';
4
-
5
- @Component({
6
- selector: 'hlm-cmd-input-wrapper',
7
- standalone: true,
8
- template: '<ng-content/>',
9
- host: {
10
- '[class]': '_computedClass()',
11
- },
12
- })
13
- export class HlmCommandInputWrapperComponent {
14
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
15
- protected _computedClass = computed(() =>
16
- hlm('flex space-x-2 items-center border-b border-border px-3 [&_ng-icon]:h-5 [&_ng-icon]:w-5', this.userClass()),
17
- );
18
- }
@@ -1,21 +0,0 @@
1
- import { Directive, computed, input } from '@angular/core';
2
- import { hlm } from '@spartan-ng/brain/core';
3
- import type { ClassValue } from 'clsx';
4
-
5
- @Directive({
6
- selector: '[hlm][brnCmdInput],[hlm][cmdkInput]',
7
- standalone: true,
8
- host: {
9
- '[class]': '_computedClass()',
10
- },
11
- })
12
- export class HlmCommandInputDirective {
13
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
-
15
- protected _computedClass = computed(() =>
16
- hlm(
17
- 'h-11 w-full bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',
18
- this.userClass(),
19
- ),
20
- );
21
- }
@@ -1,17 +0,0 @@
1
- import { Directive, computed, input } from '@angular/core';
2
- import { hlm } from '@spartan-ng/brain/core';
3
- import { provideHlmIconConfig } from '@spartan-ng/ui-icon-helm';
4
- import type { ClassValue } from 'clsx';
5
-
6
- @Directive({
7
- selector: '[hlmCmdIcon]',
8
- standalone: true,
9
- providers: [provideHlmIconConfig({ size: 'sm' })],
10
- host: {
11
- '[class]': '_computedClass()',
12
- },
13
- })
14
- export class HlmCommandItemIconDirective {
15
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
16
- protected _computedClass = computed(() => hlm('mr-2', this.userClass()));
17
- }
@@ -1,28 +0,0 @@
1
- import { Directive, computed, input } from '@angular/core';
2
- import { hlm } from '@spartan-ng/brain/core';
3
- import type { ClassValue } from 'clsx';
4
-
5
- @Directive({
6
- selector: '[hlm][brnCmdItem],[hlm][cmdkItem]',
7
- standalone: true,
8
- host: {
9
- '[class]': '_computedClass()',
10
- // This is needed after changes to the underlying CMDK library used for the BrnCommand primitive
11
- // Ideally we would remove the dependency on this outside module. If you are open to that please
12
- // reach out and if you are feeling super ambitious you can implement it yourself and open a PR!
13
- '[style.display]': '"flex"',
14
- },
15
- })
16
- export class HlmCommandItemDirective {
17
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
18
-
19
- protected _computedClass = computed(() =>
20
- hlm(
21
- 'items-center relative cursor-default select-none rounded-sm px-2 py-1.5 text-sm outline-none\n' +
22
- 'aria-selected:bg-accent aria-selected:text-accent-foreground\n' +
23
- 'hover:bg-accent/50\n' +
24
- 'disabled:pointer-events-none disabled:opacity-50',
25
- this.userClass(),
26
- ),
27
- );
28
- }
@@ -1,15 +0,0 @@
1
- import { Directive, computed, input } from '@angular/core';
2
- import { hlm } from '@spartan-ng/brain/core';
3
- import type { ClassValue } from 'clsx';
4
-
5
- @Directive({
6
- selector: 'cmdk-list[hlm],brn-cmd-list[hlm]',
7
- standalone: true,
8
- host: {
9
- '[class]': '_computedClass()',
10
- },
11
- })
12
- export class HlmCommandListDirective {
13
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
- protected _computedClass = computed(() => hlm('max-h-[300px] overflow-y-auto overflow-x-hidden', this.userClass()));
15
- }
@@ -1,7 +0,0 @@
1
- import { Directive } from '@angular/core';
2
-
3
- @Directive({
4
- selector: '[hlmCmdLoader]',
5
- standalone: true,
6
- })
7
- export class HlmCommandLoaderDirective {}
@@ -1,10 +0,0 @@
1
- import { Directive } from '@angular/core';
2
-
3
- @Directive({
4
- selector: 'cmdk-separator[hlm],brn-cmd-separator[hlm],[hlmCmdSeparator]',
5
- standalone: true,
6
- host: {
7
- class: '[&_hr]:border-border [&[cmdk-hidden="true"]]:hidden',
8
- },
9
- })
10
- export class HlmCommandSeparatorDirective {}
@@ -1,20 +0,0 @@
1
- import { Directive, computed, input } from '@angular/core';
2
- import { hlm } from '@spartan-ng/brain/core';
3
- import type { ClassValue } from 'clsx';
4
-
5
- @Directive({
6
- selector: 'cmdk-command[hlm],brn-cmd[hlm]',
7
- standalone: true,
8
- host: {
9
- '[class]': '_computedClass()',
10
- },
11
- })
12
- export class HlmCommandDirective {
13
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
- protected _computedClass = computed(() =>
15
- hlm(
16
- 'flex h-full w-full flex-col overflow-hidden rounded-md border border-border bg-popover text-popover-foreground',
17
- this.userClass(),
18
- ),
19
- );
20
- }