torch-glare 2.4.0 → 2.4.1

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 (264) hide show
  1. package/README.md +8 -0
  2. package/apps/lib/components/ActionButton.tsx +7 -12
  3. package/apps/lib/components/ActionsGroup.tsx +4 -15
  4. package/apps/lib/components/AlertDialog.tsx +173 -191
  5. package/apps/lib/components/Avatar.tsx +13 -16
  6. package/apps/lib/components/Badge.tsx +1 -3
  7. package/apps/lib/components/BadgeField.tsx +76 -71
  8. package/apps/lib/components/Breadcrumb.tsx +49 -85
  9. package/apps/lib/components/Button.tsx +20 -19
  10. package/apps/lib/components/ButtonGroup.tsx +31 -41
  11. package/apps/lib/components/Calendar.tsx +51 -29
  12. package/apps/lib/components/Card.tsx +2 -13
  13. package/apps/lib/components/ChartBlockTool.ts +17 -52
  14. package/apps/lib/components/Checkbox.tsx +9 -16
  15. package/apps/lib/components/ContextMenu.tsx +97 -96
  16. package/apps/lib/components/CountBadge.tsx +4 -6
  17. package/apps/lib/components/DataTable.tsx +196 -216
  18. package/apps/lib/components/DataViews/DataViewRadio.tsx +1 -6
  19. package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +13 -47
  20. package/apps/lib/components/DataViews/DataViewsHeader.tsx +1 -3
  21. package/apps/lib/components/DataViews/DataViewsLayout.tsx +5 -12
  22. package/apps/lib/components/DataViews/FilterPanel.tsx +155 -149
  23. package/apps/lib/components/DataViews/HeaderSearch.tsx +1 -5
  24. package/apps/lib/components/DataViews/InboxView.tsx +22 -68
  25. package/apps/lib/components/DataViews/InboxViewCard.tsx +68 -77
  26. package/apps/lib/components/DataViews/KanbanView.tsx +8 -25
  27. package/apps/lib/components/DataViews/PanelControls.tsx +3 -13
  28. package/apps/lib/components/DataViews/SettingsPanel.tsx +83 -89
  29. package/apps/lib/components/DataViews/TableView.tsx +8 -28
  30. package/apps/lib/components/DataViews/TreeView.tsx +12 -40
  31. package/apps/lib/components/DataViews/badgeAdapter.ts +32 -28
  32. package/apps/lib/components/DataViews/fieldRenderers.tsx +106 -141
  33. package/apps/lib/components/DataViews/filters/DatePickerRangeFilter.tsx +30 -23
  34. package/apps/lib/components/DataViews/filters/DateRangePopover.tsx +39 -32
  35. package/apps/lib/components/DataViews/filters/PresetChips.tsx +15 -15
  36. package/apps/lib/components/DataViews/filters/RangeSliderWithInputs.tsx +69 -58
  37. package/apps/lib/components/DataViews/index.ts +26 -26
  38. package/apps/lib/components/DataViews/tree/TreeDrawer.tsx +12 -16
  39. package/apps/lib/components/DataViews/tree/TreeSidebar.tsx +28 -31
  40. package/apps/lib/components/DataViews/types.ts +104 -115
  41. package/apps/lib/components/DatePicker.tsx +198 -196
  42. package/apps/lib/components/Dialog.tsx +92 -105
  43. package/apps/lib/components/Divider.tsx +21 -24
  44. package/apps/lib/components/Drawer.tsx +79 -139
  45. package/apps/lib/components/DropdownMenu.tsx +131 -171
  46. package/apps/lib/components/FieldHint.tsx +4 -11
  47. package/apps/lib/components/Form.tsx +146 -155
  48. package/apps/lib/components/FormStepper.tsx +9 -39
  49. package/apps/lib/components/HeaderBar.tsx +1 -9
  50. package/apps/lib/components/ImageAttachment.tsx +111 -73
  51. package/apps/lib/components/InnerLabelField.tsx +20 -16
  52. package/apps/lib/components/Input.tsx +171 -172
  53. package/apps/lib/components/InputField.tsx +44 -45
  54. package/apps/lib/components/InputOTP.tsx +68 -69
  55. package/apps/lib/components/Label.tsx +31 -35
  56. package/apps/lib/components/LabelField.tsx +4 -5
  57. package/apps/lib/components/LabeledCheckBox.tsx +8 -12
  58. package/apps/lib/components/LabeledRadio.tsx +7 -5
  59. package/apps/lib/components/LinkButton.tsx +2 -9
  60. package/apps/lib/components/LoginButton.tsx +4 -9
  61. package/apps/lib/components/PasswordLevel.tsx +5 -5
  62. package/apps/lib/components/Popover.tsx +15 -33
  63. package/apps/lib/components/ProfileMenu.tsx +67 -72
  64. package/apps/lib/components/Radio.tsx +1 -5
  65. package/apps/lib/components/RadioCard.tsx +9 -28
  66. package/apps/lib/components/ScrollArea.tsx +45 -43
  67. package/apps/lib/components/SearchField.tsx +49 -39
  68. package/apps/lib/components/SearchableSelect.tsx +8 -14
  69. package/apps/lib/components/SearchableTable.tsx +108 -118
  70. package/apps/lib/components/SearchableTree.tsx +469 -0
  71. package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
  72. package/apps/lib/components/SectionBlock.tsx +4 -16
  73. package/apps/lib/components/Select.tsx +53 -80
  74. package/apps/lib/components/SimpleSelect.tsx +196 -187
  75. package/apps/lib/components/Skeleton.tsx +9 -12
  76. package/apps/lib/components/SlideDatePicker.tsx +215 -166
  77. package/apps/lib/components/SpinLoading.tsx +33 -49
  78. package/apps/lib/components/Stepper.tsx +13 -56
  79. package/apps/lib/components/Switch.tsx +8 -10
  80. package/apps/lib/components/TabFormItem.tsx +3 -12
  81. package/apps/lib/components/TabSwitch.tsx +7 -34
  82. package/apps/lib/components/Table.tsx +60 -75
  83. package/apps/lib/components/TableDnDWrapper.ts +15 -48
  84. package/apps/lib/components/TextEditor.tsx +93 -104
  85. package/apps/lib/components/Textarea.tsx +8 -12
  86. package/apps/lib/components/Timeline.tsx +21 -41
  87. package/apps/lib/components/Toast.tsx +83 -83
  88. package/apps/lib/components/Toggle.tsx +112 -114
  89. package/apps/lib/components/ToggleButton.tsx +1 -1
  90. package/apps/lib/components/Tooltip.tsx +24 -19
  91. package/apps/lib/components/TransparentLabel.tsx +61 -62
  92. package/apps/lib/components/TreeDropDown.tsx +86 -52
  93. package/apps/lib/components/TreeFolder/TreeFolder.tsx +15 -48
  94. package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +16 -21
  95. package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +9 -20
  96. package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +3 -3
  97. package/apps/lib/components/TreeFolder/icons.tsx +14 -17
  98. package/apps/lib/components/TreeFolder/index.ts +15 -8
  99. package/apps/lib/components/TreeFolder/treeFolderUtils.ts +47 -52
  100. package/apps/lib/components/TreeFolder/types.ts +32 -32
  101. package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +117 -123
  102. package/apps/lib/hooks/useActiveTreeItem.ts +52 -55
  103. package/apps/lib/hooks/useClickOutside.ts +21 -20
  104. package/apps/lib/hooks/useDataViewsState.ts +86 -80
  105. package/apps/lib/hooks/useIsMobile.ts +12 -12
  106. package/apps/lib/hooks/useResize.ts +54 -65
  107. package/apps/lib/hooks/useTagSelection.ts +201 -201
  108. package/apps/lib/layouts/CNLayout.tsx +181 -140
  109. package/apps/lib/layouts/DataViewCard.tsx +4 -18
  110. package/apps/lib/layouts/FieldSection.tsx +2 -6
  111. package/apps/lib/layouts/TreeSubLayout.tsx +24 -38
  112. package/apps/lib/providers/ThemeProvider.tsx +8 -23
  113. package/apps/lib/registry.json +1004 -0
  114. package/apps/lib/tsconfig.json +9 -0
  115. package/apps/lib/utils/cn.ts +1 -1
  116. package/apps/lib/utils/dataViews/columnUtils.ts +46 -44
  117. package/apps/lib/utils/dataViews/fieldUtils.ts +70 -71
  118. package/apps/lib/utils/dataViews/nestedDataUtils.tsx +129 -122
  119. package/apps/lib/utils/dataViews/pathUtils.ts +74 -67
  120. package/apps/lib/utils/dataViews/rangeUtils.ts +121 -112
  121. package/apps/lib/utils/dataViews/treeUtils.ts +204 -211
  122. package/apps/lib/utils/dateFormat.ts +64 -54
  123. package/apps/lib/utils/markdownParser.ts +2 -7
  124. package/apps/lib/utils/resize.ts +21 -25
  125. package/apps/lib/utils/types.ts +13 -13
  126. package/dist/bin/index.js +8 -2
  127. package/dist/bin/index.js.map +1 -1
  128. package/dist/src/shared/getAvailableFiles.d.ts.map +1 -1
  129. package/dist/src/shared/getAvailableFiles.js +6 -1
  130. package/dist/src/shared/getAvailableFiles.js.map +1 -1
  131. package/dist/src/shared/loadRegistry.d.ts +7 -0
  132. package/dist/src/shared/loadRegistry.d.ts.map +1 -0
  133. package/dist/src/shared/loadRegistry.js +31 -0
  134. package/dist/src/shared/loadRegistry.js.map +1 -0
  135. package/dist/src/shared/resolveInstallPlan.d.ts +12 -0
  136. package/dist/src/shared/resolveInstallPlan.d.ts.map +1 -0
  137. package/dist/src/shared/resolveInstallPlan.js +39 -0
  138. package/dist/src/shared/resolveInstallPlan.js.map +1 -0
  139. package/dist/src/types/main.d.ts +24 -0
  140. package/dist/src/types/main.d.ts.map +1 -1
  141. package/docs/README.md +10 -2
  142. package/docs/components/action-button.md +30 -24
  143. package/docs/components/actions-group.md +26 -20
  144. package/docs/components/alert-dialog.md +45 -45
  145. package/docs/components/avatar.md +6 -2
  146. package/docs/components/badge-field.md +6 -2
  147. package/docs/components/badge.md +7 -1
  148. package/docs/components/breadcrumb.md +15 -40
  149. package/docs/components/button-group.md +13 -10
  150. package/docs/components/button.md +58 -33
  151. package/docs/components/calendar.md +26 -19
  152. package/docs/components/card.md +19 -16
  153. package/docs/components/chart-block-tool.md +128 -0
  154. package/docs/components/checkbox.md +16 -8
  155. package/docs/components/cn-layout.md +7 -1
  156. package/docs/components/context-menu.md +18 -25
  157. package/docs/components/count-badge.md +7 -1
  158. package/docs/components/data-table.md +45 -33
  159. package/docs/components/data-views-config-panel.md +15 -11
  160. package/docs/components/data-views-layout.md +13 -16
  161. package/docs/components/date-picker.md +30 -23
  162. package/docs/components/dialog.md +43 -42
  163. package/docs/components/divider.md +10 -4
  164. package/docs/components/drawer.md +8 -33
  165. package/docs/components/dropdown-menu.md +25 -34
  166. package/docs/components/field-hint.md +37 -25
  167. package/docs/components/field-section.md +9 -3
  168. package/docs/components/form-stepper.md +6 -0
  169. package/docs/components/form.md +17 -20
  170. package/docs/components/header-bar.md +6 -0
  171. package/docs/components/image-attachment.md +33 -41
  172. package/docs/components/inbox-view.md +16 -5
  173. package/docs/components/inner-label-field.md +34 -24
  174. package/docs/components/input-field.md +18 -10
  175. package/docs/components/input-otp.md +14 -11
  176. package/docs/components/input.md +22 -16
  177. package/docs/components/kanban-view.md +15 -5
  178. package/docs/components/label-field.md +32 -22
  179. package/docs/components/label.md +43 -32
  180. package/docs/components/labeled-check-box.md +16 -8
  181. package/docs/components/labeled-radio.md +18 -11
  182. package/docs/components/link-button.md +7 -1
  183. package/docs/components/login-button.md +8 -2
  184. package/docs/components/password-level.md +37 -24
  185. package/docs/components/popover.md +26 -23
  186. package/docs/components/profile-menu.md +38 -27
  187. package/docs/components/radio-card.md +16 -9
  188. package/docs/components/radio.md +16 -8
  189. package/docs/components/scroll-area.md +6 -2
  190. package/docs/components/search-field.md +14 -6
  191. package/docs/components/searchable-select.md +19 -14
  192. package/docs/components/searchable-table.md +18 -13
  193. package/docs/components/searchable-tree-dialog.md +190 -0
  194. package/docs/components/searchable-tree.md +200 -0
  195. package/docs/components/section-block.md +12 -4
  196. package/docs/components/select.md +23 -18
  197. package/docs/components/simple-select.md +14 -10
  198. package/docs/components/skeleton.md +43 -33
  199. package/docs/components/slide-date-picker.md +37 -29
  200. package/docs/components/spin-loading.md +32 -23
  201. package/docs/components/stepper.md +6 -0
  202. package/docs/components/switch.md +14 -6
  203. package/docs/components/tab-form-item.md +7 -1
  204. package/docs/components/tab-switch.md +13 -6
  205. package/docs/components/table-dnd-wrapper.md +105 -0
  206. package/docs/components/table-view.md +15 -5
  207. package/docs/components/table.md +28 -28
  208. package/docs/components/text-editor.md +19 -13
  209. package/docs/components/textarea.md +15 -7
  210. package/docs/components/timeline.md +6 -0
  211. package/docs/components/toast.md +35 -26
  212. package/docs/components/toggle-button.md +24 -21
  213. package/docs/components/toggle.md +23 -15
  214. package/docs/components/tooltip.md +42 -30
  215. package/docs/components/transparent-label.md +29 -20
  216. package/docs/components/tree-drop-down.md +31 -23
  217. package/docs/components/tree-sub-layout.md +6 -2
  218. package/docs/components/tree-view.md +16 -5
  219. package/docs/explanation/architecture.md +54 -0
  220. package/docs/explanation/design-system.md +52 -0
  221. package/docs/how-to/data-views-from-backend-response.md +6 -4
  222. package/docs/how-to/guides.md +24 -18
  223. package/docs/migration/changelog.md +38 -0
  224. package/docs/reference/cli.md +87 -0
  225. package/docs/reference/components.md +11 -12
  226. package/docs/reference/hooks.md +8 -8
  227. package/docs/reference/providers.md +22 -22
  228. package/docs/reference/tailwind-plugins.md +2 -2
  229. package/docs/reference/theme.md +85 -0
  230. package/docs/reference/types.md +4 -4
  231. package/docs/reference/utilities.md +19 -26
  232. package/docs/tutorials/building-first-form.md +20 -13
  233. package/docs/tutorials/component-composition.md +34 -50
  234. package/docs/tutorials/getting-started.md +2 -2
  235. package/docs/tutorials/theming-basics.md +13 -10
  236. package/package.json +31 -3
  237. package/dist/src/commands/block.d.ts +0 -5
  238. package/dist/src/commands/block.d.ts.map +0 -1
  239. package/dist/src/commands/block.js +0 -255
  240. package/dist/src/commands/block.js.map +0 -1
  241. package/dist/src/shared/configureFonts.d.ts +0 -6
  242. package/dist/src/shared/configureFonts.d.ts.map +0 -1
  243. package/dist/src/shared/configureFonts.js +0 -106
  244. package/dist/src/shared/configureFonts.js.map +0 -1
  245. package/dist/src/shared/configureGlobalCss.d.ts +0 -6
  246. package/dist/src/shared/configureGlobalCss.d.ts.map +0 -1
  247. package/dist/src/shared/configureGlobalCss.js +0 -154
  248. package/dist/src/shared/configureGlobalCss.js.map +0 -1
  249. package/dist/src/shared/configureTailwind.d.ts +0 -7
  250. package/dist/src/shared/configureTailwind.d.ts.map +0 -1
  251. package/dist/src/shared/configureTailwind.js +0 -163
  252. package/dist/src/shared/configureTailwind.js.map +0 -1
  253. package/dist/src/shared/detectFramework.d.ts +0 -23
  254. package/dist/src/shared/detectFramework.d.ts.map +0 -1
  255. package/dist/src/shared/detectFramework.js +0 -119
  256. package/dist/src/shared/detectFramework.js.map +0 -1
  257. package/dist/src/shared/installBaseUtils.d.ts +0 -5
  258. package/dist/src/shared/installBaseUtils.d.ts.map +0 -1
  259. package/dist/src/shared/installBaseUtils.js +0 -79
  260. package/dist/src/shared/installBaseUtils.js.map +0 -1
  261. package/dist/src/shared/resolveAliases.d.ts +0 -24
  262. package/dist/src/shared/resolveAliases.d.ts.map +0 -1
  263. package/dist/src/shared/resolveAliases.js +0 -98
  264. package/dist/src/shared/resolveAliases.js.map +0 -1
@@ -1,163 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import inquirer from "inquirer";
4
- import { findTailwindConfigPath } from "./detectFramework.js";
5
- const TAILWIND_V3_TEMPLATE = (contentPaths) => `\
6
- const { plugin, mappingVars } = require('mapping-color-system')
7
- import type { Config } from "tailwindcss";
8
-
9
- export default {
10
- content: [
11
- ${contentPaths.map(p => ` "${p}",`).join("\n")}
12
- ],
13
- theme: {
14
- extend: {
15
- colors: {
16
- ...mappingVars,
17
- },
18
- },
19
- },
20
- plugins: [
21
- plugin,
22
- require('tailwindcss-animate'),
23
- require('tailwind-scrollbar-hide'),
24
- require('glare-typography'),
25
- require('glare-torch-mode'),
26
- function ({ addVariant }: any) {
27
- addVariant("rtl", '&[dir="rtl"]');
28
- addVariant("ltr", '&[dir="ltr"]');
29
- },
30
- ],
31
- } satisfies Config;
32
- `;
33
- /**
34
- * Configure Tailwind CSS for v3 projects.
35
- * If no config exists, creates one from template.
36
- * If config exists, asks the user then injects TORCH plugins.
37
- */
38
- export async function configureTailwindV3(basePath, defaults = false) {
39
- const existingConfig = findTailwindConfigPath();
40
- const contentPaths = buildContentPaths(basePath);
41
- if (!existingConfig) {
42
- // Create new config
43
- const configPath = "tailwind.config.ts";
44
- const fullPath = path.join(process.cwd(), configPath);
45
- fs.writeFileSync(fullPath, TAILWIND_V3_TEMPLATE(contentPaths));
46
- console.log(` ✅ Created ${configPath}`);
47
- return configPath;
48
- }
49
- // Config exists - ask user (skip if defaults mode)
50
- if (!defaults) {
51
- const { shouldModify } = await inquirer.prompt([
52
- {
53
- type: "confirm",
54
- name: "shouldModify",
55
- message: `${existingConfig} already exists. Add TORCH Glare plugins to it?`,
56
- default: true,
57
- },
58
- ]);
59
- if (!shouldModify) {
60
- console.log(` ⏭️ Skipped modifying ${existingConfig}`);
61
- return existingConfig;
62
- }
63
- }
64
- // Create backup
65
- const fullPath = path.join(process.cwd(), existingConfig);
66
- const backupPath = fullPath + ".bak";
67
- fs.copyFileSync(fullPath, backupPath);
68
- console.log(` 📋 Backup created: ${existingConfig}.bak`);
69
- // Inject into existing config
70
- const content = fs.readFileSync(fullPath, "utf-8");
71
- const modified = injectIntoTailwindConfig(content, contentPaths);
72
- fs.writeFileSync(fullPath, modified);
73
- console.log(` ✅ Updated ${existingConfig} with TORCH Glare plugins`);
74
- return existingConfig;
75
- }
76
- /**
77
- * Inject TORCH Glare plugins into an existing Tailwind v3 config.
78
- */
79
- function injectIntoTailwindConfig(content, contentPaths) {
80
- let result = content;
81
- // Check what's missing based on original content before any modifications
82
- const needsImport = !content.includes("mapping-color-system");
83
- const needsMappingVars = !content.includes("...mappingVars");
84
- // Add mapping-color-system import at the top if not present
85
- if (needsImport) {
86
- result = `const { plugin, mappingVars } = require('mapping-color-system')\n${result}`;
87
- }
88
- // Add mappingVars to theme.extend.colors if not already spread in colors
89
- if (needsMappingVars) {
90
- // Try to find theme.extend.colors
91
- if (result.includes("extend:")) {
92
- if (result.includes("colors:")) {
93
- // Add mappingVars spread into existing colors
94
- result = result.replace(/(colors:\s*\{)/, "$1\n ...mappingVars,");
95
- }
96
- else {
97
- // Replace empty extend: {} or add colors into extend
98
- result = result.replace(/extend:\s*\{\s*\}/, "extend: {\n colors: {\n ...mappingVars,\n },\n }");
99
- // If extend wasn't empty (no replacement happened), inject inside it
100
- if (!result.includes("...mappingVars")) {
101
- result = result.replace(/(extend:\s*\{)/, "$1\n colors: {\n ...mappingVars,\n },");
102
- }
103
- }
104
- }
105
- else if (result.includes("theme:")) {
106
- result = result.replace(/(theme:\s*\{)/, "$1\n extend: {\n colors: {\n ...mappingVars,\n },\n },");
107
- }
108
- }
109
- // Add plugins if not present (check against original content to avoid false positives)
110
- const pluginsToAdd = [
111
- { check: "mapping-color-system", value: "plugin" },
112
- { check: "tailwindcss-animate", value: "require('tailwindcss-animate')" },
113
- { check: "tailwind-scrollbar-hide", value: "require('tailwind-scrollbar-hide')" },
114
- { check: "glare-typography", value: "require('glare-typography')" },
115
- { check: "glare-torch-mode", value: "require('glare-torch-mode')" },
116
- ];
117
- const rtlVariant = `function ({ addVariant }: any) {
118
- addVariant("rtl", '&[dir="rtl"]');
119
- addVariant("ltr", '&[dir="ltr"]');
120
- }`;
121
- if (result.includes("plugins:") || result.includes("plugins :")) {
122
- // Insert missing plugins into existing plugins array
123
- // Use original content for checks to avoid false positives from added require()
124
- for (const p of pluginsToAdd) {
125
- if (!content.includes(p.check)) {
126
- result = result.replace(/(plugins:\s*\[)/, `$1\n ${p.value},`);
127
- }
128
- }
129
- // Add RTL/LTR variant if not present
130
- if (!content.includes("addVariant")) {
131
- result = result.replace(/(plugins:\s*\[[\s\S]*?)(]\s*[,}])/, `$1\n ${rtlVariant},\n $2`);
132
- }
133
- }
134
- else {
135
- // Add plugins array before the closing of the config
136
- const allPlugins = pluginsToAdd.map(p => ` ${p.value},`).join("\n");
137
- result = result.replace(/}(\s*satisfies|\s*as|\s*;|\s*$)/, ` plugins: [\n${allPlugins}\n ${rtlVariant},\n ],\n}$1`);
138
- }
139
- // Add content paths if the component path is missing
140
- for (const cp of contentPaths) {
141
- if (!result.includes(cp)) {
142
- if (result.includes("content:")) {
143
- result = result.replace(/(content:\s*\[)/, `$1\n "${cp}",`);
144
- }
145
- }
146
- }
147
- return result;
148
- }
149
- /**
150
- * Build content paths based on the base installation path.
151
- */
152
- function buildContentPaths(basePath) {
153
- const normalized = basePath.replace(/^\.\//, "").replace(/\/$/, "");
154
- const paths = [
155
- `./${normalized}/**/*.{js,ts,jsx,tsx}`,
156
- ];
157
- // Add common patterns
158
- if (!normalized.includes("app")) {
159
- paths.push("./app/**/*.{js,ts,jsx,tsx}");
160
- }
161
- return paths;
162
- }
163
- //# sourceMappingURL=configureTailwind.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configureTailwind.js","sourceRoot":"","sources":["../../../cli/src/shared/configureTailwind.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- export type Framework = "next" | "vite" | "react" | "unknown";
2
- /**
3
- * Detect the framework used in the project by checking package.json dependencies.
4
- */
5
- export declare function detectFramework(): Framework;
6
- /**
7
- * Detect if the project uses Tailwind CSS v3 (returns true) or v4+ (returns false).
8
- * Returns null if Tailwind is not installed.
9
- */
10
- export declare function detectTailwindVersion(): 3 | 4 | null;
11
- /**
12
- * Find the global CSS file in the project.
13
- */
14
- export declare function findGlobalCssPath(framework: Framework): string | null;
15
- /**
16
- * Find the Tailwind config file path.
17
- */
18
- export declare function findTailwindConfigPath(): string | null;
19
- /**
20
- * Find the layout/HTML file where font links should be injected.
21
- */
22
- export declare function findLayoutPath(framework: Framework): string | null;
23
- //# sourceMappingURL=detectFramework.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detectFramework.d.ts","sourceRoot":"","sources":["../../../cli/src/shared/detectFramework.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE9D;;GAEG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAkB3C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAqBpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAuBrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAetD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CA6BlE"}
@@ -1,119 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- /**
4
- * Detect the framework used in the project by checking package.json dependencies.
5
- */
6
- export function detectFramework() {
7
- const packageJsonPath = path.join(process.cwd(), "package.json");
8
- if (!fs.existsSync(packageJsonPath)) {
9
- return "unknown";
10
- }
11
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
12
- const allDeps = {
13
- ...(packageJson.dependencies || {}),
14
- ...(packageJson.devDependencies || {}),
15
- };
16
- if (allDeps["next"])
17
- return "next";
18
- if (allDeps["vite"])
19
- return "vite";
20
- if (allDeps["react"])
21
- return "react";
22
- return "unknown";
23
- }
24
- /**
25
- * Detect if the project uses Tailwind CSS v3 (returns true) or v4+ (returns false).
26
- * Returns null if Tailwind is not installed.
27
- */
28
- export function detectTailwindVersion() {
29
- const packageJsonPath = path.join(process.cwd(), "package.json");
30
- if (!fs.existsSync(packageJsonPath)) {
31
- return null;
32
- }
33
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
34
- const allDeps = {
35
- ...(packageJson.dependencies || {}),
36
- ...(packageJson.devDependencies || {}),
37
- };
38
- const tailwindVersion = allDeps["tailwindcss"];
39
- if (!tailwindVersion)
40
- return null;
41
- if (tailwindVersion.startsWith("^3") || tailwindVersion.startsWith("3") || tailwindVersion.startsWith("~3")) {
42
- return 3;
43
- }
44
- return 4;
45
- }
46
- /**
47
- * Find the global CSS file in the project.
48
- */
49
- export function findGlobalCssPath(framework) {
50
- const candidates = framework === "next"
51
- ? [
52
- "app/globals.css",
53
- "src/app/globals.css",
54
- "styles/globals.css",
55
- "src/styles/globals.css",
56
- ]
57
- : [
58
- "src/index.css",
59
- "src/globals.css",
60
- "src/App.css",
61
- "index.css",
62
- "styles/globals.css",
63
- ];
64
- for (const candidate of candidates) {
65
- if (fs.existsSync(path.join(process.cwd(), candidate))) {
66
- return candidate;
67
- }
68
- }
69
- return null;
70
- }
71
- /**
72
- * Find the Tailwind config file path.
73
- */
74
- export function findTailwindConfigPath() {
75
- const candidates = [
76
- "tailwind.config.ts",
77
- "tailwind.config.js",
78
- "tailwind.config.mjs",
79
- "tailwind.config.cjs",
80
- ];
81
- for (const candidate of candidates) {
82
- if (fs.existsSync(path.join(process.cwd(), candidate))) {
83
- return candidate;
84
- }
85
- }
86
- return null;
87
- }
88
- /**
89
- * Find the layout/HTML file where font links should be injected.
90
- */
91
- export function findLayoutPath(framework) {
92
- if (framework === "next") {
93
- const candidates = [
94
- "app/layout.tsx",
95
- "app/layout.jsx",
96
- "app/layout.js",
97
- "src/app/layout.tsx",
98
- "src/app/layout.jsx",
99
- "src/app/layout.js",
100
- ];
101
- for (const candidate of candidates) {
102
- if (fs.existsSync(path.join(process.cwd(), candidate))) {
103
- return candidate;
104
- }
105
- }
106
- }
107
- // Vite / React / Other
108
- const htmlCandidates = [
109
- "index.html",
110
- "public/index.html",
111
- ];
112
- for (const candidate of htmlCandidates) {
113
- if (fs.existsSync(path.join(process.cwd(), candidate))) {
114
- return candidate;
115
- }
116
- }
117
- return null;
118
- }
119
- //# sourceMappingURL=detectFramework.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detectFramework.js","sourceRoot":"","sources":["../../../cli/src/shared/detectFramework.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * Install base utility files (cn.ts, types.ts) and their dependencies.
3
- */
4
- export declare function installBaseUtils(basePath: string): void;
5
- //# sourceMappingURL=installBaseUtils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installBaseUtils.d.ts","sourceRoot":"","sources":["../../../cli/src/shared/installBaseUtils.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CA8BvD"}
@@ -1,79 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import { execSync } from "child_process";
4
- import { fileURLToPath } from "url";
5
- import { detectPackageManager } from "./detectPackageManager.js";
6
- import { getCurrentInstalledDependencies } from "./getCurrentInstalledDependencies.js";
7
- const __filename = fileURLToPath(import.meta.url);
8
- const __dirname = path.dirname(__filename);
9
- const UTILS_TEMPLATE_DIR = path.resolve(__dirname, "../../../apps/lib/utils");
10
- const BASE_UTILS = ["cn.ts", "types.ts"];
11
- const BASE_DEPENDENCIES = [
12
- "clsx",
13
- "tailwind-merge",
14
- "class-variance-authority",
15
- ];
16
- /**
17
- * Install base utility files (cn.ts, types.ts) and their dependencies.
18
- */
19
- export function installBaseUtils(basePath) {
20
- const normalizedPath = basePath.replace("@/", "").replace(/^\.\//, "");
21
- const utilsTargetDir = path.join(process.cwd(), normalizedPath, "utils");
22
- // Ensure target directory exists
23
- if (!fs.existsSync(utilsTargetDir)) {
24
- fs.mkdirSync(utilsTargetDir, { recursive: true });
25
- }
26
- // Copy base utility files
27
- for (const utilFile of BASE_UTILS) {
28
- const source = path.join(UTILS_TEMPLATE_DIR, utilFile);
29
- const target = path.join(utilsTargetDir, utilFile);
30
- if (!fs.existsSync(source)) {
31
- console.log(` ⚠️ Template not found: ${utilFile}`);
32
- continue;
33
- }
34
- if (fs.existsSync(target)) {
35
- console.log(` ⏭️ ${utilFile} already exists, skipping`);
36
- continue;
37
- }
38
- fs.copyFileSync(source, target);
39
- console.log(` ✅ Installed ${utilFile}`);
40
- }
41
- // Install npm dependencies
42
- installMissingDependencies();
43
- }
44
- /**
45
- * Install base npm dependencies (clsx, tailwind-merge, cva) if missing.
46
- */
47
- function installMissingDependencies() {
48
- const { depsNames } = getCurrentInstalledDependencies();
49
- const missing = BASE_DEPENDENCIES.filter(dep => !depsNames.has(dep));
50
- if (missing.length === 0) {
51
- console.log(" ✅ Base dependencies already installed");
52
- return;
53
- }
54
- const packageManager = detectPackageManager();
55
- const depsStr = missing.map(dep => `${dep}@latest`).join(" ");
56
- let installCommand;
57
- switch (packageManager) {
58
- case "pnpm":
59
- installCommand = `pnpm add ${depsStr}`;
60
- break;
61
- case "yarn":
62
- installCommand = `yarn add ${depsStr}`;
63
- break;
64
- case "bun":
65
- installCommand = `bun add ${depsStr}`;
66
- break;
67
- default:
68
- installCommand = `npm install ${depsStr}`;
69
- }
70
- try {
71
- console.log(` 📦 Installing: ${missing.join(", ")}`);
72
- execSync(installCommand, { stdio: "inherit" });
73
- console.log(" ✅ Base dependencies installed");
74
- }
75
- catch (error) {
76
- console.error(" ❌ Error installing base dependencies:", error.message);
77
- }
78
- }
79
- //# sourceMappingURL=installBaseUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installBaseUtils.js","sourceRoot":"","sources":["../../../cli/src/shared/installBaseUtils.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { Framework } from "./detectFramework.js";
2
- export interface Aliases {
3
- components: string;
4
- hooks: string;
5
- utils: string;
6
- providers: string;
7
- layouts: string;
8
- }
9
- /**
10
- * Resolve the base path and aliases for the project.
11
- * Parses tsconfig.json/jsconfig.json to find path aliases,
12
- * then builds the aliases map for each category.
13
- */
14
- export declare function resolveAliases(framework: Framework): {
15
- basePath: string;
16
- aliases: Aliases;
17
- aliasPrefix: string;
18
- };
19
- /**
20
- * Resolve an alias path to a filesystem path.
21
- * e.g. "@/components" with basePath "./lib/" → "./lib/components"
22
- */
23
- export declare function resolveAliasToPath(aliasPath: string, basePath: string): string;
24
- //# sourceMappingURL=resolveAliases.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveAliases.d.ts","sourceRoot":"","sources":["../../../cli/src/shared/resolveAliases.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,WAAW,OAAO;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAchH;AAsED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU9E"}
@@ -1,98 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- /**
4
- * Resolve the base path and aliases for the project.
5
- * Parses tsconfig.json/jsconfig.json to find path aliases,
6
- * then builds the aliases map for each category.
7
- */
8
- export function resolveAliases(framework) {
9
- const { basePath, aliasPrefix } = resolveBasePath(framework);
10
- // Store actual filesystem paths (not alias paths) so getInstallPaths resolves correctly
11
- const normalizedBase = basePath.replace(/\/$/, "");
12
- const aliases = {
13
- components: `${normalizedBase}/components`,
14
- hooks: `${normalizedBase}/hooks`,
15
- utils: `${normalizedBase}/utils`,
16
- providers: `${normalizedBase}/providers`,
17
- layouts: `${normalizedBase}/layouts`,
18
- };
19
- return { basePath, aliases, aliasPrefix };
20
- }
21
- /**
22
- * Resolve the base path from tsconfig paths or directory structure.
23
- */
24
- function resolveBasePath(framework) {
25
- // Try to parse tsconfig.json or jsconfig.json for path aliases
26
- const tsconfigPath = findTsConfig();
27
- if (tsconfigPath) {
28
- const tsconfig = parseTsConfig(tsconfigPath);
29
- const paths = tsconfig?.compilerOptions?.paths;
30
- if (paths) {
31
- // Look for @/* alias
32
- const aliasKey = Object.keys(paths).find(key => key.endsWith("/*"));
33
- if (aliasKey) {
34
- const aliasTargets = paths[aliasKey];
35
- if (aliasTargets && aliasTargets.length > 0) {
36
- const target = aliasTargets[0].replace("/*", "/");
37
- const prefix = aliasKey.replace("/*", "/");
38
- return { basePath: target, aliasPrefix: prefix };
39
- }
40
- }
41
- }
42
- }
43
- // Fallback: detect based on directory structure
44
- if (fs.existsSync(path.join(process.cwd(), "src"))) {
45
- return { basePath: "./src/", aliasPrefix: "./src/" };
46
- }
47
- // Next.js without src/ directory
48
- if (framework === "next") {
49
- return { basePath: "./", aliasPrefix: "./" };
50
- }
51
- return { basePath: "./src/", aliasPrefix: "./src/" };
52
- }
53
- /**
54
- * Find tsconfig.json or jsconfig.json in the project root.
55
- */
56
- function findTsConfig() {
57
- const candidates = ["tsconfig.json", "jsconfig.json"];
58
- for (const candidate of candidates) {
59
- const fullPath = path.join(process.cwd(), candidate);
60
- if (fs.existsSync(fullPath)) {
61
- return fullPath;
62
- }
63
- }
64
- return null;
65
- }
66
- /**
67
- * Parse tsconfig.json, handling comments and trailing commas.
68
- */
69
- function parseTsConfig(filePath) {
70
- try {
71
- const content = fs.readFileSync(filePath, "utf-8");
72
- // Strip single-line comments and trailing commas for JSON.parse
73
- const cleaned = content
74
- .replace(/\/\/.*$/gm, "")
75
- .replace(/\/\*[\s\S]*?\*\//g, "")
76
- .replace(/,(\s*[}\]])/g, "$1");
77
- return JSON.parse(cleaned);
78
- }
79
- catch {
80
- return null;
81
- }
82
- }
83
- /**
84
- * Resolve an alias path to a filesystem path.
85
- * e.g. "@/components" with basePath "./lib/" → "./lib/components"
86
- */
87
- export function resolveAliasToPath(aliasPath, basePath) {
88
- // Handle @/ prefix
89
- if (aliasPath.startsWith("@/")) {
90
- return path.join(basePath, aliasPath.slice(2));
91
- }
92
- // Handle ./ prefix
93
- if (aliasPath.startsWith("./")) {
94
- return aliasPath;
95
- }
96
- return path.join(basePath, aliasPath);
97
- }
98
- //# sourceMappingURL=resolveAliases.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveAliases.js","sourceRoot":"","sources":["../../../cli/src/shared/resolveAliases.ts"],"names":[],"mappings":"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"}