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,6 +1,6 @@
1
1
  ---
2
2
  name: Switch
3
- version: 1.1.15
3
+ version: 2.4.0
4
4
  status: stable
5
5
  category: components/forms
6
6
  tags: [form, switch, toggle, radix-ui, accessible, controlled]
@@ -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 Switch
21
25
  ```
22
26
 
27
+ `add` also copies any components, hooks, and utilities that `Switch` depends on.
28
+
23
29
  ## Import
24
30
 
25
- ```typescript
26
- import { Switch } from 'torch-glare/lib/components/Switch'
31
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
32
+
33
+ ```tsx
34
+ import { Switch } from "@/components/Switch";
27
35
  ```
28
36
 
29
37
  ## Quick Examples
@@ -31,7 +39,7 @@ import { Switch } from 'torch-glare/lib/components/Switch'
31
39
  ### Basic Usage
32
40
 
33
41
  ```typescript
34
- import { Switch } from 'torch-glare/lib/components/Switch'
42
+ import { Switch } from '@/components/Switch'
35
43
 
36
44
  function Example() {
37
45
  const [enabled, setEnabled] = useState(false)
@@ -488,7 +496,7 @@ function SyncSettings() {
488
496
 
489
497
  ```typescript
490
498
  import { render, screen, fireEvent } from '@testing-library/react'
491
- import { Switch } from 'torch-glare/lib/components/Switch'
499
+ import { Switch } from '@/components/Switch'
492
500
 
493
501
  describe('Switch', () => {
494
502
  it('toggles state on click', () => {
@@ -12,10 +12,16 @@ A flexible tab navigation component designed for forms and multi-step workflows.
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 tab-form-item
19
+ npx torch-glare@latest init
20
+ npx torch-glare@latest add TabFormItem
17
21
  ```
18
22
 
23
+ `add` also copies any components, hooks, and utilities that `TabFormItem` depends on.
24
+
19
25
  ## Imports
20
26
 
21
27
  ```typescript
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: TabSwitch
3
- version: 1.0.0
3
+ version: 2.4.0
4
4
  status: stable
5
5
  category: components/navigation
6
6
  tags: [tab-switch, segmented-control, view-switcher, toggle, list-cards, pills]
@@ -16,15 +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 TabSwitch
21
25
  ```
22
26
 
27
+ `add` also copies any components, hooks, and utilities that `TabSwitch` depends on.
28
+
23
29
  ## Import
24
30
 
25
- ```typescript
26
- import { TabSwitch } from 'torch-glare/lib/components/TabSwitch'
27
- import type { TabSwitchOption } from 'torch-glare/lib/components/TabSwitch'
31
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
32
+
33
+ ```tsx
34
+ import { TabSwitch } from "@/components/TabSwitch";
28
35
  ```
29
36
 
30
37
  ## Quick Examples
@@ -32,7 +39,7 @@ import type { TabSwitchOption } from 'torch-glare/lib/components/TabSwitch'
32
39
  ### Basic Usage (List / Cards)
33
40
 
34
41
  ```typescript
35
- import { TabSwitch } from 'torch-glare/lib/components/TabSwitch'
42
+ import { TabSwitch } from "@/components/TabSwitch";
36
43
  import { useState } from 'react'
37
44
 
38
45
  function Example() {
@@ -0,0 +1,105 @@
1
+ ---
2
+ title: TableDnDWrapper
3
+ description: A factory that wraps the Editor.js table tool to add drag-and-drop reordering of rows and columns, used by the TORCH Glare TextEditor
4
+ group: Advanced
5
+ keywords: [table-dnd-wrapper, editorjs, table, drag-and-drop, reorder, text-editor, advanced]
6
+ ---
7
+
8
+ # TableDnDWrapper
9
+
10
+ > An advanced, non-visual module: a factory that **wraps `@editorjs/table`** and adds
11
+ > drag-and-drop reordering of rows and columns. It is not a React component — its default
12
+ > export, `createTableDnDClass(OriginalTable)`, returns a subclass of the Editor.js table tool
13
+ > that you register in an Editor.js `tools` config. The TORCH Glare [TextEditor](./text-editor.md)
14
+ > uses it internally; add it directly only when building a custom Editor.js instance.
15
+
16
+ ## How it works
17
+
18
+ It reuses the table plugin's existing `.tc-toolbox` toggler elements — no extra UI is injected:
19
+
20
+ - **Click** the toggler → opens the original popover menu (unchanged).
21
+ - **Drag** the toggler → reorders that row or column (new behavior).
22
+
23
+ ## Installation
24
+
25
+ TORCH Glare is a copy-in library: the CLI copies this module's source into your project
26
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
27
+
28
+ ```bash
29
+ npx torch-glare@latest init
30
+ npx torch-glare@latest add TableDnDWrapper
31
+ ```
32
+
33
+ ## Import
34
+
35
+ ```typescript
36
+ import createTableDnDClass from "@/components/TableDnDWrapper";
37
+ ```
38
+
39
+ ## Quick Examples
40
+
41
+ ### Register a drag-enabled table in Editor.js
42
+
43
+ ```typescript
44
+ import EditorJS from "@editorjs/editorjs";
45
+ import Table from "@editorjs/table";
46
+ import createTableDnDClass from "@/components/TableDnDWrapper";
47
+
48
+ // Wrap the original table tool to add row/column drag-and-drop.
49
+ const TableWithDnD = createTableDnDClass(Table);
50
+
51
+ const editor = new EditorJS({
52
+ holder: "editor",
53
+ tools: {
54
+ table: {
55
+ class: TableWithDnD,
56
+ inlineToolbar: true,
57
+ },
58
+ },
59
+ });
60
+ ```
61
+
62
+ The returned class behaves exactly like `@editorjs/table` (same config, same saved data), with
63
+ drag reordering added on top.
64
+
65
+ ## API Reference
66
+
67
+ ### Props
68
+
69
+ | Member | Type | Description |
70
+ |--------|------|-------------|
71
+ | `default export` | `createTableDnDClass(OriginalTable) => TableClass` | Factory. Pass the Editor.js table tool class; returns a subclass that adds row/column drag-and-drop. |
72
+ | `OriginalTable` | `TableClass` | The Editor.js table tool class to wrap (e.g. `@editorjs/table`). |
73
+ | returns | `TableClass` | A `TableDnD` subclass to register under a `tools` key. |
74
+
75
+ The returned class extends the original tool, so it inherits all of the wrapped table's config,
76
+ props, and saved-data shape — the wrapper only augments pointer handling on the existing
77
+ row/column togglers.
78
+
79
+ ### TypeScript
80
+
81
+ ```typescript
82
+ // The wrapped table tool is typed loosely because it extends a third-party class.
83
+ type TableClass = any;
84
+
85
+ /**
86
+ * Wrap an Editor.js table tool class and return a subclass that adds
87
+ * drag-and-drop reordering of rows and columns.
88
+ */
89
+ export default function createTableDnDClass(OriginalTable: TableClass): TableClass;
90
+ ```
91
+
92
+ ## Common Patterns
93
+
94
+ - **Use via TextEditor:** most apps should use [TextEditor](./text-editor.md), which applies
95
+ this wrapper for you — you rarely call the factory directly.
96
+ - **Custom Editor.js:** wrap the table class once (`createTableDnDClass(Table)`) and register
97
+ the result; the rest of your Editor.js config is unchanged.
98
+ - **Drag threshold:** a pointer must move a few pixels before a click becomes a drag, so normal
99
+ toggler clicks still open the table menu.
100
+
101
+ ## Related Components
102
+
103
+ - [TextEditor](./text-editor.md) — the rich-text editor that uses this wrapper.
104
+ - [ChartBlockTool](./chart-block-tool.md) — another internal Editor.js tool module.
105
+ - [DataTable](./data-table.md) — a standalone React data table (unrelated to the Editor.js table block).
@@ -11,13 +11,22 @@ keywords: [data-views, table-view, table, sortable, columns, selection, filter,
11
11
 
12
12
  ## Installation
13
13
 
14
- Part of `torch-glare`. Ships with the `DataViews` folder when you run `npx torch-glare add DataViews` — no separate install. It depends on the shared `Card`, `Checkbox`, and `Table` components plus the colocated `FilterPanel`.
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 TableView
20
+ ```
21
+
22
+ `add` also copies any components, hooks, and utilities that `TableView` depends on.
15
23
 
16
24
  ## Import
17
25
 
26
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
27
+
18
28
  ```tsx
19
- import { TableView, useDataViewsState } from "torch-glare"
20
- import type { TableViewProps, FieldConfig } from "torch-glare"
29
+ import { TableView } from "@/components/TableView";
21
30
  ```
22
31
 
23
32
  ## When to use it directly
@@ -33,8 +42,9 @@ import type { TableViewProps, FieldConfig } from "torch-glare"
33
42
  `TableView` is controlled — it does not own field detection or config. Pull those from `useDataViewsState` (which auto-detects fields and columns from your data) and pass them down.
34
43
 
35
44
  ```tsx
36
- import { TableView, useDataViewsState } from "torch-glare"
37
- import type { FieldConfig } from "torch-glare"
45
+ import { TableView } from "@/components/TableView";
46
+ import { useDataViewsState } from "@/hooks/useDataViewsState";
47
+ import type { FieldConfig } from "@/components/FieldConfig";
38
48
 
39
49
  const employees = [
40
50
  { id: 1, name: "Ada Lovelace", role: "Engineer", salary: 120000, joinDate: "2024-04-12" },
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: Table
3
- version: 1.1.15
3
+ version: 2.4.0
4
4
  status: stable
5
5
  category: components/data-display
6
6
  tags: [table, data, grid, sortable, resizable, accessible, compound]
@@ -19,26 +19,22 @@ dependencies:
19
19
 
20
20
  ## Installation
21
21
 
22
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
23
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
24
+
22
25
  ```bash
23
- npm install torch-glare
26
+ npx torch-glare@latest init
27
+ npx torch-glare@latest add Table
24
28
  ```
25
29
 
30
+ `add` also copies any components, hooks, and utilities that `Table` depends on.
31
+
26
32
  ## Import
27
33
 
28
- ```typescript
29
- import {
30
- Table,
31
- TableHeader,
32
- TableBody,
33
- TableFooter,
34
- TableHead,
35
- TableRow,
36
- TableCell,
37
- TableCaption,
38
- TableCheckbox,
39
- TableFooterButton,
40
- SubTableButton
41
- } from 'torch-glare/lib/components/Table'
34
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
35
+
36
+ ```tsx
37
+ import { Table } from "@/components/Table";
42
38
  ```
43
39
 
44
40
  ## Quick Examples
@@ -46,7 +42,7 @@ import {
46
42
  ### Basic Table
47
43
 
48
44
  ```typescript
49
- import { Table, TableHeader, TableBody, TableHead, TableRow, TableCell } from 'torch-glare/lib/components/Table'
45
+ import { Table, TableHeader, TableBody, TableHead, TableRow, TableCell } from '@/components/Table'
50
46
 
51
47
  function BasicTable() {
52
48
  return (
@@ -210,9 +206,14 @@ function SelectableTable() {
210
206
  <TableHead size="S">
211
207
  <TableCheckbox
212
208
  id="select-all"
213
- checked={selectedRows.size === data.length}
214
- indeterminate={selectedRows.size > 0 && selectedRows.size < data.length}
215
- onChange={toggleAll}
209
+ checked={
210
+ selectedRows.size === data.length
211
+ ? true
212
+ : selectedRows.size > 0
213
+ ? 'indeterminate'
214
+ : false
215
+ }
216
+ onCheckedChange={toggleAll}
216
217
  />
217
218
  </TableHead>
218
219
  <TableHead>Name</TableHead>
@@ -229,7 +230,7 @@ function SelectableTable() {
229
230
  <TableCheckbox
230
231
  id={`select-${item.id}`}
231
232
  checked={selectedRows.has(item.id)}
232
- onChange={() => toggleRow(item.id)}
233
+ onCheckedChange={() => toggleRow(item.id)}
233
234
  />
234
235
  </TableCell>
235
236
  <TableCell>{item.name}</TableCell>
@@ -402,9 +403,8 @@ function ResizableTable() {
402
403
  | Prop | Type | Default | Description |
403
404
  |------|------|---------|-------------|
404
405
  | `id` | `string` | - | Required checkbox ID |
405
- | `checked` | `boolean` | - | Checked state |
406
- | `indeterminate` | `boolean` | - | Indeterminate state |
407
- | `onChange` | `() => void` | - | Change handler |
406
+ | `checked` | `boolean \| 'indeterminate'` | - | Checked state; pass `'indeterminate'` for the mixed state |
407
+ | `onCheckedChange` | `(checked: boolean \| 'indeterminate') => void` | - | Change handler (Radix Checkbox) |
408
408
 
409
409
  ### TableFooterButton Props
410
410
 
@@ -446,8 +446,8 @@ interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {
446
446
  // TableCheckbox types
447
447
  interface TableCheckboxProps extends ButtonHTMLAttributes<HTMLButtonElement> {
448
448
  id: string
449
- checked?: boolean
450
- indeterminate?: boolean
449
+ checked?: boolean | 'indeterminate'
450
+ onCheckedChange?: (checked: boolean | 'indeterminate') => void
451
451
  }
452
452
 
453
453
  // Export structure
@@ -659,7 +659,7 @@ function EditableTable() {
659
659
 
660
660
  ```typescript
661
661
  import { render, screen, fireEvent } from '@testing-library/react'
662
- import { Table, TableHeader, TableBody, TableHead, TableRow, TableCell } from 'torch-glare/lib/components/Table'
662
+ import { Table, TableHeader, TableBody, TableHead, TableRow, TableCell } from '@/components/Table'
663
663
 
664
664
  describe('Table', () => {
665
665
  it('renders table with data', () => {
@@ -922,7 +922,7 @@ Key overrides on `childrenClassName`:
922
922
  ```diff
923
923
  // Import path changed
924
924
  - import Table from 'torch-glare/Table'
925
- + import { Table, TableHeader, TableBody } from 'torch-glare/lib/components/Table'
925
+ + import { Table, TableHeader, TableBody } from '@/components/Table'
926
926
 
927
927
  // Component structure
928
928
  - <Table headers={headers} data={data} />
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: TextEditor
3
- version: 1.1.15
3
+ version: 2.4.0
4
4
  status: stable
5
5
  category: components/editors
6
6
  tags: [editor, rich-text, block-editor, editorjs, markdown, rtl, accessible]
@@ -34,16 +34,22 @@ dependencies:
34
34
 
35
35
  ## Installation
36
36
 
37
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
38
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
39
+
37
40
  ```bash
38
- npm install torch-glare
41
+ npx torch-glare@latest init
42
+ npx torch-glare@latest add TextEditor
39
43
  ```
40
44
 
45
+ `add` also copies any components, hooks, and utilities that `TextEditor` depends on.
46
+
41
47
  ## Import
42
48
 
43
- ```typescript
44
- import { TextEditor } from 'torch-glare/lib/components/TextEditor'
45
- // or
46
- import { TextEditor } from 'torch-glare/lib/components'
49
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
50
+
51
+ ```tsx
52
+ import { TextEditor } from "@/components/TextEditor";
47
53
  ```
48
54
 
49
55
  ## Quick Examples
@@ -51,7 +57,7 @@ import { TextEditor } from 'torch-glare/lib/components'
51
57
  ### Basic Usage
52
58
 
53
59
  ```typescript
54
- import { TextEditor } from 'torch-glare/lib/components/TextEditor'
60
+ import { TextEditor } from "@/components/TextEditor";
55
61
 
56
62
  function Example() {
57
63
  return (
@@ -66,7 +72,7 @@ function Example() {
66
72
  ### With Initial Data
67
73
 
68
74
  ```typescript
69
- import { TextEditor } from 'torch-glare/lib/components/TextEditor'
75
+ import { TextEditor } from "@/components/TextEditor";
70
76
  import type { OutputData } from '@editorjs/editorjs'
71
77
 
72
78
  function Example() {
@@ -97,7 +103,7 @@ function Example() {
97
103
 
98
104
  ```typescript
99
105
  import { useRef } from 'react'
100
- import { TextEditor, TextEditorRef } from 'torch-glare/lib/components/TextEditor'
106
+ import { TextEditor, TextEditorRef } from "@/components/TextEditor";
101
107
 
102
108
  function EditorWithControls() {
103
109
  const editorRef = useRef<TextEditorRef>(null)
@@ -342,8 +348,8 @@ export type { TextEditorProps, OutputData }
342
348
 
343
349
  ```typescript
344
350
  import { useRef, useState } from 'react'
345
- import { TextEditor, TextEditorRef } from 'torch-glare/lib/components/TextEditor'
346
- import { Button } from 'torch-glare/lib/components/Button'
351
+ import { TextEditor, TextEditorRef } from "@/components/TextEditor";
352
+ import { Button } from "@/components/Button";
347
353
  import type { OutputData } from '@editorjs/editorjs'
348
354
 
349
355
  function BlogPostEditor() {
@@ -478,7 +484,7 @@ function ArticleForm() {
478
484
 
479
485
  ```typescript
480
486
  import { render, screen, waitFor } from '@testing-library/react'
481
- import { TextEditor, TextEditorRef } from 'torch-glare/lib/components/TextEditor'
487
+ import { TextEditor, TextEditorRef } from "@/components/TextEditor";
482
488
 
483
489
  describe('TextEditor', () => {
484
490
  it('renders the editor container', () => {
@@ -652,7 +658,7 @@ The PresentationStyle variant maps to the following design tokens:
652
658
  ```typescript
653
659
  "use client"
654
660
 
655
- import { TextEditor } from 'torch-glare/lib/components/TextEditor'
661
+ import { TextEditor } from "@/components/TextEditor";
656
662
 
657
663
  export default function Page() {
658
664
  return <TextEditor />
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: Textarea
3
- version: 1.1.15
3
+ version: 2.4.0
4
4
  status: stable
5
5
  category: components/forms
6
6
  tags: [form, textarea, multiline, input, field, accessible, auto-resize]
@@ -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 Textarea
22
26
  ```
23
27
 
28
+ `add` also copies any components, hooks, and utilities that `Textarea` depends on.
29
+
24
30
  ## Import
25
31
 
26
- ```typescript
27
- import { Textarea } from 'torch-glare/lib/components/Textarea'
32
+ Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
33
+
34
+ ```tsx
35
+ import { Textarea } from "@/components/Textarea";
28
36
  ```
29
37
 
30
38
  ## Quick Examples
@@ -32,7 +40,7 @@ import { Textarea } from 'torch-glare/lib/components/Textarea'
32
40
  ### Basic Usage
33
41
 
34
42
  ```typescript
35
- import { Textarea } from 'torch-glare/lib/components/Textarea'
43
+ import { Textarea } from '@/components/Textarea'
36
44
 
37
45
  function Example() {
38
46
  const [value, setValue] = useState('')
@@ -346,7 +354,7 @@ function AutoSaveTextarea() {
346
354
 
347
355
  ```typescript
348
356
  import { render, screen, fireEvent } from '@testing-library/react'
349
- import { Textarea } from 'torch-glare/lib/components/Textarea'
357
+ import { Textarea } from '@/components/Textarea'
350
358
 
351
359
  describe('Textarea', () => {
352
360
  it('handles user input', () => {
@@ -580,7 +588,7 @@ This gives you the TORCH look-and-feel without `field-sizing-content`. Switch ba
580
588
  ```diff
581
589
  // Import path changed
582
590
  - import Textarea from 'torch-glare/Textarea'
583
- + import { Textarea } from 'torch-glare/lib/components/Textarea'
591
+ + import { Textarea } from '@/components/Textarea'
584
592
 
585
593
  // Label integration
586
594
  - <div>
@@ -14,10 +14,16 @@ The component is composed of `Timeline`, `TimelineItem`, `TimelineIndicator`, `T
14
14
 
15
15
  ## Installation
16
16
 
17
+ TORCH Glare is a copy-in library: the CLI copies this component's source into your project
18
+ (you do **not** install it from the npm package). Run `init` once, then `add`:
19
+
17
20
  ```bash
21
+ npx torch-glare@latest init
18
22
  npx torch-glare@latest add Timeline
19
23
  ```
20
24
 
25
+ `add` also copies any components, hooks, and utilities that `Timeline` depends on.
26
+
21
27
  ## Imports
22
28
 
23
29
  ```typescript