torch-glare 2.5.6 → 2.6.0
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 +4 -3
- package/dist/bin/index.js +9 -24
- package/dist/bin/index.js.map +1 -1
- package/dist/src/commands/add.d.ts +2 -2
- package/dist/src/commands/add.d.ts.map +1 -1
- package/dist/src/commands/add.js +4 -70
- package/dist/src/commands/add.js.map +1 -1
- package/dist/src/commands/hook.d.ts +5 -4
- package/dist/src/commands/hook.d.ts.map +1 -1
- package/dist/src/commands/hook.js +7 -75
- package/dist/src/commands/hook.js.map +1 -1
- package/dist/src/commands/init.js +1 -1
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/layout.d.ts +5 -4
- package/dist/src/commands/layout.d.ts.map +1 -1
- package/dist/src/commands/layout.js +7 -75
- package/dist/src/commands/layout.js.map +1 -1
- package/dist/src/commands/provider.d.ts +5 -4
- package/dist/src/commands/provider.d.ts.map +1 -1
- package/dist/src/commands/provider.js +7 -75
- package/dist/src/commands/provider.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +78 -43
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/utils.d.ts +5 -4
- package/dist/src/commands/utils.d.ts.map +1 -1
- package/dist/src/commands/utils.js +7 -80
- package/dist/src/commands/utils.js.map +1 -1
- package/dist/src/shared/addFromRegistry.d.ts +16 -0
- package/dist/src/shared/addFromRegistry.d.ts.map +1 -0
- package/dist/src/shared/addFromRegistry.js +88 -0
- package/dist/src/shared/addFromRegistry.js.map +1 -0
- package/dist/src/shared/getInstallCommand.d.ts.map +1 -1
- package/dist/src/shared/getInstallCommand.js +5 -0
- package/dist/src/shared/getInstallCommand.js.map +1 -1
- package/dist/src/shared/installDependencies.d.ts +0 -10
- package/dist/src/shared/installDependencies.d.ts.map +1 -1
- package/dist/src/shared/installDependencies.js +0 -17
- package/dist/src/shared/installDependencies.js.map +1 -1
- package/dist/src/shared/installFromPlan.d.ts +7 -5
- package/dist/src/shared/installFromPlan.d.ts.map +1 -1
- package/dist/src/shared/installFromPlan.js +103 -36
- package/dist/src/shared/installFromPlan.js.map +1 -1
- package/dist/src/shared/loadRegistry.d.ts +12 -3
- package/dist/src/shared/loadRegistry.d.ts.map +1 -1
- package/dist/src/shared/loadRegistry.js +19 -20
- package/dist/src/shared/loadRegistry.js.map +1 -1
- package/dist/src/shared/registryClient.d.ts +19 -0
- package/dist/src/shared/registryClient.d.ts.map +1 -0
- package/dist/src/shared/registryClient.js +128 -0
- package/dist/src/shared/registryClient.js.map +1 -0
- package/dist/src/shared/resolveEntry.d.ts +10 -7
- package/dist/src/shared/resolveEntry.d.ts.map +1 -1
- package/dist/src/shared/resolveEntry.js +18 -13
- package/dist/src/shared/resolveEntry.js.map +1 -1
- package/dist/src/shared/suggestOtherCommand.d.ts +7 -1
- package/dist/src/shared/suggestOtherCommand.d.ts.map +1 -1
- package/dist/src/shared/suggestOtherCommand.js +29 -23
- package/dist/src/shared/suggestOtherCommand.js.map +1 -1
- package/dist/src/types/main.d.ts +31 -2
- package/dist/src/types/main.d.ts.map +1 -1
- package/package.json +6 -11
- package/apps/lib/components/ActionButton.tsx +0 -93
- package/apps/lib/components/ActionsGroup.tsx +0 -27
- package/apps/lib/components/AlertDialog.tsx +0 -204
- package/apps/lib/components/Avatar.tsx +0 -46
- package/apps/lib/components/Badge.tsx +0 -250
- package/apps/lib/components/BadgeField.tsx +0 -403
- package/apps/lib/components/Breadcrumb.tsx +0 -280
- package/apps/lib/components/Button.tsx +0 -325
- package/apps/lib/components/ButtonGroup.tsx +0 -190
- package/apps/lib/components/Calendar.tsx +0 -115
- package/apps/lib/components/Card.tsx +0 -95
- package/apps/lib/components/Checkbox.tsx +0 -42
- package/apps/lib/components/ColorPicker.tsx +0 -441
- package/apps/lib/components/ConclusionHeader.tsx +0 -148
- package/apps/lib/components/ContextMenu.tsx +0 -571
- package/apps/lib/components/CountBadge.tsx +0 -52
- package/apps/lib/components/DataTable.tsx +0 -213
- package/apps/lib/components/DataViews/badge.ts +0 -49
- package/apps/lib/components/DataViews/cell.tsx +0 -324
- package/apps/lib/components/DataViews/context.ts +0 -144
- package/apps/lib/components/DataViews/data-views.tsx +0 -395
- package/apps/lib/components/DataViews/filters/children.tsx +0 -98
- package/apps/lib/components/DataViews/filters/custom.tsx +0 -34
- package/apps/lib/components/DataViews/filters/filters.tsx +0 -157
- package/apps/lib/components/DataViews/filters/index.ts +0 -4
- package/apps/lib/components/DataViews/filters/labelled.tsx +0 -20
- package/apps/lib/components/DataViews/filters/presets.tsx +0 -65
- package/apps/lib/components/DataViews/filters/sync.tsx +0 -35
- package/apps/lib/components/DataViews/filters/values.ts +0 -173
- package/apps/lib/components/DataViews/header.tsx +0 -220
- package/apps/lib/components/DataViews/hooks/index.ts +0 -5
- package/apps/lib/components/DataViews/hooks/useActiveRow.ts +0 -22
- package/apps/lib/components/DataViews/hooks/useControllable.ts +0 -52
- package/apps/lib/components/DataViews/index.ts +0 -88
- package/apps/lib/components/DataViews/panel/columns.tsx +0 -153
- package/apps/lib/components/DataViews/panel/controls.tsx +0 -106
- package/apps/lib/components/DataViews/panel/index.ts +0 -3
- package/apps/lib/components/DataViews/panel/panel.tsx +0 -164
- package/apps/lib/components/DataViews/panel/saved-views.tsx +0 -67
- package/apps/lib/components/DataViews/panel/section.tsx +0 -81
- package/apps/lib/components/DataViews/panel/sort.tsx +0 -42
- package/apps/lib/components/DataViews/panel/tab.tsx +0 -31
- package/apps/lib/components/DataViews/slots.ts +0 -72
- package/apps/lib/components/DataViews/states.tsx +0 -73
- package/apps/lib/components/DataViews/types.ts +0 -510
- package/apps/lib/components/DataViews/views/board-view.tsx +0 -381
- package/apps/lib/components/DataViews/views/card-rows.tsx +0 -36
- package/apps/lib/components/DataViews/views/inbox-view.tsx +0 -260
- package/apps/lib/components/DataViews/views/pane-views.tsx +0 -196
- package/apps/lib/components/DataViews/views/table-view.tsx +0 -493
- package/apps/lib/components/DataViews/views/tree-view.tsx +0 -367
- package/apps/lib/components/DatePicker.tsx +0 -232
- package/apps/lib/components/Dialog.tsx +0 -116
- package/apps/lib/components/Divider.tsx +0 -28
- package/apps/lib/components/Drawer.tsx +0 -451
- package/apps/lib/components/DropdownMenu.tsx +0 -554
- package/apps/lib/components/FieldHint.tsx +0 -69
- package/apps/lib/components/Form.tsx +0 -182
- package/apps/lib/components/FormBuilder/context.ts +0 -85
- package/apps/lib/components/FormBuilder/field-kind.ts +0 -28
- package/apps/lib/components/FormBuilder/fields/ChoiceFields.tsx +0 -60
- package/apps/lib/components/FormBuilder/fields/ColorField.tsx +0 -59
- package/apps/lib/components/FormBuilder/fields/CustomField.tsx +0 -11
- package/apps/lib/components/FormBuilder/fields/DateField.tsx +0 -32
- package/apps/lib/components/FormBuilder/fields/FieldArray.tsx +0 -74
- package/apps/lib/components/FormBuilder/fields/FieldShell.tsx +0 -168
- package/apps/lib/components/FormBuilder/fields/FileField.tsx +0 -39
- package/apps/lib/components/FormBuilder/fields/OptionListFields.tsx +0 -132
- package/apps/lib/components/FormBuilder/fields/OtpField.tsx +0 -31
- package/apps/lib/components/FormBuilder/fields/PhoneField.tsx +0 -109
- package/apps/lib/components/FormBuilder/fields/RichTextEditorField.tsx +0 -31
- package/apps/lib/components/FormBuilder/fields/SelectField.tsx +0 -114
- package/apps/lib/components/FormBuilder/fields/SignatureField.tsx +0 -157
- package/apps/lib/components/FormBuilder/fields/SliderField.tsx +0 -67
- package/apps/lib/components/FormBuilder/fields/SwitchBoxField.tsx +0 -41
- package/apps/lib/components/FormBuilder/fields/TableField.tsx +0 -336
- package/apps/lib/components/FormBuilder/fields/TextField.tsx +0 -213
- package/apps/lib/components/FormBuilder/fields/TreeSelectField.tsx +0 -43
- package/apps/lib/components/FormBuilder/fields/countries.ts +0 -303
- package/apps/lib/components/FormBuilder/fields/index.ts +0 -25
- package/apps/lib/components/FormBuilder/form-builder.tsx +0 -198
- package/apps/lib/components/FormBuilder/index.ts +0 -31
- package/apps/lib/components/FormBuilder/numberFormat.ts +0 -16
- package/apps/lib/components/FormBuilder/submit.tsx +0 -67
- package/apps/lib/components/FormBuilder/types.ts +0 -316
- package/apps/lib/components/FormRenderer/FormDrawer.tsx +0 -250
- package/apps/lib/components/FormRenderer/detail.tsx +0 -256
- package/apps/lib/components/FormRenderer/form-renderer.tsx +0 -358
- package/apps/lib/components/FormRenderer/header.tsx +0 -88
- package/apps/lib/components/FormRenderer/index.ts +0 -17
- package/apps/lib/components/FormRenderer/notch-action.tsx +0 -64
- package/apps/lib/components/FormRenderer/section.tsx +0 -39
- package/apps/lib/components/FormRenderer/stepper.tsx +0 -393
- package/apps/lib/components/FormRenderer/types.ts +0 -115
- package/apps/lib/components/FormSummary.tsx +0 -282
- package/apps/lib/components/HeaderBar.tsx +0 -117
- package/apps/lib/components/ImageAttachment.tsx +0 -209
- package/apps/lib/components/InnerLabelField.tsx +0 -154
- package/apps/lib/components/Input.tsx +0 -224
- package/apps/lib/components/InputField.tsx +0 -147
- package/apps/lib/components/InputOTP.tsx +0 -84
- package/apps/lib/components/Label.tsx +0 -129
- package/apps/lib/components/LabelField.tsx +0 -76
- package/apps/lib/components/LabeledCheckBox.tsx +0 -51
- package/apps/lib/components/LabeledRadio.tsx +0 -51
- package/apps/lib/components/LinkButton.tsx +0 -94
- package/apps/lib/components/LoginButton.tsx +0 -51
- package/apps/lib/components/PasswordLevel.tsx +0 -58
- package/apps/lib/components/Popover.tsx +0 -312
- package/apps/lib/components/ProfileMenu.tsx +0 -85
- package/apps/lib/components/Radio.tsx +0 -59
- package/apps/lib/components/RadioCard.tsx +0 -50
- package/apps/lib/components/ScrollArea.tsx +0 -54
- package/apps/lib/components/SearchField.tsx +0 -62
- package/apps/lib/components/SearchableSelect.tsx +0 -318
- package/apps/lib/components/SearchableTable.tsx +0 -344
- package/apps/lib/components/SearchableTree.tsx +0 -485
- package/apps/lib/components/SearchableTreeDialog.tsx +0 -502
- package/apps/lib/components/SectionBlock.tsx +0 -168
- package/apps/lib/components/Select.tsx +0 -347
- package/apps/lib/components/SimpleSelect.tsx +0 -225
- package/apps/lib/components/Skeleton.tsx +0 -12
- package/apps/lib/components/SlideDatePicker.tsx +0 -255
- package/apps/lib/components/SpinLoading.tsx +0 -174
- package/apps/lib/components/Stepper.tsx +0 -480
- package/apps/lib/components/Switch.tsx +0 -82
- package/apps/lib/components/TabFormItem.tsx +0 -153
- package/apps/lib/components/TabSwitch.tsx +0 -172
- package/apps/lib/components/Table.tsx +0 -597
- package/apps/lib/components/TextEditor/ChartBlockTool.ts +0 -676
- package/apps/lib/components/TextEditor/RichTextField.tsx +0 -46
- package/apps/lib/components/TextEditor/TableDnDWrapper.ts +0 -462
- package/apps/lib/components/TextEditor/TextEditor.tsx +0 -1164
- package/apps/lib/components/TextEditor/TextEditorToolbar.tsx +0 -429
- package/apps/lib/components/TextEditor/editor-tools/AlignmentTune.ts +0 -70
- package/apps/lib/components/TextEditor/editor-tools/ColorInlineTool.ts +0 -50
- package/apps/lib/components/TextEditor/editor-tools/StrikethroughInlineTool.ts +0 -48
- package/apps/lib/components/TextEditor/editor-tools/inlineFormat.ts +0 -98
- package/apps/lib/components/TextEditor/editorjs.d.ts +0 -60
- package/apps/lib/components/TextEditor/index.ts +0 -7
- package/apps/lib/components/TextEditor/markdownParser.ts +0 -346
- package/apps/lib/components/Textarea.tsx +0 -117
- package/apps/lib/components/Timeline.tsx +0 -263
- package/apps/lib/components/Toast.tsx +0 -87
- package/apps/lib/components/Toggle.tsx +0 -125
- package/apps/lib/components/ToggleButton.tsx +0 -140
- package/apps/lib/components/Tooltip.tsx +0 -116
- package/apps/lib/components/TransparentLabel.tsx +0 -71
- package/apps/lib/components/TreeDropDown.tsx +0 -115
- package/apps/lib/components/TreeFolder/TreeFolder.tsx +0 -380
- package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +0 -75
- package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +0 -354
- package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +0 -60
- package/apps/lib/components/TreeFolder/icons.tsx +0 -60
- package/apps/lib/components/TreeFolder/index.ts +0 -24
- package/apps/lib/components/TreeFolder/treeFolderUtils.ts +0 -109
- package/apps/lib/components/TreeFolder/types.ts +0 -77
- package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +0 -118
- package/apps/lib/hooks/useActiveTreeItem.ts +0 -61
- package/apps/lib/hooks/useClickOutside.ts +0 -27
- package/apps/lib/hooks/useDragDrop.tsx +0 -365
- package/apps/lib/hooks/useHtmlDir.ts +0 -31
- package/apps/lib/hooks/useInfiniteScroll.ts +0 -108
- package/apps/lib/hooks/useIsMobile.ts +0 -21
- package/apps/lib/hooks/useResize.ts +0 -67
- package/apps/lib/hooks/useTagSelection.ts +0 -300
- package/apps/lib/layouts/CNLayout.tsx +0 -372
- package/apps/lib/layouts/DataViewCard.tsx +0 -62
- package/apps/lib/layouts/FieldSection.tsx +0 -91
- package/apps/lib/layouts/TreeSubLayout.tsx +0 -173
- package/apps/lib/providers/ThemeProvider.tsx +0 -84
- package/apps/lib/registry.json +0 -1217
- package/apps/lib/tsconfig.json +0 -9
- package/apps/lib/tsconfig.tsbuildinfo +0 -1
- package/apps/lib/utils/cn.ts +0 -6
- package/apps/lib/utils/color.ts +0 -175
- package/apps/lib/utils/dataViews/path.ts +0 -67
- package/apps/lib/utils/dataViews/query.ts +0 -73
- package/apps/lib/utils/dataViews/types.ts +0 -187
- package/apps/lib/utils/dateFormat.ts +0 -108
- package/apps/lib/utils/resize.ts +0 -31
- package/apps/lib/utils/scroller.ts +0 -26
- package/apps/lib/utils/types.ts +0 -16
- package/docs/BLOCKS.md +0 -129
- package/docs/CHANGELOG-1.1.16.md +0 -108
- package/docs/Cover.png +0 -0
- package/docs/README.md +0 -215
- package/docs/components/action-button.md +0 -638
- package/docs/components/actions-group.md +0 -708
- package/docs/components/alert-dialog.md +0 -920
- package/docs/components/avatar.md +0 -709
- package/docs/components/badge-field.md +0 -738
- package/docs/components/badge.md +0 -301
- package/docs/components/breadcrumb.md +0 -930
- package/docs/components/button-group.md +0 -650
- package/docs/components/button.md +0 -639
- package/docs/components/calendar.md +0 -555
- package/docs/components/card.md +0 -622
- package/docs/components/chart-block-tool.md +0 -129
- package/docs/components/checkbox.md +0 -699
- package/docs/components/cn-layout.md +0 -854
- package/docs/components/color-picker.md +0 -101
- package/docs/components/conclusion-header.md +0 -80
- package/docs/components/context-menu.md +0 -483
- package/docs/components/count-badge.md +0 -560
- package/docs/components/data-table.md +0 -854
- package/docs/components/data-views/backend-response.md +0 -324
- package/docs/components/data-views/examples/a11y-rtl.md +0 -250
- package/docs/components/data-views/examples/api-orders-route.md +0 -130
- package/docs/components/data-views/examples/fields.md +0 -362
- package/docs/components/data-views/examples/filters.md +0 -307
- package/docs/components/data-views/examples/inbox-routing.md +0 -218
- package/docs/components/data-views/examples/index.md +0 -29
- package/docs/components/data-views/examples/overview.md +0 -244
- package/docs/components/data-views/examples/panel.md +0 -212
- package/docs/components/data-views/examples/scale.md +0 -231
- package/docs/components/data-views/examples/server-side.md +0 -210
- package/docs/components/data-views/examples/state.md +0 -250
- package/docs/components/data-views/examples/tree-custom.md +0 -388
- package/docs/components/data-views/examples/view-registry.md +0 -313
- package/docs/components/data-views/examples/views.md +0 -534
- package/docs/components/data-views/guide.md +0 -405
- package/docs/components/data-views/index.md +0 -1521
- package/docs/components/data-views/migration.md +0 -81
- package/docs/components/date-picker.md +0 -857
- package/docs/components/dialog.md +0 -929
- package/docs/components/divider.md +0 -766
- package/docs/components/drawer.md +0 -654
- package/docs/components/dropdown-menu.md +0 -668
- package/docs/components/field-hint.md +0 -898
- package/docs/components/field-section.md +0 -781
- package/docs/components/form-builder.md +0 -284
- package/docs/components/form-renderer.md +0 -396
- package/docs/components/form-summary.md +0 -138
- package/docs/components/form.md +0 -785
- package/docs/components/header-bar.md +0 -188
- package/docs/components/image-attachment.md +0 -906
- package/docs/components/inner-label-field.md +0 -819
- package/docs/components/input-field.md +0 -623
- package/docs/components/input-otp.md +0 -756
- package/docs/components/input.md +0 -634
- package/docs/components/label-field.md +0 -770
- package/docs/components/label.md +0 -761
- package/docs/components/labeled-check-box.md +0 -642
- package/docs/components/labeled-radio.md +0 -796
- package/docs/components/link-button.md +0 -685
- package/docs/components/login-button.md +0 -872
- package/docs/components/password-level.md +0 -803
- package/docs/components/popover.md +0 -649
- package/docs/components/profile-menu.md +0 -656
- package/docs/components/radio-card.md +0 -801
- package/docs/components/radio.md +0 -735
- package/docs/components/scroll-area.md +0 -691
- package/docs/components/search-field.md +0 -702
- package/docs/components/searchable-select.md +0 -368
- package/docs/components/searchable-table.md +0 -438
- package/docs/components/searchable-tree-dialog.md +0 -190
- package/docs/components/searchable-tree.md +0 -200
- package/docs/components/section-block.md +0 -483
- package/docs/components/select.md +0 -709
- package/docs/components/simple-select.md +0 -741
- package/docs/components/skeleton.md +0 -706
- package/docs/components/slide-date-picker.md +0 -837
- package/docs/components/spin-loading.md +0 -696
- package/docs/components/stepper.md +0 -316
- package/docs/components/switch.md +0 -770
- package/docs/components/tab-form-item.md +0 -773
- package/docs/components/tab-switch.md +0 -170
- package/docs/components/table-dnd-wrapper.md +0 -107
- package/docs/components/table.md +0 -1088
- package/docs/components/text-editor.md +0 -735
- package/docs/components/textarea.md +0 -681
- package/docs/components/timeline.md +0 -254
- package/docs/components/toast.md +0 -773
- package/docs/components/toggle-button.md +0 -643
- package/docs/components/toggle.md +0 -882
- package/docs/components/tooltip.md +0 -513
- package/docs/components/transparent-label.md +0 -721
- package/docs/components/tree-drop-down.md +0 -740
- package/docs/components/tree-folder.md +0 -110
- package/docs/components/tree-sub-layout.md +0 -707
- package/docs/explanation/architecture.md +0 -54
- package/docs/explanation/design-system.md +0 -52
- package/docs/how-to/form-and-list-recipes.md +0 -386
- package/docs/how-to/forms-with-form-builder.md +0 -472
- package/docs/how-to/guides.md +0 -1027
- package/docs/migration/changelog.md +0 -60
- package/docs/migration/form-builder-2.5.2.md +0 -113
- package/docs/reference/cli.md +0 -112
- package/docs/reference/components.md +0 -572
- package/docs/reference/hooks.md +0 -1523
- package/docs/reference/providers.md +0 -866
- package/docs/reference/tailwind-plugins.md +0 -942
- package/docs/reference/theme.md +0 -85
- package/docs/reference/types.md +0 -1016
- package/docs/reference/utilities.md +0 -726
- package/docs/tutorials/building-first-form.md +0 -846
- package/docs/tutorials/component-composition.md +0 -882
- package/docs/tutorials/getting-started.md +0 -302
- package/docs/tutorials/theming-basics.md +0 -785
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: TabSwitch
|
|
3
|
-
version: 2.4.5
|
|
4
|
-
status: stable
|
|
5
|
-
category: components/navigation
|
|
6
|
-
tags: [tab-switch, segmented-control, view-switcher, toggle, list-cards, pills]
|
|
7
|
-
last-reviewed: 2026-06-15
|
|
8
|
-
bundle-size: 2.0kb
|
|
9
|
-
dependencies:
|
|
10
|
-
- "class-variance-authority": "^0.7.0"
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# TabSwitch
|
|
14
|
-
|
|
15
|
-
> A segmented control for picking one option from a small set — the classic List / Cards style pill switcher. The active option renders as a solid raised white pill; thin dividers sit between adjacent inactive options (never flanking the active pill). Controlled, generic over the option value, supports optional per-option icons, three sizes, and theme-aware track/labels. This is the switcher used in the DataViews header to flip between Table / Kanban / Inbox / Tree.
|
|
16
|
-
|
|
17
|
-
## Installation
|
|
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
|
-
|
|
22
|
-
```bash
|
|
23
|
-
npx torch-glare@latest init
|
|
24
|
-
npx torch-glare@latest add TabSwitch
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
`add` also copies any components, hooks, and utilities that `TabSwitch` depends on.
|
|
28
|
-
|
|
29
|
-
## Import
|
|
30
|
-
|
|
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";
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Quick Examples
|
|
38
|
-
|
|
39
|
-
### Basic Usage (List / Cards)
|
|
40
|
-
|
|
41
|
-
```typescript
|
|
42
|
-
import { TabSwitch } from "@/components/TabSwitch";
|
|
43
|
-
import { useState } from 'react'
|
|
44
|
-
|
|
45
|
-
function Example() {
|
|
46
|
-
const [view, setView] = useState('list')
|
|
47
|
-
|
|
48
|
-
return (
|
|
49
|
-
<TabSwitch
|
|
50
|
-
value={view}
|
|
51
|
-
onValueChange={setView}
|
|
52
|
-
options={[
|
|
53
|
-
{ value: 'list', label: 'List', icon: <i className="ri-layout-grid-line" /> },
|
|
54
|
-
{ value: 'cards', label: 'Cards', icon: <i className="ri-grid-fill" /> },
|
|
55
|
-
]}
|
|
56
|
-
/>
|
|
57
|
-
)
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Sizes
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
<TabSwitch size="S" value={view} onValueChange={setView} options={options} />
|
|
65
|
-
<TabSwitch size="M" value={view} onValueChange={setView} options={options} /> {/* default */}
|
|
66
|
-
<TabSwitch size="L" value={view} onValueChange={setView} options={options} />
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Icons Only
|
|
70
|
-
|
|
71
|
-
Omit `label` to render an icon-only switcher.
|
|
72
|
-
|
|
73
|
-
```typescript
|
|
74
|
-
<TabSwitch
|
|
75
|
-
value={view}
|
|
76
|
-
onValueChange={setView}
|
|
77
|
-
options={[
|
|
78
|
-
{ value: 'list', icon: <i className="ri-layout-grid-line" /> },
|
|
79
|
-
{ value: 'cards', icon: <i className="ri-grid-fill" /> },
|
|
80
|
-
{ value: 'board', icon: <i className="ri-layout-column-line" /> },
|
|
81
|
-
]}
|
|
82
|
-
/>
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
### On a dark surface
|
|
86
|
-
|
|
87
|
-
The active pill is always a solid white pill with dark text, so it stays visible on dark bars. The track and inactive labels follow the theme — pass `theme="dark"` (or render inside a `data-theme="dark"` scope) so they resolve dark-theme tokens. This is how the DataViews header uses it.
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
<div data-theme="dark" className="bg-black p-2">
|
|
91
|
-
<TabSwitch theme="dark" value={view} onValueChange={setView} options={options} />
|
|
92
|
-
</div>
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Disabled
|
|
96
|
-
|
|
97
|
-
```typescript
|
|
98
|
-
{/* whole control */}
|
|
99
|
-
<TabSwitch disabled value={view} onValueChange={setView} options={options} />
|
|
100
|
-
|
|
101
|
-
{/* a single option */}
|
|
102
|
-
<TabSwitch
|
|
103
|
-
value={view}
|
|
104
|
-
onValueChange={setView}
|
|
105
|
-
options={[
|
|
106
|
-
{ value: 'list', label: 'List' },
|
|
107
|
-
{ value: 'cards', label: 'Cards', disabled: true },
|
|
108
|
-
]}
|
|
109
|
-
/>
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
## API Reference
|
|
113
|
-
|
|
114
|
-
### TabSwitch
|
|
115
|
-
|
|
116
|
-
| Prop | Type | Default | Description |
|
|
117
|
-
|------|------|---------|-------------|
|
|
118
|
-
| `options` | `TabSwitchOption[]` | — (required) | The selectable options rendered as segments. |
|
|
119
|
-
| `value` | `string` | — | The currently selected option value (controlled). |
|
|
120
|
-
| `onValueChange` | `(value: string) => void` | — | Called with the option value when a segment is selected. |
|
|
121
|
-
| `size` | `'S' \| 'M' \| 'L'` | `'M'` | Size of the control. |
|
|
122
|
-
| `disabled` | `boolean` | `false` | Disables the whole control. |
|
|
123
|
-
| `theme` | `'dark' \| 'light' \| 'default'` | — | Applies a fixed theme to the track and inactive labels (the active pill stays white). |
|
|
124
|
-
| `className` | `string` | — | Additional classes merged onto the track. |
|
|
125
|
-
|
|
126
|
-
`TabSwitch` is generic over the option value: `TabSwitch<T extends string>` infers `T` from `options`, so `value` and `onValueChange` are typed to your union (e.g. `'list' | 'cards'`).
|
|
127
|
-
|
|
128
|
-
### TabSwitchOption
|
|
129
|
-
|
|
130
|
-
| Prop | Type | Default | Description |
|
|
131
|
-
|------|------|---------|-------------|
|
|
132
|
-
| `value` | `string` | — | Unique value for the option. |
|
|
133
|
-
| `label` | `ReactNode` | `undefined` | Text or node shown for the option. Omit for an icon-only segment. |
|
|
134
|
-
| `icon` | `ReactNode` | `undefined` | Optional leading icon rendered before the label. |
|
|
135
|
-
| `disabled` | `boolean` | `false` | Disables this individual option. |
|
|
136
|
-
|
|
137
|
-
## Accessibility
|
|
138
|
-
|
|
139
|
-
- The track is a `role="tablist"`; each option is a `role="tab"` with `aria-selected` reflecting the active state.
|
|
140
|
-
- Options are real `<button>` elements, so they are keyboard-focusable and activate on Enter/Space.
|
|
141
|
-
|
|
142
|
-
## Notes
|
|
143
|
-
|
|
144
|
-
- The active pill is intentionally a solid white pill with dark text in every theme (not derived from the per-theme selected-tab tokens), so it reads correctly on the always-dark DataViews header as well as on light surfaces.
|
|
145
|
-
- TabSwitch is a controlled component — always pass both `value` and `onValueChange`.
|
|
146
|
-
|
|
147
|
-
## TypeScript
|
|
148
|
-
|
|
149
|
-
```typescript
|
|
150
|
-
interface TabSwitchOption<T extends string = string> {
|
|
151
|
-
value: T
|
|
152
|
-
label?: React.ReactNode
|
|
153
|
-
icon?: React.ReactNode
|
|
154
|
-
disabled?: boolean
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
interface TabSwitchProps<T extends string = string>
|
|
158
|
-
extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
159
|
-
options: TabSwitchOption<T>[]
|
|
160
|
-
value: T
|
|
161
|
-
onValueChange: (value: T) => void
|
|
162
|
-
size?: 'S' | 'M' | 'L'
|
|
163
|
-
theme?: 'dark' | 'light' | 'default'
|
|
164
|
-
disabled?: boolean
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
declare function TabSwitch<T extends string = string>(
|
|
168
|
-
props: TabSwitchProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> }
|
|
169
|
-
): React.ReactElement
|
|
170
|
-
```
|
|
@@ -1,107 +0,0 @@
|
|
|
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).
|