torch-glare 2.4.0 → 2.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (318) 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 +21 -20
  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 +40 -24
  13. package/apps/lib/components/Checkbox.tsx +9 -16
  14. package/apps/lib/components/ColorPicker.tsx +441 -0
  15. package/apps/lib/components/ConclusionHeader.tsx +148 -0
  16. package/apps/lib/components/ContextMenu.tsx +97 -96
  17. package/apps/lib/components/CountBadge.tsx +4 -6
  18. package/apps/lib/components/DataTable.tsx +196 -216
  19. package/apps/lib/components/DataViews/DataViewRadio.tsx +1 -6
  20. package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +13 -47
  21. package/apps/lib/components/DataViews/DataViewsHeader.tsx +1 -3
  22. package/apps/lib/components/DataViews/DataViewsLayout.tsx +5 -12
  23. package/apps/lib/components/DataViews/FilterPanel.tsx +155 -149
  24. package/apps/lib/components/DataViews/HeaderSearch.tsx +1 -5
  25. package/apps/lib/components/DataViews/InboxView.tsx +22 -68
  26. package/apps/lib/components/DataViews/InboxViewCard.tsx +68 -77
  27. package/apps/lib/components/DataViews/KanbanView.tsx +8 -25
  28. package/apps/lib/components/DataViews/PanelControls.tsx +3 -13
  29. package/apps/lib/components/DataViews/SettingsPanel.tsx +83 -89
  30. package/apps/lib/components/DataViews/TableView.tsx +8 -28
  31. package/apps/lib/components/DataViews/TreeView.tsx +12 -40
  32. package/apps/lib/components/DataViews/badgeAdapter.ts +32 -28
  33. package/apps/lib/components/DataViews/fieldRenderers.tsx +106 -141
  34. package/apps/lib/components/DataViews/filters/DatePickerRangeFilter.tsx +30 -23
  35. package/apps/lib/components/DataViews/filters/DateRangePopover.tsx +39 -32
  36. package/apps/lib/components/DataViews/filters/PresetChips.tsx +15 -15
  37. package/apps/lib/components/DataViews/filters/RangeSliderWithInputs.tsx +69 -58
  38. package/apps/lib/components/DataViews/index.ts +26 -26
  39. package/apps/lib/components/DataViews/tree/TreeDrawer.tsx +12 -16
  40. package/apps/lib/components/DataViews/tree/TreeSidebar.tsx +28 -31
  41. package/apps/lib/components/DataViews/types.ts +104 -115
  42. package/apps/lib/components/DatePicker.tsx +200 -196
  43. package/apps/lib/components/Dialog.tsx +92 -105
  44. package/apps/lib/components/Divider.tsx +21 -24
  45. package/apps/lib/components/Drawer.tsx +124 -142
  46. package/apps/lib/components/DropdownMenu.tsx +131 -171
  47. package/apps/lib/components/FieldHint.tsx +4 -11
  48. package/apps/lib/components/Form.tsx +146 -155
  49. package/apps/lib/components/FormBuilder/DisplayField.tsx +40 -0
  50. package/apps/lib/components/FormBuilder/context.ts +71 -0
  51. package/apps/lib/components/FormBuilder/fields/ChoiceFields.tsx +65 -0
  52. package/apps/lib/components/FormBuilder/fields/ColorField.tsx +76 -0
  53. package/apps/lib/components/FormBuilder/fields/CustomField.tsx +16 -0
  54. package/apps/lib/components/FormBuilder/fields/DateField.tsx +34 -0
  55. package/apps/lib/components/FormBuilder/fields/FieldArray.tsx +79 -0
  56. package/apps/lib/components/FormBuilder/fields/FieldShell.tsx +174 -0
  57. package/apps/lib/components/FormBuilder/fields/FileField.tsx +40 -0
  58. package/apps/lib/components/FormBuilder/fields/OptionListFields.tsx +139 -0
  59. package/apps/lib/components/FormBuilder/fields/OtpField.tsx +32 -0
  60. package/apps/lib/components/FormBuilder/fields/PhoneField.tsx +82 -0
  61. package/apps/lib/components/FormBuilder/fields/RichTextEditorField.tsx +37 -0
  62. package/apps/lib/components/FormBuilder/fields/SelectField.tsx +101 -0
  63. package/apps/lib/components/FormBuilder/fields/SignatureField.tsx +175 -0
  64. package/apps/lib/components/FormBuilder/fields/SliderField.tsx +72 -0
  65. package/apps/lib/components/FormBuilder/fields/SwitchBoxField.tsx +42 -0
  66. package/apps/lib/components/FormBuilder/fields/TableField.tsx +312 -0
  67. package/apps/lib/components/FormBuilder/fields/TextField.tsx +222 -0
  68. package/apps/lib/components/FormBuilder/fields/TreeSelectField.tsx +49 -0
  69. package/apps/lib/components/FormBuilder/fields/countries.ts +303 -0
  70. package/apps/lib/components/FormBuilder/fields/index.ts +25 -0
  71. package/apps/lib/components/FormBuilder/form-builder.tsx +292 -0
  72. package/apps/lib/components/FormBuilder/header.tsx +105 -0
  73. package/apps/lib/components/FormBuilder/index.ts +37 -0
  74. package/apps/lib/components/FormBuilder/numberFormat.ts +16 -0
  75. package/apps/lib/components/FormBuilder/stepper.tsx +217 -0
  76. package/apps/lib/components/FormBuilder/submit.tsx +41 -0
  77. package/apps/lib/components/FormBuilder/types.ts +264 -0
  78. package/apps/lib/components/FormBuilder/viewFormat.tsx +137 -0
  79. package/apps/lib/components/FormRenderer/FormDrawer.tsx +121 -0
  80. package/apps/lib/components/FormRenderer/form-renderer.tsx +113 -0
  81. package/apps/lib/components/FormRenderer/index.ts +9 -0
  82. package/apps/lib/components/FormRenderer/types.ts +79 -0
  83. package/apps/lib/components/FormStepper.tsx +9 -39
  84. package/apps/lib/components/FormSummary.tsx +282 -0
  85. package/apps/lib/components/HeaderBar.tsx +1 -9
  86. package/apps/lib/components/ImageAttachment.tsx +106 -93
  87. package/apps/lib/components/InnerLabelField.tsx +20 -16
  88. package/apps/lib/components/Input.tsx +171 -172
  89. package/apps/lib/components/InputField.tsx +44 -45
  90. package/apps/lib/components/InputOTP.tsx +68 -69
  91. package/apps/lib/components/Label.tsx +61 -58
  92. package/apps/lib/components/LabelField.tsx +4 -5
  93. package/apps/lib/components/LabeledCheckBox.tsx +8 -12
  94. package/apps/lib/components/LabeledRadio.tsx +7 -5
  95. package/apps/lib/components/LinkButton.tsx +2 -9
  96. package/apps/lib/components/LoginButton.tsx +4 -9
  97. package/apps/lib/components/PasswordLevel.tsx +5 -5
  98. package/apps/lib/components/Popover.tsx +15 -33
  99. package/apps/lib/components/ProfileMenu.tsx +67 -72
  100. package/apps/lib/components/Radio.tsx +1 -5
  101. package/apps/lib/components/RadioCard.tsx +11 -28
  102. package/apps/lib/components/ScrollArea.tsx +45 -43
  103. package/apps/lib/components/SearchField.tsx +49 -39
  104. package/apps/lib/components/SearchableSelect.tsx +16 -16
  105. package/apps/lib/components/SearchableTable.tsx +108 -118
  106. package/apps/lib/components/SearchableTree.tsx +469 -0
  107. package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
  108. package/apps/lib/components/SectionBlock.tsx +19 -23
  109. package/apps/lib/components/Select.tsx +80 -186
  110. package/apps/lib/components/SimpleSelect.tsx +196 -187
  111. package/apps/lib/components/Skeleton.tsx +9 -12
  112. package/apps/lib/components/SlideDatePicker.tsx +215 -166
  113. package/apps/lib/components/SpinLoading.tsx +33 -49
  114. package/apps/lib/components/Stepper.tsx +13 -56
  115. package/apps/lib/components/Switch.tsx +8 -10
  116. package/apps/lib/components/TabFormItem.tsx +3 -12
  117. package/apps/lib/components/TabSwitch.tsx +7 -34
  118. package/apps/lib/components/Table.tsx +60 -75
  119. package/apps/lib/components/{ChartBlockTool.ts → TextEditor/ChartBlockTool.ts} +17 -52
  120. package/apps/lib/components/TextEditor/RichTextField.tsx +46 -0
  121. package/apps/lib/components/{TableDnDWrapper.ts → TextEditor/TableDnDWrapper.ts} +15 -48
  122. package/apps/lib/components/{TextEditor.tsx → TextEditor/TextEditor.tsx} +156 -113
  123. package/apps/lib/components/TextEditor/TextEditorToolbar.tsx +429 -0
  124. package/apps/lib/components/TextEditor/editor-tools/AlignmentTune.ts +70 -0
  125. package/apps/lib/components/TextEditor/editor-tools/ColorInlineTool.ts +50 -0
  126. package/apps/lib/components/TextEditor/editor-tools/StrikethroughInlineTool.ts +48 -0
  127. package/apps/lib/components/TextEditor/editor-tools/inlineFormat.ts +98 -0
  128. package/apps/lib/{types → components/TextEditor}/editorjs.d.ts +19 -0
  129. package/apps/lib/components/TextEditor/index.ts +7 -0
  130. package/apps/lib/{utils → components/TextEditor}/markdownParser.ts +2 -7
  131. package/apps/lib/components/Textarea.tsx +9 -13
  132. package/apps/lib/components/Timeline.tsx +21 -41
  133. package/apps/lib/components/Toast.tsx +83 -83
  134. package/apps/lib/components/Toggle.tsx +112 -114
  135. package/apps/lib/components/ToggleButton.tsx +1 -1
  136. package/apps/lib/components/Tooltip.tsx +24 -19
  137. package/apps/lib/components/TransparentLabel.tsx +61 -62
  138. package/apps/lib/components/TreeDropDown.tsx +86 -52
  139. package/apps/lib/components/TreeFolder/TreeFolder.tsx +15 -48
  140. package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +16 -21
  141. package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +9 -20
  142. package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +3 -3
  143. package/apps/lib/components/TreeFolder/icons.tsx +14 -17
  144. package/apps/lib/components/TreeFolder/index.ts +15 -8
  145. package/apps/lib/components/TreeFolder/treeFolderUtils.ts +47 -52
  146. package/apps/lib/components/TreeFolder/types.ts +32 -32
  147. package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +117 -123
  148. package/apps/lib/hooks/useActiveTreeItem.ts +52 -55
  149. package/apps/lib/hooks/useClickOutside.ts +21 -20
  150. package/apps/lib/hooks/useDataViewsState.ts +86 -80
  151. package/apps/lib/hooks/useIsMobile.ts +12 -12
  152. package/apps/lib/hooks/useResize.ts +54 -65
  153. package/apps/lib/hooks/useTagSelection.ts +201 -201
  154. package/apps/lib/layouts/CNLayout.tsx +181 -140
  155. package/apps/lib/layouts/DataViewCard.tsx +4 -18
  156. package/apps/lib/layouts/FieldSection.tsx +2 -6
  157. package/apps/lib/layouts/TreeSubLayout.tsx +24 -38
  158. package/apps/lib/providers/ThemeProvider.tsx +8 -23
  159. package/apps/lib/registry.json +997 -0
  160. package/apps/lib/tsconfig.json +9 -0
  161. package/apps/lib/tsconfig.tsbuildinfo +1 -0
  162. package/apps/lib/utils/cn.ts +1 -1
  163. package/apps/lib/utils/color.ts +175 -0
  164. package/apps/lib/utils/dataViews/columnUtils.ts +46 -44
  165. package/apps/lib/utils/dataViews/fieldUtils.ts +70 -71
  166. package/apps/lib/utils/dataViews/nestedDataUtils.tsx +129 -122
  167. package/apps/lib/utils/dataViews/pathUtils.ts +74 -67
  168. package/apps/lib/utils/dataViews/rangeUtils.ts +121 -112
  169. package/apps/lib/utils/dataViews/treeUtils.ts +204 -211
  170. package/apps/lib/utils/dateFormat.ts +64 -54
  171. package/apps/lib/utils/resize.ts +21 -25
  172. package/apps/lib/utils/types.ts +13 -13
  173. package/dist/bin/index.js +8 -2
  174. package/dist/bin/index.js.map +1 -1
  175. package/dist/src/shared/getAvailableFiles.d.ts.map +1 -1
  176. package/dist/src/shared/getAvailableFiles.js +6 -1
  177. package/dist/src/shared/getAvailableFiles.js.map +1 -1
  178. package/dist/src/shared/loadRegistry.d.ts +7 -0
  179. package/dist/src/shared/loadRegistry.d.ts.map +1 -0
  180. package/dist/src/shared/loadRegistry.js +31 -0
  181. package/dist/src/shared/loadRegistry.js.map +1 -0
  182. package/dist/src/shared/resolveInstallPlan.d.ts +12 -0
  183. package/dist/src/shared/resolveInstallPlan.d.ts.map +1 -0
  184. package/dist/src/shared/resolveInstallPlan.js +39 -0
  185. package/dist/src/shared/resolveInstallPlan.js.map +1 -0
  186. package/dist/src/types/main.d.ts +24 -0
  187. package/dist/src/types/main.d.ts.map +1 -1
  188. package/docs/README.md +10 -2
  189. package/docs/components/action-button.md +30 -24
  190. package/docs/components/actions-group.md +26 -20
  191. package/docs/components/alert-dialog.md +45 -45
  192. package/docs/components/avatar.md +6 -2
  193. package/docs/components/badge-field.md +6 -2
  194. package/docs/components/badge.md +7 -1
  195. package/docs/components/breadcrumb.md +15 -40
  196. package/docs/components/button-group.md +13 -10
  197. package/docs/components/button.md +58 -33
  198. package/docs/components/calendar.md +26 -19
  199. package/docs/components/card.md +23 -18
  200. package/docs/components/chart-block-tool.md +129 -0
  201. package/docs/components/checkbox.md +16 -8
  202. package/docs/components/cn-layout.md +7 -1
  203. package/docs/components/color-picker.md +101 -0
  204. package/docs/components/conclusion-header.md +80 -0
  205. package/docs/components/context-menu.md +18 -25
  206. package/docs/components/count-badge.md +7 -1
  207. package/docs/components/data-table.md +45 -33
  208. package/docs/components/data-views-config-panel.md +15 -11
  209. package/docs/components/data-views-layout.md +13 -16
  210. package/docs/components/date-picker.md +30 -23
  211. package/docs/components/dialog.md +43 -42
  212. package/docs/components/divider.md +10 -4
  213. package/docs/components/drawer.md +161 -135
  214. package/docs/components/dropdown-menu.md +25 -34
  215. package/docs/components/field-hint.md +37 -25
  216. package/docs/components/field-section.md +9 -3
  217. package/docs/components/form-builder.md +270 -0
  218. package/docs/components/form-renderer.md +228 -0
  219. package/docs/components/form-stepper.md +6 -0
  220. package/docs/components/form-summary.md +123 -0
  221. package/docs/components/form.md +17 -20
  222. package/docs/components/header-bar.md +6 -0
  223. package/docs/components/image-attachment.md +43 -45
  224. package/docs/components/inbox-view.md +16 -5
  225. package/docs/components/inner-label-field.md +34 -24
  226. package/docs/components/input-field.md +18 -10
  227. package/docs/components/input-otp.md +14 -11
  228. package/docs/components/input.md +22 -16
  229. package/docs/components/kanban-view.md +15 -5
  230. package/docs/components/label-field.md +32 -22
  231. package/docs/components/label.md +43 -32
  232. package/docs/components/labeled-check-box.md +16 -8
  233. package/docs/components/labeled-radio.md +18 -11
  234. package/docs/components/link-button.md +7 -1
  235. package/docs/components/login-button.md +8 -2
  236. package/docs/components/password-level.md +37 -24
  237. package/docs/components/popover.md +26 -23
  238. package/docs/components/profile-menu.md +38 -27
  239. package/docs/components/radio-card.md +16 -9
  240. package/docs/components/radio.md +16 -8
  241. package/docs/components/scroll-area.md +6 -2
  242. package/docs/components/search-field.md +14 -6
  243. package/docs/components/searchable-select.md +19 -14
  244. package/docs/components/searchable-table.md +18 -13
  245. package/docs/components/searchable-tree-dialog.md +190 -0
  246. package/docs/components/searchable-tree.md +200 -0
  247. package/docs/components/section-block.md +12 -4
  248. package/docs/components/select.md +23 -18
  249. package/docs/components/simple-select.md +14 -10
  250. package/docs/components/skeleton.md +43 -33
  251. package/docs/components/slide-date-picker.md +37 -29
  252. package/docs/components/spin-loading.md +32 -23
  253. package/docs/components/stepper.md +6 -0
  254. package/docs/components/switch.md +14 -6
  255. package/docs/components/tab-form-item.md +7 -1
  256. package/docs/components/tab-switch.md +13 -6
  257. package/docs/components/table-dnd-wrapper.md +107 -0
  258. package/docs/components/table-view.md +15 -5
  259. package/docs/components/table.md +28 -28
  260. package/docs/components/text-editor.md +37 -13
  261. package/docs/components/textarea.md +15 -7
  262. package/docs/components/timeline.md +6 -0
  263. package/docs/components/toast.md +35 -26
  264. package/docs/components/toggle-button.md +24 -21
  265. package/docs/components/toggle.md +23 -15
  266. package/docs/components/tooltip.md +42 -30
  267. package/docs/components/transparent-label.md +29 -20
  268. package/docs/components/tree-drop-down.md +31 -23
  269. package/docs/components/tree-sub-layout.md +6 -2
  270. package/docs/components/tree-view.md +16 -5
  271. package/docs/explanation/architecture.md +54 -0
  272. package/docs/explanation/design-system.md +52 -0
  273. package/docs/how-to/data-views-from-backend-response.md +6 -4
  274. package/docs/how-to/form-and-list-recipes.md +26 -19
  275. package/docs/how-to/forms-with-form-builder.md +408 -0
  276. package/docs/how-to/guides.md +177 -197
  277. package/docs/migration/changelog.md +38 -0
  278. package/docs/reference/cli.md +87 -0
  279. package/docs/reference/components.md +11 -12
  280. package/docs/reference/hooks.md +8 -8
  281. package/docs/reference/providers.md +22 -22
  282. package/docs/reference/tailwind-plugins.md +2 -2
  283. package/docs/reference/theme.md +85 -0
  284. package/docs/reference/types.md +4 -4
  285. package/docs/reference/utilities.md +19 -26
  286. package/docs/tutorials/building-first-form.md +170 -172
  287. package/docs/tutorials/component-composition.md +34 -50
  288. package/docs/tutorials/getting-started.md +2 -2
  289. package/docs/tutorials/theming-basics.md +13 -10
  290. package/package.json +31 -3
  291. package/dist/src/commands/block.d.ts +0 -5
  292. package/dist/src/commands/block.d.ts.map +0 -1
  293. package/dist/src/commands/block.js +0 -255
  294. package/dist/src/commands/block.js.map +0 -1
  295. package/dist/src/shared/configureFonts.d.ts +0 -6
  296. package/dist/src/shared/configureFonts.d.ts.map +0 -1
  297. package/dist/src/shared/configureFonts.js +0 -106
  298. package/dist/src/shared/configureFonts.js.map +0 -1
  299. package/dist/src/shared/configureGlobalCss.d.ts +0 -6
  300. package/dist/src/shared/configureGlobalCss.d.ts.map +0 -1
  301. package/dist/src/shared/configureGlobalCss.js +0 -154
  302. package/dist/src/shared/configureGlobalCss.js.map +0 -1
  303. package/dist/src/shared/configureTailwind.d.ts +0 -7
  304. package/dist/src/shared/configureTailwind.d.ts.map +0 -1
  305. package/dist/src/shared/configureTailwind.js +0 -163
  306. package/dist/src/shared/configureTailwind.js.map +0 -1
  307. package/dist/src/shared/detectFramework.d.ts +0 -23
  308. package/dist/src/shared/detectFramework.d.ts.map +0 -1
  309. package/dist/src/shared/detectFramework.js +0 -119
  310. package/dist/src/shared/detectFramework.js.map +0 -1
  311. package/dist/src/shared/installBaseUtils.d.ts +0 -5
  312. package/dist/src/shared/installBaseUtils.d.ts.map +0 -1
  313. package/dist/src/shared/installBaseUtils.js +0 -79
  314. package/dist/src/shared/installBaseUtils.js.map +0 -1
  315. package/dist/src/shared/resolveAliases.d.ts +0 -24
  316. package/dist/src/shared/resolveAliases.d.ts.map +0 -1
  317. package/dist/src/shared/resolveAliases.js +0 -98
  318. package/dist/src/shared/resolveAliases.js.map +0 -1
@@ -1,85 +1,84 @@
1
- "use client"
2
-
3
- import * as React from "react"
4
- import { OTPInput, OTPInputContext } from "input-otp"
5
- import { cn } from "../utils/cn"
1
+ "use client";
6
2
 
3
+ import * as React from "react";
4
+ import { OTPInput, OTPInputContext } from "input-otp";
5
+ import { cn } from "../utils/cn";
7
6
 
8
7
  const InputOTP = React.forwardRef<
9
- React.ElementRef<typeof OTPInput>,
10
- React.ComponentPropsWithoutRef<typeof OTPInput>
8
+ React.ElementRef<typeof OTPInput>,
9
+ React.ComponentPropsWithoutRef<typeof OTPInput>
11
10
  >(({ className, containerClassName, ...props }, ref) => (
12
- <OTPInput
13
- ref={ref}
14
- containerClassName={cn(
15
- "flex items-center gap-2 has-[:disabled]:opacity-50",
16
- containerClassName
17
- )}
18
- className={cn("disabled:cursor-not-allowed", className)}
19
- {...props}
20
- />
21
- ))
22
- InputOTP.displayName = "InputOTP"
11
+ <OTPInput
12
+ ref={ref}
13
+ containerClassName={cn(
14
+ "flex items-center gap-2 has-[:disabled]:opacity-50",
15
+ containerClassName,
16
+ )}
17
+ className={cn("disabled:cursor-not-allowed", className)}
18
+ {...props}
19
+ />
20
+ ));
21
+ InputOTP.displayName = "InputOTP";
23
22
 
24
23
  const InputOTPGroup = React.forwardRef<
25
- React.ElementRef<"div">,
26
- React.ComponentPropsWithoutRef<"div">
24
+ React.ElementRef<"div">,
25
+ React.ComponentPropsWithoutRef<"div">
27
26
  >(({ className, ...props }, ref) => (
28
- <div ref={ref} className={cn("flex items-center", className)} {...props} />
29
- ))
30
- InputOTPGroup.displayName = "InputOTPGroup"
27
+ <div ref={ref} className={cn("flex items-center", className)} {...props} />
28
+ ));
29
+ InputOTPGroup.displayName = "InputOTPGroup";
31
30
 
32
31
  const InputOTPSlot = React.forwardRef<
33
- React.ElementRef<"div">,
34
- React.ComponentPropsWithoutRef<"div"> & { index: number }
32
+ React.ElementRef<"div">,
33
+ React.ComponentPropsWithoutRef<"div"> & { index: number }
35
34
  >(({ index, className, ...props }, ref) => {
36
- const inputOTPContext = React.useContext(OTPInputContext)
37
- const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]
35
+ const inputOTPContext = React.useContext(OTPInputContext);
36
+ const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
38
37
 
39
- return (
40
- <div
41
- ref={ref}
42
- data-slot="input-otp-slot"
43
- data-active={isActive}
44
- className={cn(
45
- "relative mx-1 flex items-center justify-center text-content-presentation-global-primary",
46
- "min-w-[40px] h-[40px]", // Size M by default
47
- "border rounded-[8px]",
48
- "transition-all duration-200 ease-in-out",
49
- "bg-background-presentation-form-field-primary",
50
- "border-border-presentation-action-primary",
51
- "hover:shadow-[0px_1px_6px_0px_rgba(0,0,0,0.30)]",
52
- "hover:bg-background-presentation-form-field-hover",
53
- "hover:border-border-presentation-action-hover",
54
- // Active/Focus styles
55
- "data-[active=true]:border-border-presentation-state-focus",
56
- "data-[active=true]:bg-background-presentation-form-field-primary",
57
- "data-[active=true]:shadow-[0px_1px_6px_0px_rgba(0,0,0,0.30)]",
58
- // Typography
59
- "typography-body-small-regular",
60
- className
61
- )}
62
- {...props}
63
- >
64
- {char}
65
- {hasFakeCaret && (
66
- <div className="pointer-events-none absolute inset-0 flex items-center justify-center">
67
- <div className="animate-caret-blink bg-border-presentation-state-focus h-4 w-px duration-1000" />
68
- </div>
69
- )}
38
+ return (
39
+ <div
40
+ ref={ref}
41
+ data-slot="input-otp-slot"
42
+ data-active={isActive}
43
+ className={cn(
44
+ "relative mx-1 flex items-center justify-center text-content-presentation-global-primary",
45
+ "min-w-[40px] h-[40px]", // Size M by default
46
+ "border rounded-[8px]",
47
+ "transition-all duration-200 ease-in-out",
48
+ "bg-background-presentation-form-field-primary",
49
+ "border-border-presentation-action-primary",
50
+ "hover:shadow-[0px_1px_6px_0px_rgba(0,0,0,0.30)]",
51
+ "hover:bg-background-presentation-form-field-hover",
52
+ "hover:border-border-presentation-action-hover",
53
+ // Active/Focus styles
54
+ "data-[active=true]:border-border-presentation-state-focus",
55
+ "data-[active=true]:bg-background-presentation-form-field-primary",
56
+ "data-[active=true]:shadow-[0px_1px_6px_0px_rgba(0,0,0,0.30)]",
57
+ // Typography
58
+ "typography-body-small-regular",
59
+ className,
60
+ )}
61
+ {...props}
62
+ >
63
+ {char}
64
+ {hasFakeCaret && (
65
+ <div className="pointer-events-none absolute inset-0 flex items-center justify-center">
66
+ <div className="animate-caret-blink bg-border-presentation-state-focus h-4 w-px duration-1000" />
70
67
  </div>
71
- )
72
- })
73
- InputOTPSlot.displayName = "InputOTPSlot"
68
+ )}
69
+ </div>
70
+ );
71
+ });
72
+ InputOTPSlot.displayName = "InputOTPSlot";
74
73
 
75
74
  const InputOTPSeparator = React.forwardRef<
76
- React.ElementRef<"div">,
77
- React.ComponentPropsWithoutRef<"div">
75
+ React.ElementRef<"div">,
76
+ React.ComponentPropsWithoutRef<"div">
78
77
  >(({ ...props }, ref) => (
79
- <div ref={ref} role="separator" {...props}>
80
- <i className="ri-subtract-line text-border-presentation-global-primary"></i>
81
- </div>
82
- ))
83
- InputOTPSeparator.displayName = "InputOTPSeparator"
78
+ <div ref={ref} role="separator" {...props}>
79
+ <i className="ri-subtract-line text-border-presentation-global-primary"></i>
80
+ </div>
81
+ ));
82
+ InputOTPSeparator.displayName = "InputOTPSeparator";
84
83
 
85
- export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }
84
+ export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };
@@ -17,8 +17,7 @@ const labelComponentVariants = cva("flex", {
17
17
  });
18
18
 
19
19
  interface Props
20
- extends LabelHTMLAttributes<HTMLLabelElement>,
21
- VariantProps<typeof labelComponentVariants> {
20
+ extends LabelHTMLAttributes<HTMLLabelElement>, VariantProps<typeof labelComponentVariants> {
22
21
  label?: ReactNode; // main label
23
22
  requiredLabel?: ReactNode; // normal text with required style
24
23
  secondaryLabel?: ReactNode; // normal text with secondary style
@@ -26,10 +25,10 @@ interface Props
26
25
  asChild?: boolean;
27
26
  size?: "S" | "M" | "L";
28
27
  variant?: "SystemStyle" | "PresentationStyle";
29
- theme?: Themes
28
+ theme?: Themes;
30
29
  labelsClassName?: string;
31
30
  labelDirections?: "vertical" | "horizontal";
32
- childrenDirections?: "vertical" | "horizontal"
31
+ childrenDirections?: "vertical" | "horizontal";
33
32
  reverseChildren?: boolean;
34
33
  }
35
34
 
@@ -48,79 +47,83 @@ export const Label = React.forwardRef<HTMLLabelElement, Props>(
48
47
  labelsClassName,
49
48
  variant = "PresentationStyle",
50
49
  theme,
51
- asChild,
50
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
+ asChild, // excluded from ...props spread
52
52
  as: Tag = "label",
53
53
  ...props
54
54
  },
55
- forwardedRef
55
+ forwardedRef,
56
56
  ) => {
57
-
58
57
  const Component = Tag;
59
58
 
59
+ // When there's no label text at all, skip the label container entirely so its
60
+ // sibling `gap-[8px]` doesn't leave an empty gap above the children (e.g. a
61
+ // label-less Textarea/Input should sit flush).
62
+ const hasLabelContent = Boolean(label || secondaryLabel || requiredLabel);
63
+
60
64
  return (
61
65
  <Component
62
66
  data-theme={theme}
63
67
  ref={forwardedRef}
64
- className={cn("flex flex-0 w-fit [&_p]:!leading-none gap-[8px]", {
65
- "flex-col justify-start items-start": childrenDirections === "vertical",
66
- "flex-row justify-start items-center": childrenDirections === "horizontal",
67
- "flex-row-reverse": reverseChildren && childrenDirections === "horizontal",
68
- "flex-col-reverse": reverseChildren && childrenDirections === "vertical",
69
- }, className)}
68
+ className={cn(
69
+ "flex flex-0 w-fit [&_p]:!leading-none gap-[8px]",
70
+ {
71
+ "flex-col justify-start items-start": childrenDirections === "vertical",
72
+ "flex-row justify-start items-center": childrenDirections === "horizontal",
73
+ "flex-row-reverse": reverseChildren && childrenDirections === "horizontal",
74
+ "flex-col-reverse": reverseChildren && childrenDirections === "vertical",
75
+ },
76
+ className,
77
+ )}
70
78
  {...props}
71
79
  >
72
- <div className={cn(labelComponentVariants({ labelDirections }), labelsClassName)} >
73
- {label && (
74
- <p
75
- className={cn(
76
- "text-start",
77
- {
78
- "typography-body-small-regular": size === "S",
79
- "typography-body-medium-regular": size === "M",
80
- "typography-body-large-regular": size === "L",
81
- },
82
- {
83
- "text-content-presentation-global-primary":
84
- variant === "PresentationStyle",
85
- "text-[#E5E5E5]": variant === "SystemStyle",
86
- }
87
- )}
88
- >
89
- {label}
90
- </p>
91
- )}
92
- {secondaryLabel && (
93
- <p
94
- className={cn(
95
- "text-content-presentation-global-secondary text-start",
96
- {
80
+ {hasLabelContent && (
81
+ <div className={cn(labelComponentVariants({ labelDirections }), labelsClassName)}>
82
+ {label && (
83
+ <p
84
+ className={cn(
85
+ "text-start",
86
+ {
87
+ "typography-body-small-regular": size === "S",
88
+ "typography-body-medium-regular": size === "M",
89
+ "typography-body-large-regular": size === "L",
90
+ },
91
+ {
92
+ "text-content-presentation-global-primary": variant === "PresentationStyle",
93
+ "text-[#E5E5E5]": variant === "SystemStyle",
94
+ },
95
+ )}
96
+ >
97
+ {label}
98
+ </p>
99
+ )}
100
+ {secondaryLabel && (
101
+ <p
102
+ className={cn("text-content-presentation-global-secondary text-start", {
97
103
  "typography-labels-small-regular": size === "S",
98
104
  "typography-labels-medium-regular": size === "M",
99
105
  "typography-body-small-regular": size === "L",
100
- }
101
- )}
102
- >
103
- {secondaryLabel}
104
- </p>
105
- )}
106
- {requiredLabel && (
107
- <p
108
- className={cn(
109
- "text-content-presentation-state-negative text-start",
110
- {
106
+ })}
107
+ >
108
+ {secondaryLabel}
109
+ </p>
110
+ )}
111
+ {requiredLabel && (
112
+ <p
113
+ className={cn("text-content-presentation-state-negative text-start", {
111
114
  "typography-labels-small-medium": size === "S",
112
115
  "typography-labels-medium-medium": size === "M",
113
116
  "typography-body-small-medium": size === "L",
114
- }
115
- )}
116
- >
117
- {requiredLabel}
118
- </p>
119
- )}
120
- </div>
117
+ })}
118
+ >
119
+ {requiredLabel}
120
+ </p>
121
+ )}
122
+ </div>
123
+ )}
121
124
  {children}
122
- </Component >
125
+ </Component>
123
126
  );
124
- }
127
+ },
125
128
  );
126
129
  Label.displayName = "Label";
@@ -4,8 +4,7 @@ import { Label } from "./Label";
4
4
  import { ToolTipSide } from "./Tooltip";
5
5
  import { Themes } from "../utils/types";
6
6
 
7
- export interface Props
8
- extends Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "variant"> {
7
+ export interface Props extends Omit<InputHTMLAttributes<HTMLInputElement>, "size" | "variant"> {
9
8
  size?: "S" | "M"; // this is used to change the size style of the component
10
9
  variant?: "SystemStyle" | "PresentationStyle";
11
10
  icon?: ReactNode; // to add left side icon if you pass it
@@ -19,7 +18,7 @@ export interface Props
19
18
  labelDirections?: "vertical" | "horizontal"; // to change the direction of the label
20
19
  childrenDirections?: "vertical" | "horizontal"; // to change the direction of the children
21
20
  toolTipSide?: ToolTipSide;
22
- theme?: Themes
21
+ theme?: Themes;
23
22
  }
24
23
 
25
24
  export const LabelField = forwardRef<HTMLInputElement, Props>(
@@ -43,7 +42,7 @@ export const LabelField = forwardRef<HTMLInputElement, Props>(
43
42
 
44
43
  ...props
45
44
  },
46
- ref
45
+ ref,
47
46
  ) => {
48
47
  return (
49
48
  <Label
@@ -71,7 +70,7 @@ export const LabelField = forwardRef<HTMLInputElement, Props>(
71
70
  />
72
71
  </Label>
73
72
  );
74
- }
73
+ },
75
74
  );
76
75
 
77
76
  LabelField.displayName = "LabelField";
@@ -1,4 +1,4 @@
1
- 'use client';
1
+ "use client";
2
2
  import { forwardRef } from "react";
3
3
  import { Label } from "./Label";
4
4
  import { Themes } from "../utils/types";
@@ -10,23 +10,26 @@ interface Props extends Omit<React.ComponentProps<typeof Checkbox>, "size"> {
10
10
  secondaryLabel?: string;
11
11
  requiredLabel?: string;
12
12
  size?: "S" | "M" | "L";
13
- theme?: Themes
13
+ theme?: Themes;
14
14
  }
15
15
 
16
16
  export const LabeledCheckBox = forwardRef<HTMLButtonElement, Props>(
17
17
  (
18
18
  {
19
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
19
20
  id,
20
21
  label,
21
22
  secondaryLabel,
22
23
  requiredLabel,
24
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
23
25
  type = "checkbox",
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
24
27
  theme,
25
28
  className,
26
29
  size = "M",
27
30
  ...props
28
31
  },
29
- ref
32
+ ref,
30
33
  ) => {
31
34
  return (
32
35
  <Label
@@ -39,17 +42,10 @@ export const LabeledCheckBox = forwardRef<HTMLButtonElement, Props>(
39
42
  className={cn(className)}
40
43
  reverseChildren
41
44
  >
42
- <Checkbox
43
- {...props}
44
- size={size === "L" ? "M" : size}
45
- ref={ref}
46
- />
45
+ <Checkbox {...props} size={size === "L" ? "M" : size} ref={ref} />
47
46
  </Label>
48
-
49
-
50
47
  );
51
- }
48
+ },
52
49
  );
53
50
 
54
51
  LabeledCheckBox.displayName = "LabeledCheckBox";
55
-
@@ -1,4 +1,4 @@
1
- 'use client'
1
+ "use client";
2
2
  import { forwardRef } from "react";
3
3
  import { Label } from "./Label";
4
4
  import { Radio } from "./Radio";
@@ -20,13 +20,15 @@ export const LabeledRadio = forwardRef<HTMLButtonElement, Props>(
20
20
  secondaryLabel,
21
21
  requiredLabel,
22
22
  size = "M",
23
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
23
24
  type = "radio",
24
25
  className,
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
25
27
  name,
26
28
  id,
27
29
  ...props
28
30
  },
29
- ref
31
+ ref,
30
32
  ) => {
31
33
  return (
32
34
  <Label
@@ -40,10 +42,10 @@ export const LabeledRadio = forwardRef<HTMLButtonElement, Props>(
40
42
  id={id}
41
43
  reverseChildren
42
44
  >
43
- <Radio id={id} {...props} data-theme={theme} ref={ref} />
45
+ <Radio id={id} {...props} data-theme={theme} ref={ref} />
44
46
  </Label>
45
47
  );
46
- }
48
+ },
47
49
  );
48
50
 
49
- LabeledRadio.displayName = "LabeledRadio";
51
+ LabeledRadio.displayName = "LabeledRadio";
@@ -55,9 +55,7 @@ export const LinkButton: React.FC<Props> = ({
55
55
  className,
56
56
  )}
57
57
  >
58
- <div className="px-[3px] whitespace-nowrap break-keep">
59
- {props.children}
60
- </div>
58
+ <div className="px-[3px] whitespace-nowrap break-keep">{props.children}</div>
61
59
  <div
62
60
  className={cn(
63
61
  "rounded-[4px] overflow-hidden",
@@ -83,12 +81,7 @@ export const LinkButton: React.FC<Props> = ({
83
81
  };
84
82
 
85
83
  const Arrow = (props: SVGProps<SVGSVGElement>) => (
86
- <svg
87
- viewBox="0 0 10 10"
88
- fill="none"
89
- xmlns="http://www.w3.org/2000/svg"
90
- {...props}
91
- >
84
+ <svg viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg" {...props}>
92
85
  <path
93
86
  d="M1.81582 1.58451L3.2807 0.119629L9.12479 0.875203L9.88037 6.71929L8.41549 8.18417L7.78584 3.31409L3.35267 7.74727L2.25272 6.64733L6.6859 2.21415L1.81582 1.58451Z"
94
87
  fill="#F9F9F9"
@@ -27,14 +27,13 @@ const buttonVariants = cva(
27
27
  defaultVariants: {
28
28
  variant: "default",
29
29
  },
30
- }
30
+ },
31
31
  );
32
32
 
33
33
  export interface ButtonProps
34
- extends ButtonHTMLAttributes<HTMLButtonElement>,
35
- VariantProps<typeof buttonVariants> {
34
+ extends ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
36
35
  isLoading?: boolean;
37
- theme?: Themes
36
+ theme?: Themes;
38
37
  }
39
38
 
40
39
  export function LoginButton({
@@ -46,11 +45,7 @@ export function LoginButton({
46
45
  }: ButtonProps) {
47
46
  return (
48
47
  <button data-theme={theme} {...props} className={cn(buttonVariants({ variant, className }))}>
49
- {isLoading ? (
50
- <LoadingIcon className="w-[20px] h-[20px]" />
51
- ) : (
52
- props.children
53
- )}
48
+ {isLoading ? <LoadingIcon className="w-[20px] h-[20px]" /> : props.children}
54
49
  </button>
55
50
  );
56
51
  }
@@ -4,7 +4,7 @@ import { HTMLAttributes, useEffect, useState } from "react";
4
4
 
5
5
  interface PassCheckProps extends HTMLAttributes<HTMLDivElement> {
6
6
  value: string; // The password value to check
7
- theme?: Themes
7
+ theme?: Themes;
8
8
  }
9
9
 
10
10
  export function PasswordLevel({ theme, value, className, ...props }: PassCheckProps) {
@@ -26,7 +26,7 @@ export function PasswordLevel({ theme, value, className, ...props }: PassCheckPr
26
26
  {...props}
27
27
  className={cn(
28
28
  "bg-background-system-body-secondary rounded-[4px] border border-solid border-border-system-global-primary p-[4px] grid grid-cols-3 gap-[4px] w-full ",
29
- className
29
+ className,
30
30
  )}
31
31
  >
32
32
  <div
@@ -34,7 +34,7 @@ export function PasswordLevel({ theme, value, className, ...props }: PassCheckPr
34
34
  "h-[4px] rounded-[8px] transition-all duration-300 ease-in-out bg-border-system-global-secondary",
35
35
  {
36
36
  "bg-border-presentation-state-negative": level >= 1,
37
- }
37
+ },
38
38
  )}
39
39
  />
40
40
  <div
@@ -42,7 +42,7 @@ export function PasswordLevel({ theme, value, className, ...props }: PassCheckPr
42
42
  "h-[4px] rounded-[8px] transition-all duration-300 ease-in-out bg-border-system-global-secondary",
43
43
  {
44
44
  "bg-border-presentation-state-warning": level >= 2,
45
- }
45
+ },
46
46
  )}
47
47
  />
48
48
  <div
@@ -50,7 +50,7 @@ export function PasswordLevel({ theme, value, className, ...props }: PassCheckPr
50
50
  "h-[4px] rounded-[8px] transition-all duration-300 ease-in-out bg-border-system-global-secondary",
51
51
  {
52
52
  "bg-border-presentation-state-success": level >= 3,
53
- }
53
+ },
54
54
  )}
55
55
  />
56
56
  </div>