@blotch/dolan 22.2.4 → 22.2.5

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 (124) hide show
  1. package/dist/commands/add.test.js +2 -0
  2. package/dist/commands/add.test.js.map +1 -1
  3. package/dist/commands/doctor.js +78 -21
  4. package/dist/commands/doctor.js.map +1 -1
  5. package/dist/commands/doctor.test.js +167 -26
  6. package/dist/commands/doctor.test.js.map +1 -1
  7. package/dist/commands/init.test.js +4 -7
  8. package/dist/commands/init.test.js.map +1 -1
  9. package/dist/commands/update.d.ts +3 -1
  10. package/dist/commands/update.js +78 -15
  11. package/dist/commands/update.js.map +1 -1
  12. package/dist/commands/update.test.js +257 -2
  13. package/dist/commands/update.test.js.map +1 -1
  14. package/dist/lockfile.d.ts +10 -0
  15. package/dist/lockfile.js +20 -1
  16. package/dist/lockfile.js.map +1 -1
  17. package/dist/lockfile.test.js +43 -3
  18. package/dist/lockfile.test.js.map +1 -1
  19. package/dist/registry.js +73 -11
  20. package/dist/registry.js.map +1 -1
  21. package/dist/registry.test.js +16 -3
  22. package/dist/registry.test.js.map +1 -1
  23. package/dist/test-utils.d.ts +24 -2
  24. package/dist/test-utils.js +41 -2
  25. package/dist/test-utils.js.map +1 -1
  26. package/dist/ui/boolean-inputs.test.ts +76 -0
  27. package/dist/ui/components/action-sheet/action-sheet.test.ts +370 -1
  28. package/dist/ui/components/action-sheet/action-sheet.ts +306 -28
  29. package/dist/ui/components/action-sheet/index.ts +1 -0
  30. package/dist/ui/components/alert-dialog/alert-dialog.test.ts +552 -8
  31. package/dist/ui/components/alert-dialog/alert-dialog.ts +644 -36
  32. package/dist/ui/components/alert-dialog/index.ts +5 -0
  33. package/dist/ui/components/area-chart/area-chart.ts +3 -2
  34. package/dist/ui/components/badge/badge.ts +2 -1
  35. package/dist/ui/components/bottom-sheet/bottom-sheet.test.ts +968 -3
  36. package/dist/ui/components/bottom-sheet/bottom-sheet.ts +1021 -95
  37. package/dist/ui/components/bottom-sheet/index.ts +7 -1
  38. package/dist/ui/components/button/button.test.ts +36 -1
  39. package/dist/ui/components/button/button.ts +17 -7
  40. package/dist/ui/components/button-group/button-group.test.ts +53 -9
  41. package/dist/ui/components/button-group/button-group.ts +67 -21
  42. package/dist/ui/components/card/card.test.ts +16 -0
  43. package/dist/ui/components/card/card.ts +2 -1
  44. package/dist/ui/components/chart/chart-presets.ts +6 -6
  45. package/dist/ui/components/chart/chart.test.ts +14 -0
  46. package/dist/ui/components/chart/chart.ts +10 -3
  47. package/dist/ui/components/checkbox/checkbox.ts +2 -1
  48. package/dist/ui/components/collapsible/collapsible.ts +2 -1
  49. package/dist/ui/components/dialog/dialog.ts +6 -6
  50. package/dist/ui/components/dock/dock-scroll.ts +9 -0
  51. package/dist/ui/components/dock/dock-search.test.ts +594 -0
  52. package/dist/ui/components/dock/dock.test.ts +4 -1
  53. package/dist/ui/components/dock/dock.ts +529 -51
  54. package/dist/ui/components/dynamic-color/dynamic-color.test.ts +144 -0
  55. package/dist/ui/components/dynamic-color/dynamic-color.ts +146 -0
  56. package/dist/ui/components/dynamic-color/index.ts +5 -0
  57. package/dist/ui/components/glass/glass.test.ts +39 -1
  58. package/dist/ui/components/glass/glass.ts +87 -17
  59. package/dist/ui/components/glass/index.ts +1 -0
  60. package/dist/ui/components/icon/icon-theme.test.ts +28 -0
  61. package/dist/ui/components/icon/icon-theme.ts +38 -7
  62. package/dist/ui/components/input/input.ts +2 -1
  63. package/dist/ui/components/label/label.ts +8 -2
  64. package/dist/ui/components/line-chart/line-chart.ts +3 -2
  65. package/dist/ui/components/list/list.ts +5 -4
  66. package/dist/ui/components/menu/menu-popup.test.ts +18 -14
  67. package/dist/ui/components/menu/menu-popup.ts +24 -3
  68. package/dist/ui/components/menu/menu.test.ts +99 -5
  69. package/dist/ui/components/menu/menu.ts +74 -34
  70. package/dist/ui/components/nav-drawer/nav-drawer.ts +3 -2
  71. package/dist/ui/components/navigation-bar/index.ts +1 -0
  72. package/dist/ui/components/navigation-bar/navigation-bar.test.ts +425 -0
  73. package/dist/ui/components/navigation-bar/navigation-bar.ts +411 -0
  74. package/dist/ui/components/popover/index.ts +9 -0
  75. package/dist/ui/components/popover/popover-panel.test.ts +735 -0
  76. package/dist/ui/components/popover/popover-panel.ts +603 -0
  77. package/dist/ui/components/popover/popover.test.ts +286 -0
  78. package/dist/ui/components/popover/popover.ts +207 -0
  79. package/dist/ui/components/progress/progress.ts +2 -1
  80. package/dist/ui/components/radio-group/radio-group.ts +2 -1
  81. package/dist/ui/components/scroll-area/scroll-area.ts +4 -3
  82. package/dist/ui/components/search-field/index.ts +15 -0
  83. package/dist/ui/components/search-field/keyboard.test.ts +147 -0
  84. package/dist/ui/components/search-field/keyboard.ts +123 -0
  85. package/dist/ui/components/search-field/search-field.test.ts +549 -0
  86. package/dist/ui/components/search-field/search-field.ts +628 -0
  87. package/dist/ui/components/segmented-control/index.ts +8 -0
  88. package/dist/ui/components/segmented-control/segmented-control.test.ts +861 -0
  89. package/dist/ui/components/segmented-control/segmented-control.ts +884 -0
  90. package/dist/ui/components/select/select.ts +2 -1
  91. package/dist/ui/components/sheet/sheet.test.ts +90 -3
  92. package/dist/ui/components/sheet/sheet.ts +59 -4
  93. package/dist/ui/components/slider/index.ts +1 -0
  94. package/dist/ui/components/slider/slider.test.ts +695 -0
  95. package/dist/ui/components/slider/slider.ts +901 -0
  96. package/dist/ui/components/switch/index.ts +1 -1
  97. package/dist/ui/components/switch/switch.test.ts +464 -48
  98. package/dist/ui/components/switch/switch.ts +613 -43
  99. package/dist/ui/components/tabs/index.ts +7 -1
  100. package/dist/ui/components/tabs/tabs.test.ts +278 -2
  101. package/dist/ui/components/tabs/tabs.ts +233 -30
  102. package/dist/ui/components/textarea/textarea.ts +2 -1
  103. package/dist/ui/components/toggle/index.ts +1 -0
  104. package/dist/ui/components/toggle/toggle.test.ts +310 -4
  105. package/dist/ui/components/toggle/toggle.ts +241 -26
  106. package/dist/ui/components/toolbar/bar-scroll.test.ts +310 -0
  107. package/dist/ui/components/toolbar/bar-scroll.ts +372 -0
  108. package/dist/ui/components/toolbar/index.ts +12 -0
  109. package/dist/ui/components/toolbar/toolbar.test.ts +438 -0
  110. package/dist/ui/components/toolbar/toolbar.ts +535 -0
  111. package/dist/utils/analyze.d.ts +10 -5
  112. package/dist/utils/analyze.js +3 -2
  113. package/dist/utils/analyze.js.map +1 -1
  114. package/dist/utils/installed.d.ts +13 -1
  115. package/dist/utils/installed.js +17 -0
  116. package/dist/utils/installed.js.map +1 -1
  117. package/dist/utils/installed.test.js +39 -1
  118. package/dist/utils/installed.test.js.map +1 -1
  119. package/dist/utils/tailwind.d.ts +25 -5
  120. package/dist/utils/tailwind.js +53 -14
  121. package/dist/utils/tailwind.js.map +1 -1
  122. package/dist/utils/tailwind.test.js +85 -22
  123. package/dist/utils/tailwind.test.js.map +1 -1
  124. package/package.json +1 -1
@@ -3,7 +3,8 @@ import { tmpdir } from 'node:os';
3
3
  import { join } from 'node:path';
4
4
  import { afterEach, describe, expect, it } from 'vitest';
5
5
  import { createEmptyLockfile } from '../lockfile';
6
- import { componentsOnDisk, droppedFiles, trackedComponents, untrackedComponents, } from './installed';
6
+ import { onTailwind } from '../test-utils';
7
+ import { componentsOnDisk, droppedFiles, droppedThemeFiles, trackedComponents, untrackedComponents, } from './installed';
7
8
  let root;
8
9
  const componentsDir = (...folders) => {
9
10
  root = mkdtempSync(join(tmpdir(), 'dolan-installed-'));
@@ -54,4 +55,41 @@ describe('droppedFiles', () => {
54
55
  expect(droppedFiles('button', createEmptyLockfile())).toEqual([]);
55
56
  });
56
57
  });
58
+ describe('droppedThemeFiles', () => {
59
+ /**
60
+ * A project on this Tailwind version, without the testing library.
61
+ */
62
+ const project = (tailwind) => {
63
+ root = mkdtempSync(join(tmpdir(), 'dolan-installed-'));
64
+ onTailwind(root, tailwind);
65
+ return root;
66
+ };
67
+ /**
68
+ * A lockfile that records every theme file either version takes.
69
+ */
70
+ const lockfile = () => {
71
+ const locked = createEmptyLockfile();
72
+ for (const file of [
73
+ 'default.css',
74
+ 'dark.css',
75
+ 'tailwind.css',
76
+ 'tailwind-plugin.ts',
77
+ 'tailwind-plugin.test.ts',
78
+ ]) {
79
+ locked.theme[file] = { hash: file };
80
+ }
81
+ return locked;
82
+ };
83
+ it('lists the Tailwind 3 plugin and its test on Tailwind 4', () => {
84
+ const cwd = project(4);
85
+ expect(droppedThemeFiles(cwd, cwd, lockfile())).toEqual([
86
+ 'tailwind-plugin.ts',
87
+ 'tailwind-plugin.test.ts',
88
+ ]);
89
+ });
90
+ it("lists tailwind.css on Tailwind 3, but not the plugin's test a project without the testing library doesn't get", () => {
91
+ const cwd = project(3);
92
+ expect(droppedThemeFiles(cwd, cwd, lockfile())).toEqual(['tailwind.css']);
93
+ });
94
+ });
57
95
  //# sourceMappingURL=installed.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"installed.test.js","sourceRoot":"","sources":["../../src/utils/installed.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installed.test.js","sourceRoot":"","sources":["../../src/utils/installed.test.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,31 @@
1
1
  /** The config files Tailwind 3 reads. Tailwind 4 needs none. */
2
2
  export declare const TAILWIND_CONFIG_FILES: string[];
3
+ /** The Tailwind config in the project's folder, if it has one. */
4
+ export declare const tailwindConfigFile: (cwd: string) => string | undefined;
3
5
  /**
4
- * Whether the project is set up for Tailwind 4, where the theme's plugin is
5
- * loaded with `@plugin` in the stylesheet rather than listed in
6
- * `tailwind.config.ts`: it has no Tailwind config, and depends on Tailwind 4
7
- * or on its PostCSS plugin, as `ng add @blotch/angular-lynx` and
8
- * `ng new --style=tailwind` set it up.
6
+ * The version of Tailwind CSS installed for the project, resolved from its
7
+ * folder as the build resolves it. Reading the project's package.json missed
8
+ * two setups that build fine: a workspace whose root installs `tailwindcss`
9
+ * for every package, and a Tailwind 4 app that lists only
10
+ * `@tailwindcss/postcss`, which depends on `tailwindcss` itself.
11
+ *
12
+ * npm hoists that dependency next to the plugin, where the app finds it.
13
+ * pnpm's strict layout keeps it out of the app's reach, so this looks from
14
+ * the plugin's own folder too. The build still finds it under pnpm: pnpm's
15
+ * bin scripts, `ng` among them, put the packages pnpm hoists on `NODE_PATH`,
16
+ * and Tailwind resolves the stylesheet's `@import 'tailwindcss'` against it.
17
+ * Undefined when neither finds it.
18
+ */
19
+ export declare const installedTailwindVersion: (cwd: string) => string | undefined;
20
+ /** A version's major, `4` for `4.3.3`. */
21
+ export declare const majorVersion: (version: string) => number;
22
+ /**
23
+ * Whether the project is set up for Tailwind 4, where the stylesheet imports
24
+ * the theme's `tailwind.css` rather than `tailwind.config.ts` listing its
25
+ * plugin: it has no Tailwind config, and Tailwind 4 installed, as
26
+ * `ng add @blotch/angular-lynx` and `ng new --style=tailwind` set it up. A
27
+ * config means a Tailwind 3 setup, even with Tailwind 4 installed, as
28
+ * `doctor` warns.
9
29
  */
10
30
  export declare const usesTailwind4: (cwd: string) => boolean;
11
31
  /**
@@ -1,4 +1,5 @@
1
- import { existsSync, readFileSync } from 'node:fs';
1
+ import { existsSync } from 'node:fs';
2
+ import { createRequire } from 'node:module';
2
3
  import { join } from 'node:path';
3
4
  /** The config files Tailwind 3 reads. Tailwind 4 needs none. */
4
5
  export const TAILWIND_CONFIG_FILES = [
@@ -7,27 +8,65 @@ export const TAILWIND_CONFIG_FILES = [
7
8
  'tailwind.config.mjs',
8
9
  'tailwind.config.cjs',
9
10
  ];
11
+ /** The Tailwind config in the project's folder, if it has one. */
12
+ export const tailwindConfigFile = (cwd) => TAILWIND_CONFIG_FILES.find((file) => existsSync(join(cwd, file)));
10
13
  /**
11
- * Whether the project is set up for Tailwind 4, where the theme's plugin is
12
- * loaded with `@plugin` in the stylesheet rather than listed in
13
- * `tailwind.config.ts`: it has no Tailwind config, and depends on Tailwind 4
14
- * or on its PostCSS plugin, as `ng add @blotch/angular-lynx` and
15
- * `ng new --style=tailwind` set it up.
14
+ * The version of `tailwindcss` that `require` finds, if any. Both majors'
15
+ * package.json resolve: Tailwind 3 has no `exports` map, and Tailwind 4's
16
+ * lists `./package.json`.
16
17
  */
17
- export const usesTailwind4 = (cwd) => {
18
- if (TAILWIND_CONFIG_FILES.some((file) => existsSync(join(cwd, file)))) {
19
- return false;
18
+ const tailwindVersion = (require) => {
19
+ try {
20
+ return require('tailwindcss/package.json').version;
21
+ }
22
+ catch {
23
+ return undefined;
20
24
  }
25
+ };
26
+ /**
27
+ * The version of Tailwind CSS installed for the project, resolved from its
28
+ * folder as the build resolves it. Reading the project's package.json missed
29
+ * two setups that build fine: a workspace whose root installs `tailwindcss`
30
+ * for every package, and a Tailwind 4 app that lists only
31
+ * `@tailwindcss/postcss`, which depends on `tailwindcss` itself.
32
+ *
33
+ * npm hoists that dependency next to the plugin, where the app finds it.
34
+ * pnpm's strict layout keeps it out of the app's reach, so this looks from
35
+ * the plugin's own folder too. The build still finds it under pnpm: pnpm's
36
+ * bin scripts, `ng` among them, put the packages pnpm hoists on `NODE_PATH`,
37
+ * and Tailwind resolves the stylesheet's `@import 'tailwindcss'` against it.
38
+ * Undefined when neither finds it.
39
+ */
40
+ export const installedTailwindVersion = (cwd) => {
41
+ const require = createRequire(join(cwd, 'package.json'));
42
+ const version = tailwindVersion(require);
43
+ if (version !== undefined)
44
+ return version;
21
45
  try {
22
- const { dependencies = {}, devDependencies = {} } = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf-8'));
23
- const all = { ...dependencies, ...devDependencies };
24
- const major = Number(/\d+/.exec(all['tailwindcss'] ?? '')?.[0]);
25
- return Boolean(all['@tailwindcss/postcss']) || major >= 4;
46
+ // The plugin's `exports` map doesn't list its package.json, so this
47
+ // starts from its entry point.
48
+ return tailwindVersion(createRequire(require.resolve('@tailwindcss/postcss')));
26
49
  }
27
50
  catch {
28
- return false;
51
+ return undefined;
29
52
  }
30
53
  };
54
+ /** A version's major, `4` for `4.3.3`. */
55
+ export const majorVersion = (version) => Number.parseInt(version, 10);
56
+ /**
57
+ * Whether the project is set up for Tailwind 4, where the stylesheet imports
58
+ * the theme's `tailwind.css` rather than `tailwind.config.ts` listing its
59
+ * plugin: it has no Tailwind config, and Tailwind 4 installed, as
60
+ * `ng add @blotch/angular-lynx` and `ng new --style=tailwind` set it up. A
61
+ * config means a Tailwind 3 setup, even with Tailwind 4 installed, as
62
+ * `doctor` warns.
63
+ */
64
+ export const usesTailwind4 = (cwd) => {
65
+ if (tailwindConfigFile(cwd))
66
+ return false;
67
+ const version = installedTailwindVersion(cwd);
68
+ return version !== undefined && majorVersion(version) >= 4;
69
+ };
31
70
  /**
32
71
  * The theme files a project takes: the colors, and what maps them to
33
72
  * Tailwind's utilities, `tailwind.css` for Tailwind 4 (imported in the
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../../src/utils/tailwind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,gEAAgE;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;CACtB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAW,EAAE;IACpD,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,YAAY,GAAG,EAAE,EAAE,eAAe,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5D,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAIjD,CAAC;QACF,MAAM,GAAG,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAW,EACX,EAAE,KAAK,GAAG,KAAK,KAA0B,EAAE,EACjC,EAAE,CACZ,aAAa,CAAC,GAAG,CAAC;IAChB,CAAC,CAAC,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,CAAC;IAC7C,CAAC,CAAC;QACE,aAAa;QACb,UAAU;QACV,oBAAoB;QACpB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC"}
1
+ {"version":3,"file":"tailwind.js","sourceRoot":"","sources":["../../src/utils/tailwind.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,gEAAgE;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;CACtB,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAsB,EAAE,CACpE,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,eAAe,GAAG,CAAC,OAAuB,EAAsB,EAAE;IACtE,IAAI,CAAC;QACH,OAAQ,OAAO,CAAC,0BAA0B,CAAyB,CAAC,OAAO,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAsB,EAAE;IAC1E,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,CAAC;QACH,oEAAoE;QACpE,+BAA+B;QAC/B,OAAO,eAAe,CACpB,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CACvD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAU,EAAE,CACtD,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAW,EAAE;IACpD,IAAI,kBAAkB,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAW,EACX,EAAE,KAAK,GAAG,KAAK,KAA0B,EAAE,EACjC,EAAE,CACZ,aAAa,CAAC,GAAG,CAAC;IAChB,CAAC,CAAC,CAAC,aAAa,EAAE,UAAU,EAAE,cAAc,CAAC;IAC7C,CAAC,CAAC;QACE,aAAa;QACb,UAAU;QACV,oBAAoB;QACpB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC"}
@@ -1,46 +1,109 @@
1
1
  import { describe, expect, it, afterEach } from 'vitest';
2
- import { existsSync, writeFileSync } from 'node:fs';
2
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- import { createFixture } from '../test-utils';
4
+ import { createFixture, installPackage } from '../test-utils';
5
5
  import { getUiSourceDir } from './resolve-paths';
6
- import { themeFilesFor, usesTailwind4 } from './tailwind';
7
- let fixture;
6
+ import { installedTailwindVersion, majorVersion, tailwindConfigFile, themeFilesFor, usesTailwind4, } from './tailwind';
7
+ let fixtures = [];
8
8
  afterEach(() => {
9
- fixture?.cleanup();
9
+ for (const fixture of fixtures)
10
+ fixture.cleanup();
11
+ fixtures = [];
10
12
  });
11
13
  /**
12
- * A project with these dev dependencies, and these other files.
14
+ * A project with these packages installed, and these other files. Its
15
+ * package.json lists none of them: what's installed is what counts.
13
16
  */
14
- const project = (devDependencies, files = {}) => {
15
- fixture = createFixture({});
16
- if (devDependencies) {
17
- writeFileSync(join(fixture.dir, 'package.json'), JSON.stringify({ devDependencies }));
17
+ const project = (installed = {}, files = {}) => {
18
+ const fixture = createFixture({});
19
+ fixtures.push(fixture);
20
+ writeFileSync(join(fixture.dir, 'package.json'), '{}');
21
+ for (const [name, version] of Object.entries(installed)) {
22
+ installPackage(fixture.dir, name, version);
18
23
  }
19
24
  for (const [file, content] of Object.entries(files)) {
20
25
  writeFileSync(join(fixture.dir, file), content);
21
26
  }
22
27
  return fixture.dir;
23
28
  };
29
+ /**
30
+ * A project that lists only `@tailwindcss/postcss`, with Tailwind in the
31
+ * plugin's own node_modules, out of the project's reach, as pnpm installs it.
32
+ */
33
+ const postcssOnly = () => {
34
+ const dir = project();
35
+ installPackage(installPackage(dir, '@tailwindcss/postcss', '4.3.3'), 'tailwindcss', '4.3.3');
36
+ return dir;
37
+ };
38
+ describe('installedTailwindVersion', () => {
39
+ it("reads the version of the project's own Tailwind, 3 or 4", () => {
40
+ expect(installedTailwindVersion(project({ tailwindcss: '4.3.3' }))).toBe('4.3.3');
41
+ expect(installedTailwindVersion(project({ tailwindcss: '3.4.19' }))).toBe('3.4.19');
42
+ });
43
+ it('finds the Tailwind a workspace root installs', () => {
44
+ // The app's package.json lists no Tailwind: the root's is every package's.
45
+ const root = project({ tailwindcss: '4.3.3' });
46
+ const app = join(root, 'apps', 'app');
47
+ mkdirSync(app, { recursive: true });
48
+ writeFileSync(join(app, 'package.json'), '{}');
49
+ expect(installedTailwindVersion(app)).toBe('4.3.3');
50
+ });
51
+ it('finds the Tailwind @tailwindcss/postcss depends on, hoisted next to it', () => {
52
+ // npm's layout: the plugin's dependency sits in the app's node_modules.
53
+ expect(installedTailwindVersion(project({ '@tailwindcss/postcss': '4.3.3', tailwindcss: '4.3.3' }))).toBe('4.3.3');
54
+ });
55
+ it("finds it from the plugin's own folder when the project can't", () => {
56
+ expect(installedTailwindVersion(postcssOnly())).toBe('4.3.3');
57
+ });
58
+ it("prefers the project's own Tailwind to the plugin's", () => {
59
+ // What the stylesheet's `@import 'tailwindcss'` finds first.
60
+ const dir = project({ tailwindcss: '4.2.0' });
61
+ installPackage(installPackage(dir, '@tailwindcss/postcss', '4.3.3'), 'tailwindcss', '4.3.3');
62
+ expect(installedTailwindVersion(dir)).toBe('4.2.0');
63
+ });
64
+ it('is undefined without Tailwind, even when the plugin is there', () => {
65
+ expect(installedTailwindVersion(project())).toBeUndefined();
66
+ expect(installedTailwindVersion(project({ '@tailwindcss/postcss': '4.3.3' }))).toBeUndefined();
67
+ });
68
+ });
69
+ describe('majorVersion', () => {
70
+ it("reads a version's major", () => {
71
+ expect(majorVersion('4.3.3')).toBe(4);
72
+ expect(majorVersion('3.4.19')).toBe(3);
73
+ expect(majorVersion('4.0.0-beta.1')).toBe(4);
74
+ });
75
+ });
76
+ describe('tailwindConfigFile', () => {
77
+ it('names the Tailwind config in the project, if any', () => {
78
+ expect(tailwindConfigFile(project({}, { 'tailwind.config.js': '' }))).toBe('tailwind.config.js');
79
+ expect(tailwindConfigFile(project())).toBeUndefined();
80
+ });
81
+ });
24
82
  describe('usesTailwind4', () => {
25
- it('is true for a project on Tailwind 4 without a Tailwind config', () => {
26
- expect(usesTailwind4(project({ tailwindcss: '^4.3.3' }))).toBe(true);
27
- expect(usesTailwind4(project({ '@tailwindcss/postcss': '^4.3.3' }))).toBe(true);
83
+ it('is true for a project with Tailwind 4 installed and no Tailwind config', () => {
84
+ expect(usesTailwind4(project({ tailwindcss: '4.3.3' }))).toBe(true);
85
+ expect(usesTailwind4(postcssOnly())).toBe(true);
28
86
  });
29
87
  it('is false for Tailwind 3, a Tailwind config, or no Tailwind', () => {
30
- expect(usesTailwind4(project({ tailwindcss: '^3.4.19' }))).toBe(false);
31
- expect(usesTailwind4(project({ tailwindcss: '^4.0.0' }, { 'tailwind.config.js': '' }))).toBe(false);
32
- expect(usesTailwind4(project({}))).toBe(false);
33
- expect(usesTailwind4(project(undefined))).toBe(false);
88
+ expect(usesTailwind4(project({ tailwindcss: '3.4.19' }))).toBe(false);
89
+ // A config is a Tailwind 3 setup, whatever's installed.
90
+ expect(usesTailwind4(project({ tailwindcss: '4.3.3' }, { 'tailwind.config.js': '' }))).toBe(false);
91
+ expect(usesTailwind4(project())).toBe(false);
92
+ });
93
+ it('reads the installed version, not the one package.json asks for', () => {
94
+ const dir = project({ tailwindcss: '3.4.19' });
95
+ writeFileSync(join(dir, 'package.json'), JSON.stringify({ devDependencies: { tailwindcss: '^4.3.3' } }));
96
+ expect(usesTailwind4(dir)).toBe(false);
34
97
  });
35
98
  });
36
99
  describe('themeFilesFor', () => {
37
100
  it('takes tailwind.css on Tailwind 4, and the config plugin on Tailwind 3', () => {
38
- expect(themeFilesFor(project({ tailwindcss: '^4.3.3' }))).toEqual([
101
+ expect(themeFilesFor(project({ tailwindcss: '4.3.3' }))).toEqual([
39
102
  'default.css',
40
103
  'dark.css',
41
104
  'tailwind.css',
42
105
  ]);
43
- expect(themeFilesFor(project({ tailwindcss: '^3.4.19' }))).toEqual([
106
+ expect(themeFilesFor(project({ tailwindcss: '3.4.19' }))).toEqual([
44
107
  'default.css',
45
108
  'dark.css',
46
109
  'tailwind-plugin.ts',
@@ -49,16 +112,16 @@ describe('themeFilesFor', () => {
49
112
  it("adds the Tailwind plugin's test with the components' tests", () => {
50
113
  // It covers the plugin in the app's coverage report. Tailwind 4's
51
114
  // tailwind.css has no code to cover.
52
- expect(themeFilesFor(project({ tailwindcss: '^3.4.19' }), { tests: true })).toEqual([
115
+ expect(themeFilesFor(project({ tailwindcss: '3.4.19' }), { tests: true })).toEqual([
53
116
  'default.css',
54
117
  'dark.css',
55
118
  'tailwind-plugin.ts',
56
119
  'tailwind-plugin.test.ts',
57
120
  ]);
58
- expect(themeFilesFor(project({ tailwindcss: '^4.3.3' }), { tests: true })).toEqual(['default.css', 'dark.css', 'tailwind.css']);
121
+ expect(themeFilesFor(project({ tailwindcss: '4.3.3' }), { tests: true })).toEqual(['default.css', 'dark.css', 'tailwind.css']);
59
122
  });
60
123
  it('lists only files the theme folder has', () => {
61
- for (const version of ['^3.4.19', '^4.3.3']) {
124
+ for (const version of ['3.4.19', '4.3.3']) {
62
125
  const files = themeFilesFor(project({ tailwindcss: version }), {
63
126
  tests: true,
64
127
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tailwind.test.js","sourceRoot":"","sources":["../../src/utils/tailwind.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tailwind.test.js","sourceRoot":"","sources":["../../src/utils/tailwind.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blotch/dolan",
3
- "version": "22.2.4",
3
+ "version": "22.2.5",
4
4
  "description": "CLI for adding @blotch/ui components to your project",
5
5
  "homepage": "https://github.com/Blotch-Smart-Frames/AngularLynx#readme",
6
6
  "bugs": {