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
|
@@ -11,15 +11,22 @@ keywords: [table, datatable, grid, sorting, selection, drag-drop, reorder, pagin
|
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
|
+
TORCH Glare is a copy-in library: the CLI copies this component's source into your project
|
|
15
|
+
(you do **not** install it from the npm package). Run `init` once, then `add`:
|
|
16
|
+
|
|
14
17
|
```bash
|
|
15
|
-
|
|
18
|
+
npx torch-glare@latest init
|
|
19
|
+
npx torch-glare@latest add DataTable
|
|
16
20
|
```
|
|
17
21
|
|
|
22
|
+
`add` also copies any components, hooks, and utilities that `DataTable` depends on.
|
|
23
|
+
|
|
18
24
|
## Import
|
|
19
25
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { DataTable } from "@/components/DataTable";
|
|
23
30
|
```
|
|
24
31
|
|
|
25
32
|
## Quick Examples
|
|
@@ -27,7 +34,7 @@ import { ColumnDef } from '@tanstack/react-table'
|
|
|
27
34
|
### Basic Usage
|
|
28
35
|
|
|
29
36
|
```typescript
|
|
30
|
-
import { DataTable } from
|
|
37
|
+
import { DataTable } from "@/components/DataTable";
|
|
31
38
|
import { ColumnDef } from '@tanstack/react-table'
|
|
32
39
|
|
|
33
40
|
interface User {
|
|
@@ -66,7 +73,7 @@ function Example() {
|
|
|
66
73
|
### With Row Reordering
|
|
67
74
|
|
|
68
75
|
```typescript
|
|
69
|
-
import { DataTable } from
|
|
76
|
+
import { DataTable } from "@/components/DataTable";
|
|
70
77
|
import { useState } from 'react'
|
|
71
78
|
|
|
72
79
|
function ReorderableTable() {
|
|
@@ -97,8 +104,8 @@ function ReorderableTable() {
|
|
|
97
104
|
### With Custom Cell Rendering
|
|
98
105
|
|
|
99
106
|
```typescript
|
|
100
|
-
import { DataTable } from
|
|
101
|
-
import { Badge } from
|
|
107
|
+
import { DataTable } from "@/components/DataTable";
|
|
108
|
+
import { Badge } from "@/components/Badge";
|
|
102
109
|
import { ColumnDef } from '@tanstack/react-table'
|
|
103
110
|
|
|
104
111
|
interface Task {
|
|
@@ -124,7 +131,7 @@ const columns: ColumnDef<Task>[] = [
|
|
|
124
131
|
completed: 'green',
|
|
125
132
|
}[status]
|
|
126
133
|
|
|
127
|
-
return <Badge
|
|
134
|
+
return <Badge color={variant} label={status} />
|
|
128
135
|
},
|
|
129
136
|
},
|
|
130
137
|
{
|
|
@@ -147,7 +154,7 @@ function TaskTable() {
|
|
|
147
154
|
### With Sortable Columns
|
|
148
155
|
|
|
149
156
|
```typescript
|
|
150
|
-
import { DataTable } from
|
|
157
|
+
import { DataTable } from "@/components/DataTable";
|
|
151
158
|
import { ColumnDef } from '@tanstack/react-table'
|
|
152
159
|
|
|
153
160
|
interface Product {
|
|
@@ -190,8 +197,8 @@ function ProductTable() {
|
|
|
190
197
|
### With Actions Column
|
|
191
198
|
|
|
192
199
|
```typescript
|
|
193
|
-
import { DataTable } from
|
|
194
|
-
import { ActionButton } from
|
|
200
|
+
import { DataTable } from "@/components/DataTable";
|
|
201
|
+
import { ActionButton } from "@/components/ActionButton";
|
|
195
202
|
import { ColumnDef } from '@tanstack/react-table'
|
|
196
203
|
|
|
197
204
|
interface User {
|
|
@@ -246,7 +253,7 @@ function UserTable() {
|
|
|
246
253
|
### With Selection Handling
|
|
247
254
|
|
|
248
255
|
```typescript
|
|
249
|
-
import { DataTable } from
|
|
256
|
+
import { DataTable } from "@/components/DataTable";
|
|
250
257
|
import { useState } from 'react'
|
|
251
258
|
|
|
252
259
|
function SelectableTable() {
|
|
@@ -280,7 +287,7 @@ function SelectableTable() {
|
|
|
280
287
|
### Dark Theme
|
|
281
288
|
|
|
282
289
|
```typescript
|
|
283
|
-
import { DataTable } from
|
|
290
|
+
import { DataTable } from "@/components/DataTable";
|
|
284
291
|
|
|
285
292
|
function DarkTable() {
|
|
286
293
|
const columns = [
|
|
@@ -300,7 +307,7 @@ function DarkTable() {
|
|
|
300
307
|
### Complex Data with Nested Objects
|
|
301
308
|
|
|
302
309
|
```typescript
|
|
303
|
-
import { DataTable } from
|
|
310
|
+
import { DataTable } from "@/components/DataTable";
|
|
304
311
|
import { ColumnDef } from '@tanstack/react-table'
|
|
305
312
|
|
|
306
313
|
interface Order {
|
|
@@ -363,7 +370,7 @@ function OrderTable() {
|
|
|
363
370
|
### Empty State
|
|
364
371
|
|
|
365
372
|
```typescript
|
|
366
|
-
import { DataTable } from
|
|
373
|
+
import { DataTable } from "@/components/DataTable";
|
|
367
374
|
|
|
368
375
|
function EmptyTable() {
|
|
369
376
|
const columns = [
|
|
@@ -468,7 +475,7 @@ DataTable<TData extends { id: string | number }, TValue>
|
|
|
468
475
|
### Controlled Row Selection
|
|
469
476
|
|
|
470
477
|
```typescript
|
|
471
|
-
import { DataTable } from
|
|
478
|
+
import { DataTable } from "@/components/DataTable";
|
|
472
479
|
import { useState } from 'react'
|
|
473
480
|
|
|
474
481
|
function ControlledSelectionTable() {
|
|
@@ -495,8 +502,8 @@ function ControlledSelectionTable() {
|
|
|
495
502
|
### With Search/Filter
|
|
496
503
|
|
|
497
504
|
```typescript
|
|
498
|
-
import { DataTable } from
|
|
499
|
-
import { Input } from
|
|
505
|
+
import { DataTable } from "@/components/DataTable";
|
|
506
|
+
import { Input } from "@/components/Input";
|
|
500
507
|
import { useState, useMemo } from 'react'
|
|
501
508
|
|
|
502
509
|
function SearchableTable() {
|
|
@@ -536,7 +543,7 @@ function SearchableTable() {
|
|
|
536
543
|
### Persisting Row Order
|
|
537
544
|
|
|
538
545
|
```typescript
|
|
539
|
-
import { DataTable } from
|
|
546
|
+
import { DataTable } from "@/components/DataTable";
|
|
540
547
|
import { useState, useEffect } from 'react'
|
|
541
548
|
|
|
542
549
|
function PersistentOrderTable() {
|
|
@@ -569,16 +576,21 @@ function PersistentOrderTable() {
|
|
|
569
576
|
|
|
570
577
|
## Features
|
|
571
578
|
|
|
572
|
-
|
|
579
|
+
The component's props are `columns`, `data`, `theme`, and `onRowReorder` — see the API
|
|
580
|
+
Reference. Its built-in, rendered capabilities are:
|
|
581
|
+
|
|
582
|
+
- **Row Selection**: Multi-row selection checkboxes (select all / select individual) are
|
|
583
|
+
rendered and tracked internally. Selection state persists through reordering. Note: the
|
|
584
|
+
component does not expose a selection-change prop — selection is internal visual state.
|
|
585
|
+
- **Drag & Drop**: Reorder rows by dragging; `onRowReorder` returns the new data array
|
|
586
|
+
(keyboard drag supported via dnd-kit).
|
|
587
|
+
- **Column Sorting**: Click headers to sort ascending/descending.
|
|
588
|
+
- **Custom Cells**: Full control over cell rendering via each column's `cell`.
|
|
589
|
+
- **Type Safety**: Full TypeScript support with generics.
|
|
573
590
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
- **Pagination**: Built-in pagination support (via TanStack Table)
|
|
578
|
-
- **Filtering**: Client-side filtering capabilities
|
|
579
|
-
- **Custom Cells**: Full control over cell rendering
|
|
580
|
-
- **Keyboard Navigation**: Drag-and-drop with keyboard support
|
|
581
|
-
- **Type Safety**: Full TypeScript support with generics
|
|
591
|
+
> The TanStack pagination and filtering **row models** are enabled internally, but the
|
|
592
|
+
> component renders **no** pagination or filter controls and exposes no page/filter props.
|
|
593
|
+
> To paginate or filter, wrap the data yourself or compose your own controls around it.
|
|
582
594
|
|
|
583
595
|
### Drag-and-Drop Behavior
|
|
584
596
|
|
|
@@ -601,7 +613,7 @@ function PersistentOrderTable() {
|
|
|
601
613
|
|
|
602
614
|
```typescript
|
|
603
615
|
import { render, screen, fireEvent } from '@testing-library/react'
|
|
604
|
-
import { DataTable } from
|
|
616
|
+
import { DataTable } from "@/components/DataTable";
|
|
605
617
|
import { ColumnDef } from '@tanstack/react-table'
|
|
606
618
|
|
|
607
619
|
const mockData = [
|
|
@@ -651,7 +663,7 @@ describe('DataTable', () => {
|
|
|
651
663
|
|
|
652
664
|
```typescript
|
|
653
665
|
import { render, screen, fireEvent } from '@testing-library/react'
|
|
654
|
-
import { DataTable } from
|
|
666
|
+
import { DataTable } from "@/components/DataTable";
|
|
655
667
|
|
|
656
668
|
test('row selection works correctly', () => {
|
|
657
669
|
const columns = [{ accessorKey: 'name', header: 'Name' }]
|
|
@@ -767,7 +779,7 @@ const columns: ColumnDef<User>[] = [
|
|
|
767
779
|
|
|
768
780
|
```diff
|
|
769
781
|
- import { DataGrid } from '@mui/x-data-grid'
|
|
770
|
-
+ import { DataTable } from
|
|
782
|
+
+ import { DataTable } from "@/components/DataTable";
|
|
771
783
|
+ import { ColumnDef } from '@tanstack/react-table'
|
|
772
784
|
|
|
773
785
|
- <DataGrid rows={data} columns={columns} />
|
|
@@ -778,7 +790,7 @@ const columns: ColumnDef<User>[] = [
|
|
|
778
790
|
|
|
779
791
|
```diff
|
|
780
792
|
- import { useTable } from 'react-table'
|
|
781
|
-
+ import { DataTable } from
|
|
793
|
+
+ import { DataTable } from "@/components/DataTable";
|
|
782
794
|
+ import { ColumnDef } from '@tanstack/react-table'
|
|
783
795
|
|
|
784
796
|
- const { getTableProps, rows } = useTable({ columns, data })
|
|
@@ -13,16 +13,22 @@ keywords: [data-views, config panel, config-panel, settings panel, saved view, s
|
|
|
13
13
|
|
|
14
14
|
## Installation
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
TORCH Glare is a copy-in library: the CLI copies this component's source into your project
|
|
17
|
+
(you do **not** install it from the npm package). Run `init` once, then `add`:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx torch-glare@latest init
|
|
21
|
+
npx torch-glare@latest add DataViewsConfigPanel
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
`add` also copies any components, hooks, and utilities that `DataViewsConfigPanel` depends on.
|
|
20
25
|
|
|
21
26
|
## Import
|
|
22
27
|
|
|
28
|
+
Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
|
|
29
|
+
|
|
23
30
|
```tsx
|
|
24
|
-
import { DataViewsConfigPanel } from "
|
|
25
|
-
import type { DataViewsConfigPanelProps } from "torch-glare"
|
|
31
|
+
import { DataViewsConfigPanel } from "@/components/DataViewsConfigPanel";
|
|
26
32
|
```
|
|
27
33
|
|
|
28
34
|
## When to use it directly
|
|
@@ -36,11 +42,9 @@ import type { DataViewsConfigPanelProps } from "torch-glare"
|
|
|
36
42
|
## Standalone Example (composable mode)
|
|
37
43
|
|
|
38
44
|
```tsx
|
|
39
|
-
import {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
useDataViewsState,
|
|
43
|
-
} from "torch-glare"
|
|
45
|
+
import { DataViewsConfigPanel } from "@/components/DataViewsConfigPanel";
|
|
46
|
+
import { TableView } from "@/components/TableView";
|
|
47
|
+
import { useDataViewsState } from "@/hooks/useDataViewsState";
|
|
44
48
|
import { useState } from "react"
|
|
45
49
|
|
|
46
50
|
function CustomScreen({ data, fields }) {
|
|
@@ -11,28 +11,22 @@ keywords: [data-views, layout, table, kanban, inbox, tree, multi-view, filter, s
|
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
|
+
TORCH Glare is a copy-in library: the CLI copies this component's source into your project
|
|
15
|
+
(you do **not** install it from the npm package). Run `init` once, then `add`:
|
|
16
|
+
|
|
14
17
|
```bash
|
|
15
|
-
npx torch-glare@latest
|
|
18
|
+
npx torch-glare@latest init
|
|
19
|
+
npx torch-glare@latest add DataViewsLayout
|
|
16
20
|
```
|
|
17
21
|
|
|
18
|
-
|
|
19
|
-
the `DataViewCard` layout, the `useDataViewsState` hook, the `dataViews` utils,
|
|
20
|
-
and the `TreeFolder` component — plus the 3rd-party deps it uses
|
|
21
|
-
(`@radix-ui/react-slider`, `react-day-picker`, `lucide-react`, `vaul`).
|
|
22
|
-
|
|
23
|
-
> **Badge version:** DataViews uses the current Badge API
|
|
24
|
-
> (`color` / `badgeStyle` / `showIcon`). If your project vendored an older
|
|
25
|
-
> `Badge.tsx` (with `variant` / `isSelected`), refresh it with
|
|
26
|
-
> `npx torch-glare@latest add Badge --force` and migrate call sites
|
|
27
|
-
> (`variant=` → `color=`, `isSelected`+`onUnselect` → `isClosable`+`onClose`).
|
|
28
|
-
> The Badge also needs `mapping-color-system-v4` tokens
|
|
29
|
-
> (`--background-presentation-badge-{color}-{subtle|solid}`) in your CSS.
|
|
22
|
+
`add` also copies any components, hooks, and utilities that `DataViewsLayout` depends on.
|
|
30
23
|
|
|
31
24
|
## Import
|
|
32
25
|
|
|
26
|
+
Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
|
|
27
|
+
|
|
33
28
|
```tsx
|
|
34
|
-
import { DataViewsLayout } from "
|
|
35
|
-
import type { FieldConfig, ViewVisibility } from "torch-glare"
|
|
29
|
+
import { DataViewsLayout } from "@/components/DataViewsLayout";
|
|
36
30
|
```
|
|
37
31
|
|
|
38
32
|
## Quick Examples
|
|
@@ -247,7 +241,10 @@ passes `savedViews` to `DataViewsLayout` expecting it to work.
|
|
|
247
241
|
When you want a custom layout (e.g. Table on the left, Kanban on the right), bypass `DataViewsLayout` and compose the views directly.
|
|
248
242
|
|
|
249
243
|
```tsx
|
|
250
|
-
import {
|
|
244
|
+
import { FilterPanel } from "@/components/FilterPanel";
|
|
245
|
+
import { KanbanView } from "@/components/KanbanView";
|
|
246
|
+
import { TableView } from "@/components/TableView";
|
|
247
|
+
import { useDataViewsState } from "@/hooks/useDataViewsState";
|
|
251
248
|
|
|
252
249
|
function CustomScreen({ data, fields }: Props) {
|
|
253
250
|
const state = useDataViewsState({ data, fields })
|
|
@@ -11,15 +11,22 @@ keywords: [date-picker, calendar, time, datetime, input, popover]
|
|
|
11
11
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
|
+
TORCH Glare is a copy-in library: the CLI copies this component's source into your project
|
|
15
|
+
(you do **not** install it from the npm package). Run `init` once, then `add`:
|
|
16
|
+
|
|
14
17
|
```bash
|
|
15
|
-
|
|
18
|
+
npx torch-glare@latest init
|
|
19
|
+
npx torch-glare@latest add DatePicker
|
|
16
20
|
```
|
|
17
21
|
|
|
22
|
+
`add` also copies any components, hooks, and utilities that `DatePicker` depends on.
|
|
23
|
+
|
|
18
24
|
## Import
|
|
19
25
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
23
30
|
```
|
|
24
31
|
|
|
25
32
|
## Quick Examples
|
|
@@ -27,7 +34,7 @@ import type { DatePickerProps } from '@torch-ui/components'
|
|
|
27
34
|
### Basic Usage
|
|
28
35
|
|
|
29
36
|
```typescript
|
|
30
|
-
import { DatePicker } from
|
|
37
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
31
38
|
import { useState } from 'react'
|
|
32
39
|
|
|
33
40
|
function Example() {
|
|
@@ -46,7 +53,7 @@ function Example() {
|
|
|
46
53
|
### With Time Picker
|
|
47
54
|
|
|
48
55
|
```typescript
|
|
49
|
-
import { DatePicker } from
|
|
56
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
50
57
|
import { useState } from 'react'
|
|
51
58
|
|
|
52
59
|
function DateTimePicker() {
|
|
@@ -66,7 +73,7 @@ function DateTimePicker() {
|
|
|
66
73
|
### Range Selection
|
|
67
74
|
|
|
68
75
|
```typescript
|
|
69
|
-
import { DatePicker } from
|
|
76
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
70
77
|
import { useState } from 'react'
|
|
71
78
|
import { DateRange } from 'react-day-picker'
|
|
72
79
|
|
|
@@ -91,7 +98,7 @@ function RangePicker() {
|
|
|
91
98
|
### Multiple Date Selection
|
|
92
99
|
|
|
93
100
|
```typescript
|
|
94
|
-
import { DatePicker } from
|
|
101
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
95
102
|
import { useState } from 'react'
|
|
96
103
|
|
|
97
104
|
function MultipleDates() {
|
|
@@ -111,7 +118,7 @@ function MultipleDates() {
|
|
|
111
118
|
### Custom Date Format
|
|
112
119
|
|
|
113
120
|
```typescript
|
|
114
|
-
import { DatePicker } from
|
|
121
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
115
122
|
|
|
116
123
|
function CustomFormat() {
|
|
117
124
|
const [date, setDate] = useState<Date>(new Date())
|
|
@@ -129,8 +136,8 @@ function CustomFormat() {
|
|
|
129
136
|
### Custom Trigger Element
|
|
130
137
|
|
|
131
138
|
```typescript
|
|
132
|
-
import { DatePicker } from
|
|
133
|
-
import { Button } from
|
|
139
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
140
|
+
import { Button } from "@/components/Button";
|
|
134
141
|
|
|
135
142
|
function CustomTrigger() {
|
|
136
143
|
const [date, setDate] = useState<Date>(new Date())
|
|
@@ -140,7 +147,7 @@ function CustomTrigger() {
|
|
|
140
147
|
value={date}
|
|
141
148
|
onChange={(e) => setDate(e.target.value)}
|
|
142
149
|
>
|
|
143
|
-
<Button variant="
|
|
150
|
+
<Button variant="BluSecStyle">
|
|
144
151
|
<i className="ri-calendar-line" />
|
|
145
152
|
Select Date
|
|
146
153
|
</Button>
|
|
@@ -152,8 +159,8 @@ function CustomTrigger() {
|
|
|
152
159
|
### With Controlled Input
|
|
153
160
|
|
|
154
161
|
```typescript
|
|
155
|
-
import { DatePicker } from
|
|
156
|
-
import { InputField } from
|
|
162
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
163
|
+
import { InputField } from "@/components/InputField";
|
|
157
164
|
import { useState } from 'react'
|
|
158
165
|
|
|
159
166
|
function ControlledInput() {
|
|
@@ -176,7 +183,7 @@ function ControlledInput() {
|
|
|
176
183
|
### Date Restrictions
|
|
177
184
|
|
|
178
185
|
```typescript
|
|
179
|
-
import { DatePicker } from
|
|
186
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
180
187
|
|
|
181
188
|
function RestrictedDates() {
|
|
182
189
|
const [date, setDate] = useState<Date>()
|
|
@@ -201,7 +208,7 @@ function RestrictedDates() {
|
|
|
201
208
|
### Booking System
|
|
202
209
|
|
|
203
210
|
```typescript
|
|
204
|
-
import { DatePicker } from
|
|
211
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
205
212
|
import { useState } from 'react'
|
|
206
213
|
import { DateRange } from 'react-day-picker'
|
|
207
214
|
|
|
@@ -243,7 +250,7 @@ function BookingPicker() {
|
|
|
243
250
|
### Deadline Picker with Time
|
|
244
251
|
|
|
245
252
|
```typescript
|
|
246
|
-
import { DatePicker } from
|
|
253
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
247
254
|
import { useState } from 'react'
|
|
248
255
|
|
|
249
256
|
function DeadlinePicker() {
|
|
@@ -356,7 +363,7 @@ type RangeDatePicker = DatePickerProps & {
|
|
|
356
363
|
### Event Scheduler
|
|
357
364
|
|
|
358
365
|
```typescript
|
|
359
|
-
import { DatePicker } from
|
|
366
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
360
367
|
import { useState } from 'react'
|
|
361
368
|
|
|
362
369
|
function EventScheduler() {
|
|
@@ -399,7 +406,7 @@ function EventScheduler() {
|
|
|
399
406
|
### Birthday Picker
|
|
400
407
|
|
|
401
408
|
```typescript
|
|
402
|
-
import { DatePicker } from
|
|
409
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
403
410
|
import { useState } from 'react'
|
|
404
411
|
|
|
405
412
|
function BirthdayPicker() {
|
|
@@ -431,7 +438,7 @@ function BirthdayPicker() {
|
|
|
431
438
|
### Work Schedule Picker
|
|
432
439
|
|
|
433
440
|
```typescript
|
|
434
|
-
import { DatePicker } from
|
|
441
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
435
442
|
import { useState } from 'react'
|
|
436
443
|
|
|
437
444
|
function WorkSchedule() {
|
|
@@ -462,7 +469,7 @@ function WorkSchedule() {
|
|
|
462
469
|
|
|
463
470
|
```typescript
|
|
464
471
|
import { render, screen, fireEvent, waitFor } from '@testing-library/react'
|
|
465
|
-
import { DatePicker } from
|
|
472
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
466
473
|
import userEvent from '@testing-library/user-event'
|
|
467
474
|
|
|
468
475
|
describe('DatePicker', () => {
|
|
@@ -753,7 +760,7 @@ Reverse-engineer the implementation from the call sites in `DatePicker.tsx` unti
|
|
|
753
760
|
### With Form Libraries
|
|
754
761
|
|
|
755
762
|
```typescript
|
|
756
|
-
import { DatePicker } from
|
|
763
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
757
764
|
import { useForm, Controller } from 'react-hook-form'
|
|
758
765
|
|
|
759
766
|
function FormExample() {
|
|
@@ -788,7 +795,7 @@ function FormExample() {
|
|
|
788
795
|
### With State Management
|
|
789
796
|
|
|
790
797
|
```typescript
|
|
791
|
-
import { DatePicker } from
|
|
798
|
+
import { DatePicker } from "@/components/DatePicker";
|
|
792
799
|
import { useStore } from './store'
|
|
793
800
|
|
|
794
801
|
function DatePickerWithStore() {
|