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.
Files changed (264) hide show
  1. package/README.md +8 -0
  2. package/apps/lib/components/ActionButton.tsx +7 -12
  3. package/apps/lib/components/ActionsGroup.tsx +4 -15
  4. package/apps/lib/components/AlertDialog.tsx +173 -191
  5. package/apps/lib/components/Avatar.tsx +13 -16
  6. package/apps/lib/components/Badge.tsx +1 -3
  7. package/apps/lib/components/BadgeField.tsx +76 -71
  8. package/apps/lib/components/Breadcrumb.tsx +49 -85
  9. package/apps/lib/components/Button.tsx +20 -19
  10. package/apps/lib/components/ButtonGroup.tsx +31 -41
  11. package/apps/lib/components/Calendar.tsx +51 -29
  12. package/apps/lib/components/Card.tsx +2 -13
  13. package/apps/lib/components/ChartBlockTool.ts +17 -52
  14. package/apps/lib/components/Checkbox.tsx +9 -16
  15. package/apps/lib/components/ContextMenu.tsx +97 -96
  16. package/apps/lib/components/CountBadge.tsx +4 -6
  17. package/apps/lib/components/DataTable.tsx +196 -216
  18. package/apps/lib/components/DataViews/DataViewRadio.tsx +1 -6
  19. package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +13 -47
  20. package/apps/lib/components/DataViews/DataViewsHeader.tsx +1 -3
  21. package/apps/lib/components/DataViews/DataViewsLayout.tsx +5 -12
  22. package/apps/lib/components/DataViews/FilterPanel.tsx +155 -149
  23. package/apps/lib/components/DataViews/HeaderSearch.tsx +1 -5
  24. package/apps/lib/components/DataViews/InboxView.tsx +22 -68
  25. package/apps/lib/components/DataViews/InboxViewCard.tsx +68 -77
  26. package/apps/lib/components/DataViews/KanbanView.tsx +8 -25
  27. package/apps/lib/components/DataViews/PanelControls.tsx +3 -13
  28. package/apps/lib/components/DataViews/SettingsPanel.tsx +83 -89
  29. package/apps/lib/components/DataViews/TableView.tsx +8 -28
  30. package/apps/lib/components/DataViews/TreeView.tsx +12 -40
  31. package/apps/lib/components/DataViews/badgeAdapter.ts +32 -28
  32. package/apps/lib/components/DataViews/fieldRenderers.tsx +106 -141
  33. package/apps/lib/components/DataViews/filters/DatePickerRangeFilter.tsx +30 -23
  34. package/apps/lib/components/DataViews/filters/DateRangePopover.tsx +39 -32
  35. package/apps/lib/components/DataViews/filters/PresetChips.tsx +15 -15
  36. package/apps/lib/components/DataViews/filters/RangeSliderWithInputs.tsx +69 -58
  37. package/apps/lib/components/DataViews/index.ts +26 -26
  38. package/apps/lib/components/DataViews/tree/TreeDrawer.tsx +12 -16
  39. package/apps/lib/components/DataViews/tree/TreeSidebar.tsx +28 -31
  40. package/apps/lib/components/DataViews/types.ts +104 -115
  41. package/apps/lib/components/DatePicker.tsx +198 -196
  42. package/apps/lib/components/Dialog.tsx +92 -105
  43. package/apps/lib/components/Divider.tsx +21 -24
  44. package/apps/lib/components/Drawer.tsx +79 -139
  45. package/apps/lib/components/DropdownMenu.tsx +131 -171
  46. package/apps/lib/components/FieldHint.tsx +4 -11
  47. package/apps/lib/components/Form.tsx +146 -155
  48. package/apps/lib/components/FormStepper.tsx +9 -39
  49. package/apps/lib/components/HeaderBar.tsx +1 -9
  50. package/apps/lib/components/ImageAttachment.tsx +111 -73
  51. package/apps/lib/components/InnerLabelField.tsx +20 -16
  52. package/apps/lib/components/Input.tsx +171 -172
  53. package/apps/lib/components/InputField.tsx +44 -45
  54. package/apps/lib/components/InputOTP.tsx +68 -69
  55. package/apps/lib/components/Label.tsx +31 -35
  56. package/apps/lib/components/LabelField.tsx +4 -5
  57. package/apps/lib/components/LabeledCheckBox.tsx +8 -12
  58. package/apps/lib/components/LabeledRadio.tsx +7 -5
  59. package/apps/lib/components/LinkButton.tsx +2 -9
  60. package/apps/lib/components/LoginButton.tsx +4 -9
  61. package/apps/lib/components/PasswordLevel.tsx +5 -5
  62. package/apps/lib/components/Popover.tsx +15 -33
  63. package/apps/lib/components/ProfileMenu.tsx +67 -72
  64. package/apps/lib/components/Radio.tsx +1 -5
  65. package/apps/lib/components/RadioCard.tsx +9 -28
  66. package/apps/lib/components/ScrollArea.tsx +45 -43
  67. package/apps/lib/components/SearchField.tsx +49 -39
  68. package/apps/lib/components/SearchableSelect.tsx +8 -14
  69. package/apps/lib/components/SearchableTable.tsx +108 -118
  70. package/apps/lib/components/SearchableTree.tsx +469 -0
  71. package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
  72. package/apps/lib/components/SectionBlock.tsx +4 -16
  73. package/apps/lib/components/Select.tsx +53 -80
  74. package/apps/lib/components/SimpleSelect.tsx +196 -187
  75. package/apps/lib/components/Skeleton.tsx +9 -12
  76. package/apps/lib/components/SlideDatePicker.tsx +215 -166
  77. package/apps/lib/components/SpinLoading.tsx +33 -49
  78. package/apps/lib/components/Stepper.tsx +13 -56
  79. package/apps/lib/components/Switch.tsx +8 -10
  80. package/apps/lib/components/TabFormItem.tsx +3 -12
  81. package/apps/lib/components/TabSwitch.tsx +7 -34
  82. package/apps/lib/components/Table.tsx +60 -75
  83. package/apps/lib/components/TableDnDWrapper.ts +15 -48
  84. package/apps/lib/components/TextEditor.tsx +93 -104
  85. package/apps/lib/components/Textarea.tsx +8 -12
  86. package/apps/lib/components/Timeline.tsx +21 -41
  87. package/apps/lib/components/Toast.tsx +83 -83
  88. package/apps/lib/components/Toggle.tsx +112 -114
  89. package/apps/lib/components/ToggleButton.tsx +1 -1
  90. package/apps/lib/components/Tooltip.tsx +24 -19
  91. package/apps/lib/components/TransparentLabel.tsx +61 -62
  92. package/apps/lib/components/TreeDropDown.tsx +86 -52
  93. package/apps/lib/components/TreeFolder/TreeFolder.tsx +15 -48
  94. package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +16 -21
  95. package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +9 -20
  96. package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +3 -3
  97. package/apps/lib/components/TreeFolder/icons.tsx +14 -17
  98. package/apps/lib/components/TreeFolder/index.ts +15 -8
  99. package/apps/lib/components/TreeFolder/treeFolderUtils.ts +47 -52
  100. package/apps/lib/components/TreeFolder/types.ts +32 -32
  101. package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +117 -123
  102. package/apps/lib/hooks/useActiveTreeItem.ts +52 -55
  103. package/apps/lib/hooks/useClickOutside.ts +21 -20
  104. package/apps/lib/hooks/useDataViewsState.ts +86 -80
  105. package/apps/lib/hooks/useIsMobile.ts +12 -12
  106. package/apps/lib/hooks/useResize.ts +54 -65
  107. package/apps/lib/hooks/useTagSelection.ts +201 -201
  108. package/apps/lib/layouts/CNLayout.tsx +181 -140
  109. package/apps/lib/layouts/DataViewCard.tsx +4 -18
  110. package/apps/lib/layouts/FieldSection.tsx +2 -6
  111. package/apps/lib/layouts/TreeSubLayout.tsx +24 -38
  112. package/apps/lib/providers/ThemeProvider.tsx +8 -23
  113. package/apps/lib/registry.json +1004 -0
  114. package/apps/lib/tsconfig.json +9 -0
  115. package/apps/lib/utils/cn.ts +1 -1
  116. package/apps/lib/utils/dataViews/columnUtils.ts +46 -44
  117. package/apps/lib/utils/dataViews/fieldUtils.ts +70 -71
  118. package/apps/lib/utils/dataViews/nestedDataUtils.tsx +129 -122
  119. package/apps/lib/utils/dataViews/pathUtils.ts +74 -67
  120. package/apps/lib/utils/dataViews/rangeUtils.ts +121 -112
  121. package/apps/lib/utils/dataViews/treeUtils.ts +204 -211
  122. package/apps/lib/utils/dateFormat.ts +64 -54
  123. package/apps/lib/utils/markdownParser.ts +2 -7
  124. package/apps/lib/utils/resize.ts +21 -25
  125. package/apps/lib/utils/types.ts +13 -13
  126. package/dist/bin/index.js +8 -2
  127. package/dist/bin/index.js.map +1 -1
  128. package/dist/src/shared/getAvailableFiles.d.ts.map +1 -1
  129. package/dist/src/shared/getAvailableFiles.js +6 -1
  130. package/dist/src/shared/getAvailableFiles.js.map +1 -1
  131. package/dist/src/shared/loadRegistry.d.ts +7 -0
  132. package/dist/src/shared/loadRegistry.d.ts.map +1 -0
  133. package/dist/src/shared/loadRegistry.js +31 -0
  134. package/dist/src/shared/loadRegistry.js.map +1 -0
  135. package/dist/src/shared/resolveInstallPlan.d.ts +12 -0
  136. package/dist/src/shared/resolveInstallPlan.d.ts.map +1 -0
  137. package/dist/src/shared/resolveInstallPlan.js +39 -0
  138. package/dist/src/shared/resolveInstallPlan.js.map +1 -0
  139. package/dist/src/types/main.d.ts +24 -0
  140. package/dist/src/types/main.d.ts.map +1 -1
  141. package/docs/README.md +10 -2
  142. package/docs/components/action-button.md +30 -24
  143. package/docs/components/actions-group.md +26 -20
  144. package/docs/components/alert-dialog.md +45 -45
  145. package/docs/components/avatar.md +6 -2
  146. package/docs/components/badge-field.md +6 -2
  147. package/docs/components/badge.md +7 -1
  148. package/docs/components/breadcrumb.md +15 -40
  149. package/docs/components/button-group.md +13 -10
  150. package/docs/components/button.md +58 -33
  151. package/docs/components/calendar.md +26 -19
  152. package/docs/components/card.md +19 -16
  153. package/docs/components/chart-block-tool.md +128 -0
  154. package/docs/components/checkbox.md +16 -8
  155. package/docs/components/cn-layout.md +7 -1
  156. package/docs/components/context-menu.md +18 -25
  157. package/docs/components/count-badge.md +7 -1
  158. package/docs/components/data-table.md +45 -33
  159. package/docs/components/data-views-config-panel.md +15 -11
  160. package/docs/components/data-views-layout.md +13 -16
  161. package/docs/components/date-picker.md +30 -23
  162. package/docs/components/dialog.md +43 -42
  163. package/docs/components/divider.md +10 -4
  164. package/docs/components/drawer.md +8 -33
  165. package/docs/components/dropdown-menu.md +25 -34
  166. package/docs/components/field-hint.md +37 -25
  167. package/docs/components/field-section.md +9 -3
  168. package/docs/components/form-stepper.md +6 -0
  169. package/docs/components/form.md +17 -20
  170. package/docs/components/header-bar.md +6 -0
  171. package/docs/components/image-attachment.md +33 -41
  172. package/docs/components/inbox-view.md +16 -5
  173. package/docs/components/inner-label-field.md +34 -24
  174. package/docs/components/input-field.md +18 -10
  175. package/docs/components/input-otp.md +14 -11
  176. package/docs/components/input.md +22 -16
  177. package/docs/components/kanban-view.md +15 -5
  178. package/docs/components/label-field.md +32 -22
  179. package/docs/components/label.md +43 -32
  180. package/docs/components/labeled-check-box.md +16 -8
  181. package/docs/components/labeled-radio.md +18 -11
  182. package/docs/components/link-button.md +7 -1
  183. package/docs/components/login-button.md +8 -2
  184. package/docs/components/password-level.md +37 -24
  185. package/docs/components/popover.md +26 -23
  186. package/docs/components/profile-menu.md +38 -27
  187. package/docs/components/radio-card.md +16 -9
  188. package/docs/components/radio.md +16 -8
  189. package/docs/components/scroll-area.md +6 -2
  190. package/docs/components/search-field.md +14 -6
  191. package/docs/components/searchable-select.md +19 -14
  192. package/docs/components/searchable-table.md +18 -13
  193. package/docs/components/searchable-tree-dialog.md +190 -0
  194. package/docs/components/searchable-tree.md +200 -0
  195. package/docs/components/section-block.md +12 -4
  196. package/docs/components/select.md +23 -18
  197. package/docs/components/simple-select.md +14 -10
  198. package/docs/components/skeleton.md +43 -33
  199. package/docs/components/slide-date-picker.md +37 -29
  200. package/docs/components/spin-loading.md +32 -23
  201. package/docs/components/stepper.md +6 -0
  202. package/docs/components/switch.md +14 -6
  203. package/docs/components/tab-form-item.md +7 -1
  204. package/docs/components/tab-switch.md +13 -6
  205. package/docs/components/table-dnd-wrapper.md +105 -0
  206. package/docs/components/table-view.md +15 -5
  207. package/docs/components/table.md +28 -28
  208. package/docs/components/text-editor.md +19 -13
  209. package/docs/components/textarea.md +15 -7
  210. package/docs/components/timeline.md +6 -0
  211. package/docs/components/toast.md +35 -26
  212. package/docs/components/toggle-button.md +24 -21
  213. package/docs/components/toggle.md +23 -15
  214. package/docs/components/tooltip.md +42 -30
  215. package/docs/components/transparent-label.md +29 -20
  216. package/docs/components/tree-drop-down.md +31 -23
  217. package/docs/components/tree-sub-layout.md +6 -2
  218. package/docs/components/tree-view.md +16 -5
  219. package/docs/explanation/architecture.md +54 -0
  220. package/docs/explanation/design-system.md +52 -0
  221. package/docs/how-to/data-views-from-backend-response.md +6 -4
  222. package/docs/how-to/guides.md +24 -18
  223. package/docs/migration/changelog.md +38 -0
  224. package/docs/reference/cli.md +87 -0
  225. package/docs/reference/components.md +11 -12
  226. package/docs/reference/hooks.md +8 -8
  227. package/docs/reference/providers.md +22 -22
  228. package/docs/reference/tailwind-plugins.md +2 -2
  229. package/docs/reference/theme.md +85 -0
  230. package/docs/reference/types.md +4 -4
  231. package/docs/reference/utilities.md +19 -26
  232. package/docs/tutorials/building-first-form.md +20 -13
  233. package/docs/tutorials/component-composition.md +34 -50
  234. package/docs/tutorials/getting-started.md +2 -2
  235. package/docs/tutorials/theming-basics.md +13 -10
  236. package/package.json +31 -3
  237. package/dist/src/commands/block.d.ts +0 -5
  238. package/dist/src/commands/block.d.ts.map +0 -1
  239. package/dist/src/commands/block.js +0 -255
  240. package/dist/src/commands/block.js.map +0 -1
  241. package/dist/src/shared/configureFonts.d.ts +0 -6
  242. package/dist/src/shared/configureFonts.d.ts.map +0 -1
  243. package/dist/src/shared/configureFonts.js +0 -106
  244. package/dist/src/shared/configureFonts.js.map +0 -1
  245. package/dist/src/shared/configureGlobalCss.d.ts +0 -6
  246. package/dist/src/shared/configureGlobalCss.d.ts.map +0 -1
  247. package/dist/src/shared/configureGlobalCss.js +0 -154
  248. package/dist/src/shared/configureGlobalCss.js.map +0 -1
  249. package/dist/src/shared/configureTailwind.d.ts +0 -7
  250. package/dist/src/shared/configureTailwind.d.ts.map +0 -1
  251. package/dist/src/shared/configureTailwind.js +0 -163
  252. package/dist/src/shared/configureTailwind.js.map +0 -1
  253. package/dist/src/shared/detectFramework.d.ts +0 -23
  254. package/dist/src/shared/detectFramework.d.ts.map +0 -1
  255. package/dist/src/shared/detectFramework.js +0 -119
  256. package/dist/src/shared/detectFramework.js.map +0 -1
  257. package/dist/src/shared/installBaseUtils.d.ts +0 -5
  258. package/dist/src/shared/installBaseUtils.d.ts.map +0 -1
  259. package/dist/src/shared/installBaseUtils.js +0 -79
  260. package/dist/src/shared/installBaseUtils.js.map +0 -1
  261. package/dist/src/shared/resolveAliases.d.ts +0 -24
  262. package/dist/src/shared/resolveAliases.d.ts.map +0 -1
  263. package/dist/src/shared/resolveAliases.js +0 -98
  264. package/dist/src/shared/resolveAliases.js.map +0 -1
@@ -1,191 +1,182 @@
1
- "use client"
1
+ "use client";
2
2
 
3
- import * as React from "react"
4
- import * as LabelPrimitive from "@radix-ui/react-label"
5
- import { Slot } from "@radix-ui/react-slot"
3
+ import * as React from "react";
4
+ import * as LabelPrimitive from "@radix-ui/react-label";
5
+ import { Slot } from "@radix-ui/react-slot";
6
6
  import {
7
- Controller,
8
- FormProvider,
9
- useFormContext,
10
- type ControllerProps,
11
- type FieldPath,
12
- type FieldValues,
13
- } from "react-hook-form"
14
-
15
- import { cn } from "../utils/cn"
16
- import { Label } from "./Label"
17
- import { Themes } from "../utils/types"
18
- import { ReactNode } from "react"
19
- const Form = FormProvider
7
+ Controller,
8
+ FormProvider,
9
+ useFormContext,
10
+ type ControllerProps,
11
+ type FieldPath,
12
+ type FieldValues,
13
+ } from "react-hook-form";
14
+
15
+ import { cn } from "../utils/cn";
16
+ import { Label } from "./Label";
17
+ import { Themes } from "../utils/types";
18
+ import { ReactNode } from "react";
19
+ const Form = FormProvider;
20
20
 
21
21
  type FormFieldContextValue<
22
- TFieldValues extends FieldValues = FieldValues,
23
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>
22
+ TFieldValues extends FieldValues = FieldValues,
23
+ TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
24
24
  > = {
25
- name: TName
26
- }
25
+ name: TName;
26
+ };
27
27
 
28
- const FormFieldContext = React.createContext<FormFieldContextValue>(
29
- {} as FormFieldContextValue
30
- )
28
+ const FormFieldContext = React.createContext<FormFieldContextValue>({} as FormFieldContextValue);
31
29
 
32
30
  const FormField = <
33
- TFieldValues extends FieldValues = FieldValues,
34
- TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>
31
+ TFieldValues extends FieldValues = FieldValues,
32
+ TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
35
33
  >({
36
- ...props
34
+ ...props
37
35
  }: ControllerProps<TFieldValues, TName>) => {
38
- return (
39
- <FormFieldContext.Provider value={{ name: props.name }}>
40
- <Controller {...props} />
41
- </FormFieldContext.Provider>
42
- )
43
- }
36
+ return (
37
+ <FormFieldContext.Provider value={{ name: props.name }}>
38
+ <Controller {...props} />
39
+ </FormFieldContext.Provider>
40
+ );
41
+ };
44
42
 
45
43
  const useFormField = () => {
46
- const fieldContext = React.useContext(FormFieldContext)
47
- const itemContext = React.useContext(FormItemContext)
48
- const { getFieldState, formState } = useFormContext()
44
+ const fieldContext = React.useContext(FormFieldContext);
45
+ const itemContext = React.useContext(FormItemContext);
46
+ const { getFieldState, formState } = useFormContext();
49
47
 
50
- const fieldState = getFieldState(fieldContext.name, formState)
48
+ const fieldState = getFieldState(fieldContext.name, formState);
51
49
 
52
- if (!fieldContext) {
53
- throw new Error("useFormField should be used within <FormField>")
54
- }
50
+ if (!fieldContext) {
51
+ throw new Error("useFormField should be used within <FormField>");
52
+ }
55
53
 
56
- const { id } = itemContext
54
+ const { id } = itemContext;
57
55
 
58
- return {
59
- id,
60
- name: fieldContext.name,
61
- formItemId: `${id}-form-item`,
62
- formDescriptionId: `${id}-form-item-description`,
63
- formMessageId: `${id}-form-item-message`,
64
- ...fieldState,
65
- }
66
- }
56
+ return {
57
+ id,
58
+ name: fieldContext.name,
59
+ formItemId: `${id}-form-item`,
60
+ formDescriptionId: `${id}-form-item-description`,
61
+ formMessageId: `${id}-form-item-message`,
62
+ ...fieldState,
63
+ };
64
+ };
67
65
 
68
66
  type FormItemContextValue = {
69
- id: string
70
- }
67
+ id: string;
68
+ };
71
69
 
72
- const FormItemContext = React.createContext<FormItemContextValue>(
73
- {} as FormItemContextValue
74
- )
70
+ const FormItemContext = React.createContext<FormItemContextValue>({} as FormItemContextValue);
75
71
 
76
- const FormItem = React.forwardRef<
77
- HTMLDivElement,
78
- React.HTMLAttributes<HTMLDivElement>
79
- >(({ className, ...props }, ref) => {
80
- const id = React.useId()
72
+ const FormItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
73
+ ({ className, ...props }, ref) => {
74
+ const id = React.useId();
81
75
 
82
76
  return (
83
- <FormItemContext.Provider value={{ id }}>
84
- <div ref={ref} className={cn("space-y-2", className)} {...props} />
85
- </FormItemContext.Provider>
86
- )
87
- })
88
- FormItem.displayName = "FormItem"
77
+ <FormItemContext.Provider value={{ id }}>
78
+ <div ref={ref} className={cn("space-y-2", className)} {...props} />
79
+ </FormItemContext.Provider>
80
+ );
81
+ },
82
+ );
83
+ FormItem.displayName = "FormItem";
89
84
 
90
85
  const FormLabel = React.forwardRef<
91
- React.ElementRef<typeof LabelPrimitive.Root>,
92
- React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & {
93
- label?: ReactNode; // main label
94
- requiredLabel?: ReactNode; // normal text with required style
95
- secondaryLabel?: ReactNode; // normal text with secondary style
96
- as?: React.ElementType;
97
- asChild?: boolean;
98
- size?: "S" | "M" | "L";
99
- variant?: "SystemStyle" | "PresentationStyle";
100
- theme?: Themes
101
- labelsClassName?: string;
102
- labelDirections?: "vertical" | "horizontal";
103
- childrenDirections?: "vertical" | "horizontal";
104
- }
86
+ React.ElementRef<typeof LabelPrimitive.Root>,
87
+ React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & {
88
+ label?: ReactNode; // main label
89
+ requiredLabel?: ReactNode; // normal text with required style
90
+ secondaryLabel?: ReactNode; // normal text with secondary style
91
+ as?: React.ElementType;
92
+ asChild?: boolean;
93
+ size?: "S" | "M" | "L";
94
+ variant?: "SystemStyle" | "PresentationStyle";
95
+ theme?: Themes;
96
+ labelsClassName?: string;
97
+ labelDirections?: "vertical" | "horizontal";
98
+ childrenDirections?: "vertical" | "horizontal";
99
+ }
105
100
  >(({ className, ...props }, ref) => {
106
- const { error, formItemId } = useFormField()
107
-
108
- return (
109
- <Label
110
- ref={ref}
111
- className={cn(error && "text-destructive", className)}
112
- htmlFor={formItemId}
113
- {...props}
114
- />
115
- )
116
- })
117
- FormLabel.displayName = "FormLabel"
101
+ const { error, formItemId } = useFormField();
102
+
103
+ return (
104
+ <Label
105
+ ref={ref}
106
+ className={cn(error && "text-destructive", className)}
107
+ htmlFor={formItemId}
108
+ {...props}
109
+ />
110
+ );
111
+ });
112
+ FormLabel.displayName = "FormLabel";
118
113
 
119
114
  const FormControl = React.forwardRef<
120
- React.ElementRef<typeof Slot>,
121
- React.ComponentPropsWithoutRef<typeof Slot>
115
+ React.ElementRef<typeof Slot>,
116
+ React.ComponentPropsWithoutRef<typeof Slot>
122
117
  >(({ ...props }, ref) => {
123
- const { error, formItemId, formDescriptionId, formMessageId } = useFormField()
124
-
125
- return (
126
- <Slot
127
- ref={ref}
128
- id={formItemId}
129
- aria-describedby={
130
- !error
131
- ? `${formDescriptionId}`
132
- : `${formDescriptionId} ${formMessageId}`
133
- }
134
- aria-invalid={!!error}
135
- {...props}
136
- />
137
- )
138
- })
139
- FormControl.displayName = "FormControl"
118
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
119
+
120
+ return (
121
+ <Slot
122
+ ref={ref}
123
+ id={formItemId}
124
+ aria-describedby={!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`}
125
+ aria-invalid={!!error}
126
+ {...props}
127
+ />
128
+ );
129
+ });
130
+ FormControl.displayName = "FormControl";
140
131
 
141
132
  const FormDescription = React.forwardRef<
142
- HTMLParagraphElement,
143
- React.HTMLAttributes<HTMLParagraphElement>
133
+ HTMLParagraphElement,
134
+ React.HTMLAttributes<HTMLParagraphElement>
144
135
  >(({ className, ...props }, ref) => {
145
- const { formDescriptionId } = useFormField()
146
-
147
- return (
148
- <p
149
- ref={ref}
150
- id={formDescriptionId}
151
- className={cn("text-[0.8rem] text-muted-foreground", className)}
152
- {...props}
153
- />
154
- )
155
- })
156
- FormDescription.displayName = "FormDescription"
136
+ const { formDescriptionId } = useFormField();
137
+
138
+ return (
139
+ <p
140
+ ref={ref}
141
+ id={formDescriptionId}
142
+ className={cn("text-[0.8rem] text-muted-foreground", className)}
143
+ {...props}
144
+ />
145
+ );
146
+ });
147
+ FormDescription.displayName = "FormDescription";
157
148
 
158
149
  const FormMessage = React.forwardRef<
159
- HTMLParagraphElement,
160
- React.HTMLAttributes<HTMLParagraphElement>
150
+ HTMLParagraphElement,
151
+ React.HTMLAttributes<HTMLParagraphElement>
161
152
  >(({ className, children, ...props }, ref) => {
162
- const { error, formMessageId } = useFormField()
163
- const body = error ? String(error?.message ?? "") : children
164
-
165
- if (!body) {
166
- return null
167
- }
168
-
169
- return (
170
- <p
171
- ref={ref}
172
- id={formMessageId}
173
- className={cn("text-[0.8rem] font-medium text-destructive", className)}
174
- {...props}
175
- >
176
- {body}
177
- </p>
178
- )
179
- })
180
- FormMessage.displayName = "FormMessage"
153
+ const { error, formMessageId } = useFormField();
154
+ const body = error ? String(error?.message ?? "") : children;
155
+
156
+ if (!body) {
157
+ return null;
158
+ }
159
+
160
+ return (
161
+ <p
162
+ ref={ref}
163
+ id={formMessageId}
164
+ className={cn("text-[0.8rem] font-medium text-destructive", className)}
165
+ {...props}
166
+ >
167
+ {body}
168
+ </p>
169
+ );
170
+ });
171
+ FormMessage.displayName = "FormMessage";
181
172
 
182
173
  export {
183
- useFormField,
184
- Form,
185
- FormItem,
186
- FormLabel,
187
- FormControl,
188
- FormDescription,
189
- FormMessage,
190
- FormField,
191
- }
174
+ useFormField,
175
+ Form,
176
+ FormItem,
177
+ FormLabel,
178
+ FormControl,
179
+ FormDescription,
180
+ FormMessage,
181
+ FormField,
182
+ };
@@ -1,12 +1,6 @@
1
1
  "use client";
2
2
 
3
- import React, {
4
- forwardRef,
5
- HTMLAttributes,
6
- ReactNode,
7
- createContext,
8
- useContext,
9
- } from "react";
3
+ import React, { forwardRef, HTMLAttributes, ReactNode, createContext, useContext } from "react";
10
4
  import { cva } from "class-variance-authority";
11
5
  import { cn } from "../utils/cn";
12
6
  import { Themes } from "../utils/types";
@@ -80,18 +74,14 @@ const formStepStyles = cva(
80
74
  },
81
75
  );
82
76
 
83
- interface FormStepProps
84
- extends Omit<HTMLAttributes<HTMLDivElement>, "type"> {
77
+ interface FormStepProps extends Omit<HTMLAttributes<HTMLDivElement>, "type"> {
85
78
  index?: number;
86
79
  type?: FormStepperType;
87
80
  selected?: boolean;
88
81
  }
89
82
 
90
83
  const FormStep = forwardRef<HTMLDivElement, FormStepProps>(
91
- (
92
- { className, index = 0, type = "default", selected, children, ...props },
93
- ref,
94
- ) => {
84
+ ({ className, index = 0, type = "default", selected, children, ...props }, ref) => {
95
85
  const { activeStep } = useFormStepperContext();
96
86
  const isSelected = selected ?? index === activeStep;
97
87
 
@@ -105,7 +95,7 @@ const FormStep = forwardRef<HTMLDivElement, FormStepProps>(
105
95
  >
106
96
  {React.Children.map(children, (child) => {
107
97
  if (!React.isValidElement(child)) return child;
108
- return React.cloneElement(child as React.ReactElement<any>, {
98
+ return React.cloneElement(child as React.ReactElement<Record<string, unknown>>, {
109
99
  _selected: isSelected,
110
100
  _type: type,
111
101
  _index: index,
@@ -196,33 +186,15 @@ interface FormStepIndicatorProps extends HTMLAttributes<HTMLDivElement> {
196
186
  }
197
187
 
198
188
  const FormStepIndicator = forwardRef<HTMLDivElement, FormStepIndicatorProps>(
199
- (
200
- {
201
- className,
202
- badgeIcon,
203
- _selected,
204
- _type = "default",
205
- _index = 0,
206
- children,
207
- ...props
208
- },
209
- ref,
210
- ) => {
189
+ ({ className, badgeIcon, _selected, _type = "default", _index = 0, children, ...props }, ref) => {
211
190
  const showBadge = _type === "success" || _type === "negative";
212
191
  const defaultBadgeIcon =
213
- _type === "success" ? (
214
- <i className="ri-check-line" />
215
- ) : (
216
- <i className="ri-information-fill" />
217
- );
192
+ _type === "success" ? <i className="ri-check-line" /> : <i className="ri-information-fill" />;
218
193
 
219
194
  return (
220
195
  <div
221
196
  ref={ref}
222
- className={cn(
223
- formStepIndicatorStyles({ type: _type, selected: !!_selected }),
224
- className,
225
- )}
197
+ className={cn(formStepIndicatorStyles({ type: _type, selected: !!_selected }), className)}
226
198
  {...props}
227
199
  >
228
200
  {children ?? _index + 1}
@@ -276,13 +248,11 @@ interface FormStepLabelProps extends HTMLAttributes<HTMLDivElement> {
276
248
  }
277
249
 
278
250
  const FormStepLabel = forwardRef<HTMLDivElement, FormStepLabelProps>(
251
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
279
252
  ({ className, _selected, _type: _t, _index: _i, ...props }, ref) => (
280
253
  <div
281
254
  ref={ref}
282
- className={cn(
283
- formStepLabelStyles({ selected: !!_selected }),
284
- className,
285
- )}
255
+ className={cn(formStepLabelStyles({ selected: !!_selected }), className)}
286
256
  {...props}
287
257
  />
288
258
  ),
@@ -38,15 +38,7 @@ const rowStyles = cva(["flex", "items-center"], {
38
38
 
39
39
  // Colored pill holding `label`.
40
40
  const badgeStyles = cva(
41
- [
42
- "flex",
43
- "h-8",
44
- "items-center",
45
- "justify-center",
46
- "gap-2.5",
47
- "rounded-lg",
48
- "px-1",
49
- ],
41
+ ["flex", "h-8", "items-center", "justify-center", "gap-2.5", "rounded-lg", "px-1"],
50
42
  {
51
43
  variants: {
52
44
  variant: {