torch-glare 2.3.0 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/apps/lib/components/ActionButton.tsx +7 -12
- package/apps/lib/components/ActionsGroup.tsx +4 -15
- package/apps/lib/components/AlertDialog.tsx +173 -191
- package/apps/lib/components/Avatar.tsx +13 -16
- package/apps/lib/components/Badge.tsx +7 -3
- package/apps/lib/components/BadgeField.tsx +76 -71
- package/apps/lib/components/Breadcrumb.tsx +49 -85
- package/apps/lib/components/Button.tsx +20 -19
- package/apps/lib/components/ButtonGroup.tsx +31 -41
- package/apps/lib/components/Calendar.tsx +51 -29
- package/apps/lib/components/Card.tsx +2 -13
- package/apps/lib/components/ChartBlockTool.ts +17 -52
- package/apps/lib/components/Checkbox.tsx +9 -16
- package/apps/lib/components/ContextMenu.tsx +110 -106
- package/apps/lib/components/CountBadge.tsx +4 -6
- package/apps/lib/components/DataTable.tsx +196 -216
- package/apps/lib/components/DataViews/DataViewRadio.tsx +10 -8
- package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +21 -55
- package/apps/lib/components/DataViews/DataViewsHeader.tsx +1 -3
- package/apps/lib/components/DataViews/DataViewsLayout.tsx +5 -12
- package/apps/lib/components/DataViews/FilterPanel.tsx +173 -150
- package/apps/lib/components/DataViews/HeaderSearch.tsx +1 -5
- package/apps/lib/components/DataViews/InboxView.tsx +22 -68
- package/apps/lib/components/DataViews/InboxViewCard.tsx +68 -77
- package/apps/lib/components/DataViews/KanbanView.tsx +8 -25
- package/apps/lib/components/DataViews/PanelControls.tsx +3 -13
- package/apps/lib/components/DataViews/SettingsPanel.tsx +83 -89
- package/apps/lib/components/DataViews/TableView.tsx +8 -28
- package/apps/lib/components/DataViews/TreeView.tsx +12 -40
- package/apps/lib/components/DataViews/badgeAdapter.ts +32 -28
- package/apps/lib/components/DataViews/fieldRenderers.tsx +106 -141
- package/apps/lib/components/DataViews/filters/DatePickerRangeFilter.tsx +87 -0
- package/apps/lib/components/DataViews/filters/DateRangePopover.tsx +39 -32
- package/apps/lib/components/DataViews/filters/PresetChips.tsx +15 -15
- package/apps/lib/components/DataViews/filters/RangeSliderWithInputs.tsx +69 -58
- package/apps/lib/components/DataViews/index.ts +26 -26
- package/apps/lib/components/DataViews/tree/TreeDrawer.tsx +12 -16
- package/apps/lib/components/DataViews/tree/TreeSidebar.tsx +28 -31
- package/apps/lib/components/DataViews/types.ts +111 -114
- package/apps/lib/components/DatePicker.tsx +198 -191
- package/apps/lib/components/Dialog.tsx +92 -105
- package/apps/lib/components/Divider.tsx +21 -24
- package/apps/lib/components/Drawer.tsx +79 -139
- package/apps/lib/components/DropdownMenu.tsx +144 -181
- package/apps/lib/components/FieldHint.tsx +4 -11
- package/apps/lib/components/Form.tsx +146 -155
- package/apps/lib/components/FormStepper.tsx +9 -39
- package/apps/lib/components/HeaderBar.tsx +119 -0
- package/apps/lib/components/ImageAttachment.tsx +111 -73
- package/apps/lib/components/InnerLabelField.tsx +20 -16
- package/apps/lib/components/Input.tsx +171 -172
- package/apps/lib/components/InputField.tsx +44 -45
- package/apps/lib/components/InputOTP.tsx +68 -69
- package/apps/lib/components/Label.tsx +31 -35
- package/apps/lib/components/LabelField.tsx +4 -5
- package/apps/lib/components/LabeledCheckBox.tsx +8 -12
- package/apps/lib/components/LabeledRadio.tsx +7 -5
- package/apps/lib/components/LinkButton.tsx +2 -9
- package/apps/lib/components/LoginButton.tsx +4 -9
- package/apps/lib/components/PasswordLevel.tsx +5 -5
- package/apps/lib/components/Popover.tsx +15 -33
- package/apps/lib/components/ProfileMenu.tsx +67 -72
- package/apps/lib/components/Radio.tsx +1 -5
- package/apps/lib/components/RadioCard.tsx +9 -28
- package/apps/lib/components/ScrollArea.tsx +45 -43
- package/apps/lib/components/SearchField.tsx +49 -39
- package/apps/lib/components/SearchableSelect.tsx +46 -52
- package/apps/lib/components/SearchableTable.tsx +199 -219
- package/apps/lib/components/SearchableTree.tsx +469 -0
- package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
- package/apps/lib/components/SectionBlock.tsx +4 -16
- package/apps/lib/components/Select.tsx +53 -80
- package/apps/lib/components/SimpleSelect.tsx +196 -187
- package/apps/lib/components/Skeleton.tsx +9 -12
- package/apps/lib/components/SlideDatePicker.tsx +215 -166
- package/apps/lib/components/SpinLoading.tsx +33 -49
- package/apps/lib/components/Stepper.tsx +13 -56
- package/apps/lib/components/Switch.tsx +8 -10
- package/apps/lib/components/TabFormItem.tsx +3 -12
- package/apps/lib/components/TabSwitch.tsx +7 -34
- package/apps/lib/components/Table.tsx +60 -75
- package/apps/lib/components/TableDnDWrapper.ts +15 -48
- package/apps/lib/components/TextEditor.tsx +93 -104
- package/apps/lib/components/Textarea.tsx +8 -12
- package/apps/lib/components/Timeline.tsx +21 -41
- package/apps/lib/components/Toast.tsx +83 -83
- package/apps/lib/components/Toggle.tsx +112 -114
- package/apps/lib/components/ToggleButton.tsx +1 -1
- package/apps/lib/components/Tooltip.tsx +24 -19
- package/apps/lib/components/TransparentLabel.tsx +61 -62
- package/apps/lib/components/TreeDropDown.tsx +86 -52
- package/apps/lib/components/TreeFolder/TreeFolder.tsx +15 -48
- package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +16 -21
- package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +9 -20
- package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +3 -3
- package/apps/lib/components/TreeFolder/icons.tsx +14 -17
- package/apps/lib/components/TreeFolder/index.ts +15 -8
- package/apps/lib/components/TreeFolder/treeFolderUtils.ts +47 -52
- package/apps/lib/components/TreeFolder/types.ts +32 -32
- package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +117 -123
- package/apps/lib/hooks/useActiveTreeItem.ts +52 -55
- package/apps/lib/hooks/useClickOutside.ts +21 -20
- package/apps/lib/hooks/useDataViewsState.ts +86 -80
- package/apps/lib/hooks/useIsMobile.ts +12 -12
- package/apps/lib/hooks/useResize.ts +54 -65
- package/apps/lib/hooks/useTagSelection.ts +201 -201
- package/apps/lib/layouts/CNLayout.tsx +181 -140
- package/apps/lib/layouts/DataViewCard.tsx +4 -18
- package/apps/lib/layouts/FieldSection.tsx +2 -6
- package/apps/lib/layouts/TreeSubLayout.tsx +24 -38
- package/apps/lib/providers/ThemeProvider.tsx +8 -23
- package/apps/lib/registry.json +1004 -0
- package/apps/lib/tsconfig.json +9 -0
- package/apps/lib/utils/cn.ts +1 -1
- package/apps/lib/utils/dataViews/columnUtils.ts +46 -44
- package/apps/lib/utils/dataViews/fieldUtils.ts +70 -71
- package/apps/lib/utils/dataViews/nestedDataUtils.tsx +129 -122
- package/apps/lib/utils/dataViews/pathUtils.ts +74 -67
- package/apps/lib/utils/dataViews/rangeUtils.ts +121 -112
- package/apps/lib/utils/dataViews/treeUtils.ts +204 -211
- package/apps/lib/utils/dateFormat.ts +64 -54
- package/apps/lib/utils/markdownParser.ts +2 -7
- package/apps/lib/utils/resize.ts +21 -25
- package/apps/lib/utils/types.ts +13 -13
- package/dist/bin/index.js +8 -2
- package/dist/bin/index.js.map +1 -1
- package/dist/src/shared/getAvailableFiles.d.ts.map +1 -1
- package/dist/src/shared/getAvailableFiles.js +6 -1
- package/dist/src/shared/getAvailableFiles.js.map +1 -1
- package/dist/src/shared/loadRegistry.d.ts +7 -0
- package/dist/src/shared/loadRegistry.d.ts.map +1 -0
- package/dist/src/shared/loadRegistry.js +31 -0
- package/dist/src/shared/loadRegistry.js.map +1 -0
- package/dist/src/shared/resolveInstallPlan.d.ts +12 -0
- package/dist/src/shared/resolveInstallPlan.d.ts.map +1 -0
- package/dist/src/shared/resolveInstallPlan.js +39 -0
- package/dist/src/shared/resolveInstallPlan.js.map +1 -0
- package/dist/src/types/main.d.ts +24 -0
- package/dist/src/types/main.d.ts.map +1 -1
- package/docs/README.md +10 -2
- package/docs/components/action-button.md +30 -24
- package/docs/components/actions-group.md +26 -20
- package/docs/components/alert-dialog.md +45 -45
- package/docs/components/avatar.md +6 -2
- package/docs/components/badge-field.md +6 -2
- package/docs/components/badge.md +7 -1
- package/docs/components/breadcrumb.md +15 -40
- package/docs/components/button-group.md +13 -10
- package/docs/components/button.md +58 -33
- package/docs/components/calendar.md +26 -19
- package/docs/components/card.md +19 -16
- package/docs/components/chart-block-tool.md +128 -0
- package/docs/components/checkbox.md +16 -8
- package/docs/components/cn-layout.md +7 -1
- package/docs/components/context-menu.md +47 -24
- package/docs/components/count-badge.md +7 -1
- package/docs/components/data-table.md +45 -33
- package/docs/components/data-views-config-panel.md +18 -14
- package/docs/components/data-views-layout.md +20 -17
- package/docs/components/date-picker.md +30 -23
- package/docs/components/dialog.md +43 -42
- package/docs/components/divider.md +10 -4
- package/docs/components/drawer.md +8 -33
- package/docs/components/dropdown-menu.md +51 -32
- package/docs/components/field-hint.md +37 -25
- package/docs/components/field-section.md +9 -3
- package/docs/components/form-stepper.md +6 -0
- package/docs/components/form.md +17 -20
- package/docs/components/header-bar.md +187 -0
- package/docs/components/image-attachment.md +33 -41
- package/docs/components/inbox-view.md +16 -5
- package/docs/components/inner-label-field.md +34 -24
- package/docs/components/input-field.md +18 -10
- package/docs/components/input-otp.md +14 -11
- package/docs/components/input.md +22 -16
- package/docs/components/kanban-view.md +15 -5
- package/docs/components/label-field.md +32 -22
- package/docs/components/label.md +43 -32
- package/docs/components/labeled-check-box.md +16 -8
- package/docs/components/labeled-radio.md +18 -11
- package/docs/components/link-button.md +7 -1
- package/docs/components/login-button.md +8 -2
- package/docs/components/password-level.md +37 -24
- package/docs/components/popover.md +26 -23
- package/docs/components/profile-menu.md +38 -27
- package/docs/components/radio-card.md +16 -9
- package/docs/components/radio.md +16 -8
- package/docs/components/scroll-area.md +6 -2
- package/docs/components/search-field.md +14 -6
- package/docs/components/searchable-select.md +19 -14
- package/docs/components/searchable-table.md +60 -41
- package/docs/components/searchable-tree-dialog.md +190 -0
- package/docs/components/searchable-tree.md +200 -0
- package/docs/components/section-block.md +130 -4
- package/docs/components/select.md +23 -18
- package/docs/components/simple-select.md +14 -10
- package/docs/components/skeleton.md +43 -33
- package/docs/components/slide-date-picker.md +37 -29
- package/docs/components/spin-loading.md +32 -23
- package/docs/components/stepper.md +6 -0
- package/docs/components/switch.md +14 -6
- package/docs/components/tab-form-item.md +7 -1
- package/docs/components/tab-switch.md +13 -6
- package/docs/components/table-dnd-wrapper.md +105 -0
- package/docs/components/table-view.md +15 -5
- package/docs/components/table.md +28 -28
- package/docs/components/text-editor.md +19 -13
- package/docs/components/textarea.md +15 -7
- package/docs/components/timeline.md +6 -0
- package/docs/components/toast.md +35 -26
- package/docs/components/toggle-button.md +24 -21
- package/docs/components/toggle.md +23 -15
- package/docs/components/tooltip.md +42 -30
- package/docs/components/transparent-label.md +29 -20
- package/docs/components/tree-drop-down.md +31 -23
- package/docs/components/tree-sub-layout.md +6 -2
- package/docs/components/tree-view.md +16 -5
- package/docs/explanation/architecture.md +54 -0
- package/docs/explanation/design-system.md +52 -0
- package/docs/how-to/data-views-from-backend-response.md +7 -4
- package/docs/how-to/guides.md +24 -18
- package/docs/migration/changelog.md +38 -0
- package/docs/reference/cli.md +87 -0
- package/docs/reference/components.md +11 -12
- package/docs/reference/hooks.md +8 -8
- package/docs/reference/providers.md +22 -22
- package/docs/reference/tailwind-plugins.md +2 -2
- package/docs/reference/theme.md +85 -0
- package/docs/reference/types.md +4 -4
- package/docs/reference/utilities.md +19 -26
- package/docs/tutorials/building-first-form.md +20 -13
- package/docs/tutorials/component-composition.md +34 -50
- package/docs/tutorials/getting-started.md +2 -2
- package/docs/tutorials/theming-basics.md +13 -10
- package/package.json +31 -3
- package/dist/src/commands/block.d.ts +0 -5
- package/dist/src/commands/block.d.ts.map +0 -1
- package/dist/src/commands/block.js +0 -255
- package/dist/src/commands/block.js.map +0 -1
- package/dist/src/shared/configureFonts.d.ts +0 -6
- package/dist/src/shared/configureFonts.d.ts.map +0 -1
- package/dist/src/shared/configureFonts.js +0 -106
- package/dist/src/shared/configureFonts.js.map +0 -1
- package/dist/src/shared/configureGlobalCss.d.ts +0 -6
- package/dist/src/shared/configureGlobalCss.d.ts.map +0 -1
- package/dist/src/shared/configureGlobalCss.js +0 -154
- package/dist/src/shared/configureGlobalCss.js.map +0 -1
- package/dist/src/shared/configureTailwind.d.ts +0 -7
- package/dist/src/shared/configureTailwind.d.ts.map +0 -1
- package/dist/src/shared/configureTailwind.js +0 -163
- package/dist/src/shared/configureTailwind.js.map +0 -1
- package/dist/src/shared/detectFramework.d.ts +0 -23
- package/dist/src/shared/detectFramework.d.ts.map +0 -1
- package/dist/src/shared/detectFramework.js +0 -119
- package/dist/src/shared/detectFramework.js.map +0 -1
- package/dist/src/shared/installBaseUtils.d.ts +0 -5
- package/dist/src/shared/installBaseUtils.d.ts.map +0 -1
- package/dist/src/shared/installBaseUtils.js +0 -79
- package/dist/src/shared/installBaseUtils.js.map +0 -1
- package/dist/src/shared/resolveAliases.d.ts +0 -24
- package/dist/src/shared/resolveAliases.d.ts.map +0 -1
- package/dist/src/shared/resolveAliases.js +0 -98
- package/dist/src/shared/resolveAliases.js.map +0 -1
|
@@ -11,13 +11,22 @@ keywords: [label-field, form, input, label, required, field]
|
|
|
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 LabelField
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`add` also copies any components, hooks, and utilities that `LabelField` depends on.
|
|
15
23
|
|
|
16
24
|
## Import
|
|
17
25
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
26
|
+
Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { LabelField } from "@/components/LabelField";
|
|
21
30
|
```
|
|
22
31
|
|
|
23
32
|
## Quick Examples
|
|
@@ -25,7 +34,7 @@ import type { LabelFieldProps } from '@torch-ui/components'
|
|
|
25
34
|
### Basic Usage
|
|
26
35
|
|
|
27
36
|
```typescript
|
|
28
|
-
import { LabelField } from
|
|
37
|
+
import { LabelField } from "@/components/LabelField";
|
|
29
38
|
import { useState } from 'react'
|
|
30
39
|
|
|
31
40
|
function Example() {
|
|
@@ -45,7 +54,7 @@ function Example() {
|
|
|
45
54
|
### With Required Indicator
|
|
46
55
|
|
|
47
56
|
```typescript
|
|
48
|
-
import { LabelField } from
|
|
57
|
+
import { LabelField } from "@/components/LabelField";
|
|
49
58
|
|
|
50
59
|
function RequiredField() {
|
|
51
60
|
return (
|
|
@@ -61,7 +70,7 @@ function RequiredField() {
|
|
|
61
70
|
### With Secondary Label
|
|
62
71
|
|
|
63
72
|
```typescript
|
|
64
|
-
import { LabelField } from
|
|
73
|
+
import { LabelField } from "@/components/LabelField";
|
|
65
74
|
|
|
66
75
|
function WithSecondary() {
|
|
67
76
|
return (
|
|
@@ -77,7 +86,7 @@ function WithSecondary() {
|
|
|
77
86
|
### With Error Message
|
|
78
87
|
|
|
79
88
|
```typescript
|
|
80
|
-
import { LabelField } from
|
|
89
|
+
import { LabelField } from "@/components/LabelField";
|
|
81
90
|
import { useState } from 'react'
|
|
82
91
|
|
|
83
92
|
function WithValidation() {
|
|
@@ -108,7 +117,7 @@ function WithValidation() {
|
|
|
108
117
|
### With Icon
|
|
109
118
|
|
|
110
119
|
```typescript
|
|
111
|
-
import { LabelField } from
|
|
120
|
+
import { LabelField } from "@/components/LabelField";
|
|
112
121
|
|
|
113
122
|
function WithIcon() {
|
|
114
123
|
return (
|
|
@@ -124,8 +133,8 @@ function WithIcon() {
|
|
|
124
133
|
### With Action Button
|
|
125
134
|
|
|
126
135
|
```typescript
|
|
127
|
-
import { LabelField } from
|
|
128
|
-
import { ActionButton } from
|
|
136
|
+
import { LabelField } from "@/components/LabelField";
|
|
137
|
+
import { ActionButton } from "@/components/ActionButton";
|
|
129
138
|
import { useState } from 'react'
|
|
130
139
|
|
|
131
140
|
function WithActionButton() {
|
|
@@ -151,7 +160,7 @@ function WithActionButton() {
|
|
|
151
160
|
### Horizontal Layout
|
|
152
161
|
|
|
153
162
|
```typescript
|
|
154
|
-
import { LabelField } from
|
|
163
|
+
import { LabelField } from "@/components/LabelField";
|
|
155
164
|
|
|
156
165
|
function HorizontalLayout() {
|
|
157
166
|
return (
|
|
@@ -168,7 +177,7 @@ function HorizontalLayout() {
|
|
|
168
177
|
### Different Sizes
|
|
169
178
|
|
|
170
179
|
```typescript
|
|
171
|
-
import { LabelField } from
|
|
180
|
+
import { LabelField } from "@/components/LabelField";
|
|
172
181
|
|
|
173
182
|
function Sizes() {
|
|
174
183
|
return (
|
|
@@ -192,8 +201,9 @@ function Sizes() {
|
|
|
192
201
|
### Registration Form
|
|
193
202
|
|
|
194
203
|
```typescript
|
|
195
|
-
import { LabelField } from
|
|
196
|
-
import { Button
|
|
204
|
+
import { LabelField } from "@/components/LabelField";
|
|
205
|
+
import { Button } from "@/components/Button";
|
|
206
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
197
207
|
import { useState } from 'react'
|
|
198
208
|
|
|
199
209
|
function RegistrationForm() {
|
|
@@ -281,7 +291,7 @@ function RegistrationForm() {
|
|
|
281
291
|
### With Popover Dropdown
|
|
282
292
|
|
|
283
293
|
```typescript
|
|
284
|
-
import { LabelField } from
|
|
294
|
+
import { LabelField } from "@/components/LabelField";
|
|
285
295
|
import { useState } from 'react'
|
|
286
296
|
|
|
287
297
|
function WithPopover() {
|
|
@@ -314,8 +324,8 @@ function WithPopover() {
|
|
|
314
324
|
### Profile Settings Form
|
|
315
325
|
|
|
316
326
|
```typescript
|
|
317
|
-
import { LabelField } from
|
|
318
|
-
import { Button } from
|
|
327
|
+
import { LabelField } from "@/components/LabelField";
|
|
328
|
+
import { Button } from "@/components/Button";
|
|
319
329
|
import { useState } from 'react'
|
|
320
330
|
|
|
321
331
|
function ProfileSettings() {
|
|
@@ -426,7 +436,7 @@ export const LabelField: React.ForwardRefExoticComponent<
|
|
|
426
436
|
### Usage with Types
|
|
427
437
|
|
|
428
438
|
```typescript
|
|
429
|
-
import { LabelField } from
|
|
439
|
+
import { LabelField } from "@/components/LabelField";
|
|
430
440
|
import { useRef, useState } from 'react'
|
|
431
441
|
|
|
432
442
|
function TypedExample() {
|
|
@@ -455,7 +465,7 @@ function TypedExample() {
|
|
|
455
465
|
### Form Field Wrapper Hook
|
|
456
466
|
|
|
457
467
|
```typescript
|
|
458
|
-
import { LabelField } from
|
|
468
|
+
import { LabelField } from "@/components/LabelField";
|
|
459
469
|
import { useState, useCallback } from 'react'
|
|
460
470
|
|
|
461
471
|
function useFormField(initialValue: string = '') {
|
|
@@ -526,7 +536,7 @@ function FormWithHook() {
|
|
|
526
536
|
### Reusable Form Fields
|
|
527
537
|
|
|
528
538
|
```typescript
|
|
529
|
-
import { LabelField } from
|
|
539
|
+
import { LabelField } from "@/components/LabelField";
|
|
530
540
|
import { ComponentProps } from 'react'
|
|
531
541
|
|
|
532
542
|
type FieldConfig = Omit<ComponentProps<typeof LabelField>, 'value' | 'onChange'> & {
|
|
@@ -580,7 +590,7 @@ function DynamicForm() {
|
|
|
580
590
|
|
|
581
591
|
```typescript
|
|
582
592
|
import { render, screen, fireEvent } from '@testing-library/react'
|
|
583
|
-
import { LabelField } from
|
|
593
|
+
import { LabelField } from "@/components/LabelField";
|
|
584
594
|
import userEvent from '@testing-library/user-event'
|
|
585
595
|
|
|
586
596
|
describe('LabelField', () => {
|
package/docs/components/label.md
CHANGED
|
@@ -11,13 +11,22 @@ keywords: [label, form, input, required, text, typography]
|
|
|
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 Label
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`add` also copies any components, hooks, and utilities that `Label` depends on.
|
|
15
23
|
|
|
16
24
|
## Import
|
|
17
25
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
26
|
+
Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { Label } from "@/components/Label";
|
|
21
30
|
```
|
|
22
31
|
|
|
23
32
|
## Quick Examples
|
|
@@ -25,8 +34,8 @@ import type { LabelProps } from '@torch-ui/components'
|
|
|
25
34
|
### Basic Usage
|
|
26
35
|
|
|
27
36
|
```typescript
|
|
28
|
-
import { Label } from
|
|
29
|
-
import { InputField } from
|
|
37
|
+
import { Label } from "@/components/Label";
|
|
38
|
+
import { InputField } from "@/components/InputField";
|
|
30
39
|
|
|
31
40
|
function Example() {
|
|
32
41
|
return (
|
|
@@ -40,8 +49,8 @@ function Example() {
|
|
|
40
49
|
### With Required Indicator
|
|
41
50
|
|
|
42
51
|
```typescript
|
|
43
|
-
import { Label } from
|
|
44
|
-
import { InputField } from
|
|
52
|
+
import { Label } from "@/components/Label";
|
|
53
|
+
import { InputField } from "@/components/InputField";
|
|
45
54
|
|
|
46
55
|
function RequiredField() {
|
|
47
56
|
return (
|
|
@@ -58,8 +67,8 @@ function RequiredField() {
|
|
|
58
67
|
### With Secondary Label
|
|
59
68
|
|
|
60
69
|
```typescript
|
|
61
|
-
import { Label } from
|
|
62
|
-
import { InputField } from
|
|
70
|
+
import { Label } from "@/components/Label";
|
|
71
|
+
import { InputField } from "@/components/InputField";
|
|
63
72
|
|
|
64
73
|
function WithSecondary() {
|
|
65
74
|
return (
|
|
@@ -76,8 +85,8 @@ function WithSecondary() {
|
|
|
76
85
|
### All Labels Combined
|
|
77
86
|
|
|
78
87
|
```typescript
|
|
79
|
-
import { Label } from
|
|
80
|
-
import { InputField } from
|
|
88
|
+
import { Label } from "@/components/Label";
|
|
89
|
+
import { InputField } from "@/components/InputField";
|
|
81
90
|
|
|
82
91
|
function AllLabels() {
|
|
83
92
|
return (
|
|
@@ -95,8 +104,8 @@ function AllLabels() {
|
|
|
95
104
|
### Horizontal Layout
|
|
96
105
|
|
|
97
106
|
```typescript
|
|
98
|
-
import { Label } from
|
|
99
|
-
import { Switch } from
|
|
107
|
+
import { Label } from "@/components/Label";
|
|
108
|
+
import { Switch } from "@/components/Switch";
|
|
100
109
|
|
|
101
110
|
function HorizontalLabel() {
|
|
102
111
|
return (
|
|
@@ -113,8 +122,8 @@ function HorizontalLabel() {
|
|
|
113
122
|
### Vertical Label Direction
|
|
114
123
|
|
|
115
124
|
```typescript
|
|
116
|
-
import { Label } from
|
|
117
|
-
import { InputField } from
|
|
125
|
+
import { Label } from "@/components/Label";
|
|
126
|
+
import { InputField } from "@/components/InputField";
|
|
118
127
|
|
|
119
128
|
function VerticalLabels() {
|
|
120
129
|
return (
|
|
@@ -132,8 +141,8 @@ function VerticalLabels() {
|
|
|
132
141
|
### Reversed Children
|
|
133
142
|
|
|
134
143
|
```typescript
|
|
135
|
-
import { Label } from
|
|
136
|
-
import { Checkbox } from
|
|
144
|
+
import { Label } from "@/components/Label";
|
|
145
|
+
import { Checkbox } from "@/components/Checkbox";
|
|
137
146
|
|
|
138
147
|
function ReversedLayout() {
|
|
139
148
|
return (
|
|
@@ -151,8 +160,8 @@ function ReversedLayout() {
|
|
|
151
160
|
### Different Sizes
|
|
152
161
|
|
|
153
162
|
```typescript
|
|
154
|
-
import { Label } from
|
|
155
|
-
import { InputField } from
|
|
163
|
+
import { Label } from "@/components/Label";
|
|
164
|
+
import { InputField } from "@/components/InputField";
|
|
156
165
|
|
|
157
166
|
function Sizes() {
|
|
158
167
|
return (
|
|
@@ -176,8 +185,8 @@ function Sizes() {
|
|
|
176
185
|
### Style Variants
|
|
177
186
|
|
|
178
187
|
```typescript
|
|
179
|
-
import { Label } from
|
|
180
|
-
import { InputField } from
|
|
188
|
+
import { Label } from "@/components/Label";
|
|
189
|
+
import { InputField } from "@/components/InputField";
|
|
181
190
|
|
|
182
191
|
function Variants() {
|
|
183
192
|
return (
|
|
@@ -203,7 +212,7 @@ function Variants() {
|
|
|
203
212
|
### Polymorphic Rendering
|
|
204
213
|
|
|
205
214
|
```typescript
|
|
206
|
-
import { Label } from
|
|
215
|
+
import { Label } from "@/components/Label";
|
|
207
216
|
|
|
208
217
|
function PolymorphicLabel() {
|
|
209
218
|
return (
|
|
@@ -233,8 +242,9 @@ function PolymorphicLabel() {
|
|
|
233
242
|
### Form Example
|
|
234
243
|
|
|
235
244
|
```typescript
|
|
236
|
-
import { Label } from
|
|
237
|
-
import {
|
|
245
|
+
import { Label } from "@/components/Label";
|
|
246
|
+
import { Button } from "@/components/Button";
|
|
247
|
+
import { InputField } from "@/components/InputField";
|
|
238
248
|
import { useState } from 'react'
|
|
239
249
|
|
|
240
250
|
function RegistrationForm() {
|
|
@@ -359,7 +369,7 @@ export const Label: React.ForwardRefExoticComponent<
|
|
|
359
369
|
### Usage with Types
|
|
360
370
|
|
|
361
371
|
```typescript
|
|
362
|
-
import { Label } from
|
|
372
|
+
import { Label } from "@/components/Label";
|
|
363
373
|
import { useRef } from 'react'
|
|
364
374
|
|
|
365
375
|
function TypedExample() {
|
|
@@ -387,8 +397,8 @@ function TypedExample() {
|
|
|
387
397
|
### Responsive Layout
|
|
388
398
|
|
|
389
399
|
```typescript
|
|
390
|
-
import { Label } from
|
|
391
|
-
import { InputField } from
|
|
400
|
+
import { Label } from "@/components/Label";
|
|
401
|
+
import { InputField } from "@/components/InputField";
|
|
392
402
|
import { useState, useEffect } from 'react'
|
|
393
403
|
|
|
394
404
|
function ResponsiveLabel() {
|
|
@@ -417,8 +427,9 @@ function ResponsiveLabel() {
|
|
|
417
427
|
### Dynamic Required State
|
|
418
428
|
|
|
419
429
|
```typescript
|
|
420
|
-
import { Label } from
|
|
421
|
-
import {
|
|
430
|
+
import { Label } from "@/components/Label";
|
|
431
|
+
import { Checkbox } from "@/components/Checkbox";
|
|
432
|
+
import { InputField } from "@/components/InputField";
|
|
422
433
|
import { useState } from 'react'
|
|
423
434
|
|
|
424
435
|
function DynamicRequired() {
|
|
@@ -452,7 +463,7 @@ function DynamicRequired() {
|
|
|
452
463
|
### Label Group Component
|
|
453
464
|
|
|
454
465
|
```typescript
|
|
455
|
-
import { Label } from
|
|
466
|
+
import { Label } from "@/components/Label";
|
|
456
467
|
import { ReactNode } from 'react'
|
|
457
468
|
|
|
458
469
|
interface LabelGroupProps {
|
|
@@ -508,7 +519,7 @@ function FormWithGroup() {
|
|
|
508
519
|
|
|
509
520
|
```typescript
|
|
510
521
|
import { render, screen } from '@testing-library/react'
|
|
511
|
-
import { Label } from
|
|
522
|
+
import { Label } from "@/components/Label";
|
|
512
523
|
|
|
513
524
|
describe('Label', () => {
|
|
514
525
|
it('renders label text', () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: LabeledCheckBox
|
|
3
|
-
version:
|
|
3
|
+
version: 2.4.0
|
|
4
4
|
status: stable
|
|
5
5
|
category: components/forms
|
|
6
6
|
tags: [form, checkbox, label, selection, accessible, compound]
|
|
@@ -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 LabeledCheckBox
|
|
22
26
|
```
|
|
23
27
|
|
|
28
|
+
`add` also copies any components, hooks, and utilities that `LabeledCheckBox` 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 { LabeledCheckBox } from "@/components/LabeledCheckBox";
|
|
28
36
|
```
|
|
29
37
|
|
|
30
38
|
## Quick Examples
|
|
@@ -32,7 +40,7 @@ import { LabeledCheckBox } from 'torch-glare/lib/components/LabeledCheckBox'
|
|
|
32
40
|
### Basic Usage
|
|
33
41
|
|
|
34
42
|
```typescript
|
|
35
|
-
import { LabeledCheckBox } from '
|
|
43
|
+
import { LabeledCheckBox } from '@/components/LabeledCheckBox'
|
|
36
44
|
|
|
37
45
|
function Example() {
|
|
38
46
|
const [checked, setChecked] = useState(false)
|
|
@@ -389,7 +397,7 @@ function EmailSubscriptions() {
|
|
|
389
397
|
|
|
390
398
|
```typescript
|
|
391
399
|
import { render, screen, fireEvent } from '@testing-library/react'
|
|
392
|
-
import { LabeledCheckBox } from '
|
|
400
|
+
import { LabeledCheckBox } from '@/components/LabeledCheckBox'
|
|
393
401
|
|
|
394
402
|
describe('LabeledCheckBox', () => {
|
|
395
403
|
it('renders label and checkbox together', () => {
|
|
@@ -571,10 +579,10 @@ Note: Large size uses medium checkbox for visual balance.
|
|
|
571
579
|
```diff
|
|
572
580
|
// Import path
|
|
573
581
|
- import LabeledCheckBox from 'torch-glare/LabeledCheckBox'
|
|
574
|
-
+ import { LabeledCheckBox } from '
|
|
582
|
+
+ import { LabeledCheckBox } from '@/components/LabeledCheckBox'
|
|
575
583
|
|
|
576
584
|
// Size prop values
|
|
577
|
-
- <LabeledCheckBox size="
|
|
585
|
+
- <LabeledCheckBox size="M" />
|
|
578
586
|
+ <LabeledCheckBox size="S" />
|
|
579
587
|
```
|
|
580
588
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: LabeledRadio
|
|
3
|
-
version:
|
|
3
|
+
version: 2.4.0
|
|
4
4
|
status: stable
|
|
5
5
|
category: components/forms
|
|
6
6
|
tags: [form, radio, label, selection, accessible, compound]
|
|
@@ -17,15 +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 LabeledRadio
|
|
22
26
|
```
|
|
23
27
|
|
|
28
|
+
`add` also copies any components, hooks, and utilities that `LabeledRadio` depends on.
|
|
29
|
+
|
|
24
30
|
## Import
|
|
25
31
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
import { LabeledRadio } from "@/components/LabeledRadio";
|
|
29
36
|
```
|
|
30
37
|
|
|
31
38
|
## Quick Examples
|
|
@@ -33,8 +40,8 @@ import { RadioGroup } from 'torch-glare/lib/components/Radio'
|
|
|
33
40
|
### Basic Usage
|
|
34
41
|
|
|
35
42
|
```typescript
|
|
36
|
-
import { LabeledRadio } from '
|
|
37
|
-
import { RadioGroup } from '
|
|
43
|
+
import { LabeledRadio } from '@/components/LabeledRadio'
|
|
44
|
+
import { RadioGroup } from '@/components/Radio'
|
|
38
45
|
|
|
39
46
|
function Example() {
|
|
40
47
|
const [selected, setSelected] = useState('option1')
|
|
@@ -503,8 +510,8 @@ function AccountTypeSelector() {
|
|
|
503
510
|
|
|
504
511
|
```typescript
|
|
505
512
|
import { render, screen, fireEvent } from '@testing-library/react'
|
|
506
|
-
import { LabeledRadio } from '
|
|
507
|
-
import { RadioGroup } from '
|
|
513
|
+
import { LabeledRadio } from '@/components/LabeledRadio'
|
|
514
|
+
import { RadioGroup } from '@/components/Radio'
|
|
508
515
|
|
|
509
516
|
describe('LabeledRadio', () => {
|
|
510
517
|
it('renders label and radio together', () => {
|
|
@@ -723,10 +730,10 @@ Note: Large size uses medium radio for visual balance.
|
|
|
723
730
|
```diff
|
|
724
731
|
// Import path
|
|
725
732
|
- import LabeledRadio from 'torch-glare/LabeledRadio'
|
|
726
|
-
+ import { LabeledRadio } from '
|
|
733
|
+
+ import { LabeledRadio } from '@/components/LabeledRadio'
|
|
727
734
|
|
|
728
735
|
// Size prop values
|
|
729
|
-
- <LabeledRadio size="
|
|
736
|
+
- <LabeledRadio size="M" />
|
|
730
737
|
+ <LabeledRadio size="S" />
|
|
731
738
|
```
|
|
732
739
|
|
|
@@ -12,10 +12,16 @@ A stylized link button component featuring an animated arrow that appears on hov
|
|
|
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 LinkButton
|
|
17
21
|
```
|
|
18
22
|
|
|
23
|
+
`add` also copies any components, hooks, and utilities that `LinkButton` depends on.
|
|
24
|
+
|
|
19
25
|
## Imports
|
|
20
26
|
|
|
21
27
|
```typescript
|
|
@@ -12,10 +12,16 @@ A specialized full-width button component designed specifically for authenticati
|
|
|
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 LoginButton
|
|
17
21
|
```
|
|
18
22
|
|
|
23
|
+
`add` also copies any components, hooks, and utilities that `LoginButton` depends on.
|
|
24
|
+
|
|
19
25
|
## Imports
|
|
20
26
|
|
|
21
27
|
```typescript
|
|
@@ -843,7 +849,7 @@ describe('LoginButton', () => {
|
|
|
843
849
|
// Before: Material-UI Button
|
|
844
850
|
<Button
|
|
845
851
|
fullWidth
|
|
846
|
-
variant="
|
|
852
|
+
variant="PrimeStyle"
|
|
847
853
|
loading={isLoading}
|
|
848
854
|
>
|
|
849
855
|
Sign In
|