torch-glare 2.3.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 +7 -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 +110 -106
  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 +10 -8
  19. package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +21 -55
  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 +173 -150
  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 +87 -0
  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 +111 -114
  41. package/apps/lib/components/DatePicker.tsx +198 -191
  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 +144 -181
  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 +119 -0
  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 +46 -52
  69. package/apps/lib/components/SearchableTable.tsx +199 -219
  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 +47 -24
  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 +18 -14
  160. package/docs/components/data-views-layout.md +20 -17
  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 +51 -32
  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 +187 -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 +60 -41
  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 +130 -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 +7 -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
@@ -11,13 +11,22 @@ keywords: [password, strength, security, validation, indicator, level]
11
11
 
12
12
  ## Installation
13
13
 
14
- No external dependencies required.
14
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
15
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
16
+
17
+ ```bash
18
+ npx torch-glare@latest init
19
+ npx torch-glare@latest add PasswordLevel
20
+ ```
21
+
22
+ `add` also copies any components, hooks, and utilities that `PasswordLevel` depends on.
15
23
 
16
24
  ## Import
17
25
 
18
- ```typescript
19
- import { PasswordLevel } from '@torch-ui/components'
20
- import type { PasswordLevelProps } from '@torch-ui/components'
26
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
27
+
28
+ ```tsx
29
+ import { PasswordLevel } from "@/components/PasswordLevel";
21
30
  ```
22
31
 
23
32
  ## Quick Examples
@@ -25,8 +34,8 @@ import type { PasswordLevelProps } from '@torch-ui/components'
25
34
  ### Basic Usage
26
35
 
27
36
  ```typescript
28
- import { PasswordLevel } from '@torch-ui/components'
29
- import { InputField } from '@torch-ui/components'
37
+ import { PasswordLevel } from "@/components/PasswordLevel";
38
+ import { InputField } from "@/components/InputField";
30
39
  import { useState } from 'react'
31
40
 
32
41
  function Example() {
@@ -49,8 +58,8 @@ function Example() {
49
58
  ### With Labels
50
59
 
51
60
  ```typescript
52
- import { PasswordLevel } from '@torch-ui/components'
53
- import { InputField } from '@torch-ui/components'
61
+ import { PasswordLevel } from "@/components/PasswordLevel";
62
+ import { InputField } from "@/components/InputField";
54
63
  import { useState } from 'react'
55
64
 
56
65
  function WithLabels() {
@@ -96,8 +105,10 @@ function WithLabels() {
96
105
  ### Registration Form
97
106
 
98
107
  ```typescript
99
- import { PasswordLevel } from '@torch-ui/components'
100
- import { InputField, Button, FieldHint } from '@torch-ui/components'
108
+ import { PasswordLevel } from "@/components/PasswordLevel";
109
+ import { Button } from "@/components/Button";
110
+ import { FieldHint } from "@/components/FieldHint";
111
+ import { InputField } from "@/components/InputField";
101
112
  import { useState } from 'react'
102
113
 
103
114
  function RegistrationForm() {
@@ -157,8 +168,8 @@ function RegistrationForm() {
157
168
  ### With Requirements Checklist
158
169
 
159
170
  ```typescript
160
- import { PasswordLevel } from '@torch-ui/components'
161
- import { InputField } from '@torch-ui/components'
171
+ import { PasswordLevel } from "@/components/PasswordLevel";
172
+ import { InputField } from "@/components/InputField";
162
173
  import { useState } from 'react'
163
174
 
164
175
  function PasswordWithChecklist() {
@@ -217,8 +228,9 @@ function PasswordWithChecklist() {
217
228
  ### Password Change Form
218
229
 
219
230
  ```typescript
220
- import { PasswordLevel } from '@torch-ui/components'
221
- import { InputField, Button } from '@torch-ui/components'
231
+ import { PasswordLevel } from "@/components/PasswordLevel";
232
+ import { Button } from "@/components/Button";
233
+ import { InputField } from "@/components/InputField";
222
234
  import { useState } from 'react'
223
235
 
224
236
  function PasswordChangeForm() {
@@ -269,8 +281,8 @@ function PasswordChangeForm() {
269
281
  ### Real-time Feedback
270
282
 
271
283
  ```typescript
272
- import { PasswordLevel } from '@torch-ui/components'
273
- import { InputField } from '@torch-ui/components'
284
+ import { PasswordLevel } from "@/components/PasswordLevel";
285
+ import { InputField } from "@/components/InputField";
274
286
  import { useState, useEffect } from 'react'
275
287
 
276
288
  function RealTimeFeedback() {
@@ -327,7 +339,7 @@ function RealTimeFeedback() {
327
339
  ### Different Themes
328
340
 
329
341
  ```typescript
330
- import { PasswordLevel } from '@torch-ui/components'
342
+ import { PasswordLevel } from "@/components/PasswordLevel";
331
343
  import { useState } from 'react'
332
344
 
333
345
  function ThemeExample() {
@@ -360,7 +372,7 @@ function ThemeExample() {
360
372
  ### Custom Styling
361
373
 
362
374
  ```typescript
363
- import { PasswordLevel } from '@torch-ui/components'
375
+ import { PasswordLevel } from "@/components/PasswordLevel";
364
376
  import { useState } from 'react'
365
377
 
366
378
  function CustomStyling() {
@@ -387,8 +399,8 @@ function CustomStyling() {
387
399
  ### Animated Feedback
388
400
 
389
401
  ```typescript
390
- import { PasswordLevel } from '@torch-ui/components'
391
- import { InputField } from '@torch-ui/components'
402
+ import { PasswordLevel } from "@/components/PasswordLevel";
403
+ import { InputField } from "@/components/InputField";
392
404
  import { useState } from 'react'
393
405
 
394
406
  function AnimatedFeedback() {
@@ -524,7 +536,7 @@ function isPasswordAcceptable(password: string, minLevel: number = 2): boolean {
524
536
  ### Validation Hook
525
537
 
526
538
  ```typescript
527
- import { PasswordLevel } from '@torch-ui/components'
539
+ import { PasswordLevel } from "@/components/PasswordLevel";
528
540
  import { useState, useMemo } from 'react'
529
541
 
530
542
  function usePasswordValidation(password: string) {
@@ -584,8 +596,9 @@ function ValidatedPasswordField() {
584
596
  ### Password Generator
585
597
 
586
598
  ```typescript
587
- import { PasswordLevel } from '@torch-ui/components'
588
- import { InputField, Button } from '@torch-ui/components'
599
+ import { PasswordLevel } from "@/components/PasswordLevel";
600
+ import { Button } from "@/components/Button";
601
+ import { InputField } from "@/components/InputField";
589
602
  import { useState } from 'react'
590
603
 
591
604
  function PasswordGenerator() {
@@ -638,7 +651,7 @@ function PasswordGenerator() {
638
651
 
639
652
  ```typescript
640
653
  import { render, screen } from '@testing-library/react'
641
- import { PasswordLevel } from '@torch-ui/components'
654
+ import { PasswordLevel } from "@/components/PasswordLevel";
642
655
 
643
656
  describe('PasswordLevel', () => {
644
657
  it('renders three bars', () => {
@@ -11,19 +11,22 @@ keywords: [popover, overlay, dropdown, radix-ui, menu, non-modal]
11
11
 
12
12
  ## Installation
13
13
 
14
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
15
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
16
+
14
17
  ```bash
15
- npm install @radix-ui/react-popover
18
+ npx torch-glare@latest init
19
+ npx torch-glare@latest add Popover
16
20
  ```
17
21
 
22
+ `add` also copies any components, hooks, and utilities that `Popover` depends on.
23
+
18
24
  ## Import
19
25
 
20
- ```typescript
21
- import {
22
- Popover,
23
- PopoverTrigger,
24
- PopoverContent,
25
- PopoverItem,
26
- } from '@torch-ui/components'
26
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
27
+
28
+ ```tsx
29
+ import { Popover } from "@/components/Popover";
27
30
  ```
28
31
 
29
32
  ## Quick Examples
@@ -31,8 +34,8 @@ import {
31
34
  ### Basic Usage
32
35
 
33
36
  ```typescript
34
- import { Popover, PopoverTrigger, PopoverContent } from '@torch-ui/components'
35
- import { Button } from '@torch-ui/components'
37
+ import { Popover, PopoverTrigger, PopoverContent } from "@/components/Popover";
38
+ import { Button } from "@/components/Button";
36
39
 
37
40
  function Example() {
38
41
  return (
@@ -53,7 +56,7 @@ function Example() {
53
56
  ### With PopoverItem List
54
57
 
55
58
  ```typescript
56
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
59
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
57
60
 
58
61
  function SelectPopover() {
59
62
  const items = ['Option 1', 'Option 2', 'Option 3']
@@ -81,7 +84,7 @@ function SelectPopover() {
81
84
  ### SystemStyle Variant
82
85
 
83
86
  ```typescript
84
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
87
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
85
88
 
86
89
  function SystemStylePopover() {
87
90
  return (
@@ -102,7 +105,7 @@ function SystemStylePopover() {
102
105
  ### With Icons
103
106
 
104
107
  ```typescript
105
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
108
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
106
109
 
107
110
  function IconPopover() {
108
111
  return (
@@ -132,7 +135,7 @@ function IconPopover() {
132
135
  ### With Active State
133
136
 
134
137
  ```typescript
135
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
138
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
136
139
  import { useState } from 'react'
137
140
 
138
141
  function SelectablePopover() {
@@ -171,7 +174,7 @@ function SelectablePopover() {
171
174
  ### With Overlay Blur
172
175
 
173
176
  ```typescript
174
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
177
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
175
178
 
176
179
  function BlurredPopover() {
177
180
  return (
@@ -191,7 +194,7 @@ function BlurredPopover() {
191
194
  ### Warning Items
192
195
 
193
196
  ```typescript
194
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
197
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
195
198
 
196
199
  function WarningPopover() {
197
200
  return (
@@ -217,7 +220,7 @@ function WarningPopover() {
217
220
  ### Size Variants
218
221
 
219
222
  ```typescript
220
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
223
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
221
224
 
222
225
  function SizedPopover() {
223
226
  return (
@@ -237,7 +240,7 @@ function SizedPopover() {
237
240
  ### Controlled Popover
238
241
 
239
242
  ```typescript
240
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
243
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
241
244
  import { useState } from 'react'
242
245
 
243
246
  function ControlledPopover() {
@@ -265,7 +268,7 @@ function ControlledPopover() {
265
268
  ### Positioning
266
269
 
267
270
  ```typescript
268
- import { Popover, PopoverTrigger, PopoverContent } from '@torch-ui/components'
271
+ import { Popover, PopoverTrigger, PopoverContent } from "@/components/Popover";
269
272
 
270
273
  function PositionedPopover() {
271
274
  return (
@@ -420,7 +423,7 @@ export const PopoverItem: <T extends React.ElementType = 'button'>(
420
423
  ### Select Pattern
421
424
 
422
425
  ```typescript
423
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
426
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
424
427
  import { useState } from 'react'
425
428
 
426
429
  function SelectField() {
@@ -481,7 +484,7 @@ function ContextMenu({ onEdit, onDelete }) {
481
484
 
482
485
  ```typescript
483
486
  import { render, screen, fireEvent } from '@testing-library/react'
484
- import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from '@torch-ui/components'
487
+ import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
485
488
 
486
489
  describe('Popover', () => {
487
490
  it('opens on trigger click', () => {
@@ -590,8 +593,8 @@ describe('Popover', () => {
590
593
  ## Migration from DropdownMenu
591
594
 
592
595
  ```diff
593
- - import { DropdownMenu } from '@torch-ui/components'
594
- + import { Popover } from '@torch-ui/components'
596
+ - import { DropdownMenu } from "@/components/DropdownMenu";
597
+ + import { Popover } from "@/components/Popover";
595
598
 
596
599
  - <DropdownMenu>
597
600
  - <DropdownMenuTrigger>Open</DropdownMenuTrigger>
@@ -11,12 +11,22 @@ keywords: [profile-menu, user-menu, avatar-menu, account-menu, popover]
11
11
 
12
12
  ## Installation
13
13
 
14
- No additional dependencies required (uses internal Popover component).
14
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
15
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
16
+
17
+ ```bash
18
+ npx torch-glare@latest init
19
+ npx torch-glare@latest add ProfileMenu
20
+ ```
21
+
22
+ `add` also copies any components, hooks, and utilities that `ProfileMenu` depends on.
15
23
 
16
24
  ## Import
17
25
 
18
- ```typescript
19
- import { ProfileMenu } from '@torch-ui/components'
26
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
27
+
28
+ ```tsx
29
+ import { ProfileMenu } from "@/components/ProfileMenu";
20
30
  ```
21
31
 
22
32
  ## Quick Examples
@@ -24,7 +34,7 @@ import { ProfileMenu } from '@torch-ui/components'
24
34
  ### Basic Usage
25
35
 
26
36
  ```typescript
27
- import { ProfileMenu } from '@torch-ui/components'
37
+ import { ProfileMenu } from "@/components/ProfileMenu";
28
38
 
29
39
  function Example() {
30
40
  return (
@@ -39,8 +49,8 @@ function Example() {
39
49
  ### With Dropdown Content
40
50
 
41
51
  ```typescript
42
- import { ProfileMenu } from '@torch-ui/components'
43
- import { PopoverItem } from '@torch-ui/components'
52
+ import { ProfileMenu } from "@/components/ProfileMenu";
53
+ import { PopoverItem } from "@/components/Popover";
44
54
 
45
55
  function ProfileDropdown() {
46
56
  return (
@@ -62,7 +72,7 @@ function ProfileDropdown() {
62
72
  ### Selected State
63
73
 
64
74
  ```typescript
65
- import { ProfileMenu } from '@torch-ui/components'
75
+ import { ProfileMenu } from "@/components/ProfileMenu";
66
76
  import { useState } from 'react'
67
77
 
68
78
  function SelectedProfile() {
@@ -81,8 +91,8 @@ function SelectedProfile() {
81
91
  ### With Overlay Blur
82
92
 
83
93
  ```typescript
84
- import { ProfileMenu } from '@torch-ui/components'
85
- import { PopoverItem } from '@torch-ui/components'
94
+ import { ProfileMenu } from "@/components/ProfileMenu";
95
+ import { PopoverItem } from "@/components/Popover";
86
96
 
87
97
  function BlurredProfileMenu() {
88
98
  return (
@@ -105,8 +115,8 @@ function BlurredProfileMenu() {
105
115
  ### Complete User Menu
106
116
 
107
117
  ```typescript
108
- import { ProfileMenu } from '@torch-ui/components'
109
- import { PopoverItem } from '@torch-ui/components'
118
+ import { ProfileMenu } from "@/components/ProfileMenu";
119
+ import { PopoverItem } from "@/components/Popover";
110
120
  import { useRouter } from 'next/navigation'
111
121
 
112
122
  function UserMenu({ user }: { user: User }) {
@@ -162,8 +172,8 @@ function UserMenu({ user }: { user: User }) {
162
172
  ### With Status Indicator
163
173
 
164
174
  ```typescript
165
- import { ProfileMenu } from '@torch-ui/components'
166
- import { PopoverItem } from '@torch-ui/components'
175
+ import { ProfileMenu } from "@/components/ProfileMenu";
176
+ import { PopoverItem } from "@/components/Popover";
167
177
 
168
178
  function OnlineProfileMenu() {
169
179
  return (
@@ -190,8 +200,9 @@ function OnlineProfileMenu() {
190
200
  ### With Role Badge
191
201
 
192
202
  ```typescript
193
- import { ProfileMenu } from '@torch-ui/components'
194
- import { PopoverItem, Badge } from '@torch-ui/components'
203
+ import { ProfileMenu } from "@/components/ProfileMenu";
204
+ import { Badge } from "@/components/Badge";
205
+ import { PopoverItem } from "@/components/Popover";
195
206
 
196
207
  function AdminProfileMenu({ user }: { user: User }) {
197
208
  return (
@@ -199,7 +210,7 @@ function AdminProfileMenu({ user }: { user: User }) {
199
210
  label={
200
211
  <div className="flex flex-col items-start">
201
212
  <span>{user.name}</span>
202
- <Badge variant="purple" size="XS" label={user.role} />
213
+ <Badge color="purple" size="XS" label={user.role} />
203
214
  </div>
204
215
  }
205
216
  icon={user.avatar}
@@ -218,8 +229,8 @@ function AdminProfileMenu({ user }: { user: User }) {
218
229
  ### Dark Theme
219
230
 
220
231
  ```typescript
221
- import { ProfileMenu } from '@torch-ui/components'
222
- import { PopoverItem } from '@torch-ui/components'
232
+ import { ProfileMenu } from "@/components/ProfileMenu";
233
+ import { PopoverItem } from "@/components/Popover";
223
234
 
224
235
  function DarkProfileMenu() {
225
236
  return (
@@ -241,8 +252,8 @@ function DarkProfileMenu() {
241
252
  ### Multiple Profile Switcher
242
253
 
243
254
  ```typescript
244
- import { ProfileMenu } from '@torch-ui/components'
245
- import { PopoverItem } from '@torch-ui/components'
255
+ import { ProfileMenu } from "@/components/ProfileMenu";
256
+ import { PopoverItem } from "@/components/Popover";
246
257
  import { useState } from 'react'
247
258
 
248
259
  function ProfileSwitcher() {
@@ -290,8 +301,8 @@ function ProfileSwitcher() {
290
301
  ### With Custom Actions
291
302
 
292
303
  ```typescript
293
- import { ProfileMenu } from '@torch-ui/components'
294
- import { PopoverItem } from '@torch-ui/components'
304
+ import { ProfileMenu } from "@/components/ProfileMenu";
305
+ import { PopoverItem } from "@/components/Popover";
295
306
 
296
307
  function ActionsProfileMenu() {
297
308
  return (
@@ -322,8 +333,8 @@ function ActionsProfileMenu() {
322
333
  ### With Keyboard Shortcuts
323
334
 
324
335
  ```typescript
325
- import { ProfileMenu } from '@torch-ui/components'
326
- import { PopoverItem } from '@torch-ui/components'
336
+ import { ProfileMenu } from "@/components/ProfileMenu";
337
+ import { PopoverItem } from "@/components/Popover";
327
338
 
328
339
  function ShortcutProfileMenu() {
329
340
  return (
@@ -390,7 +401,7 @@ export const ProfileMenu: React.FC<ProfileMenuProps>
390
401
  ### Usage with TypeScript
391
402
 
392
403
  ```typescript
393
- import { ProfileMenu } from '@torch-ui/components'
404
+ import { ProfileMenu } from "@/components/ProfileMenu";
394
405
 
395
406
  interface User {
396
407
  name: string
@@ -514,8 +525,8 @@ function SidebarProfile({ user }: { user: User }) {
514
525
 
515
526
  ```typescript
516
527
  import { render, screen, fireEvent } from '@testing-library/react'
517
- import { ProfileMenu } from '@torch-ui/components'
518
- import { PopoverItem } from '@torch-ui/components'
528
+ import { ProfileMenu } from "@/components/ProfileMenu";
529
+ import { PopoverItem } from "@/components/Popover";
519
530
 
520
531
  describe('ProfileMenu', () => {
521
532
  it('renders user name and avatar', () => {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: RadioCard
3
- version: 1.1.15
3
+ version: 2.4.0
4
4
  status: stable
5
5
  category: components/forms
6
6
  tags: [form, radio, card, selection, compound, accessible]
@@ -17,15 +17,22 @@ dependencies:
17
17
 
18
18
  ## Installation
19
19
 
20
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
21
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
22
+
20
23
  ```bash
21
- npm install torch-glare
24
+ npx torch-glare@latest init
25
+ npx torch-glare@latest add RadioCard
22
26
  ```
23
27
 
28
+ `add` also copies any components, hooks, and utilities that `RadioCard` depends on.
29
+
24
30
  ## Import
25
31
 
26
- ```typescript
27
- import { RadioCard } from 'torch-glare/lib/components/RadioCard'
28
- import { RadioGroup } from 'torch-glare/lib/components/Radio'
32
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
33
+
34
+ ```tsx
35
+ import { RadioCard } from "@/components/RadioCard";
29
36
  ```
30
37
 
31
38
  ## Quick Examples
@@ -33,8 +40,8 @@ import { RadioGroup } from 'torch-glare/lib/components/Radio'
33
40
  ### Basic Usage
34
41
 
35
42
  ```typescript
36
- import { RadioCard } from 'torch-glare/lib/components/RadioCard'
37
- import { RadioGroup } from 'torch-glare/lib/components/Radio'
43
+ import { RadioCard } from '@/components/RadioCard'
44
+ import { RadioGroup } from '@/components/Radio'
38
45
 
39
46
  function Example() {
40
47
  const [selected, setSelected] = useState('option1')
@@ -534,8 +541,8 @@ function DeploymentOptions() {
534
541
 
535
542
  ```typescript
536
543
  import { render, screen, fireEvent } from '@testing-library/react'
537
- import { RadioCard } from 'torch-glare/lib/components/RadioCard'
538
- import { RadioGroup } from 'torch-glare/lib/components/Radio'
544
+ import { RadioCard } from '@/components/RadioCard'
545
+ import { RadioGroup } from '@/components/Radio'
539
546
 
540
547
  describe('RadioCard', () => {
541
548
  it('renders card with header and description', () => {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: Radio
3
- version: 1.1.15
3
+ version: 2.4.0
4
4
  status: stable
5
5
  category: components/forms
6
6
  tags: [form, radio, selection, radix-ui, accessible, group, controlled]
@@ -17,14 +17,22 @@ dependencies:
17
17
 
18
18
  ## Installation
19
19
 
20
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
21
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
22
+
20
23
  ```bash
21
- npm install torch-glare
24
+ npx torch-glare@latest init
25
+ npx torch-glare@latest add Radio
22
26
  ```
23
27
 
28
+ `add` also copies any components, hooks, and utilities that `Radio` depends on.
29
+
24
30
  ## Import
25
31
 
26
- ```typescript
27
- import { Radio, RadioGroup } from 'torch-glare/lib/components/Radio'
32
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
33
+
34
+ ```tsx
35
+ import { Radio } from "@/components/Radio";
28
36
  ```
29
37
 
30
38
  ## Quick Examples
@@ -32,7 +40,7 @@ import { Radio, RadioGroup } from 'torch-glare/lib/components/Radio'
32
40
  ### Basic Radio Group
33
41
 
34
42
  ```typescript
35
- import { Radio, RadioGroup } from 'torch-glare/lib/components/Radio'
43
+ import { Radio, RadioGroup } from '@/components/Radio'
36
44
 
37
45
  function Example() {
38
46
  const [value, setValue] = useState('option1')
@@ -442,7 +450,7 @@ function ConditionalForm() {
442
450
 
443
451
  ```typescript
444
452
  import { render, screen, fireEvent } from '@testing-library/react'
445
- import { Radio, RadioGroup } from 'torch-glare/lib/components/Radio'
453
+ import { Radio, RadioGroup } from '@/components/Radio'
446
454
 
447
455
  describe('Radio', () => {
448
456
  it('handles selection changes', () => {
@@ -659,10 +667,10 @@ Radix UI automatically handles:
659
667
  ```diff
660
668
  // Import path
661
669
  - import Radio from 'torch-glare/Radio'
662
- + import { Radio, RadioGroup } from 'torch-glare/lib/components/Radio'
670
+ + import { Radio, RadioGroup } from '@/components/Radio'
663
671
 
664
672
  // Size prop values
665
- - <Radio size="small" />
673
+ - <Radio size="M" />
666
674
  + <Radio size="S" />
667
675
  ```
668
676
 
@@ -12,11 +12,15 @@ A customizable scrollable container component with styled scrollbars. Built on R
12
12
 
13
13
  ## Installation
14
14
 
15
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
16
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
17
+
15
18
  ```bash
16
- npx torch-cli add scroll-area
19
+ npx torch-glare@latest init
20
+ npx torch-glare@latest add ScrollArea
17
21
  ```
18
22
 
19
- **Dependencies**: Requires `@radix-ui/react-scroll-area`
23
+ `add` also copies any components, hooks, and utilities that `ScrollArea` depends on.
20
24
 
21
25
  ## Imports
22
26
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: SearchField
3
- version: 1.1.15
3
+ version: 2.4.0
4
4
  status: stable
5
5
  category: components/forms
6
6
  tags: [form, search, input, field, system-style, glassmorphism]
@@ -16,14 +16,22 @@ dependencies:
16
16
 
17
17
  ## Installation
18
18
 
19
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
20
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
21
+
19
22
  ```bash
20
- npm install torch-glare
23
+ npx torch-glare@latest init
24
+ npx torch-glare@latest add SearchField
21
25
  ```
22
26
 
27
+ `add` also copies any components, hooks, and utilities that `SearchField` depends on.
28
+
23
29
  ## Import
24
30
 
25
- ```typescript
26
- import { SearchField } from 'torch-glare/lib/components/SearchField'
31
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
32
+
33
+ ```tsx
34
+ import { SearchField } from "@/components/SearchField";
27
35
  ```
28
36
 
29
37
  ## Quick Examples
@@ -31,7 +39,7 @@ import { SearchField } from 'torch-glare/lib/components/SearchField'
31
39
  ### Basic Usage
32
40
 
33
41
  ```typescript
34
- import { SearchField } from 'torch-glare/lib/components/SearchField'
42
+ import { SearchField } from '@/components/SearchField'
35
43
 
36
44
  function Example() {
37
45
  const [search, setSearch] = useState('')
@@ -471,7 +479,7 @@ function NavigationSearch() {
471
479
 
472
480
  ```typescript
473
481
  import { render, screen, fireEvent } from '@testing-library/react'
474
- import { SearchField } from 'torch-glare/lib/components/SearchField'
482
+ import { SearchField } from '@/components/SearchField'
475
483
 
476
484
  describe('SearchField', () => {
477
485
  it('displays placeholder text when empty', () => {