@spartan-ng/cli 0.0.1-alpha.678 → 0.0.1-alpha.680

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 (37) hide show
  1. package/generators.json +10 -0
  2. package/package.json +1 -1
  3. package/src/generators/healthcheck/generator.js +2 -0
  4. package/src/generators/healthcheck/generator.js.map +1 -1
  5. package/src/generators/healthcheck/healthchecks/hlm-input-id.d.ts +2 -0
  6. package/src/generators/healthcheck/healthchecks/hlm-input-id.js +32 -0
  7. package/src/generators/healthcheck/healthchecks/hlm-input-id.js.map +1 -0
  8. package/src/generators/migrate-input-id/compat.d.ts +2 -0
  9. package/src/generators/migrate-input-id/compat.js +7 -0
  10. package/src/generators/migrate-input-id/compat.js.map +1 -0
  11. package/src/generators/migrate-input-id/generator.d.ts +4 -0
  12. package/src/generators/migrate-input-id/generator.js +35 -0
  13. package/src/generators/migrate-input-id/generator.js.map +1 -0
  14. package/src/generators/migrate-input-id/schema.d.ts +3 -0
  15. package/src/generators/migrate-input-id/schema.json +14 -0
  16. package/src/generators/ui/libs/card/files/lib/hlm-card.token.ts.template +19 -0
  17. package/src/generators/ui/libs/card/files/lib/hlm-card.ts.template +3 -1
  18. package/src/generators/ui/libs/checkbox/files/lib/hlm-checkbox.ts.template +2 -3
  19. package/src/generators/ui/libs/command/files/lib/hlm-command-input.ts.template +2 -2
  20. package/src/generators/ui/libs/dropdown-menu/files/lib/hlm-dropdown-menu-item.ts.template +1 -1
  21. package/src/generators/ui/libs/item/files/lib/hlm-item-actions.ts.template +2 -4
  22. package/src/generators/ui/libs/item/files/lib/hlm-item-content.ts.template +2 -4
  23. package/src/generators/ui/libs/item/files/lib/hlm-item-description.ts.template +6 -8
  24. package/src/generators/ui/libs/item/files/lib/hlm-item-footer.ts.template +2 -4
  25. package/src/generators/ui/libs/item/files/lib/hlm-item-group.ts.template +1 -1
  26. package/src/generators/ui/libs/item/files/lib/hlm-item-header.ts.template +2 -4
  27. package/src/generators/ui/libs/item/files/lib/hlm-item-media.ts.template +4 -4
  28. package/src/generators/ui/libs/item/files/lib/hlm-item-separator.ts.template +3 -2
  29. package/src/generators/ui/libs/item/files/lib/hlm-item-title.ts.template +2 -4
  30. package/src/generators/ui/libs/item/files/lib/hlm-item.ts.template +8 -7
  31. package/src/generators/ui/libs/kbd/files/lib/hlm-kbd-group.ts.template +1 -1
  32. package/src/generators/ui/libs/kbd/files/lib/hlm-kbd.ts.template +1 -5
  33. package/src/generators/ui/libs/radio-group/files/lib/hlm-radio.ts.template +4 -4
  34. package/src/generators/ui/libs/separator/files/lib/hlm-separator.ts.template +3 -0
  35. package/src/generators/ui/libs/spinner/files/lib/hlm-spinner.ts.template +1 -1
  36. package/src/generators/ui/libs/switch/files/lib/hlm-switch.ts.template +2 -3
  37. package/src/generators/ui/supported-ui-libraries.json +41 -41
package/generators.json CHANGED
@@ -55,6 +55,11 @@
55
55
  "schema": "./src/generators/migrate-hlm/schema.json",
56
56
  "description": "Migrate hlm import from @spartan-ng/brain to @spartan-ng/helm/utils"
57
57
  },
58
+ "migrate-input-id": {
59
+ "factory": "./src/generators/migrate-input-id/generator",
60
+ "schema": "./src/generators/migrate-input-id/schema.json",
61
+ "description": "Migrate renamed Helm id inputs to inputId"
62
+ },
58
63
  "migrate-icon": {
59
64
  "factory": "./src/generators/migrate-icon/generator",
60
65
  "schema": "./src/generators/migrate-icon/schema.json",
@@ -167,6 +172,11 @@
167
172
  "schema": "./src/generators/migrate-hlm/schema.json",
168
173
  "description": "Migrate hlm import from @spartan-ng/brain to @spartan-ng/helm/utils"
169
174
  },
175
+ "migrate-input-id": {
176
+ "factory": "./src/generators/migrate-input-id/compat",
177
+ "schema": "./src/generators/migrate-input-id/schema.json",
178
+ "description": "Migrate renamed Helm id inputs to inputId"
179
+ },
170
180
  "migrate-icon": {
171
181
  "factory": "./src/generators/migrate-icon/compat",
172
182
  "schema": "./src/generators/migrate-icon/schema.json",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spartan-ng/cli",
3
- "version": "0.0.1-alpha.678",
3
+ "version": "0.0.1-alpha.680",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/spartan-ng/spartan"
@@ -23,6 +23,7 @@ const hlm_dialog_1 = require("./healthchecks/hlm-dialog");
23
23
  const hlm_dialog_portal_1 = require("./healthchecks/hlm-dialog-portal");
24
24
  const hlm_form_field_1 = require("./healthchecks/hlm-form-field");
25
25
  const hlm_icon_1 = require("./healthchecks/hlm-icon");
26
+ const hlm_input_id_1 = require("./healthchecks/hlm-input-id");
26
27
  const hlm_menu_1 = require("./healthchecks/hlm-menu");
27
28
  const hlm_progress_1 = require("./healthchecks/hlm-progress");
28
29
  const hlm_scroll_area_1 = require("./healthchecks/hlm-scroll-area");
@@ -48,6 +49,7 @@ async function healthcheckGenerator(tree, options) {
48
49
  helm_imports_1.helmImportsHealthcheck,
49
50
  naming_conventions_1.namingConventionHealthcheck,
50
51
  hlm_date_picker_1.datePickerHealthcheck,
52
+ hlm_input_id_1.hlmInputIdHealthcheck,
51
53
  hlm_progress_1.progressHealthcheck,
52
54
  hlm_1.hlmImportHealthcheck,
53
55
  brn_separator_1.brainSeparatorHealthcheck,
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/healthcheck/generator.ts"],"names":[],"mappings":";;AAmCA,oDA2DC;AA9FD,uCAA4D;AAC5D,+CAAoD;AACpD,iDAAmH;AACnH,gEAAuE;AACvE,gFAAwF;AACxF,wGAAiG;AACjG,oEAA6E;AAC7E,wDAAiE;AACjE,0DAAiE;AACjE,gEAAyE;AACzE,oGAA6F;AAC7F,0DAAmE;AACnE,sEAA8E;AAC9E,0EAAiF;AACjF,8DAAqE;AACrE,8DAAqE;AACrE,4CAA0D;AAC1D,oEAAuE;AACvE,0DAAkE;AAClE,wEAA+E;AAC/E,kEAAyE;AACzE,sDAA8D;AAC9D,sDAA8D;AAC9D,8DAAkE;AAClE,oEAAuE;AACvE,0DAA8D;AAC9D,kEAAyE;AACzE,0EAAgF;AAChF,kDAA0D;AAC1D,oDAA4D;AAE5D,2CAA4C;AAC5C,+CAA+C;AAC/C,2CAAgD;AAEzC,KAAK,UAAU,oBAAoB,CAAC,IAAU,EAAE,OAA8D;IACpH,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAkB;QACnC,4BAAkB;QAClB,uCAAuB;QACvB,qCAAsB;QACtB,8BAAmB;QACnB,uCAAqB;QACrB,iCAAqB;QACrB,8BAAiB;QACjB,8CAA2B;QAC3B,qCAAsB;QACtB,gDAA2B;QAC3B,uCAAqB;QACrB,kCAAmB;QACnB,0BAAoB;QACpB,yCAAyB;QACzB,iEAA6B;QAC7B,6DAA2B;QAC3B,wDAAgC;QAChC,yCAAwB;QACxB,mCAAsB;QACtB,iDAA4B;QAC5B,6CAA2B;QAC3B,8BAAmB;QACnB,kCAAqB;QACrB,+CAA2B;QAC3B,yCAAwB;QACxB,0BAAiB;QACjB,iCAAoB;KACpB,CAAC;IAEF,MAAM,aAAa,GAAwB,EAAE,CAAC;IAE9C,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEnE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACpE,IAAA,sBAAW,EAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,MAAM,CAAC,MAAM,KAAK,gCAAiB,CAAC,OAAO,EAAE,CAAC;YACjD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,OAAO,IAAI,IAAA,mCAAoB,EAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YAE7E,IAAI,GAAG,EAAE,CAAC;gBACT,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YACrF,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACF,CAAC;AAED,kBAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/healthcheck/generator.ts"],"names":[],"mappings":";;AAoCA,oDA4DC;AAhGD,uCAA4D;AAC5D,+CAAoD;AACpD,iDAAmH;AACnH,gEAAuE;AACvE,gFAAwF;AACxF,wGAAiG;AACjG,oEAA6E;AAC7E,wDAAiE;AACjE,0DAAiE;AACjE,gEAAyE;AACzE,oGAA6F;AAC7F,0DAAmE;AACnE,sEAA8E;AAC9E,0EAAiF;AACjF,8DAAqE;AACrE,8DAAqE;AACrE,4CAA0D;AAC1D,oEAAuE;AACvE,0DAAkE;AAClE,wEAA+E;AAC/E,kEAAyE;AACzE,sDAA8D;AAC9D,8DAAoE;AACpE,sDAA8D;AAC9D,8DAAkE;AAClE,oEAAuE;AACvE,0DAA8D;AAC9D,kEAAyE;AACzE,0EAAgF;AAChF,kDAA0D;AAC1D,oDAA4D;AAE5D,2CAA4C;AAC5C,+CAA+C;AAC/C,2CAAgD;AAEzC,KAAK,UAAU,oBAAoB,CAAC,IAAU,EAAE,OAA8D;IACpH,eAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAkB;QACnC,4BAAkB;QAClB,uCAAuB;QACvB,qCAAsB;QACtB,8BAAmB;QACnB,uCAAqB;QACrB,iCAAqB;QACrB,8BAAiB;QACjB,8CAA2B;QAC3B,qCAAsB;QACtB,gDAA2B;QAC3B,uCAAqB;QACrB,oCAAqB;QACrB,kCAAmB;QACnB,0BAAoB;QACpB,yCAAyB;QACzB,iEAA6B;QAC7B,6DAA2B;QAC3B,wDAAgC;QAChC,yCAAwB;QACxB,mCAAsB;QACtB,iDAA4B;QAC5B,6CAA2B;QAC3B,8BAAmB;QACnB,kCAAqB;QACrB,+CAA2B;QAC3B,yCAAwB;QACxB,0BAAiB;QACjB,iCAAoB;KACpB,CAAC;IAEF,MAAM,aAAa,GAAwB,EAAE,CAAC;IAE9C,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEnE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAc,EAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACpE,IAAA,sBAAW,EAAC,MAAM,CAAC,CAAC;QAEpB,IAAI,MAAM,CAAC,MAAM,KAAK,gCAAiB,CAAC,OAAO,EAAE,CAAC;YACjD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,OAAO,IAAI,IAAA,mCAAoB,EAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAChE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,MAAM,IAAA,mBAAU,EAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YAE7E,IAAI,GAAG,EAAE,CAAC;gBACT,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YACrF,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACF,CAAC;AAED,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type Healthcheck } from '../healthchecks';
2
+ export declare const hlmInputIdHealthcheck: Healthcheck;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hlmInputIdHealthcheck = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const generator_1 = tslib_1.__importDefault(require("../../migrate-input-id/generator"));
7
+ const healthchecks_1 = require("../healthchecks");
8
+ const inputIdSelectors = ['hlm-checkbox', 'hlm-switch', 'hlm-radio', 'hlm-command-input'];
9
+ const legacyInputIdPattern = new RegExp(`<(${inputIdSelectors.join('|')})\\b[^>]*(\\sid\\s*=|\\s\\[id\\]\\s*=|\\sbind-id\\s*=)`);
10
+ exports.hlmInputIdHealthcheck = {
11
+ name: 'Helm input id rename',
12
+ async detect(tree, failure) {
13
+ (0, devkit_1.visitNotIgnoredFiles)(tree, '/', (file) => {
14
+ if (!file.endsWith('.ts') && !file.endsWith('.html')) {
15
+ return;
16
+ }
17
+ const contents = tree.read(file, 'utf-8');
18
+ if (!contents) {
19
+ return;
20
+ }
21
+ if (legacyInputIdPattern.test(contents)) {
22
+ failure('Helm components are using the renamed id input.', healthchecks_1.HealthcheckSeverity.Error, true);
23
+ }
24
+ });
25
+ },
26
+ fix: async (tree) => {
27
+ await (0, generator_1.default)(tree, { skipFormat: true });
28
+ return true;
29
+ },
30
+ prompt: 'Would you like to migrate renamed Helm id inputs?',
31
+ };
32
+ //# sourceMappingURL=hlm-input-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hlm-input-id.js","sourceRoot":"","sources":["../../../../../../../libs/cli/src/generators/healthcheck/healthchecks/hlm-input-id.ts"],"names":[],"mappings":";;;;AAAA,uCAAkD;AAClD,yFAAuE;AACvE,kDAAwE;AAExE,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;AAC1F,MAAM,oBAAoB,GAAG,IAAI,MAAM,CACtC,KAAK,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,wDAAwD,CACvF,CAAC;AAEW,QAAA,qBAAqB,GAAgB;IACjD,IAAI,EAAE,sBAAsB;IAC5B,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO;QACzB,IAAA,6BAAoB,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;YACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,OAAO;YACR,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,OAAO;YACR,CAAC;YAED,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,iDAAiD,EAAE,kCAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7F,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IACD,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACnB,MAAM,IAAA,mBAAuB,EAAC,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACb,CAAC;IACD,MAAM,EAAE,mDAAmD;CAC3D,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare const _default: (generatorOptions: import("./schema").MigrateInputIdGeneratorSchema) => (tree: any, context: any) => Promise<any>;
2
+ export default _default;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const devkit_1 = require("@nx/devkit");
5
+ const generator_1 = tslib_1.__importDefault(require("./generator"));
6
+ exports.default = (0, devkit_1.convertNxGenerator)(generator_1.default);
7
+ //# sourceMappingURL=compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compat.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/migrate-input-id/compat.ts"],"names":[],"mappings":";;;AAAA,uCAAgD;AAChD,oEAAkD;AAElD,kBAAe,IAAA,2BAAkB,EAAC,mBAAuB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ import type { MigrateInputIdGeneratorSchema } from './schema';
3
+ export declare function migrateInputIdGenerator(tree: Tree, { skipFormat }: MigrateInputIdGeneratorSchema): Promise<void>;
4
+ export default migrateInputIdGenerator;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrateInputIdGenerator = migrateInputIdGenerator;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const visit_files_1 = require("../../utils/visit-files");
6
+ const inputIdSelectors = ['hlm-checkbox', 'hlm-switch', 'hlm-radio', 'hlm-command-input'];
7
+ const inputIdTagPattern = new RegExp(`<(${inputIdSelectors.join('|')})\\b[^>]*>`, 'g');
8
+ async function migrateInputIdGenerator(tree, { skipFormat }) {
9
+ replaceLegacyInputIds(tree);
10
+ if (!skipFormat) {
11
+ await (0, devkit_1.formatFiles)(tree);
12
+ }
13
+ }
14
+ function replaceLegacyInputIds(tree) {
15
+ (0, visit_files_1.visitFiles)(tree, '.', (path) => {
16
+ if (!path.endsWith('.html') && !path.endsWith('.ts')) {
17
+ return;
18
+ }
19
+ let content = tree.read(path, 'utf-8');
20
+ if (!content) {
21
+ return;
22
+ }
23
+ inputIdTagPattern.lastIndex = 0;
24
+ content = content.replace(inputIdTagPattern, (tag) => renameLegacyIdInputs(tag));
25
+ tree.write(path, content);
26
+ });
27
+ }
28
+ function renameLegacyIdInputs(tag) {
29
+ return tag
30
+ .replace(/(\s)\[id\](\s*=)/g, '$1[inputId]$2')
31
+ .replace(/(\s)bind-id(\s*=)/g, '$1bind-inputId$2')
32
+ .replace(/(\s)id(\s*=)/g, '$1inputId$2');
33
+ }
34
+ exports.default = migrateInputIdGenerator;
35
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/generators/migrate-input-id/generator.ts"],"names":[],"mappings":";;AAOA,0DAMC;AAbD,uCAAoD;AACpD,yDAAqD;AAGrD,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC;AAC1F,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AAEhF,KAAK,UAAU,uBAAuB,CAAC,IAAU,EAAE,EAAE,UAAU,EAAiC;IACtG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE5B,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IACzB,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAU;IACxC,IAAA,wBAAU,EAAC,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO;QACR,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO;QACR,CAAC;QAED,iBAAiB,CAAC,SAAS,GAAG,CAAC,CAAC;QAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjF,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACxC,OAAO,GAAG;SACR,OAAO,CAAC,mBAAmB,EAAE,eAAe,CAAC;SAC7C,OAAO,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;SACjD,OAAO,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAC3C,CAAC;AAED,kBAAe,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export interface MigrateInputIdGeneratorSchema {
2
+ skipFormat?: boolean;
3
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "MigrateInputId",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "skipFormat": {
8
+ "type": "boolean",
9
+ "default": false,
10
+ "description": "Skip formatting files"
11
+ }
12
+ },
13
+ "required": []
14
+ }
@@ -0,0 +1,19 @@
1
+ import { inject, InjectionToken, type ValueProvider } from '@angular/core';
2
+
3
+ export type HlmCardConfig = {
4
+ size: 'sm' | 'default';
5
+ };
6
+
7
+ const defaultConfig: HlmCardConfig = {
8
+ size: 'default',
9
+ };
10
+
11
+ const HlmCardConfigToken = new InjectionToken<HlmCardConfig>('HlmCardConfig');
12
+
13
+ export function provideHlmCardConfig(config: Partial<HlmCardConfig>): ValueProvider {
14
+ return { provide: HlmCardConfigToken, useValue: { ...defaultConfig, ...config } };
15
+ }
16
+
17
+ export function injectHlmCardConfig(): HlmCardConfig {
18
+ return inject(HlmCardConfigToken, { optional: true }) ?? defaultConfig;
19
+ }
@@ -1,5 +1,6 @@
1
1
  import { Directive, input } from '@angular/core';
2
2
  import { classes } from '<%- importAlias %>/utils';
3
+ import { HlmCardConfig, injectHlmCardConfig } from './hlm-card.token';
3
4
 
4
5
  @Directive({
5
6
  selector: '[hlmCard],hlm-card',
@@ -9,7 +10,8 @@ import { classes } from '<%- importAlias %>/utils';
9
10
  },
10
11
  })
11
12
  export class HlmCard {
12
- public readonly size = input<'sm' | 'default'>('default');
13
+ private readonly _defaultConfig = injectHlmCardConfig();
14
+ public readonly size = input<HlmCardConfig['size']>(this._defaultConfig.size);
13
15
 
14
16
  constructor() {
15
17
  classes(() => 'spartan-card group/card flex flex-col');
@@ -37,14 +37,13 @@ export const HLM_CHECKBOX_VALUE_ACCESSOR = {
37
37
  host: {
38
38
  class: 'contents peer',
39
39
  'data-slot': 'checkbox',
40
- '[attr.id]': 'null',
41
40
  '[attr.aria-label]': 'null',
42
41
  '[attr.aria-labelledby]': 'null',
43
42
  '[attr.data-disabled]': '_disabled() ? "" : null',
44
43
  },
45
44
  template: `
46
45
  <brn-checkbox
47
- [id]="id()"
46
+ [id]="inputId()"
48
47
  [name]="name()"
49
48
  [class]="_computedClass()"
50
49
  [checked]="checked()"
@@ -79,7 +78,7 @@ export class HlmCheckbox implements ControlValueAccessor {
79
78
  );
80
79
 
81
80
  /** Used to set the id on the underlying brn element. */
82
- public readonly id = input<string | null>(null);
81
+ public readonly inputId = input<string | null>(null);
83
82
 
84
83
  /** Used to set the aria-label attribute on the underlying brn element. */
85
84
  public readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });
@@ -18,7 +18,7 @@ import { classes } from '<%- importAlias %>/utils';
18
18
  brnCommandInput
19
19
  data-slot="command-input"
20
20
  class="w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50"
21
- [id]="id()"
21
+ [id]="inputId()"
22
22
  [placeholder]="placeholder()"
23
23
  />
24
24
 
@@ -29,7 +29,7 @@ import { classes } from '<%- importAlias %>/utils';
29
29
  `,
30
30
  })
31
31
  export class HlmCommandInput {
32
- public readonly id = input<string | undefined>();
32
+ public readonly inputId = input<string | undefined>();
33
33
  public readonly placeholder = input<string>('');
34
34
 
35
35
  constructor() {
@@ -4,7 +4,7 @@ import { booleanAttribute, Directive, HOST_TAG_NAME, inject, input } from '@angu
4
4
  import { classes } from '<%- importAlias %>/utils';
5
5
 
6
6
  @Directive({
7
- selector: '[hlmDropdownMenuItem]',
7
+ selector: '[hlmDropdownMenuItem],hlm-dropdown-menu-item',
8
8
  hostDirectives: [
9
9
  {
10
10
  directive: CdkMenuItem,
@@ -3,12 +3,10 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmItemActions],hlm-item-actions',
6
- host: {
7
- 'data-slot': 'item-actions',
8
- },
6
+ host: { 'data-slot': 'item-actions' },
9
7
  })
10
8
  export class HlmItemActions {
11
9
  constructor() {
12
- classes(() => 'flex items-center gap-2');
10
+ classes(() => 'spartan-item-actions flex items-center');
13
11
  }
14
12
  }
@@ -3,12 +3,10 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmItemContent],hlm-item-content',
6
- host: {
7
- 'data-slot': 'item-content',
8
- },
6
+ host: { 'data-slot': 'item-content' },
9
7
  })
10
8
  export class HlmItemContent {
11
9
  constructor() {
12
- classes(() => 'flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none');
10
+ classes(() => 'spartan-item-content flex flex-1 flex-col [&+[data-slot=item-content]]:flex-none');
13
11
  }
14
12
  }
@@ -2,16 +2,14 @@ import { Directive } from '@angular/core';
2
2
  import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
- selector: 'p[hlmItemDescription]',
6
- host: {
7
- 'data-slot': 'item-description',
8
- },
5
+ selector: '[hlmItemDescription],hlm-item-description',
6
+ host: { 'data-slot': 'item-description' },
9
7
  })
10
8
  export class HlmItemDescription {
11
9
  constructor() {
12
- classes(() => [
13
- 'text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance',
14
- '[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',
15
- ]);
10
+ classes(
11
+ () =>
12
+ 'spartan-item-description [&>a:hover]:text-primary line-clamp-2 flex font-normal [&>a]:underline [&>a]:underline-offset-4',
13
+ );
16
14
  }
17
15
  }
@@ -3,12 +3,10 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmItemFooter],hlm-item-footer',
6
- host: {
7
- 'data-slot': 'item-footer',
8
- },
6
+ host: { 'data-slot': 'item-footer' },
9
7
  })
10
8
  export class HlmItemFooter {
11
9
  constructor() {
12
- classes(() => 'flex basis-full items-center justify-between gap-2');
10
+ classes(() => 'spartan-item-footer flex basis-full items-center justify-between');
13
11
  }
14
12
  }
@@ -7,6 +7,6 @@ import { classes } from '<%- importAlias %>/utils';
7
7
  })
8
8
  export class HlmItemGroup {
9
9
  constructor() {
10
- classes(() => 'group/item-group flex flex-col');
10
+ classes(() => 'spartan-item-group group/item-group flex w-full flex-col');
11
11
  }
12
12
  }
@@ -3,12 +3,10 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmItemHeader],hlm-item-header',
6
- host: {
7
- 'data-slot': 'item-header',
8
- },
6
+ host: { 'data-slot': 'item-header' },
9
7
  })
10
8
  export class HlmItemHeader {
11
9
  constructor() {
12
- classes(() => 'flex basis-full items-center justify-between gap-2');
10
+ classes(() => 'spartan-item-header flex basis-full items-center justify-between');
13
11
  }
14
12
  }
@@ -4,13 +4,13 @@ import { cva, type VariantProps } from 'class-variance-authority';
4
4
  import { injectHlmItemMediaConfig } from './hlm-item-token';
5
5
 
6
6
  const itemMediaVariants = cva(
7
- 'flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:translate-y-0.5 group-has-[[data-slot=item-description]]/item:self-start [&_ng-icon]:pointer-events-none',
7
+ 'spartan-item-media flex shrink-0 items-center justify-center [&_ng-icon]:pointer-events-none',
8
8
  {
9
9
  variants: {
10
10
  variant: {
11
- default: 'bg-transparent',
12
- icon: "bg-muted size-8 rounded-sm border [&_ng-icon:not([class*='text-'])]:text-base",
13
- image: 'size-10 overflow-hidden rounded-sm [&_img]:size-full [&_img]:object-cover',
11
+ default: 'spartan-item-media-variant-default',
12
+ icon: 'spartan-item-media-variant-icon',
13
+ image: 'spartan-item-media-variant-image',
14
14
  },
15
15
  },
16
16
  defaultVariants: {
@@ -2,13 +2,14 @@ import { Directive } from '@angular/core';
2
2
  import { BrnSeparator } from '@spartan-ng/brain/separator';
3
3
  import { hlmSeparatorClass } from '<%- importAlias %>/separator';
4
4
  import { classes } from '<%- importAlias %>/utils';
5
+
5
6
  @Directive({
6
- selector: 'div[hlmItemSeparator]',
7
+ selector: '[hlmItemSeparator],hlm-item-separator',
7
8
  hostDirectives: [{ directive: BrnSeparator, inputs: ['orientation'] }],
8
9
  host: { 'data-slot': 'item-separator' },
9
10
  })
10
11
  export class HlmItemSeparator {
11
12
  constructor() {
12
- classes(() => [hlmSeparatorClass, 'my-0']);
13
+ classes(() => [hlmSeparatorClass, 'spartan-item-separator']);
13
14
  }
14
15
  }
@@ -3,12 +3,10 @@ import { classes } from '<%- importAlias %>/utils';
3
3
 
4
4
  @Directive({
5
5
  selector: '[hlmItemTitle],hlm-item-title',
6
- host: {
7
- 'data-slot': 'item-title',
8
- },
6
+ host: { 'data-slot': 'item-title' },
9
7
  })
10
8
  export class HlmItemTitle {
11
9
  constructor() {
12
- classes(() => 'flex w-fit items-center gap-2 text-sm leading-snug font-medium');
10
+ classes(() => 'spartan-item-title line-clamp-1 flex w-fit items-center');
13
11
  }
14
12
  }
@@ -4,17 +4,18 @@ import { cva, type VariantProps } from 'class-variance-authority';
4
4
  import { injectHlmItemConfig } from './hlm-item-token';
5
5
 
6
6
  const itemVariants = cva(
7
- 'group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:ring-[3px] [a]:transition-colors',
7
+ 'spartan-item group/item focus-visible:border-ring focus-visible:ring-ring/50 flex w-full flex-wrap items-center transition-colors duration-100 outline-none focus-visible:ring-[3px] [a]:transition-colors',
8
8
  {
9
9
  variants: {
10
10
  variant: {
11
- default: 'bg-transparent',
12
- outline: 'border-border',
13
- muted: 'bg-muted/50',
11
+ default: 'spartan-item-variant-default',
12
+ outline: 'spartan-item-variant-outline',
13
+ muted: 'spartan-item-variant-muted',
14
14
  },
15
15
  size: {
16
- default: 'gap-4 p-4',
17
- sm: 'gap-2.5 px-4 py-3',
16
+ default: 'spartan-item-size-default',
17
+ sm: 'spartan-item-size-sm',
18
+ xs: 'spartan-item-size-xs',
18
19
  },
19
20
  },
20
21
  defaultVariants: {
@@ -27,7 +28,7 @@ const itemVariants = cva(
27
28
  export type ItemVariants = VariantProps<typeof itemVariants>;
28
29
 
29
30
  @Directive({
30
- selector: 'div[hlmItem], a[hlmItem]',
31
+ selector: '[hlmItem],hlm-item',
31
32
  host: {
32
33
  'data-slot': 'item',
33
34
  '[attr.data-variant]': 'variant()',
@@ -9,6 +9,6 @@ import { classes } from '<%- importAlias %>/utils';
9
9
  })
10
10
  export class HlmKbdGroup {
11
11
  constructor() {
12
- classes(() => 'inline-flex items-center gap-1');
12
+ classes(() => 'spartan-kbd-group inline-flex items-center');
13
13
  }
14
14
  }
@@ -9,10 +9,6 @@ import { classes } from '<%- importAlias %>/utils';
9
9
  })
10
10
  export class HlmKbd {
11
11
  constructor() {
12
- classes(() => [
13
- 'bg-muted text-muted-foreground pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm px-1 font-sans text-xs font-medium select-none',
14
- "[&_ng-icon:not([class*='text-'])]:text-xs",
15
- '[[data-slot=tooltip-content]_&]:bg-background/20 [[data-slot=tooltip-content]_&]:text-background dark:[[data-slot=tooltip-content]_&]:bg-background/10',
16
- ]);
12
+ classes(() => 'spartan-kbd pointer-events-none inline-flex items-center justify-center select-none');
17
13
  }
18
14
  }
@@ -23,7 +23,6 @@ import type { ClassValue } from 'clsx';
23
23
  imports: [BrnRadio],
24
24
  changeDetection: ChangeDetectionStrategy.OnPush,
25
25
  host: {
26
- '[attr.id]': 'null',
27
26
  '[attr.aria-label]': 'null',
28
27
  '[attr.aria-labelledby]': 'null',
29
28
  '[attr.aria-describedby]': 'null',
@@ -32,7 +31,7 @@ import type { ClassValue } from 'clsx';
32
31
  },
33
32
  template: `
34
33
  <brn-radio
35
- [id]="id()"
34
+ [id]="inputId()"
36
35
  [class]="_computedClass()"
37
36
  [value]="value()"
38
37
  [required]="required()"
@@ -78,7 +77,7 @@ export class HlmRadio<T = unknown> {
78
77
  );
79
78
 
80
79
  /** Used to set the id on the underlying brn element. */
81
- public readonly id = input<string | undefined>(undefined);
80
+ public readonly inputId = input<string | undefined>(undefined);
82
81
 
83
82
  /** Used to set the aria-label attribute on the underlying brn element. */
84
83
  public readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });
@@ -113,7 +112,8 @@ export class HlmRadio<T = unknown> {
113
112
  if (!this._elementRef.nativeElement || !this._isBrowser) return;
114
113
 
115
114
  const labelElement =
116
- this._elementRef.nativeElement.closest('label') ?? this._document.querySelector(`label[for="${this.id()}"]`);
115
+ this._elementRef.nativeElement.closest('label') ??
116
+ this._document.querySelector(`label[for="${this.inputId()}"]`);
117
117
 
118
118
  if (!labelElement) return;
119
119
  this._renderer.setAttribute(labelElement, 'data-disabled', isDisabled ? 'true' : 'false');
@@ -8,6 +8,9 @@ export const hlmSeparatorClass =
8
8
  @Directive({
9
9
  selector: '[hlmSeparator],hlm-separator',
10
10
  hostDirectives: [{ directive: BrnSeparator, inputs: ['orientation', 'decorative'] }],
11
+ host: {
12
+ 'data-slot': 'separator',
13
+ },
11
14
  })
12
15
  export class HlmSeparator {
13
16
  constructor() {
@@ -27,6 +27,6 @@ export class HlmSpinner {
27
27
  public readonly ariaLabel = input<string>('Loading', { alias: 'aria-label' });
28
28
 
29
29
  constructor() {
30
- classes(() => 'inline-flex size-fit text-base motion-safe:animate-spin');
30
+ classes(() => 'inline-flex text-[calc(var(--spacing)*4)] motion-safe:animate-spin');
31
31
  }
32
32
  }
@@ -30,7 +30,6 @@ export const HLM_SWITCH_VALUE_ACCESSOR = {
30
30
  changeDetection: ChangeDetectionStrategy.OnPush,
31
31
  host: {
32
32
  class: 'contents',
33
- '[attr.id]': 'null',
34
33
  '[attr.aria-label]': 'null',
35
34
  '[attr.aria-labelledby]': 'null',
36
35
  '[attr.aria-describedby]': 'null',
@@ -42,7 +41,7 @@ export const HLM_SWITCH_VALUE_ACCESSOR = {
42
41
  (checkedChange)="handleChange($event)"
43
42
  (touched)="_onTouched?.()"
44
43
  [disabled]="_disabled()"
45
- [id]="id()"
44
+ [id]="inputId()"
46
45
  [aria-label]="ariaLabel()"
47
46
  [aria-labelledby]="ariaLabelledby()"
48
47
  [aria-describedby]="ariaDescribedby()"
@@ -72,7 +71,7 @@ export class HlmSwitch implements ControlValueAccessor {
72
71
  });
73
72
 
74
73
  /** Used to set the id on the underlying brn element. */
75
- public readonly id = input<string | null>(null);
74
+ public readonly inputId = input<string | null>(null);
76
75
 
77
76
  /** Used to set the aria-label attribute on the underlying brn element. */
78
77
  public readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });
@@ -3,7 +3,7 @@
3
3
  "name": "accordion",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=20.0.0 <22.0.0",
6
- "@spartan-ng/brain": "0.0.1-alpha.678",
6
+ "@spartan-ng/brain": "0.0.1-alpha.680",
7
7
  "@ng-icons/core": ">=32.0.0 <34.0.0",
8
8
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
9
9
  "clsx": "^2.1.1"
@@ -20,7 +20,7 @@
20
20
  "name": "alert-dialog",
21
21
  "peerDependencies": {
22
22
  "@angular/core": ">=20.0.0 <22.0.0",
23
- "@spartan-ng/brain": "0.0.1-alpha.678",
23
+ "@spartan-ng/brain": "0.0.1-alpha.680",
24
24
  "clsx": "^2.1.1"
25
25
  }
26
26
  },
@@ -36,7 +36,7 @@
36
36
  "peerDependencies": {
37
37
  "@angular/core": ">=20.0.0 <22.0.0",
38
38
  "@angular/forms": ">=20.0.0 <22.0.0",
39
- "@spartan-ng/brain": "0.0.1-alpha.678",
39
+ "@spartan-ng/brain": "0.0.1-alpha.680",
40
40
  "@angular/cdk": ">=20.0.0 <22.0.0",
41
41
  "@ng-icons/core": ">=32.0.0 <34.0.0",
42
42
  "@ng-icons/lucide": ">=32.0.0 <34.0.0"
@@ -46,7 +46,7 @@
46
46
  "name": "avatar",
47
47
  "peerDependencies": {
48
48
  "@angular/core": ">=20.0.0 <22.0.0",
49
- "@spartan-ng/brain": "0.0.1-alpha.678"
49
+ "@spartan-ng/brain": "0.0.1-alpha.680"
50
50
  }
51
51
  },
52
52
  "badge": {
@@ -70,7 +70,7 @@
70
70
  "name": "button",
71
71
  "peerDependencies": {
72
72
  "@angular/core": ">=20.0.0 <22.0.0",
73
- "@spartan-ng/brain": "0.0.1-alpha.678",
73
+ "@spartan-ng/brain": "0.0.1-alpha.680",
74
74
  "class-variance-authority": "^0.7.0",
75
75
  "clsx": "^2.1.1"
76
76
  }
@@ -79,7 +79,7 @@
79
79
  "name": "button-group",
80
80
  "peerDependencies": {
81
81
  "@angular/core": ">=20.0.0 <22.0.0",
82
- "@spartan-ng/brain": "0.0.1-alpha.678",
82
+ "@spartan-ng/brain": "0.0.1-alpha.680",
83
83
  "class-variance-authority": "^0.7.0"
84
84
  }
85
85
  },
@@ -91,7 +91,7 @@
91
91
  "@angular/core": ">=20.0.0 <22.0.0",
92
92
  "@ng-icons/core": ">=32.0.0 <34.0.0",
93
93
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
94
- "@spartan-ng/brain": "0.0.1-alpha.678",
94
+ "@spartan-ng/brain": "0.0.1-alpha.680",
95
95
  "clsx": "^2.1.1"
96
96
  }
97
97
  },
@@ -119,7 +119,7 @@
119
119
  "@angular/cdk": ">=20.0.0 <22.0.0",
120
120
  "@ng-icons/core": ">=32.0.0 <34.0.0",
121
121
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
122
- "@spartan-ng/brain": "0.0.1-alpha.678",
122
+ "@spartan-ng/brain": "0.0.1-alpha.680",
123
123
  "clsx": "^2.1.1"
124
124
  }
125
125
  },
@@ -127,7 +127,7 @@
127
127
  "name": "collapsible",
128
128
  "peerDependencies": {
129
129
  "@angular/core": ">=20.0.0 <22.0.0",
130
- "@spartan-ng/brain": "0.0.1-alpha.678"
130
+ "@spartan-ng/brain": "0.0.1-alpha.680"
131
131
  }
132
132
  },
133
133
  "combobox": {
@@ -135,7 +135,7 @@
135
135
  "peerDependencies": {
136
136
  "@angular/core": ">=20.0.0 <22.0.0",
137
137
  "@angular/forms": ">=20.0.0 <22.0.0",
138
- "@spartan-ng/brain": "0.0.1-alpha.678",
138
+ "@spartan-ng/brain": "0.0.1-alpha.680",
139
139
  "@angular/cdk": ">=20.0.0 <22.0.0",
140
140
  "@ng-icons/core": ">=32.0.0 <34.0.0",
141
141
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
@@ -147,7 +147,7 @@
147
147
  "peerDependencies": {
148
148
  "@angular/cdk": ">=20.0.0 <22.0.0",
149
149
  "@angular/core": ">=20.0.0 <22.0.0",
150
- "@spartan-ng/brain": "0.0.1-alpha.678",
150
+ "@spartan-ng/brain": "0.0.1-alpha.680",
151
151
  "clsx": "^2.1.1",
152
152
  "@ng-icons/core": ">=32.0.0 <34.0.0",
153
153
  "@ng-icons/lucide": ">=32.0.0 <34.0.0"
@@ -157,7 +157,7 @@
157
157
  "name": "context-menu",
158
158
  "peerDependencies": {
159
159
  "@angular/core": ">=20.0.0 <22.0.0",
160
- "@spartan-ng/brain": "0.0.1-alpha.678",
160
+ "@spartan-ng/brain": "0.0.1-alpha.680",
161
161
  "@angular/cdk": ">=20.0.0 <22.0.0",
162
162
  "rxjs": "^7.8.0"
163
163
  }
@@ -170,7 +170,7 @@
170
170
  "@angular/cdk": ">=20.0.0 <22.0.0",
171
171
  "@ng-icons/core": ">=32.0.0 <34.0.0",
172
172
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
173
- "@spartan-ng/brain": "0.0.1-alpha.678",
173
+ "@spartan-ng/brain": "0.0.1-alpha.680",
174
174
  "clsx": "^2.1.1"
175
175
  }
176
176
  },
@@ -178,7 +178,7 @@
178
178
  "name": "dialog",
179
179
  "peerDependencies": {
180
180
  "@angular/core": ">=20.0.0 <22.0.0",
181
- "@spartan-ng/brain": "0.0.1-alpha.678",
181
+ "@spartan-ng/brain": "0.0.1-alpha.680",
182
182
  "@angular/cdk": ">=20.0.0 <22.0.0",
183
183
  "@angular/common": ">=20.0.0 <22.0.0",
184
184
  "@ng-icons/core": ">=32.0.0 <34.0.0",
@@ -194,7 +194,7 @@
194
194
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
195
195
  "@angular/cdk": ">=20.0.0 <22.0.0",
196
196
  "rxjs": "^7.8.0",
197
- "@spartan-ng/brain": "0.0.1-alpha.678"
197
+ "@spartan-ng/brain": "0.0.1-alpha.680"
198
198
  }
199
199
  },
200
200
  "empty": {
@@ -208,7 +208,7 @@
208
208
  "name": "field",
209
209
  "peerDependencies": {
210
210
  "@angular/core": ">=20.0.0 <22.0.0",
211
- "@spartan-ng/brain": "0.0.1-alpha.678",
211
+ "@spartan-ng/brain": "0.0.1-alpha.680",
212
212
  "clsx": "^2.1.1",
213
213
  "@angular/cdk": ">=20.0.0 <22.0.0",
214
214
  "class-variance-authority": "^0.7.0"
@@ -218,7 +218,7 @@
218
218
  "name": "hover-card",
219
219
  "peerDependencies": {
220
220
  "@angular/core": ">=20.0.0 <22.0.0",
221
- "@spartan-ng/brain": "0.0.1-alpha.678"
221
+ "@spartan-ng/brain": "0.0.1-alpha.680"
222
222
  }
223
223
  },
224
224
  "icon": {
@@ -234,7 +234,7 @@
234
234
  "peerDependencies": {
235
235
  "@angular/core": ">=20.0.0 <22.0.0",
236
236
  "@angular/forms": ">=20.0.0 <22.0.0",
237
- "@spartan-ng/brain": "0.0.1-alpha.678",
237
+ "@spartan-ng/brain": "0.0.1-alpha.680",
238
238
  "class-variance-authority": "^0.7.0"
239
239
  }
240
240
  },
@@ -243,7 +243,7 @@
243
243
  "peerDependencies": {
244
244
  "@angular/core": ">=20.0.0 <22.0.0",
245
245
  "class-variance-authority": "^0.7.0",
246
- "@spartan-ng/brain": "0.0.1-alpha.678"
246
+ "@spartan-ng/brain": "0.0.1-alpha.680"
247
247
  }
248
248
  },
249
249
  "input-otp": {
@@ -253,7 +253,7 @@
253
253
  "@ng-icons/core": ">=32.0.0 <34.0.0",
254
254
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
255
255
  "@angular/cdk": ">=20.0.0 <22.0.0",
256
- "@spartan-ng/brain": "0.0.1-alpha.678"
256
+ "@spartan-ng/brain": "0.0.1-alpha.680"
257
257
  }
258
258
  },
259
259
  "item": {
@@ -261,7 +261,7 @@
261
261
  "peerDependencies": {
262
262
  "@angular/core": ">=20.0.0 <22.0.0",
263
263
  "class-variance-authority": "^0.7.0",
264
- "@spartan-ng/brain": "0.0.1-alpha.678"
264
+ "@spartan-ng/brain": "0.0.1-alpha.680"
265
265
  }
266
266
  },
267
267
  "kbd": {
@@ -274,14 +274,14 @@
274
274
  "name": "label",
275
275
  "peerDependencies": {
276
276
  "@angular/core": ">=20.0.0 <22.0.0",
277
- "@spartan-ng/brain": "0.0.1-alpha.678"
277
+ "@spartan-ng/brain": "0.0.1-alpha.680"
278
278
  }
279
279
  },
280
280
  "menubar": {
281
281
  "name": "menubar",
282
282
  "peerDependencies": {
283
283
  "@angular/core": ">=20.0.0 <22.0.0",
284
- "@spartan-ng/brain": "0.0.1-alpha.678",
284
+ "@spartan-ng/brain": "0.0.1-alpha.680",
285
285
  "@angular/cdk": ">=20.0.0 <22.0.0",
286
286
  "rxjs": "^7.8.0"
287
287
  }
@@ -294,7 +294,7 @@
294
294
  "@angular/forms": ">=20.0.0 <22.0.0",
295
295
  "@ng-icons/core": ">=32.0.0 <34.0.0",
296
296
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
297
- "@spartan-ng/brain": "0.0.1-alpha.678",
297
+ "@spartan-ng/brain": "0.0.1-alpha.680",
298
298
  "clsx": "^2.1.1"
299
299
  }
300
300
  },
@@ -302,7 +302,7 @@
302
302
  "name": "navigation-menu",
303
303
  "peerDependencies": {
304
304
  "@angular/core": ">=20.0.0 <22.0.0",
305
- "@spartan-ng/brain": "0.0.1-alpha.678"
305
+ "@spartan-ng/brain": "0.0.1-alpha.680"
306
306
  }
307
307
  },
308
308
  "pagination": {
@@ -320,14 +320,14 @@
320
320
  "name": "popover",
321
321
  "peerDependencies": {
322
322
  "@angular/core": ">=20.0.0 <22.0.0",
323
- "@spartan-ng/brain": "0.0.1-alpha.678"
323
+ "@spartan-ng/brain": "0.0.1-alpha.680"
324
324
  }
325
325
  },
326
326
  "progress": {
327
327
  "name": "progress",
328
328
  "peerDependencies": {
329
329
  "@angular/core": ">=20.0.0 <22.0.0",
330
- "@spartan-ng/brain": "0.0.1-alpha.678"
330
+ "@spartan-ng/brain": "0.0.1-alpha.680"
331
331
  }
332
332
  },
333
333
  "radio-group": {
@@ -335,7 +335,7 @@
335
335
  "peerDependencies": {
336
336
  "@angular/core": ">=20.0.0 <22.0.0",
337
337
  "@angular/forms": ">=20.0.0 <22.0.0",
338
- "@spartan-ng/brain": "0.0.1-alpha.678",
338
+ "@spartan-ng/brain": "0.0.1-alpha.680",
339
339
  "clsx": "^2.1.1",
340
340
  "@angular/cdk": ">=20.0.0 <22.0.0",
341
341
  "@angular/common": ">=20.0.0 <22.0.0"
@@ -345,7 +345,7 @@
345
345
  "name": "resizable",
346
346
  "peerDependencies": {
347
347
  "@angular/core": ">=20.0.0 <22.0.0",
348
- "@spartan-ng/brain": "0.0.1-alpha.678"
348
+ "@spartan-ng/brain": "0.0.1-alpha.680"
349
349
  }
350
350
  },
351
351
  "scroll-area": {
@@ -360,7 +360,7 @@
360
360
  "@angular/core": ">=20.0.0 <22.0.0",
361
361
  "@angular/forms": ">=20.0.0 <22.0.0",
362
362
  "@angular/cdk": ">=20.0.0 <22.0.0",
363
- "@spartan-ng/brain": "0.0.1-alpha.678",
363
+ "@spartan-ng/brain": "0.0.1-alpha.680",
364
364
  "@ng-icons/core": ">=32.0.0 <34.0.0",
365
365
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
366
366
  "clsx": "^2.1.1"
@@ -370,14 +370,14 @@
370
370
  "name": "separator",
371
371
  "peerDependencies": {
372
372
  "@angular/core": ">=20.0.0 <22.0.0",
373
- "@spartan-ng/brain": "0.0.1-alpha.678"
373
+ "@spartan-ng/brain": "0.0.1-alpha.680"
374
374
  }
375
375
  },
376
376
  "sheet": {
377
377
  "name": "sheet",
378
378
  "peerDependencies": {
379
379
  "@angular/core": ">=20.0.0 <22.0.0",
380
- "@spartan-ng/brain": "0.0.1-alpha.678",
380
+ "@spartan-ng/brain": "0.0.1-alpha.680",
381
381
  "@angular/cdk": ">=20.0.0 <22.0.0",
382
382
  "@ng-icons/core": ">=32.0.0 <34.0.0",
383
383
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
@@ -390,7 +390,7 @@
390
390
  "peerDependencies": {
391
391
  "@angular/core": ">=20.0.0 <22.0.0",
392
392
  "@angular/cdk": ">=20.0.0 <22.0.0",
393
- "@spartan-ng/brain": "0.0.1-alpha.678",
393
+ "@spartan-ng/brain": "0.0.1-alpha.680",
394
394
  "class-variance-authority": "^0.7.0",
395
395
  "@ng-icons/core": ">=32.0.0 <34.0.0",
396
396
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
@@ -409,7 +409,7 @@
409
409
  "peerDependencies": {
410
410
  "@angular/core": ">=20.0.0 <22.0.0",
411
411
  "@angular/forms": ">=20.0.0 <22.0.0",
412
- "@spartan-ng/brain": "0.0.1-alpha.678"
412
+ "@spartan-ng/brain": "0.0.1-alpha.680"
413
413
  }
414
414
  },
415
415
  "sonner": {
@@ -419,7 +419,7 @@
419
419
  "@angular/core": ">=20.0.0 <22.0.0",
420
420
  "@ng-icons/core": ">=32.0.0 <34.0.0",
421
421
  "@ng-icons/lucide": ">=32.0.0 <34.0.0",
422
- "@spartan-ng/brain": "0.0.1-alpha.678",
422
+ "@spartan-ng/brain": "0.0.1-alpha.680",
423
423
  "clsx": "^2.1.1"
424
424
  }
425
425
  },
@@ -437,7 +437,7 @@
437
437
  "@angular/core": ">=20.0.0 <22.0.0",
438
438
  "@angular/cdk": ">=20.0.0 <22.0.0",
439
439
  "@angular/forms": ">=20.0.0 <22.0.0",
440
- "@spartan-ng/brain": "0.0.1-alpha.678",
440
+ "@spartan-ng/brain": "0.0.1-alpha.680",
441
441
  "clsx": "^2.1.1"
442
442
  }
443
443
  },
@@ -451,7 +451,7 @@
451
451
  "name": "tabs",
452
452
  "peerDependencies": {
453
453
  "@angular/core": ">=20.0.0 <22.0.0",
454
- "@spartan-ng/brain": "0.0.1-alpha.678",
454
+ "@spartan-ng/brain": "0.0.1-alpha.680",
455
455
  "class-variance-authority": "^0.7.0",
456
456
  "@angular/cdk": ">=20.0.0 <22.0.0",
457
457
  "@ng-icons/core": ">=32.0.0 <34.0.0",
@@ -465,7 +465,7 @@
465
465
  "peerDependencies": {
466
466
  "@angular/core": ">=20.0.0 <22.0.0",
467
467
  "@angular/forms": ">=20.0.0 <22.0.0",
468
- "@spartan-ng/brain": "0.0.1-alpha.678",
468
+ "@spartan-ng/brain": "0.0.1-alpha.680",
469
469
  "class-variance-authority": "^0.7.0"
470
470
  }
471
471
  },
@@ -473,7 +473,7 @@
473
473
  "name": "toggle",
474
474
  "peerDependencies": {
475
475
  "@angular/core": ">=20.0.0 <22.0.0",
476
- "@spartan-ng/brain": "0.0.1-alpha.678",
476
+ "@spartan-ng/brain": "0.0.1-alpha.680",
477
477
  "class-variance-authority": "^0.7.0"
478
478
  }
479
479
  },
@@ -481,7 +481,7 @@
481
481
  "name": "toggle-group",
482
482
  "peerDependencies": {
483
483
  "@angular/core": ">=20.0.0 <22.0.0",
484
- "@spartan-ng/brain": "0.0.1-alpha.678",
484
+ "@spartan-ng/brain": "0.0.1-alpha.680",
485
485
  "@angular/cdk": ">=20.0.0 <22.0.0"
486
486
  }
487
487
  },
@@ -489,7 +489,7 @@
489
489
  "name": "tooltip",
490
490
  "peerDependencies": {
491
491
  "@angular/core": ">=20.0.0 <22.0.0",
492
- "@spartan-ng/brain": "0.0.1-alpha.678",
492
+ "@spartan-ng/brain": "0.0.1-alpha.680",
493
493
  "class-variance-authority": "^0.7.0"
494
494
  }
495
495
  },