torch-glare 2.4.0 → 2.4.2
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 +1 -3
- package/apps/lib/components/BadgeField.tsx +76 -71
- package/apps/lib/components/Breadcrumb.tsx +49 -85
- package/apps/lib/components/Button.tsx +21 -20
- package/apps/lib/components/ButtonGroup.tsx +31 -41
- package/apps/lib/components/Calendar.tsx +51 -29
- package/apps/lib/components/Card.tsx +40 -24
- package/apps/lib/components/Checkbox.tsx +9 -16
- package/apps/lib/components/ColorPicker.tsx +441 -0
- package/apps/lib/components/ConclusionHeader.tsx +148 -0
- package/apps/lib/components/ContextMenu.tsx +97 -96
- package/apps/lib/components/CountBadge.tsx +4 -6
- package/apps/lib/components/DataTable.tsx +196 -216
- package/apps/lib/components/DataViews/DataViewRadio.tsx +1 -6
- package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +13 -47
- 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 +155 -149
- 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 +30 -23
- 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 +104 -115
- package/apps/lib/components/DatePicker.tsx +200 -196
- package/apps/lib/components/Dialog.tsx +92 -105
- package/apps/lib/components/Divider.tsx +21 -24
- package/apps/lib/components/Drawer.tsx +124 -142
- package/apps/lib/components/DropdownMenu.tsx +131 -171
- package/apps/lib/components/FieldHint.tsx +4 -11
- package/apps/lib/components/Form.tsx +146 -155
- package/apps/lib/components/FormBuilder/DisplayField.tsx +40 -0
- package/apps/lib/components/FormBuilder/context.ts +71 -0
- package/apps/lib/components/FormBuilder/fields/ChoiceFields.tsx +65 -0
- package/apps/lib/components/FormBuilder/fields/ColorField.tsx +76 -0
- package/apps/lib/components/FormBuilder/fields/CustomField.tsx +16 -0
- package/apps/lib/components/FormBuilder/fields/DateField.tsx +34 -0
- package/apps/lib/components/FormBuilder/fields/FieldArray.tsx +79 -0
- package/apps/lib/components/FormBuilder/fields/FieldShell.tsx +174 -0
- package/apps/lib/components/FormBuilder/fields/FileField.tsx +40 -0
- package/apps/lib/components/FormBuilder/fields/OptionListFields.tsx +139 -0
- package/apps/lib/components/FormBuilder/fields/OtpField.tsx +32 -0
- package/apps/lib/components/FormBuilder/fields/PhoneField.tsx +82 -0
- package/apps/lib/components/FormBuilder/fields/RichTextEditorField.tsx +37 -0
- package/apps/lib/components/FormBuilder/fields/SelectField.tsx +101 -0
- package/apps/lib/components/FormBuilder/fields/SignatureField.tsx +175 -0
- package/apps/lib/components/FormBuilder/fields/SliderField.tsx +72 -0
- package/apps/lib/components/FormBuilder/fields/SwitchBoxField.tsx +42 -0
- package/apps/lib/components/FormBuilder/fields/TableField.tsx +312 -0
- package/apps/lib/components/FormBuilder/fields/TextField.tsx +222 -0
- package/apps/lib/components/FormBuilder/fields/TreeSelectField.tsx +49 -0
- package/apps/lib/components/FormBuilder/fields/countries.ts +303 -0
- package/apps/lib/components/FormBuilder/fields/index.ts +25 -0
- package/apps/lib/components/FormBuilder/form-builder.tsx +292 -0
- package/apps/lib/components/FormBuilder/header.tsx +105 -0
- package/apps/lib/components/FormBuilder/index.ts +37 -0
- package/apps/lib/components/FormBuilder/numberFormat.ts +16 -0
- package/apps/lib/components/FormBuilder/stepper.tsx +217 -0
- package/apps/lib/components/FormBuilder/submit.tsx +41 -0
- package/apps/lib/components/FormBuilder/types.ts +264 -0
- package/apps/lib/components/FormBuilder/viewFormat.tsx +137 -0
- package/apps/lib/components/FormRenderer/FormDrawer.tsx +121 -0
- package/apps/lib/components/FormRenderer/form-renderer.tsx +113 -0
- package/apps/lib/components/FormRenderer/index.ts +9 -0
- package/apps/lib/components/FormRenderer/types.ts +79 -0
- package/apps/lib/components/FormStepper.tsx +9 -39
- package/apps/lib/components/FormSummary.tsx +282 -0
- package/apps/lib/components/HeaderBar.tsx +1 -9
- package/apps/lib/components/ImageAttachment.tsx +106 -93
- 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 +61 -58
- 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 +11 -28
- package/apps/lib/components/ScrollArea.tsx +45 -43
- package/apps/lib/components/SearchField.tsx +49 -39
- package/apps/lib/components/SearchableSelect.tsx +16 -16
- package/apps/lib/components/SearchableTable.tsx +108 -118
- package/apps/lib/components/SearchableTree.tsx +469 -0
- package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
- package/apps/lib/components/SectionBlock.tsx +19 -23
- package/apps/lib/components/Select.tsx +80 -186
- 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/{ChartBlockTool.ts → TextEditor/ChartBlockTool.ts} +17 -52
- package/apps/lib/components/TextEditor/RichTextField.tsx +46 -0
- package/apps/lib/components/{TableDnDWrapper.ts → TextEditor/TableDnDWrapper.ts} +15 -48
- package/apps/lib/components/{TextEditor.tsx → TextEditor/TextEditor.tsx} +156 -113
- package/apps/lib/components/TextEditor/TextEditorToolbar.tsx +429 -0
- package/apps/lib/components/TextEditor/editor-tools/AlignmentTune.ts +70 -0
- package/apps/lib/components/TextEditor/editor-tools/ColorInlineTool.ts +50 -0
- package/apps/lib/components/TextEditor/editor-tools/StrikethroughInlineTool.ts +48 -0
- package/apps/lib/components/TextEditor/editor-tools/inlineFormat.ts +98 -0
- package/apps/lib/{types → components/TextEditor}/editorjs.d.ts +19 -0
- package/apps/lib/components/TextEditor/index.ts +7 -0
- package/apps/lib/{utils → components/TextEditor}/markdownParser.ts +2 -7
- package/apps/lib/components/Textarea.tsx +9 -13
- 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 +997 -0
- package/apps/lib/tsconfig.json +9 -0
- package/apps/lib/tsconfig.tsbuildinfo +1 -0
- package/apps/lib/utils/cn.ts +1 -1
- package/apps/lib/utils/color.ts +175 -0
- 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/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 +23 -18
- package/docs/components/chart-block-tool.md +129 -0
- package/docs/components/checkbox.md +16 -8
- package/docs/components/cn-layout.md +7 -1
- package/docs/components/color-picker.md +101 -0
- package/docs/components/conclusion-header.md +80 -0
- package/docs/components/context-menu.md +18 -25
- package/docs/components/count-badge.md +7 -1
- package/docs/components/data-table.md +45 -33
- package/docs/components/data-views-config-panel.md +15 -11
- package/docs/components/data-views-layout.md +13 -16
- 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 +161 -135
- package/docs/components/dropdown-menu.md +25 -34
- package/docs/components/field-hint.md +37 -25
- package/docs/components/field-section.md +9 -3
- package/docs/components/form-builder.md +270 -0
- package/docs/components/form-renderer.md +228 -0
- package/docs/components/form-stepper.md +6 -0
- package/docs/components/form-summary.md +123 -0
- package/docs/components/form.md +17 -20
- package/docs/components/header-bar.md +6 -0
- package/docs/components/image-attachment.md +43 -45
- 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 +18 -13
- package/docs/components/searchable-tree-dialog.md +190 -0
- package/docs/components/searchable-tree.md +200 -0
- package/docs/components/section-block.md +12 -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 +107 -0
- package/docs/components/table-view.md +15 -5
- package/docs/components/table.md +28 -28
- package/docs/components/text-editor.md +37 -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 +6 -4
- package/docs/how-to/form-and-list-recipes.md +26 -19
- package/docs/how-to/forms-with-form-builder.md +408 -0
- package/docs/how-to/guides.md +177 -197
- 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 +170 -172
- 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,107 @@
|
|
|
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 TextEditor
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`createTableDnDClass` ships as part of the `TextEditor` folder, so `add TextEditor` copies it in.
|
|
34
|
+
|
|
35
|
+
## Import
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { createTableDnDClass } from "@/components/TextEditor";
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Quick Examples
|
|
42
|
+
|
|
43
|
+
### Register a drag-enabled table in Editor.js
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import EditorJS from "@editorjs/editorjs";
|
|
47
|
+
import Table from "@editorjs/table";
|
|
48
|
+
import { createTableDnDClass } from "@/components/TextEditor";
|
|
49
|
+
|
|
50
|
+
// Wrap the original table tool to add row/column drag-and-drop.
|
|
51
|
+
const TableWithDnD = createTableDnDClass(Table);
|
|
52
|
+
|
|
53
|
+
const editor = new EditorJS({
|
|
54
|
+
holder: "editor",
|
|
55
|
+
tools: {
|
|
56
|
+
table: {
|
|
57
|
+
class: TableWithDnD,
|
|
58
|
+
inlineToolbar: true,
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The returned class behaves exactly like `@editorjs/table` (same config, same saved data), with
|
|
65
|
+
drag reordering added on top.
|
|
66
|
+
|
|
67
|
+
## API Reference
|
|
68
|
+
|
|
69
|
+
### Props
|
|
70
|
+
|
|
71
|
+
| Member | Type | Description |
|
|
72
|
+
|--------|------|-------------|
|
|
73
|
+
| `default export` | `createTableDnDClass(OriginalTable) => TableClass` | Factory. Pass the Editor.js table tool class; returns a subclass that adds row/column drag-and-drop. |
|
|
74
|
+
| `OriginalTable` | `TableClass` | The Editor.js table tool class to wrap (e.g. `@editorjs/table`). |
|
|
75
|
+
| returns | `TableClass` | A `TableDnD` subclass to register under a `tools` key. |
|
|
76
|
+
|
|
77
|
+
The returned class extends the original tool, so it inherits all of the wrapped table's config,
|
|
78
|
+
props, and saved-data shape — the wrapper only augments pointer handling on the existing
|
|
79
|
+
row/column togglers.
|
|
80
|
+
|
|
81
|
+
### TypeScript
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
// The wrapped table tool is typed loosely because it extends a third-party class.
|
|
85
|
+
type TableClass = any;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Wrap an Editor.js table tool class and return a subclass that adds
|
|
89
|
+
* drag-and-drop reordering of rows and columns.
|
|
90
|
+
*/
|
|
91
|
+
export default function createTableDnDClass(OriginalTable: TableClass): TableClass;
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Common Patterns
|
|
95
|
+
|
|
96
|
+
- **Use via TextEditor:** most apps should use [TextEditor](./text-editor.md), which applies
|
|
97
|
+
this wrapper for you — you rarely call the factory directly.
|
|
98
|
+
- **Custom Editor.js:** wrap the table class once (`createTableDnDClass(Table)`) and register
|
|
99
|
+
the result; the rest of your Editor.js config is unchanged.
|
|
100
|
+
- **Drag threshold:** a pointer must move a few pixels before a click becomes a drag, so normal
|
|
101
|
+
toggler clicks still open the table menu.
|
|
102
|
+
|
|
103
|
+
## Related Components
|
|
104
|
+
|
|
105
|
+
- [TextEditor](./text-editor.md) — the rich-text editor that uses this wrapper.
|
|
106
|
+
- [ChartBlockTool](./chart-block-tool.md) — another internal Editor.js tool module.
|
|
107
|
+
- [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)
|
|
@@ -254,8 +260,26 @@ function MarkdownEditor() {
|
|
|
254
260
|
| `tools` | `Record<string, any>` | Default 18+ tools | Override the Editor.js tools configuration |
|
|
255
261
|
| `minHeight` | `number` | - | Custom min-height in pixels (overrides size) |
|
|
256
262
|
| `disabled` | `boolean` | `false` | Disables interaction with reduced opacity |
|
|
263
|
+
| `toolbar` | `boolean` | `true` | Show the fixed formatting toolbar. Auto-hidden when `readOnly`/`disabled`. |
|
|
257
264
|
| `className` | `string` | - | Additional CSS classes |
|
|
258
265
|
|
|
266
|
+
### Formatting toolbar
|
|
267
|
+
|
|
268
|
+
A fixed, sticky toolbar sits at the top of the editor (shown by default; pass `toolbar={false}`
|
|
269
|
+
to hide it, and it is automatically hidden in `readOnly`/`disabled` editors). It drives the
|
|
270
|
+
underlying Editor.js instance and offers:
|
|
271
|
+
|
|
272
|
+
- **History** — undo / redo (via `editorjs-undo`; also bound to `Ctrl/⌘+Z` / `Ctrl/⌘+Y`).
|
|
273
|
+
- **Block type** — a dropdown to switch between Normal text and Heading 1–3 (`blocks.convert`).
|
|
274
|
+
- **Alignment** — left / center / right (a block tune persisted on each block).
|
|
275
|
+
- **Text color** — a swatch palette.
|
|
276
|
+
- **Inline** — bold, italic, underline, strikethrough, clear formatting.
|
|
277
|
+
- **Lists** — bullet and ordered.
|
|
278
|
+
- **Insert image** — from a local file (inserted as an `image` block).
|
|
279
|
+
|
|
280
|
+
Strikethrough and color are backed by small custom inline tools whose `sanitize` allowlists let
|
|
281
|
+
that markup survive `save()`; alignment persists as a block tune.
|
|
282
|
+
|
|
259
283
|
### Ref Methods (TextEditorRef)
|
|
260
284
|
|
|
261
285
|
| Method | Signature | Description |
|
|
@@ -342,8 +366,8 @@ export type { TextEditorProps, OutputData }
|
|
|
342
366
|
|
|
343
367
|
```typescript
|
|
344
368
|
import { useRef, useState } from 'react'
|
|
345
|
-
import { TextEditor, TextEditorRef } from
|
|
346
|
-
import { Button } from
|
|
369
|
+
import { TextEditor, TextEditorRef } from "@/components/TextEditor";
|
|
370
|
+
import { Button } from "@/components/Button";
|
|
347
371
|
import type { OutputData } from '@editorjs/editorjs'
|
|
348
372
|
|
|
349
373
|
function BlogPostEditor() {
|
|
@@ -478,7 +502,7 @@ function ArticleForm() {
|
|
|
478
502
|
|
|
479
503
|
```typescript
|
|
480
504
|
import { render, screen, waitFor } from '@testing-library/react'
|
|
481
|
-
import { TextEditor, TextEditorRef } from
|
|
505
|
+
import { TextEditor, TextEditorRef } from "@/components/TextEditor";
|
|
482
506
|
|
|
483
507
|
describe('TextEditor', () => {
|
|
484
508
|
it('renders the editor container', () => {
|
|
@@ -652,7 +676,7 @@ The PresentationStyle variant maps to the following design tokens:
|
|
|
652
676
|
```typescript
|
|
653
677
|
"use client"
|
|
654
678
|
|
|
655
|
-
import { TextEditor } from
|
|
679
|
+
import { TextEditor } from "@/components/TextEditor";
|
|
656
680
|
|
|
657
681
|
export default function Page() {
|
|
658
682
|
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
|