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.
- package/README.md +8 -0
- package/apps/lib/components/ActionButton.tsx +7 -12
- package/apps/lib/components/ActionsGroup.tsx +4 -15
- package/apps/lib/components/AlertDialog.tsx +173 -191
- package/apps/lib/components/Avatar.tsx +13 -16
- package/apps/lib/components/Badge.tsx +7 -3
- package/apps/lib/components/BadgeField.tsx +76 -71
- package/apps/lib/components/Breadcrumb.tsx +49 -85
- package/apps/lib/components/Button.tsx +20 -19
- package/apps/lib/components/ButtonGroup.tsx +31 -41
- package/apps/lib/components/Calendar.tsx +51 -29
- package/apps/lib/components/Card.tsx +2 -13
- package/apps/lib/components/ChartBlockTool.ts +17 -52
- package/apps/lib/components/Checkbox.tsx +9 -16
- package/apps/lib/components/ContextMenu.tsx +110 -106
- package/apps/lib/components/CountBadge.tsx +4 -6
- package/apps/lib/components/DataTable.tsx +196 -216
- package/apps/lib/components/DataViews/DataViewRadio.tsx +10 -8
- package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +21 -55
- package/apps/lib/components/DataViews/DataViewsHeader.tsx +1 -3
- package/apps/lib/components/DataViews/DataViewsLayout.tsx +5 -12
- package/apps/lib/components/DataViews/FilterPanel.tsx +173 -150
- package/apps/lib/components/DataViews/HeaderSearch.tsx +1 -5
- package/apps/lib/components/DataViews/InboxView.tsx +22 -68
- package/apps/lib/components/DataViews/InboxViewCard.tsx +68 -77
- package/apps/lib/components/DataViews/KanbanView.tsx +8 -25
- package/apps/lib/components/DataViews/PanelControls.tsx +3 -13
- package/apps/lib/components/DataViews/SettingsPanel.tsx +83 -89
- package/apps/lib/components/DataViews/TableView.tsx +8 -28
- package/apps/lib/components/DataViews/TreeView.tsx +12 -40
- package/apps/lib/components/DataViews/badgeAdapter.ts +32 -28
- package/apps/lib/components/DataViews/fieldRenderers.tsx +106 -141
- package/apps/lib/components/DataViews/filters/DatePickerRangeFilter.tsx +87 -0
- package/apps/lib/components/DataViews/filters/DateRangePopover.tsx +39 -32
- package/apps/lib/components/DataViews/filters/PresetChips.tsx +15 -15
- package/apps/lib/components/DataViews/filters/RangeSliderWithInputs.tsx +69 -58
- package/apps/lib/components/DataViews/index.ts +26 -26
- package/apps/lib/components/DataViews/tree/TreeDrawer.tsx +12 -16
- package/apps/lib/components/DataViews/tree/TreeSidebar.tsx +28 -31
- package/apps/lib/components/DataViews/types.ts +111 -114
- package/apps/lib/components/DatePicker.tsx +198 -191
- package/apps/lib/components/Dialog.tsx +92 -105
- package/apps/lib/components/Divider.tsx +21 -24
- package/apps/lib/components/Drawer.tsx +79 -139
- package/apps/lib/components/DropdownMenu.tsx +144 -181
- package/apps/lib/components/FieldHint.tsx +4 -11
- package/apps/lib/components/Form.tsx +146 -155
- package/apps/lib/components/FormStepper.tsx +9 -39
- package/apps/lib/components/HeaderBar.tsx +119 -0
- package/apps/lib/components/ImageAttachment.tsx +111 -73
- package/apps/lib/components/InnerLabelField.tsx +20 -16
- package/apps/lib/components/Input.tsx +171 -172
- package/apps/lib/components/InputField.tsx +44 -45
- package/apps/lib/components/InputOTP.tsx +68 -69
- package/apps/lib/components/Label.tsx +31 -35
- package/apps/lib/components/LabelField.tsx +4 -5
- package/apps/lib/components/LabeledCheckBox.tsx +8 -12
- package/apps/lib/components/LabeledRadio.tsx +7 -5
- package/apps/lib/components/LinkButton.tsx +2 -9
- package/apps/lib/components/LoginButton.tsx +4 -9
- package/apps/lib/components/PasswordLevel.tsx +5 -5
- package/apps/lib/components/Popover.tsx +15 -33
- package/apps/lib/components/ProfileMenu.tsx +67 -72
- package/apps/lib/components/Radio.tsx +1 -5
- package/apps/lib/components/RadioCard.tsx +9 -28
- package/apps/lib/components/ScrollArea.tsx +45 -43
- package/apps/lib/components/SearchField.tsx +49 -39
- package/apps/lib/components/SearchableSelect.tsx +46 -52
- package/apps/lib/components/SearchableTable.tsx +199 -219
- package/apps/lib/components/SearchableTree.tsx +469 -0
- package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
- package/apps/lib/components/SectionBlock.tsx +4 -16
- package/apps/lib/components/Select.tsx +53 -80
- package/apps/lib/components/SimpleSelect.tsx +196 -187
- package/apps/lib/components/Skeleton.tsx +9 -12
- package/apps/lib/components/SlideDatePicker.tsx +215 -166
- package/apps/lib/components/SpinLoading.tsx +33 -49
- package/apps/lib/components/Stepper.tsx +13 -56
- package/apps/lib/components/Switch.tsx +8 -10
- package/apps/lib/components/TabFormItem.tsx +3 -12
- package/apps/lib/components/TabSwitch.tsx +7 -34
- package/apps/lib/components/Table.tsx +60 -75
- package/apps/lib/components/TableDnDWrapper.ts +15 -48
- package/apps/lib/components/TextEditor.tsx +93 -104
- package/apps/lib/components/Textarea.tsx +8 -12
- package/apps/lib/components/Timeline.tsx +21 -41
- package/apps/lib/components/Toast.tsx +83 -83
- package/apps/lib/components/Toggle.tsx +112 -114
- package/apps/lib/components/ToggleButton.tsx +1 -1
- package/apps/lib/components/Tooltip.tsx +24 -19
- package/apps/lib/components/TransparentLabel.tsx +61 -62
- package/apps/lib/components/TreeDropDown.tsx +86 -52
- package/apps/lib/components/TreeFolder/TreeFolder.tsx +15 -48
- package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +16 -21
- package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +9 -20
- package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +3 -3
- package/apps/lib/components/TreeFolder/icons.tsx +14 -17
- package/apps/lib/components/TreeFolder/index.ts +15 -8
- package/apps/lib/components/TreeFolder/treeFolderUtils.ts +47 -52
- package/apps/lib/components/TreeFolder/types.ts +32 -32
- package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +117 -123
- package/apps/lib/hooks/useActiveTreeItem.ts +52 -55
- package/apps/lib/hooks/useClickOutside.ts +21 -20
- package/apps/lib/hooks/useDataViewsState.ts +86 -80
- package/apps/lib/hooks/useIsMobile.ts +12 -12
- package/apps/lib/hooks/useResize.ts +54 -65
- package/apps/lib/hooks/useTagSelection.ts +201 -201
- package/apps/lib/layouts/CNLayout.tsx +181 -140
- package/apps/lib/layouts/DataViewCard.tsx +4 -18
- package/apps/lib/layouts/FieldSection.tsx +2 -6
- package/apps/lib/layouts/TreeSubLayout.tsx +24 -38
- package/apps/lib/providers/ThemeProvider.tsx +8 -23
- package/apps/lib/registry.json +1004 -0
- package/apps/lib/tsconfig.json +9 -0
- package/apps/lib/utils/cn.ts +1 -1
- package/apps/lib/utils/dataViews/columnUtils.ts +46 -44
- package/apps/lib/utils/dataViews/fieldUtils.ts +70 -71
- package/apps/lib/utils/dataViews/nestedDataUtils.tsx +129 -122
- package/apps/lib/utils/dataViews/pathUtils.ts +74 -67
- package/apps/lib/utils/dataViews/rangeUtils.ts +121 -112
- package/apps/lib/utils/dataViews/treeUtils.ts +204 -211
- package/apps/lib/utils/dateFormat.ts +64 -54
- package/apps/lib/utils/markdownParser.ts +2 -7
- package/apps/lib/utils/resize.ts +21 -25
- package/apps/lib/utils/types.ts +13 -13
- package/dist/bin/index.js +8 -2
- package/dist/bin/index.js.map +1 -1
- package/dist/src/shared/getAvailableFiles.d.ts.map +1 -1
- package/dist/src/shared/getAvailableFiles.js +6 -1
- package/dist/src/shared/getAvailableFiles.js.map +1 -1
- package/dist/src/shared/loadRegistry.d.ts +7 -0
- package/dist/src/shared/loadRegistry.d.ts.map +1 -0
- package/dist/src/shared/loadRegistry.js +31 -0
- package/dist/src/shared/loadRegistry.js.map +1 -0
- package/dist/src/shared/resolveInstallPlan.d.ts +12 -0
- package/dist/src/shared/resolveInstallPlan.d.ts.map +1 -0
- package/dist/src/shared/resolveInstallPlan.js +39 -0
- package/dist/src/shared/resolveInstallPlan.js.map +1 -0
- package/dist/src/types/main.d.ts +24 -0
- package/dist/src/types/main.d.ts.map +1 -1
- package/docs/README.md +10 -2
- package/docs/components/action-button.md +30 -24
- package/docs/components/actions-group.md +26 -20
- package/docs/components/alert-dialog.md +45 -45
- package/docs/components/avatar.md +6 -2
- package/docs/components/badge-field.md +6 -2
- package/docs/components/badge.md +7 -1
- package/docs/components/breadcrumb.md +15 -40
- package/docs/components/button-group.md +13 -10
- package/docs/components/button.md +58 -33
- package/docs/components/calendar.md +26 -19
- package/docs/components/card.md +19 -16
- package/docs/components/chart-block-tool.md +128 -0
- package/docs/components/checkbox.md +16 -8
- package/docs/components/cn-layout.md +7 -1
- package/docs/components/context-menu.md +47 -24
- package/docs/components/count-badge.md +7 -1
- package/docs/components/data-table.md +45 -33
- package/docs/components/data-views-config-panel.md +18 -14
- package/docs/components/data-views-layout.md +20 -17
- package/docs/components/date-picker.md +30 -23
- package/docs/components/dialog.md +43 -42
- package/docs/components/divider.md +10 -4
- package/docs/components/drawer.md +8 -33
- package/docs/components/dropdown-menu.md +51 -32
- package/docs/components/field-hint.md +37 -25
- package/docs/components/field-section.md +9 -3
- package/docs/components/form-stepper.md +6 -0
- package/docs/components/form.md +17 -20
- package/docs/components/header-bar.md +187 -0
- package/docs/components/image-attachment.md +33 -41
- package/docs/components/inbox-view.md +16 -5
- package/docs/components/inner-label-field.md +34 -24
- package/docs/components/input-field.md +18 -10
- package/docs/components/input-otp.md +14 -11
- package/docs/components/input.md +22 -16
- package/docs/components/kanban-view.md +15 -5
- package/docs/components/label-field.md +32 -22
- package/docs/components/label.md +43 -32
- package/docs/components/labeled-check-box.md +16 -8
- package/docs/components/labeled-radio.md +18 -11
- package/docs/components/link-button.md +7 -1
- package/docs/components/login-button.md +8 -2
- package/docs/components/password-level.md +37 -24
- package/docs/components/popover.md +26 -23
- package/docs/components/profile-menu.md +38 -27
- package/docs/components/radio-card.md +16 -9
- package/docs/components/radio.md +16 -8
- package/docs/components/scroll-area.md +6 -2
- package/docs/components/search-field.md +14 -6
- package/docs/components/searchable-select.md +19 -14
- package/docs/components/searchable-table.md +60 -41
- package/docs/components/searchable-tree-dialog.md +190 -0
- package/docs/components/searchable-tree.md +200 -0
- package/docs/components/section-block.md +130 -4
- package/docs/components/select.md +23 -18
- package/docs/components/simple-select.md +14 -10
- package/docs/components/skeleton.md +43 -33
- package/docs/components/slide-date-picker.md +37 -29
- package/docs/components/spin-loading.md +32 -23
- package/docs/components/stepper.md +6 -0
- package/docs/components/switch.md +14 -6
- package/docs/components/tab-form-item.md +7 -1
- package/docs/components/tab-switch.md +13 -6
- package/docs/components/table-dnd-wrapper.md +105 -0
- package/docs/components/table-view.md +15 -5
- package/docs/components/table.md +28 -28
- package/docs/components/text-editor.md +19 -13
- package/docs/components/textarea.md +15 -7
- package/docs/components/timeline.md +6 -0
- package/docs/components/toast.md +35 -26
- package/docs/components/toggle-button.md +24 -21
- package/docs/components/toggle.md +23 -15
- package/docs/components/tooltip.md +42 -30
- package/docs/components/transparent-label.md +29 -20
- package/docs/components/tree-drop-down.md +31 -23
- package/docs/components/tree-sub-layout.md +6 -2
- package/docs/components/tree-view.md +16 -5
- package/docs/explanation/architecture.md +54 -0
- package/docs/explanation/design-system.md +52 -0
- package/docs/how-to/data-views-from-backend-response.md +7 -4
- package/docs/how-to/guides.md +24 -18
- package/docs/migration/changelog.md +38 -0
- package/docs/reference/cli.md +87 -0
- package/docs/reference/components.md +11 -12
- package/docs/reference/hooks.md +8 -8
- package/docs/reference/providers.md +22 -22
- package/docs/reference/tailwind-plugins.md +2 -2
- package/docs/reference/theme.md +85 -0
- package/docs/reference/types.md +4 -4
- package/docs/reference/utilities.md +19 -26
- package/docs/tutorials/building-first-form.md +20 -13
- package/docs/tutorials/component-composition.md +34 -50
- package/docs/tutorials/getting-started.md +2 -2
- package/docs/tutorials/theming-basics.md +13 -10
- package/package.json +31 -3
- package/dist/src/commands/block.d.ts +0 -5
- package/dist/src/commands/block.d.ts.map +0 -1
- package/dist/src/commands/block.js +0 -255
- package/dist/src/commands/block.js.map +0 -1
- package/dist/src/shared/configureFonts.d.ts +0 -6
- package/dist/src/shared/configureFonts.d.ts.map +0 -1
- package/dist/src/shared/configureFonts.js +0 -106
- package/dist/src/shared/configureFonts.js.map +0 -1
- package/dist/src/shared/configureGlobalCss.d.ts +0 -6
- package/dist/src/shared/configureGlobalCss.d.ts.map +0 -1
- package/dist/src/shared/configureGlobalCss.js +0 -154
- package/dist/src/shared/configureGlobalCss.js.map +0 -1
- package/dist/src/shared/configureTailwind.d.ts +0 -7
- package/dist/src/shared/configureTailwind.d.ts.map +0 -1
- package/dist/src/shared/configureTailwind.js +0 -163
- package/dist/src/shared/configureTailwind.js.map +0 -1
- package/dist/src/shared/detectFramework.d.ts +0 -23
- package/dist/src/shared/detectFramework.d.ts.map +0 -1
- package/dist/src/shared/detectFramework.js +0 -119
- package/dist/src/shared/detectFramework.js.map +0 -1
- package/dist/src/shared/installBaseUtils.d.ts +0 -5
- package/dist/src/shared/installBaseUtils.d.ts.map +0 -1
- package/dist/src/shared/installBaseUtils.js +0 -79
- package/dist/src/shared/installBaseUtils.js.map +0 -1
- package/dist/src/shared/resolveAliases.d.ts +0 -24
- package/dist/src/shared/resolveAliases.d.ts.map +0 -1
- package/dist/src/shared/resolveAliases.js +0 -98
- package/dist/src/shared/resolveAliases.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Switch
|
|
3
|
-
version:
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
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 '
|
|
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 '
|
|
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-
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
37
|
-
import
|
|
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" },
|
package/docs/components/table.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Table
|
|
3
|
-
version:
|
|
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
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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 '
|
|
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={
|
|
214
|
-
|
|
215
|
-
|
|
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
|
-
|
|
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
|
-
| `
|
|
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
|
-
|
|
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 '
|
|
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 '
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
import { TextEditor } from
|
|
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
|
|
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
|
|
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
|
|
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
|
|
346
|
-
import { Button } from
|
|
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
|
|
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
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
27
|
-
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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
|