@spartan-ng/cli 0.0.1-alpha.529 → 0.0.1-alpha.531

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 (39) hide show
  1. package/package.json +1 -1
  2. package/src/generators/migrate-helm-imports/import-map.d.ts +1 -0
  3. package/src/generators/migrate-helm-imports/import-map.js +1 -0
  4. package/src/generators/migrate-helm-imports/import-map.js.map +1 -1
  5. package/src/generators/ui/libs/textarea/generator.d.ts +3 -0
  6. package/src/generators/ui/libs/textarea/generator.js +14 -0
  7. package/src/generators/ui/libs/textarea/generator.js.map +1 -0
  8. package/src/generators/ui/libs/ui-button-helm/files/lib/hlm-button.ts.template +1 -1
  9. package/src/generators/ui/libs/ui-empty-helm/files/index.ts.template +22 -0
  10. package/src/generators/ui/libs/ui-empty-helm/files/lib/hlm-empty-content.ts.template +18 -0
  11. package/src/generators/ui/libs/ui-empty-helm/files/lib/hlm-empty-description.ts.template +21 -0
  12. package/src/generators/ui/libs/ui-empty-helm/files/lib/hlm-empty-header.ts.template +18 -0
  13. package/src/generators/ui/libs/ui-empty-helm/files/lib/hlm-empty-media.ts.template +37 -0
  14. package/src/generators/ui/libs/ui-empty-helm/files/lib/hlm-empty-title.ts.template +16 -0
  15. package/src/generators/ui/libs/ui-empty-helm/files/lib/hlm-empty.ts.template +21 -0
  16. package/src/generators/ui/libs/ui-empty-helm/generator.d.ts +3 -0
  17. package/src/generators/ui/libs/ui-empty-helm/generator.js +14 -0
  18. package/src/generators/ui/libs/ui-empty-helm/generator.js.map +1 -0
  19. package/src/generators/ui/libs/ui-input-group-helm/files/index.ts.template +18 -9
  20. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group-addon.ts.template +42 -0
  21. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group-button.ts.template +54 -0
  22. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group-input.ts.template +31 -0
  23. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group-text.ts.template +20 -0
  24. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group-textarea.ts.template +31 -0
  25. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-input-group.ts.template +19 -36
  26. package/src/generators/ui/libs/ui-input-helm/files/lib/hlm-input.ts.template +9 -3
  27. package/src/generators/ui/libs/ui-textarea-helm/files/index.ts.template +5 -0
  28. package/src/generators/ui/libs/ui-textarea-helm/files/lib/hlm-textarea.ts.template +104 -0
  29. package/src/generators/ui/libs/ui-textarea-helm/generator.d.ts +3 -0
  30. package/src/generators/ui/libs/ui-textarea-helm/generator.js +14 -0
  31. package/src/generators/ui/libs/ui-textarea-helm/generator.js.map +1 -0
  32. package/src/generators/ui/primitive-deps.js +2 -0
  33. package/src/generators/ui/primitive-deps.js.map +1 -1
  34. package/src/generators/ui/primitives.d.ts +1 -1
  35. package/src/generators/ui/supported-ui-libraries.json +49 -31
  36. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-prefix-addon.ts.template +0 -36
  37. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-prefix.ts.template +0 -27
  38. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-suffix-addon.ts.template +0 -36
  39. package/src/generators/ui/libs/ui-input-group-helm/files/lib/hlm-suffix.ts.template +0 -27
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spartan-ng/cli",
3
- "version": "0.0.1-alpha.529",
3
+ "version": "0.0.1-alpha.531",
4
4
  "type": "commonjs",
5
5
  "dependencies": {
6
6
  "@nx/angular": ">=20.0.0",
@@ -18,6 +18,7 @@ declare const _default: {
18
18
  '@spartan-ng/ui-date-picker-helm': string;
19
19
  '@spartan-ng/ui-datepicker-helm': string;
20
20
  '@spartan-ng/ui-dialog-helm': string;
21
+ '@spartan-ng/ui-empty-helm': string;
21
22
  '@spartan-ng/ui-form-field-helm': string;
22
23
  '@spartan-ng/ui-formfield-helm': string;
23
24
  '@spartan-ng/ui-hover-card-helm': string;
@@ -20,6 +20,7 @@ exports.default = {
20
20
  '@spartan-ng/ui-date-picker-helm': '@spartan-ng/helm/date-picker',
21
21
  '@spartan-ng/ui-datepicker-helm': '@spartan-ng/helm/date-picker',
22
22
  '@spartan-ng/ui-dialog-helm': '@spartan-ng/helm/dialog',
23
+ '@spartan-ng/ui-empty-helm': '@spartan-ng/helm/empty',
23
24
  '@spartan-ng/ui-form-field-helm': '@spartan-ng/helm/form-field',
24
25
  '@spartan-ng/ui-formfield-helm': '@spartan-ng/helm/form-field',
25
26
  '@spartan-ng/ui-hover-card-helm': '@spartan-ng/helm/hover-card',
@@ -1 +1 @@
1
- {"version":3,"file":"import-map.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/migrate-helm-imports/import-map.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACd,+BAA+B,EAAE,4BAA4B;IAC7D,2BAA2B,EAAE,wBAAwB;IACrD,kCAAkC,EAAE,+BAA+B;IACnE,iCAAiC,EAAE,+BAA+B;IAClE,kCAAkC,EAAE,+BAA+B;IACnE,iCAAiC,EAAE,+BAA+B;IAClE,4BAA4B,EAAE,yBAAyB;IACvD,2BAA2B,EAAE,wBAAwB;IACrD,gCAAgC,EAAE,6BAA6B;IAC/D,4BAA4B,EAAE,yBAAyB;IACvD,kCAAkC,EAAE,+BAA+B;IACnE,8BAA8B,EAAE,2BAA2B;IAC3D,0BAA0B,EAAE,uBAAuB;IACnD,8BAA8B,EAAE,2BAA2B;IAC3D,8BAA8B,EAAE,2BAA2B;IAC3D,6BAA6B,EAAE,0BAA0B;IACzD,iCAAiC,EAAE,8BAA8B;IACjE,gCAAgC,EAAE,8BAA8B;IAChE,4BAA4B,EAAE,yBAAyB;IACvD,gCAAgC,EAAE,6BAA6B;IAC/D,+BAA+B,EAAE,6BAA6B;IAC9D,gCAAgC,EAAE,6BAA6B;IAC/D,+BAA+B,EAAE,6BAA6B;IAC9D,0BAA0B,EAAE,uBAAuB;IACnD,2BAA2B,EAAE,wBAAwB;IACrD,+BAA+B,EAAE,4BAA4B;IAC7D,8BAA8B,EAAE,4BAA4B;IAC5D,2BAA2B,EAAE,wBAAwB;IACrD,0BAA0B,EAAE,uBAAuB;IACnD,gCAAgC,EAAE,6BAA6B;IAC/D,6BAA6B,EAAE,0BAA0B;IACzD,8BAA8B,EAAE,2BAA2B;IAC3D,iCAAiC,EAAE,8BAA8B;IACjE,gCAAgC,EAAE,8BAA8B;IAChE,iCAAiC,EAAE,8BAA8B;IACjE,gCAAgC,EAAE,8BAA8B;IAChE,4BAA4B,EAAE,yBAAyB;IACvD,+BAA+B,EAAE,4BAA4B;IAC7D,2BAA2B,EAAE,wBAAwB;IACrD,8BAA8B,EAAE,2BAA2B;IAC3D,4BAA4B,EAAE,yBAAyB;IACvD,4BAA4B,EAAE,yBAAyB;IACvD,6BAA6B,EAAE,0BAA0B;IACzD,4BAA4B,EAAE,yBAAyB;IACvD,2BAA2B,EAAE,wBAAwB;IACrD,0BAA0B,EAAE,uBAAuB;IACnD,4BAA4B,EAAE,yBAAyB;IACvD,kCAAkC,EAAE,+BAA+B;IACnE,iCAAiC,EAAE,+BAA+B;IAClE,6BAA6B,EAAE,0BAA0B;IACzD,gCAAgC,EAAE,6BAA6B;CAC/D,CAAC"}
1
+ {"version":3,"file":"import-map.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/migrate-helm-imports/import-map.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACd,+BAA+B,EAAE,4BAA4B;IAC7D,2BAA2B,EAAE,wBAAwB;IACrD,kCAAkC,EAAE,+BAA+B;IACnE,iCAAiC,EAAE,+BAA+B;IAClE,kCAAkC,EAAE,+BAA+B;IACnE,iCAAiC,EAAE,+BAA+B;IAClE,4BAA4B,EAAE,yBAAyB;IACvD,2BAA2B,EAAE,wBAAwB;IACrD,gCAAgC,EAAE,6BAA6B;IAC/D,4BAA4B,EAAE,yBAAyB;IACvD,kCAAkC,EAAE,+BAA+B;IACnE,8BAA8B,EAAE,2BAA2B;IAC3D,0BAA0B,EAAE,uBAAuB;IACnD,8BAA8B,EAAE,2BAA2B;IAC3D,8BAA8B,EAAE,2BAA2B;IAC3D,6BAA6B,EAAE,0BAA0B;IACzD,iCAAiC,EAAE,8BAA8B;IACjE,gCAAgC,EAAE,8BAA8B;IAChE,4BAA4B,EAAE,yBAAyB;IACvD,2BAA2B,EAAE,wBAAwB;IACrD,gCAAgC,EAAE,6BAA6B;IAC/D,+BAA+B,EAAE,6BAA6B;IAC9D,gCAAgC,EAAE,6BAA6B;IAC/D,+BAA+B,EAAE,6BAA6B;IAC9D,0BAA0B,EAAE,uBAAuB;IACnD,2BAA2B,EAAE,wBAAwB;IACrD,+BAA+B,EAAE,4BAA4B;IAC7D,8BAA8B,EAAE,4BAA4B;IAC5D,2BAA2B,EAAE,wBAAwB;IACrD,0BAA0B,EAAE,uBAAuB;IACnD,gCAAgC,EAAE,6BAA6B;IAC/D,6BAA6B,EAAE,0BAA0B;IACzD,8BAA8B,EAAE,2BAA2B;IAC3D,iCAAiC,EAAE,8BAA8B;IACjE,gCAAgC,EAAE,8BAA8B;IAChE,iCAAiC,EAAE,8BAA8B;IACjE,gCAAgC,EAAE,8BAA8B;IAChE,4BAA4B,EAAE,yBAAyB;IACvD,+BAA+B,EAAE,4BAA4B;IAC7D,2BAA2B,EAAE,wBAAwB;IACrD,8BAA8B,EAAE,2BAA2B;IAC3D,4BAA4B,EAAE,yBAAyB;IACvD,4BAA4B,EAAE,yBAAyB;IACvD,6BAA6B,EAAE,0BAA0B;IACzD,4BAA4B,EAAE,yBAAyB;IACvD,2BAA2B,EAAE,wBAAwB;IACrD,0BAA0B,EAAE,uBAAuB;IACnD,4BAA4B,EAAE,yBAAyB;IACvD,kCAAkC,EAAE,+BAA+B;IACnE,iCAAiC,EAAE,+BAA+B;IAClE,6BAA6B,EAAE,0BAA0B;IACzD,gCAAgC,EAAE,6BAA6B;CAC/D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Tree } from '@nx/devkit';
2
+ import type { HlmBaseGeneratorSchema } from '../../../base/schema';
3
+ export declare function generator(tree: Tree, options: HlmBaseGeneratorSchema): Promise<import("@nx/devkit").GeneratorCallback>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generator = generator;
4
+ const tslib_1 = require("tslib");
5
+ const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
+ async function generator(tree, options) {
7
+ return await (0, generator_1.default)(tree, {
8
+ ...options,
9
+ primitiveName: 'textarea',
10
+ internalName: 'ui-textarea-helm',
11
+ publicName: 'textarea',
12
+ });
13
+ }
14
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/textarea/generator.ts"],"names":[],"mappings":";;AAIA,8BAOC;;AAVD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE;QACnC,GAAG,OAAO;QACV,aAAa,EAAE,UAAU;QACzB,YAAY,EAAE,kBAAkB;QAChC,UAAU,EAAE,UAAU;KACtB,CAAC,CAAC;AACJ,CAAC"}
@@ -6,7 +6,7 @@ import type { ClassValue } from 'clsx';
6
6
  import { injectBrnButtonConfig } from './hlm-button.token';
7
7
 
8
8
  export const buttonVariants = cva(
9
- 'focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 cursor-default items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all focus-visible:ring-[3px] data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
9
+ "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hallo inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_ng-icon:not([class*='size-'])]:size-4 [&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0",
10
10
  {
11
11
  variants: {
12
12
  variant: {
@@ -0,0 +1,22 @@
1
+ import { HlmEmpty } from './lib/hlm-empty';
2
+ import { HlmEmptyContent } from './lib/hlm-empty-content';
3
+ import { HlmEmptyDescription } from './lib/hlm-empty-description';
4
+ import { HlmEmptyHeader } from './lib/hlm-empty-header';
5
+ import { HlmEmptyMedia } from './lib/hlm-empty-media';
6
+ import { HlmEmptyTitle } from './lib/hlm-empty-title';
7
+
8
+ export * from './lib/hlm-empty';
9
+ export * from './lib/hlm-empty-content';
10
+ export * from './lib/hlm-empty-description';
11
+ export * from './lib/hlm-empty-header';
12
+ export * from './lib/hlm-empty-media';
13
+ export * from './lib/hlm-empty-title';
14
+
15
+ export const HlmEmptyImports = [
16
+ HlmEmpty,
17
+ HlmEmptyContent,
18
+ HlmEmptyDescription,
19
+ HlmEmptyHeader,
20
+ HlmEmptyTitle,
21
+ HlmEmptyMedia,
22
+ ] as const;
@@ -0,0 +1,18 @@
1
+ import { computed, Directive, input } from '@angular/core';
2
+ import { hlm } from '<%- importAlias %>/utils';
3
+ import type { ClassValue } from 'clsx';
4
+
5
+ @Directive({
6
+ selector: '[hlmEmptyContent]',
7
+ host: {
8
+ 'data-slot': 'empty-content',
9
+ '[class]': '_computedClass()',
10
+ },
11
+ })
12
+ export class HlmEmptyContent {
13
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
+
15
+ protected readonly _computedClass = computed(() =>
16
+ hlm('text-balancet flex w-full min-w-0 max-w-sm flex-col items-center gap-4 text-sm', this.userClass()),
17
+ );
18
+ }
@@ -0,0 +1,21 @@
1
+ import { computed, Directive, input } from '@angular/core';
2
+ import { hlm } from '<%- importAlias %>/utils';
3
+ import type { ClassValue } from 'clsx';
4
+
5
+ @Directive({
6
+ selector: '[hlmEmptyDescription]',
7
+ host: {
8
+ 'data-slot': 'empty-description',
9
+ '[class]': '_computedClass()',
10
+ },
11
+ })
12
+ export class HlmEmptyDescription {
13
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
+
15
+ protected readonly _computedClass = computed(() =>
16
+ hlm(
17
+ 'text-muted-foreground [&>a:hover]:text-primary text-sm/relaxed [&>a]:underline [&>a]:underline-offset-4',
18
+ this.userClass(),
19
+ ),
20
+ );
21
+ }
@@ -0,0 +1,18 @@
1
+ import { computed, Directive, input } from '@angular/core';
2
+ import { hlm } from '<%- importAlias %>/utils';
3
+ import type { ClassValue } from 'clsx';
4
+
5
+ @Directive({
6
+ selector: '[hlmEmptyHeader]',
7
+ host: {
8
+ 'data-slot': 'empty-header',
9
+ '[class]': '_computedClass()',
10
+ },
11
+ })
12
+ export class HlmEmptyHeader {
13
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
+
15
+ protected readonly _computedClass = computed(() =>
16
+ hlm('flex max-w-sm flex-col items-center gap-2 text-center', this.userClass()),
17
+ );
18
+ }
@@ -0,0 +1,37 @@
1
+ import { computed, Directive, input } from '@angular/core';
2
+ import { hlm } from '<%- importAlias %>/utils';
3
+ import { cva, VariantProps } from 'class-variance-authority';
4
+ import type { ClassValue } from 'clsx';
5
+
6
+ const emptyMediaVariants = cva(
7
+ 'mb-2 flex shrink-0 items-center justify-center [&_ng-icon]:pointer-events-none [&_ng-icon]:shrink-0',
8
+ {
9
+ variants: {
10
+ variant: {
11
+ default: 'bg-transparent',
12
+ icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_ng-icon:not([class*='size-'])]:size-6",
13
+ },
14
+ },
15
+ defaultVariants: {
16
+ variant: 'default',
17
+ },
18
+ },
19
+ );
20
+
21
+ export type EmptyMediaVariants = VariantProps<typeof emptyMediaVariants>;
22
+
23
+ @Directive({
24
+ selector: '[hlmEmptyMedia]',
25
+ host: {
26
+ 'data-slot': 'empty-media',
27
+ '[class]': '_computedClass()',
28
+ },
29
+ })
30
+ export class HlmEmptyMedia {
31
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
32
+ public readonly variant = input<EmptyMediaVariants['variant']>();
33
+
34
+ protected readonly _computedClass = computed(() =>
35
+ hlm(emptyMediaVariants({ variant: this.variant() }), this.userClass()),
36
+ );
37
+ }
@@ -0,0 +1,16 @@
1
+ import { computed, Directive, input } from '@angular/core';
2
+ import { hlm } from '<%- importAlias %>/utils';
3
+ import type { ClassValue } from 'clsx';
4
+
5
+ @Directive({
6
+ selector: '[hlmEmptyTitle]',
7
+ host: {
8
+ 'data-slot': 'empty-title',
9
+ '[class]': '_computedClass()',
10
+ },
11
+ })
12
+ export class HlmEmptyTitle {
13
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
+
15
+ protected readonly _computedClass = computed(() => hlm('text-lg font-medium tracking-tight', this.userClass()));
16
+ }
@@ -0,0 +1,21 @@
1
+ import { computed, Directive, input } from '@angular/core';
2
+ import { hlm } from '<%- importAlias %>/utils';
3
+ import type { ClassValue } from 'clsx';
4
+
5
+ @Directive({
6
+ selector: '[hlmEmpty]',
7
+ host: {
8
+ 'data-slot': 'empty',
9
+ '[class]': '_computedClass()',
10
+ },
11
+ })
12
+ export class HlmEmpty {
13
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
14
+
15
+ protected readonly _computedClass = computed(() =>
16
+ hlm(
17
+ 'flex min-w-0 flex-1 flex-col items-center justify-center gap-6 text-balance rounded-lg border-dashed p-6 text-center md:p-12',
18
+ this.userClass(),
19
+ ),
20
+ );
21
+ }
@@ -0,0 +1,3 @@
1
+ import type { Tree } from '@nx/devkit';
2
+ import type { HlmBaseGeneratorSchema } from '../../../base/schema';
3
+ export declare function generator(tree: Tree, options: HlmBaseGeneratorSchema): Promise<import("@nx/devkit").GeneratorCallback>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generator = generator;
4
+ const tslib_1 = require("tslib");
5
+ const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
+ async function generator(tree, options) {
7
+ return await (0, generator_1.default)(tree, {
8
+ ...options,
9
+ primitiveName: 'empty',
10
+ internalName: 'ui-empty-helm',
11
+ publicName: 'ui-empty-helm',
12
+ });
13
+ }
14
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/ui-empty-helm/generator.ts"],"names":[],"mappings":";;AAIA,8BAOC;;AAVD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE;QACnC,GAAG,OAAO;QACV,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,eAAe;QAC7B,UAAU,EAAE,eAAe;KAC3B,CAAC,CAAC;AACJ,CAAC"}
@@ -1,13 +1,22 @@
1
1
  import { HlmInputGroup } from './lib/hlm-input-group';
2
- import { HlmPrefix } from './lib/hlm-prefix';
3
- import { HlmPrefixAddon } from './lib/hlm-prefix-addon';
4
- import { HlmSuffix } from './lib/hlm-suffix';
5
- import { HlmSuffixAddon } from './lib/hlm-suffix-addon';
2
+ import { HlmInputGroupAddon } from './lib/hlm-input-group-addon';
3
+ import { HlmInputGroupButton } from './lib/hlm-input-group-button';
4
+ import { HlmInputGroupInput } from './lib/hlm-input-group-input';
5
+ import { HlmInputGroupText } from './lib/hlm-input-group-text';
6
+ import { HlmInputGroupTextarea } from './lib/hlm-input-group-textarea';
6
7
 
7
8
  export * from './lib/hlm-input-group';
8
- export * from './lib/hlm-prefix';
9
- export * from './lib/hlm-prefix-addon';
10
- export * from './lib/hlm-suffix';
11
- export * from './lib/hlm-suffix-addon';
9
+ export * from './lib/hlm-input-group-addon';
10
+ export * from './lib/hlm-input-group-button';
11
+ export * from './lib/hlm-input-group-input';
12
+ export * from './lib/hlm-input-group-text';
13
+ export * from './lib/hlm-input-group-textarea';
12
14
 
13
- export const HlmInputGroupImports = [HlmInputGroup, HlmSuffixAddon, HlmPrefixAddon, HlmPrefix, HlmSuffix] as const;
15
+ export const HlmInputGroupImports = [
16
+ HlmInputGroup,
17
+ HlmInputGroupAddon,
18
+ HlmInputGroupButton,
19
+ HlmInputGroupInput,
20
+ HlmInputGroupText,
21
+ HlmInputGroupTextarea,
22
+ ] as const;
@@ -0,0 +1,42 @@
1
+ import { computed, Directive, input } from '@angular/core';
2
+ import { hlm } from '<%- importAlias %>/utils';
3
+ import { cva, type VariantProps } from 'class-variance-authority';
4
+ import type { ClassValue } from 'clsx';
5
+
6
+ const inputGroupAddonVariants = cva(
7
+ "text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>ng-icon:not([class*='size-'])]:size-4",
8
+ {
9
+ variants: {
10
+ align: {
11
+ 'inline-start': 'order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]',
12
+ 'inline-end': 'order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]',
13
+ 'block-start':
14
+ '[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5',
15
+ 'block-end': '[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5',
16
+ },
17
+ },
18
+ defaultVariants: {
19
+ align: 'inline-start',
20
+ },
21
+ },
22
+ );
23
+
24
+ type InputGroupAddonVariants = VariantProps<typeof inputGroupAddonVariants>;
25
+
26
+ @Directive({
27
+ selector: 'hlm-input-group-addon,[hlmInputGroupAddon]',
28
+ host: {
29
+ role: 'group',
30
+ 'data-slot': 'input-group-addon',
31
+ '[attr.data-align]': 'align()',
32
+ '[class]': '_computedClass()',
33
+ },
34
+ })
35
+ export class HlmInputGroupAddon {
36
+ public readonly align = input<InputGroupAddonVariants['align']>('inline-start');
37
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
38
+
39
+ protected readonly _computedClass = computed(() =>
40
+ hlm(inputGroupAddonVariants({ align: this.align() }), this.userClass()),
41
+ );
42
+ }
@@ -0,0 +1,54 @@
1
+ import { computed, Directive, effect, inject, input } from '@angular/core';
2
+ import { HlmButton, provideBrnButtonConfig } from '<%- importAlias %>/button';
3
+ import { hlm } from '<%- importAlias %>/utils';
4
+ import { cva, type VariantProps } from 'class-variance-authority';
5
+ import type { ClassValue } from 'clsx';
6
+
7
+ const inputGroupAddonVariants = cva('flex items-center gap-2 text-sm shadow-none', {
8
+ variants: {
9
+ size: {
10
+ xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>ng-icon]:px-2 [&>ng-icon:not([class*='size-'])]:size-3.5",
11
+ sm: 'h-8 gap-1.5 rounded-md px-2.5 has-[>ng-icon]:px-2.5',
12
+ 'icon-xs': 'size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>ng-icon]:p-0',
13
+ 'icon-sm': 'size-8 p-0 has-[>ng-icon]:p-0',
14
+ },
15
+ },
16
+ defaultVariants: {
17
+ size: 'xs',
18
+ },
19
+ });
20
+
21
+ type InputGroupAddonVariants = VariantProps<typeof inputGroupAddonVariants>;
22
+
23
+ @Directive({
24
+ selector: 'button[hlmInputGroupButton]',
25
+ providers: [
26
+ provideBrnButtonConfig({
27
+ variant: 'ghost',
28
+ }),
29
+ ],
30
+ hostDirectives: [
31
+ {
32
+ directive: HlmButton,
33
+ inputs: ['variant'],
34
+ },
35
+ ],
36
+ host: {
37
+ '[attr.data-size]': 'size()',
38
+ },
39
+ })
40
+ export class HlmInputGroupButton {
41
+ private readonly _hlmButton = inject(HlmButton);
42
+ public readonly size = input<InputGroupAddonVariants['size']>('xs');
43
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
44
+
45
+ protected readonly _computedClass = computed(() =>
46
+ hlm(inputGroupAddonVariants({ size: this.size() }), this.userClass()),
47
+ );
48
+
49
+ constructor() {
50
+ effect(() => {
51
+ this._hlmButton.setClass(this._computedClass());
52
+ });
53
+ }
54
+ }
@@ -0,0 +1,31 @@
1
+ import { computed, Directive, effect, inject, input } from '@angular/core';
2
+ import { HlmInput } from '<%- importAlias %>/input';
3
+ import { hlm } from '<%- importAlias %>/utils';
4
+ import type { ClassValue } from 'clsx';
5
+
6
+ @Directive({
7
+ selector: 'input[hlmInputGroupInput]',
8
+ hostDirectives: [HlmInput],
9
+ host: {
10
+ '[class]': '_computedClass()',
11
+ 'data-slot': 'input-group-control',
12
+ },
13
+ })
14
+ export class HlmInputGroupInput {
15
+ private readonly _hlmInput = inject(HlmInput);
16
+
17
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
18
+
19
+ protected readonly _computedClass = computed(() =>
20
+ hlm(
21
+ 'flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent',
22
+ this.userClass(),
23
+ ),
24
+ );
25
+
26
+ constructor() {
27
+ effect(() => {
28
+ this._hlmInput.setClass(this._computedClass());
29
+ });
30
+ }
31
+ }
@@ -0,0 +1,20 @@
1
+ import { computed, Directive, input } from '@angular/core';
2
+ import { hlm } from '<%- importAlias %>/utils';
3
+ import type { ClassValue } from 'clsx';
4
+
5
+ @Directive({
6
+ selector: 'span[hlmInputGroupText]',
7
+ host: {
8
+ '[class]': '_computedClass()',
9
+ },
10
+ })
11
+ export class HlmInputGroupText {
12
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
13
+
14
+ protected readonly _computedClass = computed(() =>
15
+ hlm(
16
+ `text-muted-foreground flex items-center gap-2 text-sm [&_ng-icon:not([class*='size-'])]:size-4 [&_ng-icon]:pointer-events-none`,
17
+ this.userClass(),
18
+ ),
19
+ );
20
+ }
@@ -0,0 +1,31 @@
1
+ import { computed, Directive, effect, inject, input } from '@angular/core';
2
+ import { HlmTextarea } from '<%- importAlias %>/textarea';
3
+ import { hlm } from '<%- importAlias %>/utils';
4
+ import type { ClassValue } from 'clsx';
5
+
6
+ @Directive({
7
+ selector: 'textarea[hlmInputGroupTextarea]',
8
+ hostDirectives: [HlmTextarea],
9
+ host: {
10
+ '[class]': '_computedClass()',
11
+ 'data-slot': 'input-group-control',
12
+ },
13
+ })
14
+ export class HlmInputGroupTextarea {
15
+ private readonly _hlmInput = inject(HlmTextarea);
16
+
17
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
18
+
19
+ protected readonly _computedClass = computed(() =>
20
+ hlm(
21
+ 'flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent',
22
+ this.userClass(),
23
+ ),
24
+ );
25
+
26
+ constructor() {
27
+ effect(() => {
28
+ this._hlmInput.setClass(this._computedClass());
29
+ });
30
+ }
31
+ }
@@ -1,50 +1,33 @@
1
- import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
- import { provideHlmIconConfig } from '<%- importAlias %>/icon';
1
+ import { computed, Directive, input } from '@angular/core';
3
2
  import { hlm } from '<%- importAlias %>/utils';
4
3
  import type { ClassValue } from 'clsx';
5
4
 
6
- @Component({
7
- selector: 'hlm-input-group',
8
- changeDetection: ChangeDetectionStrategy.OnPush,
9
- providers: [
10
- provideHlmIconConfig({
11
- size: 'sm',
12
- }),
13
- ],
14
- template: `
15
- <ng-content select="hlm-prefix-addon, [hlmPrefixAddon]" />
16
- <div [class]="_inputWrapperClasses()">
17
- <ng-content select="hlm-prefix, [hlmPrefix]" />
18
- <ng-content select="input[hlmInput], textarea[hlmInput]"></ng-content>
19
- <ng-content select="hlm-suffix, [hlmSuffix]" />
20
- </div>
21
- <ng-content select="hlm-suffix-addon, [hlmSuffixAddon]" />
22
- `,
5
+ @Directive({
6
+ selector: '[hlmInputGroup],hlm-input-group',
23
7
  host: {
24
- '[class]': '_wrapperClasses()',
8
+ 'data-slot': 'input-group',
9
+ role: 'group',
10
+ '[class]': '_computedClass()',
25
11
  },
26
12
  })
27
13
  export class HlmInputGroup {
28
14
  public readonly userClass = input<ClassValue>('', { alias: 'class' });
29
- public readonly inputWrapperClass = input<ClassValue>('');
30
15
 
31
- protected readonly _wrapperClasses = computed(() =>
16
+ protected readonly _computedClass = computed(() =>
32
17
  hlm(
33
- 'shadow-xs group flex w-full items-stretch rounded-md has-[*:disabled]:pointer-events-none has-[*:disabled]:opacity-50 ' +
34
- // Reset inner input/textarea
35
- '[&_[hlmInput]]:h-auto [&_[hlmInput]]:flex-1 [&_[hlmInput]]:border-0 [&_[hlmInput]]:bg-transparent [&_[hlmInput]]:px-0 [&_[hlmInput]]:py-0 [&_[hlmInput]]:shadow-none [&_[hlmInput]]:outline-none [&_[hlmInput]]:ring-0 [&_[hlmInput]]:ring-offset-0 [&_textarea[hlmInput]]:min-h-6' +
36
- this.userClass(),
37
- ),
38
- );
18
+ 'group/input-group border-input dark:bg-input/30 shadow-xs relative flex w-full items-center rounded-md border outline-none transition-[color,box-shadow]',
19
+ 'h-9 min-w-0 has-[>textarea]:h-auto',
20
+ // Variants based on alignment.
21
+ 'has-[>[data-align=inline-start]]:[&>input]:pl-2',
22
+ 'has-[>[data-align=inline-end]]:[&>input]:pr-2',
23
+ 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3',
24
+ 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3',
25
+ // Focus state.
26
+ 'has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]',
27
+ // Error state.
28
+ 'has-[>.ng-invalid.ng-touched]:ring-destructive/20 has-[>.ng-invalid.ng-touched]:border-destructive dark:has-[>.ng-invalid.ng-touched]:ring-destructive/40',
39
29
 
40
- protected readonly _inputWrapperClasses = computed(() =>
41
- hlm(
42
- 'border-input bg-background placeholder:text-muted-foreground focus-within:border-ring focus-within:ring-ring/50 z-20 flex h-auto min-h-9 w-full flex-row gap-1 rounded-md border px-3 text-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium focus-within:outline-none focus-within:ring-[3px]' +
43
- // Invalid States
44
- ' has-[>.ng-invalid.ng-touched]:text-destructive/20 dark:[&.ng-invalid.ng-touched]:text-destructive/40 has-[>.ng-invalid.ng-touched]:border-destructive has-[>.ng-invalid.ng-touched]:focus-within:ring-destructive' +
45
- // Group addon specific
46
- ' group-has-[hlm-prefix-addon,[hlmPrefixAddon]]:rounded-l-none group-has-[hlm-suffix-addon,[hlmSuffixAddon]]:rounded-r-none group-has-[hlm-prefix-addon,[hlmPrefixAddon]]:border-l-0 group-has-[hlm-suffix-addon,[hlmSuffixAddon]]:border-r-0',
47
- this.inputWrapperClass(),
30
+ this.userClass(),
48
31
  ),
49
32
  );
50
33
  }
@@ -8,6 +8,7 @@ import {
8
8
  Injector,
9
9
  input,
10
10
  linkedSignal,
11
+ signal,
11
12
  untracked,
12
13
  } from '@angular/core';
13
14
  import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
@@ -22,8 +23,8 @@ export const inputVariants = cva(
22
23
  {
23
24
  variants: {
24
25
  error: {
25
- auto: '[&.ng-invalid.ng-touched]:text-destructive/20 dark:[&.ng-invalid.ng-touched]:text-destructive/40 [&.ng-invalid.ng-touched]:border-destructive [&.ng-invalid.ng-touched]:focus-visible:ring-destructive',
26
- true: 'text-destructive/20 dark:text-destructive/40 border-destructive focus-visible:ring-destructive',
26
+ auto: '[&.ng-invalid.ng-touched]:border-destructive [&.ng-invalid.ng-touched]:ring-destructive/20 dark:[&.ng-invalid.ng-touched]:ring-destructive/40',
27
+ true: 'border-destructive focus-visible:border-destructive focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40',
27
28
  },
28
29
  },
29
30
  defaultVariants: {
@@ -47,6 +48,7 @@ type InputVariants = VariantProps<typeof inputVariants>;
47
48
  })
48
49
  export class HlmInput implements BrnFormFieldControl, DoCheck {
49
50
  private readonly _injector = inject(Injector);
51
+ private readonly _additionalClasses = signal<ClassValue>('');
50
52
 
51
53
  private readonly _errorStateTracker: ErrorStateTracker;
52
54
 
@@ -56,7 +58,7 @@ export class HlmInput implements BrnFormFieldControl, DoCheck {
56
58
 
57
59
  public readonly userClass = input<ClassValue>('', { alias: 'class' });
58
60
  protected readonly _computedClass = computed(() =>
59
- hlm(inputVariants({ error: this._state().error }), this.userClass()),
61
+ hlm(inputVariants({ error: this._state().error }), this.userClass(), this._additionalClasses()),
60
62
  );
61
63
 
62
64
  public readonly error = input<InputVariants['error']>('auto');
@@ -94,4 +96,8 @@ export class HlmInput implements BrnFormFieldControl, DoCheck {
94
96
  setError(error: InputVariants['error']) {
95
97
  this._state.set({ error });
96
98
  }
99
+
100
+ setClass(classes: string): void {
101
+ this._additionalClasses.set(classes);
102
+ }
97
103
  }
@@ -0,0 +1,5 @@
1
+ import { HlmTextarea } from './lib/hlm-textarea';
2
+
3
+ export * from './lib/hlm-textarea';
4
+
5
+ export const HlmTextareaImports = [HlmTextarea] as const;
@@ -0,0 +1,104 @@
1
+ import {
2
+ computed,
3
+ Directive,
4
+ type DoCheck,
5
+ effect,
6
+ forwardRef,
7
+ inject,
8
+ Injector,
9
+ input,
10
+ linkedSignal,
11
+ signal,
12
+ untracked,
13
+ } from '@angular/core';
14
+ import { FormGroupDirective, NgControl, NgForm } from '@angular/forms';
15
+ import { BrnFormFieldControl } from '@spartan-ng/brain/form-field';
16
+ import { ErrorStateMatcher, ErrorStateTracker } from '@spartan-ng/brain/forms';
17
+ import { hlm } from '<%- importAlias %>/utils';
18
+ import { cva, type VariantProps } from 'class-variance-authority';
19
+ import type { ClassValue } from 'clsx';
20
+
21
+ export const textareaVariants = cva(
22
+ 'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 dark:bg-input/30 shadow-xs flex min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base outline-none transition-[color,box-shadow] [field-sizing:content] focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
23
+ {
24
+ variants: {
25
+ error: {
26
+ auto: '[&.ng-invalid.ng-touched]:border-destructive [&.ng-invalid.ng-touched]:ring-destructive/20 dark:[&.ng-invalid.ng-touched]:ring-destructive/40',
27
+ true: 'border-destructive focus-visible:border-destructive focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40',
28
+ },
29
+ },
30
+ defaultVariants: {
31
+ error: 'auto',
32
+ },
33
+ },
34
+ );
35
+ type TextareaVariants = VariantProps<typeof textareaVariants>;
36
+
37
+ @Directive({
38
+ selector: '[hlmTextarea]',
39
+ host: {
40
+ 'data-slot': 'textarea',
41
+ '[class]': '_computedClass()',
42
+ },
43
+ providers: [
44
+ {
45
+ provide: BrnFormFieldControl,
46
+ useExisting: forwardRef(() => HlmTextarea),
47
+ },
48
+ ],
49
+ })
50
+ export class HlmTextarea implements BrnFormFieldControl, DoCheck {
51
+ private readonly _injector = inject(Injector);
52
+ private readonly _additionalClasses = signal<ClassValue>('');
53
+
54
+ private readonly _errorStateTracker: ErrorStateTracker;
55
+
56
+ private readonly _defaultErrorStateMatcher = inject(ErrorStateMatcher);
57
+ private readonly _parentForm = inject(NgForm, { optional: true });
58
+ private readonly _parentFormGroup = inject(FormGroupDirective, { optional: true });
59
+
60
+ public readonly userClass = input<ClassValue>('', { alias: 'class' });
61
+ protected readonly _computedClass = computed(() =>
62
+ hlm(textareaVariants({ error: this._state().error }), this.userClass(), this._additionalClasses()),
63
+ );
64
+
65
+ public readonly error = input<TextareaVariants['error']>('auto');
66
+
67
+ protected readonly _state = linkedSignal(() => ({ error: this.error() }));
68
+
69
+ public readonly ngControl: NgControl | null = this._injector.get(NgControl, null);
70
+
71
+ public readonly errorState = computed(() => this._errorStateTracker.errorState());
72
+
73
+ constructor() {
74
+ this._errorStateTracker = new ErrorStateTracker(
75
+ this._defaultErrorStateMatcher,
76
+ this.ngControl,
77
+ this._parentFormGroup,
78
+ this._parentForm,
79
+ );
80
+
81
+ effect(() => {
82
+ const error = this._errorStateTracker.errorState();
83
+ untracked(() => {
84
+ if (this.ngControl) {
85
+ const shouldShowError = error && this.ngControl.invalid && (this.ngControl.touched || this.ngControl.dirty);
86
+ this._errorStateTracker.errorState.set(shouldShowError ? true : false);
87
+ this.setError(shouldShowError ? true : 'auto');
88
+ }
89
+ });
90
+ });
91
+ }
92
+
93
+ ngDoCheck() {
94
+ this._errorStateTracker.updateErrorState();
95
+ }
96
+
97
+ public setError(error: TextareaVariants['error']): void {
98
+ this._state.set({ error });
99
+ }
100
+
101
+ public setClass(classes: string): void {
102
+ this._additionalClasses.set(classes);
103
+ }
104
+ }
@@ -0,0 +1,3 @@
1
+ import type { Tree } from '@nx/devkit';
2
+ import type { HlmBaseGeneratorSchema } from '../../../base/schema';
3
+ export declare function generator(tree: Tree, options: HlmBaseGeneratorSchema): Promise<import("@nx/devkit").GeneratorCallback>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generator = generator;
4
+ const tslib_1 = require("tslib");
5
+ const generator_1 = tslib_1.__importDefault(require("../../../base/generator"));
6
+ async function generator(tree, options) {
7
+ return await (0, generator_1.default)(tree, {
8
+ ...options,
9
+ primitiveName: 'textarea',
10
+ internalName: 'ui-textarea-helm',
11
+ publicName: 'ui-textarea-helm',
12
+ });
13
+ }
14
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../../../libs/cli/src/generators/ui/libs/ui-textarea-helm/generator.ts"],"names":[],"mappings":";;AAIA,8BAOC;;AAVD,gFAAuD;AAGhD,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,OAA+B;IAC1E,OAAO,MAAM,IAAA,mBAAgB,EAAC,IAAI,EAAE;QACnC,GAAG,OAAO;QACV,aAAa,EAAE,UAAU;QACzB,YAAY,EAAE,kBAAkB;QAChC,UAAU,EAAE,kBAAkB;KAC9B,CAAC,CAAC;AACJ,CAAC"}
@@ -21,6 +21,7 @@ exports.primitiveDependencies = {
21
21
  'context-menu': ['utils'],
22
22
  'date-picker': ['utils', 'calendar', 'icon', 'popover'],
23
23
  dialog: ['utils'],
24
+ empty: ['utils'],
24
25
  'form-field': ['utils'],
25
26
  'hover-card': ['utils'],
26
27
  icon: ['utils'],
@@ -47,6 +48,7 @@ exports.primitiveDependencies = {
47
48
  switch: ['utils'],
48
49
  table: ['utils'],
49
50
  tabs: ['utils'],
51
+ textarea: ['utils', 'form-field'],
50
52
  toggle: ['utils'],
51
53
  'toggle-group': ['utils'],
52
54
  tooltip: ['utils'],
@@ -1 +1 @@
1
- {"version":3,"file":"primitive-deps.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/ui/primitive-deps.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAmC;IACpE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnC,cAAc,EAAE,CAAC,OAAO,CAAC;IACzB,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;IACrD,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC7B,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,cAAc,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC;IAChD,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,CAAC,OAAO,CAAC;IACtB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;IACpC,cAAc,EAAE,CAAC,OAAO,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC;IACvD,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,KAAK,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC;IAC9B,aAAa,EAAE,CAAC,OAAO,CAAC;IACxB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IAC9B,GAAG,EAAE,CAAC,OAAO,CAAC;IACd,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,aAAa,EAAE,CAAC,OAAO,CAAC;IACxB,aAAa,EAAE,CAAC,OAAO,CAAC;IACxB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;IACvC,SAAS,EAAE,CAAC,OAAO,CAAC;IACpB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC;IAC9E,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,IAAI,EAAE,CAAC,OAAO,CAAC;IACf,MAAM,EAAE,CAAC,OAAO,CAAC;IACjB,cAAc,EAAE,CAAC,OAAO,CAAC;IACzB,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,KAAK,EAAE,EAAE;CACT,CAAC;AAEK,MAAM,sBAAsB,GAAG,CAAC,UAAuB,EAAe,EAAE;IAC9E,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAa,CAAC;IAEjD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,6BAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,2FAA2F;gBAC3F,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACxC,CAAC,CAAC;AAdW,QAAA,sBAAsB,0BAcjC"}
1
+ {"version":3,"file":"primitive-deps.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/ui/primitive-deps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export type Primitive = 'accordion' | 'alert' | 'alert-dialog' | 'aspect-ratio' | 'autocomplete' | 'avatar' | 'badge' | 'breadcrumb' | 'button' | 'button-group' | 'calendar' | 'card' | 'carousel' | 'checkbox' | 'collapsible' | 'command' | 'context-menu' | 'date-picker' | 'dialog' | 'form-field' | 'hover-card' | 'icon' | 'input' | 'input-group' | 'input-otp' | 'kbd' | 'label' | 'menu' | 'menubar' | 'pagination' | 'popover' | 'progress' | 'radio-group' | 'scroll-area' | 'select' | 'separator' | 'sheet' | 'sidebar' | 'skeleton' | 'slider' | 'sonner' | 'spinner' | 'switch' | 'table' | 'tabs' | 'toggle' | 'toggle-group' | 'tooltip' | 'utils';
1
+ export type Primitive = 'accordion' | 'alert' | 'alert-dialog' | 'aspect-ratio' | 'autocomplete' | 'avatar' | 'badge' | 'breadcrumb' | 'button' | 'button-group' | 'calendar' | 'card' | 'carousel' | 'checkbox' | 'collapsible' | 'command' | 'context-menu' | 'date-picker' | 'dialog' | 'empty' | 'form-field' | 'hover-card' | 'icon' | 'input' | 'input-group' | 'input-otp' | 'kbd' | 'label' | 'menu' | 'menubar' | 'pagination' | 'popover' | 'progress' | 'radio-group' | 'scroll-area' | 'select' | 'separator' | 'sheet' | 'sidebar' | 'skeleton' | 'slider' | 'sonner' | 'spinner' | 'switch' | 'table' | 'tabs' | 'textarea' | 'toggle' | 'toggle-group' | 'tooltip' | 'utils';
@@ -3,7 +3,7 @@
3
3
  "internalName": "ui-accordion-helm",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=19.0.0",
6
- "@spartan-ng/brain": "0.0.1-alpha.529",
6
+ "@spartan-ng/brain": "0.0.1-alpha.531",
7
7
  "clsx": "^2.1.1",
8
8
  "@ng-icons/core": ">=29.0.0",
9
9
  "@ng-icons/lucide": ">=29.0.0"
@@ -21,7 +21,7 @@
21
21
  "internalName": "ui-alert-dialog-helm",
22
22
  "peerDependencies": {
23
23
  "@angular/core": ">=19.0.0",
24
- "@spartan-ng/brain": "0.0.1-alpha.529",
24
+ "@spartan-ng/brain": "0.0.1-alpha.531",
25
25
  "clsx": "^2.1.1"
26
26
  }
27
27
  },
@@ -38,7 +38,7 @@
38
38
  "peerDependencies": {
39
39
  "@angular/core": ">=19.0.0",
40
40
  "clsx": "^2.1.1",
41
- "@spartan-ng/brain": "0.0.1-alpha.529",
41
+ "@spartan-ng/brain": "0.0.1-alpha.531",
42
42
  "@angular/cdk": ">=19.0.0",
43
43
  "@angular/common": ">=19.0.0",
44
44
  "@angular/forms": ">=19.0.0",
@@ -50,7 +50,7 @@
50
50
  "internalName": "ui-avatar-helm",
51
51
  "peerDependencies": {
52
52
  "@angular/core": ">=19.0.0",
53
- "@spartan-ng/brain": "0.0.1-alpha.529",
53
+ "@spartan-ng/brain": "0.0.1-alpha.531",
54
54
  "clsx": "^2.1.1"
55
55
  }
56
56
  },
@@ -76,7 +76,7 @@
76
76
  "internalName": "ui-button-helm",
77
77
  "peerDependencies": {
78
78
  "@angular/core": ">=19.0.0",
79
- "@spartan-ng/brain": "0.0.1-alpha.529",
79
+ "@spartan-ng/brain": "0.0.1-alpha.531",
80
80
  "class-variance-authority": "^0.7.0",
81
81
  "clsx": "^2.1.1"
82
82
  }
@@ -85,7 +85,7 @@
85
85
  "internalName": "ui-button-group-helm",
86
86
  "peerDependencies": {
87
87
  "@angular/core": ">=19.0.0",
88
- "@spartan-ng/brain": "0.0.1-alpha.529",
88
+ "@spartan-ng/brain": "0.0.1-alpha.531",
89
89
  "clsx": "^2.1.1",
90
90
  "class-variance-authority": "^0.7.0"
91
91
  }
@@ -98,7 +98,7 @@
98
98
  "@angular/core": ">=19.0.0",
99
99
  "@ng-icons/core": ">=29.0.0",
100
100
  "@ng-icons/lucide": ">=29.0.0",
101
- "@spartan-ng/brain": "0.0.1-alpha.529",
101
+ "@spartan-ng/brain": "0.0.1-alpha.531",
102
102
  "clsx": "^2.1.1"
103
103
  }
104
104
  },
@@ -128,7 +128,7 @@
128
128
  "@angular/forms": ">=19.0.0",
129
129
  "@ng-icons/core": ">=29.0.0",
130
130
  "@ng-icons/lucide": ">=29.0.0",
131
- "@spartan-ng/brain": "0.0.1-alpha.529",
131
+ "@spartan-ng/brain": "0.0.1-alpha.531",
132
132
  "clsx": "^2.1.1"
133
133
  }
134
134
  },
@@ -136,7 +136,7 @@
136
136
  "internalName": "ui-command-helm",
137
137
  "peerDependencies": {
138
138
  "@angular/core": ">=19.0.0",
139
- "@spartan-ng/brain": "0.0.1-alpha.529",
139
+ "@spartan-ng/brain": "0.0.1-alpha.531",
140
140
  "clsx": "^2.1.1"
141
141
  }
142
142
  },
@@ -148,7 +148,7 @@
148
148
  "@angular/forms": ">=19.0.0",
149
149
  "@ng-icons/core": ">=29.0.0",
150
150
  "@ng-icons/lucide": ">=29.0.0",
151
- "@spartan-ng/brain": "0.0.1-alpha.529",
151
+ "@spartan-ng/brain": "0.0.1-alpha.531",
152
152
  "clsx": "^2.1.1"
153
153
  }
154
154
  },
@@ -160,16 +160,24 @@
160
160
  "@angular/common": ">=19.0.0",
161
161
  "@ng-icons/core": ">=29.0.0",
162
162
  "@ng-icons/lucide": ">=29.0.0",
163
- "@spartan-ng/brain": "0.0.1-alpha.529",
163
+ "@spartan-ng/brain": "0.0.1-alpha.531",
164
164
  "@angular/cdk": ">=19.0.0"
165
165
  }
166
166
  },
167
+ "empty": {
168
+ "internalName": "ui-empty-helm",
169
+ "peerDependencies": {
170
+ "@angular/core": ">=19.0.0",
171
+ "clsx": "^2.1.1",
172
+ "class-variance-authority": "^0.7.0"
173
+ }
174
+ },
167
175
  "form-field": {
168
176
  "internalName": "ui-form-field-helm",
169
177
  "peerDependencies": {
170
178
  "@angular/core": ">=19.0.0",
171
179
  "@angular/forms": ">=19.0.0",
172
- "@spartan-ng/brain": "0.0.1-alpha.529",
180
+ "@spartan-ng/brain": "0.0.1-alpha.531",
173
181
  "clsx": "^2.1.1"
174
182
  }
175
183
  },
@@ -177,7 +185,7 @@
177
185
  "internalName": "ui-hover-card-helm",
178
186
  "peerDependencies": {
179
187
  "@angular/core": ">=19.0.0",
180
- "@spartan-ng/brain": "0.0.1-alpha.529",
188
+ "@spartan-ng/brain": "0.0.1-alpha.531",
181
189
  "clsx": "^2.1.1"
182
190
  }
183
191
  },
@@ -194,7 +202,7 @@
194
202
  "peerDependencies": {
195
203
  "@angular/core": ">=19.0.0",
196
204
  "@angular/forms": ">=19.0.0",
197
- "@spartan-ng/brain": "0.0.1-alpha.529",
205
+ "@spartan-ng/brain": "0.0.1-alpha.531",
198
206
  "class-variance-authority": "^0.7.0",
199
207
  "clsx": "^2.1.1"
200
208
  }
@@ -203,8 +211,8 @@
203
211
  "internalName": "ui-input-group-helm",
204
212
  "peerDependencies": {
205
213
  "@angular/core": ">=19.0.0",
206
- "clsx": "^2.1.1",
207
- "@spartan-ng/brain": "0.0.1-alpha.529"
214
+ "class-variance-authority": "^0.7.0",
215
+ "clsx": "^2.1.1"
208
216
  }
209
217
  },
210
218
  "input-otp": {
@@ -215,7 +223,7 @@
215
223
  "@ng-icons/core": ">=29.0.0",
216
224
  "@ng-icons/lucide": ">=29.0.0",
217
225
  "@angular/cdk": ">=19.0.0",
218
- "@spartan-ng/brain": "0.0.1-alpha.529"
226
+ "@spartan-ng/brain": "0.0.1-alpha.531"
219
227
  }
220
228
  },
221
229
  "kbd": {
@@ -229,7 +237,7 @@
229
237
  "internalName": "ui-label-helm",
230
238
  "peerDependencies": {
231
239
  "@angular/core": ">=19.0.0",
232
- "@spartan-ng/brain": "0.0.1-alpha.529",
240
+ "@spartan-ng/brain": "0.0.1-alpha.531",
233
241
  "clsx": "^2.1.1"
234
242
  }
235
243
  },
@@ -237,7 +245,7 @@
237
245
  "internalName": "ui-menu-helm",
238
246
  "peerDependencies": {
239
247
  "@angular/core": ">=19.0.0",
240
- "@spartan-ng/brain": "0.0.1-alpha.529",
248
+ "@spartan-ng/brain": "0.0.1-alpha.531",
241
249
  "clsx": "^2.1.1",
242
250
  "@ng-icons/core": ">=29.0.0",
243
251
  "@ng-icons/lucide": ">=29.0.0",
@@ -251,7 +259,7 @@
251
259
  "@angular/cdk": ">=19.0.0",
252
260
  "@angular/core": ">=19.0.0",
253
261
  "@angular/forms": ">=19.0.0",
254
- "@spartan-ng/brain": "0.0.1-alpha.529",
262
+ "@spartan-ng/brain": "0.0.1-alpha.531",
255
263
  "class-variance-authority": "^0.7.0",
256
264
  "clsx": "^2.1.1",
257
265
  "@ng-icons/core": ">=29.0.0",
@@ -264,14 +272,14 @@
264
272
  "peerDependencies": {
265
273
  "@angular/core": ">=19.0.0",
266
274
  "clsx": "^2.1.1",
267
- "@spartan-ng/brain": "0.0.1-alpha.529"
275
+ "@spartan-ng/brain": "0.0.1-alpha.531"
268
276
  }
269
277
  },
270
278
  "progress": {
271
279
  "internalName": "ui-progress-helm",
272
280
  "peerDependencies": {
273
281
  "@angular/core": ">=19.0.0",
274
- "@spartan-ng/brain": "0.0.1-alpha.529",
282
+ "@spartan-ng/brain": "0.0.1-alpha.531",
275
283
  "clsx": "^2.1.1"
276
284
  }
277
285
  },
@@ -279,7 +287,7 @@
279
287
  "internalName": "ui-radio-group-helm",
280
288
  "peerDependencies": {
281
289
  "@angular/core": ">=19.0.0",
282
- "@spartan-ng/brain": "0.0.1-alpha.529",
290
+ "@spartan-ng/brain": "0.0.1-alpha.531",
283
291
  "clsx": "^2.1.1",
284
292
  "@angular/common": ">=19.0.0"
285
293
  }
@@ -296,7 +304,7 @@
296
304
  "peerDependencies": {
297
305
  "@angular/cdk": ">=19.0.0",
298
306
  "@angular/core": ">=19.0.0",
299
- "@spartan-ng/brain": "0.0.1-alpha.529",
307
+ "@spartan-ng/brain": "0.0.1-alpha.531",
300
308
  "clsx": "^2.1.1",
301
309
  "@ng-icons/core": ">=29.0.0",
302
310
  "@ng-icons/lucide": ">=29.0.0",
@@ -307,7 +315,7 @@
307
315
  "internalName": "ui-separator-helm",
308
316
  "peerDependencies": {
309
317
  "@angular/core": ">=19.0.0",
310
- "@spartan-ng/brain": "0.0.1-alpha.529",
318
+ "@spartan-ng/brain": "0.0.1-alpha.531",
311
319
  "clsx": "^2.1.1"
312
320
  }
313
321
  },
@@ -318,7 +326,7 @@
318
326
  "clsx": "^2.1.1",
319
327
  "@ng-icons/core": ">=29.0.0",
320
328
  "@ng-icons/lucide": ">=29.0.0",
321
- "@spartan-ng/brain": "0.0.1-alpha.529",
329
+ "@spartan-ng/brain": "0.0.1-alpha.531",
322
330
  "class-variance-authority": "^0.7.0"
323
331
  }
324
332
  },
@@ -327,7 +335,7 @@
327
335
  "peerDependencies": {
328
336
  "@angular/core": ">=19.0.0",
329
337
  "clsx": "^2.1.1",
330
- "@spartan-ng/brain": "0.0.1-alpha.529",
338
+ "@spartan-ng/brain": "0.0.1-alpha.531",
331
339
  "class-variance-authority": "^0.7.0",
332
340
  "@ng-icons/core": ">=29.0.0",
333
341
  "@ng-icons/lucide": ">=29.0.0",
@@ -345,7 +353,7 @@
345
353
  "internalName": "ui-slider-helm",
346
354
  "peerDependencies": {
347
355
  "@angular/core": ">=19.0.0",
348
- "@spartan-ng/brain": "0.0.1-alpha.529",
356
+ "@spartan-ng/brain": "0.0.1-alpha.531",
349
357
  "clsx": "^2.1.1"
350
358
  }
351
359
  },
@@ -371,7 +379,7 @@
371
379
  "clsx": "^2.1.1",
372
380
  "@angular/cdk": ">=19.0.0",
373
381
  "@angular/forms": ">=19.0.0",
374
- "@spartan-ng/brain": "0.0.1-alpha.529"
382
+ "@spartan-ng/brain": "0.0.1-alpha.531"
375
383
  }
376
384
  },
377
385
  "table": {
@@ -385,7 +393,7 @@
385
393
  "internalName": "ui-tabs-helm",
386
394
  "peerDependencies": {
387
395
  "@angular/core": ">=19.0.0",
388
- "@spartan-ng/brain": "0.0.1-alpha.529",
396
+ "@spartan-ng/brain": "0.0.1-alpha.531",
389
397
  "clsx": "^2.1.1",
390
398
  "class-variance-authority": "^0.7.0",
391
399
  "@angular/cdk": ">=19.0.0",
@@ -394,6 +402,16 @@
394
402
  "rxjs": "^7.8.0"
395
403
  }
396
404
  },
405
+ "textarea": {
406
+ "internalName": "ui-textarea-helm",
407
+ "peerDependencies": {
408
+ "@angular/core": ">=19.0.0",
409
+ "@angular/forms": ">=19.0.0",
410
+ "@spartan-ng/brain": "0.0.1-alpha.531",
411
+ "class-variance-authority": "^0.7.0",
412
+ "clsx": "^2.1.1"
413
+ }
414
+ },
397
415
  "toggle": {
398
416
  "internalName": "ui-toggle-helm",
399
417
  "peerDependencies": {
@@ -414,7 +432,7 @@
414
432
  "internalName": "ui-tooltip-helm",
415
433
  "peerDependencies": {
416
434
  "@angular/core": ">=19.0.0",
417
- "@spartan-ng/brain": "0.0.1-alpha.529"
435
+ "@spartan-ng/brain": "0.0.1-alpha.531"
418
436
  }
419
437
  },
420
438
  "typography": {
@@ -1,36 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
- import { BrnAffixes } from '@spartan-ng/brain/input-group';
3
- import { hlm } from '<%- importAlias %>/utils';
4
- import type { ClassValue } from 'clsx';
5
-
6
- @Component({
7
- selector: 'hlm-prefix-addon,[hlmPrefixAddon]',
8
- hostDirectives: [
9
- {
10
- directive: BrnAffixes,
11
- inputs: ['tabindex'],
12
- },
13
- ],
14
- template: `
15
- <ng-content />
16
- `,
17
- changeDetection: ChangeDetectionStrategy.OnPush,
18
- host: {
19
- '[class]': '_computedClass()',
20
- },
21
- })
22
- export class HlmPrefixAddon {
23
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
24
- protected readonly _computedClass = computed(() =>
25
- hlm(
26
- 'bg-muted border-input focus-visible:border-ring focus-visible:ring-ring/50 block' +
27
- ' text-muted-foreground inline-flex h-auto min-h-9' +
28
- ' items-center justify-center whitespace-nowrap border' +
29
- ' px-3 text-sm font-medium transition-colors' +
30
- ' focus-visible:outline-none focus-visible:ring-[3px]' +
31
- ' disabled:pointer-events-none disabled:opacity-50' +
32
- ' rounded-l-md border-r-0',
33
- this.userClass(),
34
- ),
35
- );
36
- }
@@ -1,27 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
- import { BrnAffixes } from '@spartan-ng/brain/input-group';
3
- import { hlm } from '<%- importAlias %>/utils';
4
- import type { ClassValue } from 'clsx';
5
-
6
- @Component({
7
- selector: 'hlm-prefix,[hlmPrefix]',
8
- hostDirectives: [
9
- {
10
- directive: BrnAffixes,
11
- inputs: ['tabindex'],
12
- },
13
- ],
14
- template: `
15
- <ng-content />
16
- `,
17
- changeDetection: ChangeDetectionStrategy.OnPush,
18
- host: {
19
- '[class]': '_computedClass()',
20
- },
21
- })
22
- export class HlmPrefix {
23
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
24
- protected readonly _computedClass = computed(() =>
25
- hlm('text-muted-foreground inset-y-0 z-10 flex items-center ' + this.userClass()),
26
- );
27
- }
@@ -1,36 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
- import { BrnAffixes } from '@spartan-ng/brain/input-group';
3
- import { hlm } from '<%- importAlias %>/utils';
4
- import type { ClassValue } from 'clsx';
5
-
6
- @Component({
7
- selector: 'hlm-suffix-addon,[hlmSuffixAddon]',
8
- hostDirectives: [
9
- {
10
- directive: BrnAffixes,
11
- inputs: ['tabindex'],
12
- },
13
- ],
14
- template: `
15
- <ng-content />
16
- `,
17
- changeDetection: ChangeDetectionStrategy.OnPush,
18
- host: {
19
- '[class]': '_computedClass()',
20
- },
21
- })
22
- export class HlmSuffixAddon {
23
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
24
- protected readonly _computedClass = computed(() =>
25
- hlm(
26
- 'bg-muted border-input focus-visible:border-ring focus-visible:ring-ring/50 block' +
27
- ' text-muted-foreground inline-flex h-auto min-h-9' +
28
- ' items-center justify-center whitespace-nowrap border' +
29
- ' px-3 text-sm font-medium transition-colors' +
30
- ' focus-visible:outline-none focus-visible:ring-[3px]' +
31
- ' disabled:pointer-events-none disabled:opacity-50' +
32
- ' border-p-0 rounded-r-md',
33
- this.userClass(),
34
- ),
35
- );
36
- }
@@ -1,27 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
2
- import { BrnAffixes } from '@spartan-ng/brain/input-group';
3
- import { hlm } from '<%- importAlias %>/utils';
4
- import type { ClassValue } from 'clsx';
5
-
6
- @Component({
7
- selector: 'hlm-suffix,[hlmSuffix]',
8
- hostDirectives: [
9
- {
10
- directive: BrnAffixes,
11
- inputs: ['tabindex'],
12
- },
13
- ],
14
- template: `
15
- <ng-content />
16
- `,
17
- changeDetection: ChangeDetectionStrategy.OnPush,
18
- host: {
19
- '[class]': '_computedClass()',
20
- },
21
- })
22
- export class HlmSuffix {
23
- public readonly userClass = input<ClassValue>('', { alias: 'class' });
24
- protected readonly _computedClass = computed(() =>
25
- hlm('text-muted-foreground inset-y-0 z-10 flex items-center ' + this.userClass()),
26
- );
27
- }