torch-glare 2.4.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 +1 -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 +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 +198 -196
- 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 +131 -171
- 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 +1 -9
- 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 +8 -14
- 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 +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 +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 +8 -33
- 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-stepper.md +6 -0
- package/docs/components/form.md +17 -20
- package/docs/components/header-bar.md +6 -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 +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 +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 +6 -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
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
|
|
@@ -11,13 +11,22 @@ keywords: [password, strength, security, validation, indicator, level]
|
|
|
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 PasswordLevel
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`add` also copies any components, hooks, and utilities that `PasswordLevel` 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 { PasswordLevel } from "@/components/PasswordLevel";
|
|
21
30
|
```
|
|
22
31
|
|
|
23
32
|
## Quick Examples
|
|
@@ -25,8 +34,8 @@ import type { PasswordLevelProps } from '@torch-ui/components'
|
|
|
25
34
|
### Basic Usage
|
|
26
35
|
|
|
27
36
|
```typescript
|
|
28
|
-
import { PasswordLevel } from
|
|
29
|
-
import { InputField } from
|
|
37
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
38
|
+
import { InputField } from "@/components/InputField";
|
|
30
39
|
import { useState } from 'react'
|
|
31
40
|
|
|
32
41
|
function Example() {
|
|
@@ -49,8 +58,8 @@ function Example() {
|
|
|
49
58
|
### With Labels
|
|
50
59
|
|
|
51
60
|
```typescript
|
|
52
|
-
import { PasswordLevel } from
|
|
53
|
-
import { InputField } from
|
|
61
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
62
|
+
import { InputField } from "@/components/InputField";
|
|
54
63
|
import { useState } from 'react'
|
|
55
64
|
|
|
56
65
|
function WithLabels() {
|
|
@@ -96,8 +105,10 @@ function WithLabels() {
|
|
|
96
105
|
### Registration Form
|
|
97
106
|
|
|
98
107
|
```typescript
|
|
99
|
-
import { PasswordLevel } from
|
|
100
|
-
import {
|
|
108
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
109
|
+
import { Button } from "@/components/Button";
|
|
110
|
+
import { FieldHint } from "@/components/FieldHint";
|
|
111
|
+
import { InputField } from "@/components/InputField";
|
|
101
112
|
import { useState } from 'react'
|
|
102
113
|
|
|
103
114
|
function RegistrationForm() {
|
|
@@ -157,8 +168,8 @@ function RegistrationForm() {
|
|
|
157
168
|
### With Requirements Checklist
|
|
158
169
|
|
|
159
170
|
```typescript
|
|
160
|
-
import { PasswordLevel } from
|
|
161
|
-
import { InputField } from
|
|
171
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
172
|
+
import { InputField } from "@/components/InputField";
|
|
162
173
|
import { useState } from 'react'
|
|
163
174
|
|
|
164
175
|
function PasswordWithChecklist() {
|
|
@@ -217,8 +228,9 @@ function PasswordWithChecklist() {
|
|
|
217
228
|
### Password Change Form
|
|
218
229
|
|
|
219
230
|
```typescript
|
|
220
|
-
import { PasswordLevel } from
|
|
221
|
-
import {
|
|
231
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
232
|
+
import { Button } from "@/components/Button";
|
|
233
|
+
import { InputField } from "@/components/InputField";
|
|
222
234
|
import { useState } from 'react'
|
|
223
235
|
|
|
224
236
|
function PasswordChangeForm() {
|
|
@@ -269,8 +281,8 @@ function PasswordChangeForm() {
|
|
|
269
281
|
### Real-time Feedback
|
|
270
282
|
|
|
271
283
|
```typescript
|
|
272
|
-
import { PasswordLevel } from
|
|
273
|
-
import { InputField } from
|
|
284
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
285
|
+
import { InputField } from "@/components/InputField";
|
|
274
286
|
import { useState, useEffect } from 'react'
|
|
275
287
|
|
|
276
288
|
function RealTimeFeedback() {
|
|
@@ -327,7 +339,7 @@ function RealTimeFeedback() {
|
|
|
327
339
|
### Different Themes
|
|
328
340
|
|
|
329
341
|
```typescript
|
|
330
|
-
import { PasswordLevel } from
|
|
342
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
331
343
|
import { useState } from 'react'
|
|
332
344
|
|
|
333
345
|
function ThemeExample() {
|
|
@@ -360,7 +372,7 @@ function ThemeExample() {
|
|
|
360
372
|
### Custom Styling
|
|
361
373
|
|
|
362
374
|
```typescript
|
|
363
|
-
import { PasswordLevel } from
|
|
375
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
364
376
|
import { useState } from 'react'
|
|
365
377
|
|
|
366
378
|
function CustomStyling() {
|
|
@@ -387,8 +399,8 @@ function CustomStyling() {
|
|
|
387
399
|
### Animated Feedback
|
|
388
400
|
|
|
389
401
|
```typescript
|
|
390
|
-
import { PasswordLevel } from
|
|
391
|
-
import { InputField } from
|
|
402
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
403
|
+
import { InputField } from "@/components/InputField";
|
|
392
404
|
import { useState } from 'react'
|
|
393
405
|
|
|
394
406
|
function AnimatedFeedback() {
|
|
@@ -524,7 +536,7 @@ function isPasswordAcceptable(password: string, minLevel: number = 2): boolean {
|
|
|
524
536
|
### Validation Hook
|
|
525
537
|
|
|
526
538
|
```typescript
|
|
527
|
-
import { PasswordLevel } from
|
|
539
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
528
540
|
import { useState, useMemo } from 'react'
|
|
529
541
|
|
|
530
542
|
function usePasswordValidation(password: string) {
|
|
@@ -584,8 +596,9 @@ function ValidatedPasswordField() {
|
|
|
584
596
|
### Password Generator
|
|
585
597
|
|
|
586
598
|
```typescript
|
|
587
|
-
import { PasswordLevel } from
|
|
588
|
-
import {
|
|
599
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
600
|
+
import { Button } from "@/components/Button";
|
|
601
|
+
import { InputField } from "@/components/InputField";
|
|
589
602
|
import { useState } from 'react'
|
|
590
603
|
|
|
591
604
|
function PasswordGenerator() {
|
|
@@ -638,7 +651,7 @@ function PasswordGenerator() {
|
|
|
638
651
|
|
|
639
652
|
```typescript
|
|
640
653
|
import { render, screen } from '@testing-library/react'
|
|
641
|
-
import { PasswordLevel } from
|
|
654
|
+
import { PasswordLevel } from "@/components/PasswordLevel";
|
|
642
655
|
|
|
643
656
|
describe('PasswordLevel', () => {
|
|
644
657
|
it('renders three bars', () => {
|
|
@@ -11,19 +11,22 @@ keywords: [popover, overlay, dropdown, radix-ui, menu, non-modal]
|
|
|
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 Popover
|
|
16
20
|
```
|
|
17
21
|
|
|
22
|
+
`add` also copies any components, hooks, and utilities that `Popover` depends on.
|
|
23
|
+
|
|
18
24
|
## Import
|
|
19
25
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
PopoverContent,
|
|
25
|
-
PopoverItem,
|
|
26
|
-
} from '@torch-ui/components'
|
|
26
|
+
Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { Popover } from "@/components/Popover";
|
|
27
30
|
```
|
|
28
31
|
|
|
29
32
|
## Quick Examples
|
|
@@ -31,8 +34,8 @@ import {
|
|
|
31
34
|
### Basic Usage
|
|
32
35
|
|
|
33
36
|
```typescript
|
|
34
|
-
import { Popover, PopoverTrigger, PopoverContent } from
|
|
35
|
-
import { Button } from
|
|
37
|
+
import { Popover, PopoverTrigger, PopoverContent } from "@/components/Popover";
|
|
38
|
+
import { Button } from "@/components/Button";
|
|
36
39
|
|
|
37
40
|
function Example() {
|
|
38
41
|
return (
|
|
@@ -53,7 +56,7 @@ function Example() {
|
|
|
53
56
|
### With PopoverItem List
|
|
54
57
|
|
|
55
58
|
```typescript
|
|
56
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
59
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
57
60
|
|
|
58
61
|
function SelectPopover() {
|
|
59
62
|
const items = ['Option 1', 'Option 2', 'Option 3']
|
|
@@ -81,7 +84,7 @@ function SelectPopover() {
|
|
|
81
84
|
### SystemStyle Variant
|
|
82
85
|
|
|
83
86
|
```typescript
|
|
84
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
87
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
85
88
|
|
|
86
89
|
function SystemStylePopover() {
|
|
87
90
|
return (
|
|
@@ -102,7 +105,7 @@ function SystemStylePopover() {
|
|
|
102
105
|
### With Icons
|
|
103
106
|
|
|
104
107
|
```typescript
|
|
105
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
108
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
106
109
|
|
|
107
110
|
function IconPopover() {
|
|
108
111
|
return (
|
|
@@ -132,7 +135,7 @@ function IconPopover() {
|
|
|
132
135
|
### With Active State
|
|
133
136
|
|
|
134
137
|
```typescript
|
|
135
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
138
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
136
139
|
import { useState } from 'react'
|
|
137
140
|
|
|
138
141
|
function SelectablePopover() {
|
|
@@ -171,7 +174,7 @@ function SelectablePopover() {
|
|
|
171
174
|
### With Overlay Blur
|
|
172
175
|
|
|
173
176
|
```typescript
|
|
174
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
177
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
175
178
|
|
|
176
179
|
function BlurredPopover() {
|
|
177
180
|
return (
|
|
@@ -191,7 +194,7 @@ function BlurredPopover() {
|
|
|
191
194
|
### Warning Items
|
|
192
195
|
|
|
193
196
|
```typescript
|
|
194
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
197
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
195
198
|
|
|
196
199
|
function WarningPopover() {
|
|
197
200
|
return (
|
|
@@ -217,7 +220,7 @@ function WarningPopover() {
|
|
|
217
220
|
### Size Variants
|
|
218
221
|
|
|
219
222
|
```typescript
|
|
220
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
223
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
221
224
|
|
|
222
225
|
function SizedPopover() {
|
|
223
226
|
return (
|
|
@@ -237,7 +240,7 @@ function SizedPopover() {
|
|
|
237
240
|
### Controlled Popover
|
|
238
241
|
|
|
239
242
|
```typescript
|
|
240
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
243
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
241
244
|
import { useState } from 'react'
|
|
242
245
|
|
|
243
246
|
function ControlledPopover() {
|
|
@@ -265,7 +268,7 @@ function ControlledPopover() {
|
|
|
265
268
|
### Positioning
|
|
266
269
|
|
|
267
270
|
```typescript
|
|
268
|
-
import { Popover, PopoverTrigger, PopoverContent } from
|
|
271
|
+
import { Popover, PopoverTrigger, PopoverContent } from "@/components/Popover";
|
|
269
272
|
|
|
270
273
|
function PositionedPopover() {
|
|
271
274
|
return (
|
|
@@ -420,7 +423,7 @@ export const PopoverItem: <T extends React.ElementType = 'button'>(
|
|
|
420
423
|
### Select Pattern
|
|
421
424
|
|
|
422
425
|
```typescript
|
|
423
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
426
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
424
427
|
import { useState } from 'react'
|
|
425
428
|
|
|
426
429
|
function SelectField() {
|
|
@@ -481,7 +484,7 @@ function ContextMenu({ onEdit, onDelete }) {
|
|
|
481
484
|
|
|
482
485
|
```typescript
|
|
483
486
|
import { render, screen, fireEvent } from '@testing-library/react'
|
|
484
|
-
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from
|
|
487
|
+
import { Popover, PopoverTrigger, PopoverContent, PopoverItem } from "@/components/Popover";
|
|
485
488
|
|
|
486
489
|
describe('Popover', () => {
|
|
487
490
|
it('opens on trigger click', () => {
|
|
@@ -590,8 +593,8 @@ describe('Popover', () => {
|
|
|
590
593
|
## Migration from DropdownMenu
|
|
591
594
|
|
|
592
595
|
```diff
|
|
593
|
-
- import { DropdownMenu } from
|
|
594
|
-
+ import { Popover } from
|
|
596
|
+
- import { DropdownMenu } from "@/components/DropdownMenu";
|
|
597
|
+
+ import { Popover } from "@/components/Popover";
|
|
595
598
|
|
|
596
599
|
- <DropdownMenu>
|
|
597
600
|
- <DropdownMenuTrigger>Open</DropdownMenuTrigger>
|