torch-glare 2.5.6 → 2.6.0

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 (362) hide show
  1. package/README.md +4 -3
  2. package/dist/bin/index.js +9 -24
  3. package/dist/bin/index.js.map +1 -1
  4. package/dist/src/commands/add.d.ts +2 -2
  5. package/dist/src/commands/add.d.ts.map +1 -1
  6. package/dist/src/commands/add.js +4 -70
  7. package/dist/src/commands/add.js.map +1 -1
  8. package/dist/src/commands/hook.d.ts +5 -4
  9. package/dist/src/commands/hook.d.ts.map +1 -1
  10. package/dist/src/commands/hook.js +7 -75
  11. package/dist/src/commands/hook.js.map +1 -1
  12. package/dist/src/commands/init.js +1 -1
  13. package/dist/src/commands/init.js.map +1 -1
  14. package/dist/src/commands/layout.d.ts +5 -4
  15. package/dist/src/commands/layout.d.ts.map +1 -1
  16. package/dist/src/commands/layout.js +7 -75
  17. package/dist/src/commands/layout.js.map +1 -1
  18. package/dist/src/commands/provider.d.ts +5 -4
  19. package/dist/src/commands/provider.d.ts.map +1 -1
  20. package/dist/src/commands/provider.js +7 -75
  21. package/dist/src/commands/provider.js.map +1 -1
  22. package/dist/src/commands/update.d.ts.map +1 -1
  23. package/dist/src/commands/update.js +78 -43
  24. package/dist/src/commands/update.js.map +1 -1
  25. package/dist/src/commands/utils.d.ts +5 -4
  26. package/dist/src/commands/utils.d.ts.map +1 -1
  27. package/dist/src/commands/utils.js +7 -80
  28. package/dist/src/commands/utils.js.map +1 -1
  29. package/dist/src/shared/addFromRegistry.d.ts +16 -0
  30. package/dist/src/shared/addFromRegistry.d.ts.map +1 -0
  31. package/dist/src/shared/addFromRegistry.js +88 -0
  32. package/dist/src/shared/addFromRegistry.js.map +1 -0
  33. package/dist/src/shared/getInstallCommand.d.ts.map +1 -1
  34. package/dist/src/shared/getInstallCommand.js +5 -0
  35. package/dist/src/shared/getInstallCommand.js.map +1 -1
  36. package/dist/src/shared/installDependencies.d.ts +0 -10
  37. package/dist/src/shared/installDependencies.d.ts.map +1 -1
  38. package/dist/src/shared/installDependencies.js +0 -17
  39. package/dist/src/shared/installDependencies.js.map +1 -1
  40. package/dist/src/shared/installFromPlan.d.ts +7 -5
  41. package/dist/src/shared/installFromPlan.d.ts.map +1 -1
  42. package/dist/src/shared/installFromPlan.js +103 -36
  43. package/dist/src/shared/installFromPlan.js.map +1 -1
  44. package/dist/src/shared/loadRegistry.d.ts +12 -3
  45. package/dist/src/shared/loadRegistry.d.ts.map +1 -1
  46. package/dist/src/shared/loadRegistry.js +19 -20
  47. package/dist/src/shared/loadRegistry.js.map +1 -1
  48. package/dist/src/shared/registryClient.d.ts +19 -0
  49. package/dist/src/shared/registryClient.d.ts.map +1 -0
  50. package/dist/src/shared/registryClient.js +128 -0
  51. package/dist/src/shared/registryClient.js.map +1 -0
  52. package/dist/src/shared/resolveEntry.d.ts +10 -7
  53. package/dist/src/shared/resolveEntry.d.ts.map +1 -1
  54. package/dist/src/shared/resolveEntry.js +18 -13
  55. package/dist/src/shared/resolveEntry.js.map +1 -1
  56. package/dist/src/shared/suggestOtherCommand.d.ts +7 -1
  57. package/dist/src/shared/suggestOtherCommand.d.ts.map +1 -1
  58. package/dist/src/shared/suggestOtherCommand.js +29 -23
  59. package/dist/src/shared/suggestOtherCommand.js.map +1 -1
  60. package/dist/src/types/main.d.ts +31 -2
  61. package/dist/src/types/main.d.ts.map +1 -1
  62. package/package.json +6 -11
  63. package/apps/lib/components/ActionButton.tsx +0 -93
  64. package/apps/lib/components/ActionsGroup.tsx +0 -27
  65. package/apps/lib/components/AlertDialog.tsx +0 -204
  66. package/apps/lib/components/Avatar.tsx +0 -46
  67. package/apps/lib/components/Badge.tsx +0 -250
  68. package/apps/lib/components/BadgeField.tsx +0 -403
  69. package/apps/lib/components/Breadcrumb.tsx +0 -280
  70. package/apps/lib/components/Button.tsx +0 -325
  71. package/apps/lib/components/ButtonGroup.tsx +0 -190
  72. package/apps/lib/components/Calendar.tsx +0 -115
  73. package/apps/lib/components/Card.tsx +0 -95
  74. package/apps/lib/components/Checkbox.tsx +0 -42
  75. package/apps/lib/components/ColorPicker.tsx +0 -441
  76. package/apps/lib/components/ConclusionHeader.tsx +0 -148
  77. package/apps/lib/components/ContextMenu.tsx +0 -571
  78. package/apps/lib/components/CountBadge.tsx +0 -52
  79. package/apps/lib/components/DataTable.tsx +0 -213
  80. package/apps/lib/components/DataViews/badge.ts +0 -49
  81. package/apps/lib/components/DataViews/cell.tsx +0 -324
  82. package/apps/lib/components/DataViews/context.ts +0 -144
  83. package/apps/lib/components/DataViews/data-views.tsx +0 -395
  84. package/apps/lib/components/DataViews/filters/children.tsx +0 -98
  85. package/apps/lib/components/DataViews/filters/custom.tsx +0 -34
  86. package/apps/lib/components/DataViews/filters/filters.tsx +0 -157
  87. package/apps/lib/components/DataViews/filters/index.ts +0 -4
  88. package/apps/lib/components/DataViews/filters/labelled.tsx +0 -20
  89. package/apps/lib/components/DataViews/filters/presets.tsx +0 -65
  90. package/apps/lib/components/DataViews/filters/sync.tsx +0 -35
  91. package/apps/lib/components/DataViews/filters/values.ts +0 -173
  92. package/apps/lib/components/DataViews/header.tsx +0 -220
  93. package/apps/lib/components/DataViews/hooks/index.ts +0 -5
  94. package/apps/lib/components/DataViews/hooks/useActiveRow.ts +0 -22
  95. package/apps/lib/components/DataViews/hooks/useControllable.ts +0 -52
  96. package/apps/lib/components/DataViews/index.ts +0 -88
  97. package/apps/lib/components/DataViews/panel/columns.tsx +0 -153
  98. package/apps/lib/components/DataViews/panel/controls.tsx +0 -106
  99. package/apps/lib/components/DataViews/panel/index.ts +0 -3
  100. package/apps/lib/components/DataViews/panel/panel.tsx +0 -164
  101. package/apps/lib/components/DataViews/panel/saved-views.tsx +0 -67
  102. package/apps/lib/components/DataViews/panel/section.tsx +0 -81
  103. package/apps/lib/components/DataViews/panel/sort.tsx +0 -42
  104. package/apps/lib/components/DataViews/panel/tab.tsx +0 -31
  105. package/apps/lib/components/DataViews/slots.ts +0 -72
  106. package/apps/lib/components/DataViews/states.tsx +0 -73
  107. package/apps/lib/components/DataViews/types.ts +0 -510
  108. package/apps/lib/components/DataViews/views/board-view.tsx +0 -381
  109. package/apps/lib/components/DataViews/views/card-rows.tsx +0 -36
  110. package/apps/lib/components/DataViews/views/inbox-view.tsx +0 -260
  111. package/apps/lib/components/DataViews/views/pane-views.tsx +0 -196
  112. package/apps/lib/components/DataViews/views/table-view.tsx +0 -493
  113. package/apps/lib/components/DataViews/views/tree-view.tsx +0 -367
  114. package/apps/lib/components/DatePicker.tsx +0 -232
  115. package/apps/lib/components/Dialog.tsx +0 -116
  116. package/apps/lib/components/Divider.tsx +0 -28
  117. package/apps/lib/components/Drawer.tsx +0 -451
  118. package/apps/lib/components/DropdownMenu.tsx +0 -554
  119. package/apps/lib/components/FieldHint.tsx +0 -69
  120. package/apps/lib/components/Form.tsx +0 -182
  121. package/apps/lib/components/FormBuilder/context.ts +0 -85
  122. package/apps/lib/components/FormBuilder/field-kind.ts +0 -28
  123. package/apps/lib/components/FormBuilder/fields/ChoiceFields.tsx +0 -60
  124. package/apps/lib/components/FormBuilder/fields/ColorField.tsx +0 -59
  125. package/apps/lib/components/FormBuilder/fields/CustomField.tsx +0 -11
  126. package/apps/lib/components/FormBuilder/fields/DateField.tsx +0 -32
  127. package/apps/lib/components/FormBuilder/fields/FieldArray.tsx +0 -74
  128. package/apps/lib/components/FormBuilder/fields/FieldShell.tsx +0 -168
  129. package/apps/lib/components/FormBuilder/fields/FileField.tsx +0 -39
  130. package/apps/lib/components/FormBuilder/fields/OptionListFields.tsx +0 -132
  131. package/apps/lib/components/FormBuilder/fields/OtpField.tsx +0 -31
  132. package/apps/lib/components/FormBuilder/fields/PhoneField.tsx +0 -109
  133. package/apps/lib/components/FormBuilder/fields/RichTextEditorField.tsx +0 -31
  134. package/apps/lib/components/FormBuilder/fields/SelectField.tsx +0 -114
  135. package/apps/lib/components/FormBuilder/fields/SignatureField.tsx +0 -157
  136. package/apps/lib/components/FormBuilder/fields/SliderField.tsx +0 -67
  137. package/apps/lib/components/FormBuilder/fields/SwitchBoxField.tsx +0 -41
  138. package/apps/lib/components/FormBuilder/fields/TableField.tsx +0 -336
  139. package/apps/lib/components/FormBuilder/fields/TextField.tsx +0 -213
  140. package/apps/lib/components/FormBuilder/fields/TreeSelectField.tsx +0 -43
  141. package/apps/lib/components/FormBuilder/fields/countries.ts +0 -303
  142. package/apps/lib/components/FormBuilder/fields/index.ts +0 -25
  143. package/apps/lib/components/FormBuilder/form-builder.tsx +0 -198
  144. package/apps/lib/components/FormBuilder/index.ts +0 -31
  145. package/apps/lib/components/FormBuilder/numberFormat.ts +0 -16
  146. package/apps/lib/components/FormBuilder/submit.tsx +0 -67
  147. package/apps/lib/components/FormBuilder/types.ts +0 -316
  148. package/apps/lib/components/FormRenderer/FormDrawer.tsx +0 -250
  149. package/apps/lib/components/FormRenderer/detail.tsx +0 -256
  150. package/apps/lib/components/FormRenderer/form-renderer.tsx +0 -358
  151. package/apps/lib/components/FormRenderer/header.tsx +0 -88
  152. package/apps/lib/components/FormRenderer/index.ts +0 -17
  153. package/apps/lib/components/FormRenderer/notch-action.tsx +0 -64
  154. package/apps/lib/components/FormRenderer/section.tsx +0 -39
  155. package/apps/lib/components/FormRenderer/stepper.tsx +0 -393
  156. package/apps/lib/components/FormRenderer/types.ts +0 -115
  157. package/apps/lib/components/FormSummary.tsx +0 -282
  158. package/apps/lib/components/HeaderBar.tsx +0 -117
  159. package/apps/lib/components/ImageAttachment.tsx +0 -209
  160. package/apps/lib/components/InnerLabelField.tsx +0 -154
  161. package/apps/lib/components/Input.tsx +0 -224
  162. package/apps/lib/components/InputField.tsx +0 -147
  163. package/apps/lib/components/InputOTP.tsx +0 -84
  164. package/apps/lib/components/Label.tsx +0 -129
  165. package/apps/lib/components/LabelField.tsx +0 -76
  166. package/apps/lib/components/LabeledCheckBox.tsx +0 -51
  167. package/apps/lib/components/LabeledRadio.tsx +0 -51
  168. package/apps/lib/components/LinkButton.tsx +0 -94
  169. package/apps/lib/components/LoginButton.tsx +0 -51
  170. package/apps/lib/components/PasswordLevel.tsx +0 -58
  171. package/apps/lib/components/Popover.tsx +0 -312
  172. package/apps/lib/components/ProfileMenu.tsx +0 -85
  173. package/apps/lib/components/Radio.tsx +0 -59
  174. package/apps/lib/components/RadioCard.tsx +0 -50
  175. package/apps/lib/components/ScrollArea.tsx +0 -54
  176. package/apps/lib/components/SearchField.tsx +0 -62
  177. package/apps/lib/components/SearchableSelect.tsx +0 -318
  178. package/apps/lib/components/SearchableTable.tsx +0 -344
  179. package/apps/lib/components/SearchableTree.tsx +0 -485
  180. package/apps/lib/components/SearchableTreeDialog.tsx +0 -502
  181. package/apps/lib/components/SectionBlock.tsx +0 -168
  182. package/apps/lib/components/Select.tsx +0 -347
  183. package/apps/lib/components/SimpleSelect.tsx +0 -225
  184. package/apps/lib/components/Skeleton.tsx +0 -12
  185. package/apps/lib/components/SlideDatePicker.tsx +0 -255
  186. package/apps/lib/components/SpinLoading.tsx +0 -174
  187. package/apps/lib/components/Stepper.tsx +0 -480
  188. package/apps/lib/components/Switch.tsx +0 -82
  189. package/apps/lib/components/TabFormItem.tsx +0 -153
  190. package/apps/lib/components/TabSwitch.tsx +0 -172
  191. package/apps/lib/components/Table.tsx +0 -597
  192. package/apps/lib/components/TextEditor/ChartBlockTool.ts +0 -676
  193. package/apps/lib/components/TextEditor/RichTextField.tsx +0 -46
  194. package/apps/lib/components/TextEditor/TableDnDWrapper.ts +0 -462
  195. package/apps/lib/components/TextEditor/TextEditor.tsx +0 -1164
  196. package/apps/lib/components/TextEditor/TextEditorToolbar.tsx +0 -429
  197. package/apps/lib/components/TextEditor/editor-tools/AlignmentTune.ts +0 -70
  198. package/apps/lib/components/TextEditor/editor-tools/ColorInlineTool.ts +0 -50
  199. package/apps/lib/components/TextEditor/editor-tools/StrikethroughInlineTool.ts +0 -48
  200. package/apps/lib/components/TextEditor/editor-tools/inlineFormat.ts +0 -98
  201. package/apps/lib/components/TextEditor/editorjs.d.ts +0 -60
  202. package/apps/lib/components/TextEditor/index.ts +0 -7
  203. package/apps/lib/components/TextEditor/markdownParser.ts +0 -346
  204. package/apps/lib/components/Textarea.tsx +0 -117
  205. package/apps/lib/components/Timeline.tsx +0 -263
  206. package/apps/lib/components/Toast.tsx +0 -87
  207. package/apps/lib/components/Toggle.tsx +0 -125
  208. package/apps/lib/components/ToggleButton.tsx +0 -140
  209. package/apps/lib/components/Tooltip.tsx +0 -116
  210. package/apps/lib/components/TransparentLabel.tsx +0 -71
  211. package/apps/lib/components/TreeDropDown.tsx +0 -115
  212. package/apps/lib/components/TreeFolder/TreeFolder.tsx +0 -380
  213. package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +0 -75
  214. package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +0 -354
  215. package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +0 -60
  216. package/apps/lib/components/TreeFolder/icons.tsx +0 -60
  217. package/apps/lib/components/TreeFolder/index.ts +0 -24
  218. package/apps/lib/components/TreeFolder/treeFolderUtils.ts +0 -109
  219. package/apps/lib/components/TreeFolder/types.ts +0 -77
  220. package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +0 -118
  221. package/apps/lib/hooks/useActiveTreeItem.ts +0 -61
  222. package/apps/lib/hooks/useClickOutside.ts +0 -27
  223. package/apps/lib/hooks/useDragDrop.tsx +0 -365
  224. package/apps/lib/hooks/useHtmlDir.ts +0 -31
  225. package/apps/lib/hooks/useInfiniteScroll.ts +0 -108
  226. package/apps/lib/hooks/useIsMobile.ts +0 -21
  227. package/apps/lib/hooks/useResize.ts +0 -67
  228. package/apps/lib/hooks/useTagSelection.ts +0 -300
  229. package/apps/lib/layouts/CNLayout.tsx +0 -372
  230. package/apps/lib/layouts/DataViewCard.tsx +0 -62
  231. package/apps/lib/layouts/FieldSection.tsx +0 -91
  232. package/apps/lib/layouts/TreeSubLayout.tsx +0 -173
  233. package/apps/lib/providers/ThemeProvider.tsx +0 -84
  234. package/apps/lib/registry.json +0 -1217
  235. package/apps/lib/tsconfig.json +0 -9
  236. package/apps/lib/tsconfig.tsbuildinfo +0 -1
  237. package/apps/lib/utils/cn.ts +0 -6
  238. package/apps/lib/utils/color.ts +0 -175
  239. package/apps/lib/utils/dataViews/path.ts +0 -67
  240. package/apps/lib/utils/dataViews/query.ts +0 -73
  241. package/apps/lib/utils/dataViews/types.ts +0 -187
  242. package/apps/lib/utils/dateFormat.ts +0 -108
  243. package/apps/lib/utils/resize.ts +0 -31
  244. package/apps/lib/utils/scroller.ts +0 -26
  245. package/apps/lib/utils/types.ts +0 -16
  246. package/docs/BLOCKS.md +0 -129
  247. package/docs/CHANGELOG-1.1.16.md +0 -108
  248. package/docs/Cover.png +0 -0
  249. package/docs/README.md +0 -215
  250. package/docs/components/action-button.md +0 -638
  251. package/docs/components/actions-group.md +0 -708
  252. package/docs/components/alert-dialog.md +0 -920
  253. package/docs/components/avatar.md +0 -709
  254. package/docs/components/badge-field.md +0 -738
  255. package/docs/components/badge.md +0 -301
  256. package/docs/components/breadcrumb.md +0 -930
  257. package/docs/components/button-group.md +0 -650
  258. package/docs/components/button.md +0 -639
  259. package/docs/components/calendar.md +0 -555
  260. package/docs/components/card.md +0 -622
  261. package/docs/components/chart-block-tool.md +0 -129
  262. package/docs/components/checkbox.md +0 -699
  263. package/docs/components/cn-layout.md +0 -854
  264. package/docs/components/color-picker.md +0 -101
  265. package/docs/components/conclusion-header.md +0 -80
  266. package/docs/components/context-menu.md +0 -483
  267. package/docs/components/count-badge.md +0 -560
  268. package/docs/components/data-table.md +0 -854
  269. package/docs/components/data-views/backend-response.md +0 -324
  270. package/docs/components/data-views/examples/a11y-rtl.md +0 -250
  271. package/docs/components/data-views/examples/api-orders-route.md +0 -130
  272. package/docs/components/data-views/examples/fields.md +0 -362
  273. package/docs/components/data-views/examples/filters.md +0 -307
  274. package/docs/components/data-views/examples/inbox-routing.md +0 -218
  275. package/docs/components/data-views/examples/index.md +0 -29
  276. package/docs/components/data-views/examples/overview.md +0 -244
  277. package/docs/components/data-views/examples/panel.md +0 -212
  278. package/docs/components/data-views/examples/scale.md +0 -231
  279. package/docs/components/data-views/examples/server-side.md +0 -210
  280. package/docs/components/data-views/examples/state.md +0 -250
  281. package/docs/components/data-views/examples/tree-custom.md +0 -388
  282. package/docs/components/data-views/examples/view-registry.md +0 -313
  283. package/docs/components/data-views/examples/views.md +0 -534
  284. package/docs/components/data-views/guide.md +0 -405
  285. package/docs/components/data-views/index.md +0 -1521
  286. package/docs/components/data-views/migration.md +0 -81
  287. package/docs/components/date-picker.md +0 -857
  288. package/docs/components/dialog.md +0 -929
  289. package/docs/components/divider.md +0 -766
  290. package/docs/components/drawer.md +0 -654
  291. package/docs/components/dropdown-menu.md +0 -668
  292. package/docs/components/field-hint.md +0 -898
  293. package/docs/components/field-section.md +0 -781
  294. package/docs/components/form-builder.md +0 -284
  295. package/docs/components/form-renderer.md +0 -396
  296. package/docs/components/form-summary.md +0 -138
  297. package/docs/components/form.md +0 -785
  298. package/docs/components/header-bar.md +0 -188
  299. package/docs/components/image-attachment.md +0 -906
  300. package/docs/components/inner-label-field.md +0 -819
  301. package/docs/components/input-field.md +0 -623
  302. package/docs/components/input-otp.md +0 -756
  303. package/docs/components/input.md +0 -634
  304. package/docs/components/label-field.md +0 -770
  305. package/docs/components/label.md +0 -761
  306. package/docs/components/labeled-check-box.md +0 -642
  307. package/docs/components/labeled-radio.md +0 -796
  308. package/docs/components/link-button.md +0 -685
  309. package/docs/components/login-button.md +0 -872
  310. package/docs/components/password-level.md +0 -803
  311. package/docs/components/popover.md +0 -649
  312. package/docs/components/profile-menu.md +0 -656
  313. package/docs/components/radio-card.md +0 -801
  314. package/docs/components/radio.md +0 -735
  315. package/docs/components/scroll-area.md +0 -691
  316. package/docs/components/search-field.md +0 -702
  317. package/docs/components/searchable-select.md +0 -368
  318. package/docs/components/searchable-table.md +0 -438
  319. package/docs/components/searchable-tree-dialog.md +0 -190
  320. package/docs/components/searchable-tree.md +0 -200
  321. package/docs/components/section-block.md +0 -483
  322. package/docs/components/select.md +0 -709
  323. package/docs/components/simple-select.md +0 -741
  324. package/docs/components/skeleton.md +0 -706
  325. package/docs/components/slide-date-picker.md +0 -837
  326. package/docs/components/spin-loading.md +0 -696
  327. package/docs/components/stepper.md +0 -316
  328. package/docs/components/switch.md +0 -770
  329. package/docs/components/tab-form-item.md +0 -773
  330. package/docs/components/tab-switch.md +0 -170
  331. package/docs/components/table-dnd-wrapper.md +0 -107
  332. package/docs/components/table.md +0 -1088
  333. package/docs/components/text-editor.md +0 -735
  334. package/docs/components/textarea.md +0 -681
  335. package/docs/components/timeline.md +0 -254
  336. package/docs/components/toast.md +0 -773
  337. package/docs/components/toggle-button.md +0 -643
  338. package/docs/components/toggle.md +0 -882
  339. package/docs/components/tooltip.md +0 -513
  340. package/docs/components/transparent-label.md +0 -721
  341. package/docs/components/tree-drop-down.md +0 -740
  342. package/docs/components/tree-folder.md +0 -110
  343. package/docs/components/tree-sub-layout.md +0 -707
  344. package/docs/explanation/architecture.md +0 -54
  345. package/docs/explanation/design-system.md +0 -52
  346. package/docs/how-to/form-and-list-recipes.md +0 -386
  347. package/docs/how-to/forms-with-form-builder.md +0 -472
  348. package/docs/how-to/guides.md +0 -1027
  349. package/docs/migration/changelog.md +0 -60
  350. package/docs/migration/form-builder-2.5.2.md +0 -113
  351. package/docs/reference/cli.md +0 -112
  352. package/docs/reference/components.md +0 -572
  353. package/docs/reference/hooks.md +0 -1523
  354. package/docs/reference/providers.md +0 -866
  355. package/docs/reference/tailwind-plugins.md +0 -942
  356. package/docs/reference/theme.md +0 -85
  357. package/docs/reference/types.md +0 -1016
  358. package/docs/reference/utilities.md +0 -726
  359. package/docs/tutorials/building-first-form.md +0 -846
  360. package/docs/tutorials/component-composition.md +0 -882
  361. package/docs/tutorials/getting-started.md +0 -302
  362. package/docs/tutorials/theming-basics.md +0 -785
@@ -1,766 +0,0 @@
1
- ---
2
- title: Divider
3
- description: Versatile separator component for creating visual divisions in horizontal or vertical layouts.
4
- component: true
5
- group: Layout & Containers
6
- keywords: [divider, separator, hr, line, spacer, visual, section]
7
- ---
8
-
9
- # Divider
10
-
11
- A flexible separator component for creating visual divisions between content sections. Supports both horizontal and vertical orientations with proper accessibility attributes.
12
-
13
- ## Installation
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
-
18
- ```bash
19
- npx torch-glare@latest init
20
- npx torch-glare@latest add Divider
21
- ```
22
-
23
- `add` also copies any components, hooks, and utilities that `Divider` depends on.
24
-
25
- ## Imports
26
-
27
- ```typescript
28
- import { Divider } from '@/components/Divider'
29
- ```
30
-
31
- ## Basic Usage
32
-
33
- ```tsx
34
- import { Divider } from '@/components/Divider'
35
-
36
- export function BasicDivider() {
37
- return (
38
- <div>
39
- <p>Content above divider</p>
40
- <Divider />
41
- <p>Content below divider</p>
42
- </div>
43
- )
44
- }
45
- ```
46
-
47
- ## Examples
48
-
49
- ### Horizontal Divider
50
-
51
- Standard horizontal separator between content sections.
52
-
53
- ```tsx
54
- export function HorizontalDivider() {
55
- return (
56
- <div className="space-y-4">
57
- <section>
58
- <h2 className="text-xl font-bold">Profile Information</h2>
59
- <p>Manage your personal details and preferences</p>
60
- </section>
61
-
62
- <Divider />
63
-
64
- <section>
65
- <h2 className="text-xl font-bold">Account Settings</h2>
66
- <p>Configure your account security and privacy</p>
67
- </section>
68
-
69
- <Divider />
70
-
71
- <section>
72
- <h2 className="text-xl font-bold">Billing</h2>
73
- <p>Manage subscriptions and payment methods</p>
74
- </section>
75
- </div>
76
- )
77
- }
78
- ```
79
-
80
- ### Vertical Divider
81
-
82
- Vertical separator for inline content.
83
-
84
- ```tsx
85
- export function VerticalDivider() {
86
- return (
87
- <div className="flex items-center gap-4 h-12">
88
- <button className="px-4">Home</button>
89
-
90
- <Divider orientation="vertical" />
91
-
92
- <button className="px-4">About</button>
93
-
94
- <Divider orientation="vertical" />
95
-
96
- <button className="px-4">Contact</button>
97
-
98
- <Divider orientation="vertical" />
99
-
100
- <button className="px-4">Help</button>
101
- </div>
102
- )
103
- }
104
- ```
105
-
106
- ### In Navigation Bar
107
-
108
- Separating navigation groups.
109
-
110
- ```tsx
111
- export function NavigationWithDividers() {
112
- return (
113
- <nav className="flex items-center gap-2 p-4 bg-background-system-body-secondary rounded-lg">
114
- {/* Primary actions */}
115
- <button className="px-3 py-2">Dashboard</button>
116
- <button className="px-3 py-2">Projects</button>
117
- <button className="px-3 py-2">Tasks</button>
118
-
119
- <Divider orientation="vertical" className="h-8" />
120
-
121
- {/* Secondary actions */}
122
- <button className="px-3 py-2">Settings</button>
123
- <button className="px-3 py-2">Profile</button>
124
-
125
- {/* Spacer */}
126
- <div className="flex-1" />
127
-
128
- <Divider orientation="vertical" className="h-8" />
129
-
130
- {/* Account actions */}
131
- <button className="px-3 py-2">
132
- <i className="ri-notification-line"></i>
133
- </button>
134
- <button className="px-3 py-2">
135
- <i className="ri-user-line"></i>
136
- </button>
137
- </nav>
138
- )
139
- }
140
- ```
141
-
142
- ### In Card Components
143
-
144
- Dividing card sections.
145
-
146
- ```tsx
147
- export function CardWithDividers() {
148
- return (
149
- <div className="border border-border-presentation-global-primary rounded-lg">
150
- <div className="p-4">
151
- <h3 className="text-lg font-bold">Product Details</h3>
152
- <p className="text-sm text-content-presentation-global-secondary">
153
- Premium subscription plan
154
- </p>
155
- </div>
156
-
157
- <Divider />
158
-
159
- <div className="p-4">
160
- <div className="flex justify-between items-center mb-2">
161
- <span>Monthly Price</span>
162
- <span className="font-bold">$29.99</span>
163
- </div>
164
- <div className="flex justify-between items-center mb-2">
165
- <span>Annual Price</span>
166
- <span className="font-bold">$299.99</span>
167
- </div>
168
- <div className="flex justify-between items-center">
169
- <span>Savings</span>
170
- <span className="text-green-500 font-bold">$59.89 (16%)</span>
171
- </div>
172
- </div>
173
-
174
- <Divider />
175
-
176
- <div className="p-4">
177
- <ul className="space-y-2">
178
- <li className="flex items-center gap-2">
179
- <i className="ri-check-line text-green-500"></i>
180
- Unlimited projects
181
- </li>
182
- <li className="flex items-center gap-2">
183
- <i className="ri-check-line text-green-500"></i>
184
- Priority support
185
- </li>
186
- <li className="flex items-center gap-2">
187
- <i className="ri-check-line text-green-500"></i>
188
- Advanced analytics
189
- </li>
190
- </ul>
191
- </div>
192
-
193
- <Divider />
194
-
195
- <div className="p-4">
196
- <button className="w-full bg-blue-500 text-white py-2 rounded">
197
- Subscribe Now
198
- </button>
199
- </div>
200
- </div>
201
- )
202
- }
203
- ```
204
-
205
- ### In Lists
206
-
207
- Separating list items.
208
-
209
- ```tsx
210
- export function ListWithDividers() {
211
- const notifications = [
212
- { id: 1, title: 'New message from John', time: '2 min ago', icon: 'ri-message-3-line' },
213
- { id: 2, title: 'Project deadline approaching', time: '1 hour ago', icon: 'ri-calendar-line' },
214
- { id: 3, title: 'Team member joined', time: '3 hours ago', icon: 'ri-user-add-line' },
215
- { id: 4, title: 'Report generated', time: '1 day ago', icon: 'ri-file-chart-line' },
216
- ]
217
-
218
- return (
219
- <div className="border border-border-presentation-global-primary rounded-lg">
220
- {notifications.map((notification, index) => (
221
- <React.Fragment key={notification.id}>
222
- <div className="p-4 hover:bg-background-presentation-global-secondary transition-colors cursor-pointer">
223
- <div className="flex items-start gap-3">
224
- <div className="w-10 h-10 bg-blue-100 rounded-full flex items-center justify-center">
225
- <i className={`${notification.icon} text-blue-500`}></i>
226
- </div>
227
- <div className="flex-1">
228
- <h4 className="font-medium">{notification.title}</h4>
229
- <p className="text-sm text-content-presentation-global-secondary">
230
- {notification.time}
231
- </p>
232
- </div>
233
- </div>
234
- </div>
235
- {index < notifications.length - 1 && <Divider />}
236
- </React.Fragment>
237
- ))}
238
- </div>
239
- )
240
- }
241
- ```
242
-
243
- ### In Forms
244
-
245
- Grouping form sections.
246
-
247
- ```tsx
248
- export function FormWithDividers() {
249
- return (
250
- <form className="max-w-2xl space-y-6">
251
- {/* Personal Information */}
252
- <div>
253
- <h2 className="text-lg font-semibold mb-4">Personal Information</h2>
254
- <div className="space-y-3">
255
- <InputField label="First Name" placeholder="John" />
256
- <InputField label="Last Name" placeholder="Doe" />
257
- <InputField label="Email" type="email" placeholder="john@example.com" />
258
- </div>
259
- </div>
260
-
261
- <Divider />
262
-
263
- {/* Address */}
264
- <div>
265
- <h2 className="text-lg font-semibold mb-4">Address</h2>
266
- <div className="space-y-3">
267
- <InputField label="Street Address" placeholder="123 Main St" />
268
- <div className="grid grid-cols-2 gap-3">
269
- <InputField label="City" placeholder="New York" />
270
- <InputField label="State" placeholder="NY" />
271
- </div>
272
- <InputField label="ZIP Code" placeholder="10001" />
273
- </div>
274
- </div>
275
-
276
- <Divider />
277
-
278
- {/* Preferences */}
279
- <div>
280
- <h2 className="text-lg font-semibold mb-4">Preferences</h2>
281
- <div className="space-y-2">
282
- <LabeledCheckBox id="marketing" label="Receive marketing emails" />
283
- <LabeledCheckBox id="newsletter" label="Subscribe to newsletter" />
284
- <LabeledCheckBox id="updates" label="Product updates" />
285
- </div>
286
- </div>
287
-
288
- <Divider />
289
-
290
- <div className="flex justify-end gap-3">
291
- <Button variant="BluSecStyle">Cancel</Button>
292
- <Button variant="PrimeStyle">Save Changes</Button>
293
- </div>
294
- </form>
295
- )
296
- }
297
- ```
298
-
299
- ### With Text Label
300
-
301
- Divider with centered text.
302
-
303
- ```tsx
304
- export function DividerWithText() {
305
- return (
306
- <div className="space-y-6">
307
- {/* Login section */}
308
- <div className="space-y-3">
309
- <InputField type="email" placeholder="Email" className="w-full" />
310
- <InputField type="password" placeholder="Password" className="w-full" />
311
- <Button className="w-full">Sign In</Button>
312
- </div>
313
-
314
- {/* Divider with text */}
315
- <div className="relative">
316
- <Divider />
317
- <div className="absolute inset-0 flex items-center justify-center">
318
- <span className="bg-background-system-body-primary px-2 text-sm text-content-presentation-global-secondary">
319
- OR
320
- </span>
321
- </div>
322
- </div>
323
-
324
- {/* Social login */}
325
- <div className="space-y-2">
326
- <Button className="w-full" variant="BluSecStyle">
327
- <i className="ri-google-fill mr-2"></i>
328
- Continue with Google
329
- </Button>
330
- <Button className="w-full" variant="BluSecStyle">
331
- <i className="ri-github-fill mr-2"></i>
332
- Continue with GitHub
333
- </Button>
334
- </div>
335
- </div>
336
- )
337
- }
338
- ```
339
-
340
- ### In Toolbars
341
-
342
- Grouping toolbar actions.
343
-
344
- ```tsx
345
- export function ToolbarWithDividers() {
346
- return (
347
- <div className="flex items-center gap-1 p-2 border border-border-presentation-global-primary rounded-lg">
348
- {/* Text formatting */}
349
- <ActionButton size="S" title="Bold">
350
- <i className="ri-bold"></i>
351
- </ActionButton>
352
- <ActionButton size="S" title="Italic">
353
- <i className="ri-italic"></i>
354
- </ActionButton>
355
- <ActionButton size="S" title="Underline">
356
- <i className="ri-underline"></i>
357
- </ActionButton>
358
-
359
- <Divider orientation="vertical" className="h-6 mx-1" />
360
-
361
- {/* Alignment */}
362
- <ActionButton size="S" title="Align Left">
363
- <i className="ri-align-left"></i>
364
- </ActionButton>
365
- <ActionButton size="S" title="Align Center">
366
- <i className="ri-align-center"></i>
367
- </ActionButton>
368
- <ActionButton size="S" title="Align Right">
369
- <i className="ri-align-right"></i>
370
- </ActionButton>
371
-
372
- <Divider orientation="vertical" className="h-6 mx-1" />
373
-
374
- {/* Lists */}
375
- <ActionButton size="S" title="Bullet List">
376
- <i className="ri-list-unordered"></i>
377
- </ActionButton>
378
- <ActionButton size="S" title="Numbered List">
379
- <i className="ri-list-ordered"></i>
380
- </ActionButton>
381
-
382
- <Divider orientation="vertical" className="h-6 mx-1" />
383
-
384
- {/* Insert */}
385
- <ActionButton size="S" title="Insert Link">
386
- <i className="ri-link"></i>
387
- </ActionButton>
388
- <ActionButton size="S" title="Insert Image">
389
- <i className="ri-image-line"></i>
390
- </ActionButton>
391
- </div>
392
- )
393
- }
394
- ```
395
-
396
- ### In Sidebars
397
-
398
- Visual separation in sidebar content.
399
-
400
- ```tsx
401
- export function SidebarWithDividers() {
402
- return (
403
- <aside className="w-64 border-r border-border-presentation-global-primary h-screen p-4">
404
- {/* User profile */}
405
- <div className="flex items-center gap-3 mb-4">
406
- <Avatar size="M" src="/avatar.jpg" />
407
- <div>
408
- <div className="font-medium">John Doe</div>
409
- <div className="text-xs text-content-presentation-global-secondary">
410
- john@example.com
411
- </div>
412
- </div>
413
- </div>
414
-
415
- <Divider className="my-4" />
416
-
417
- {/* Main navigation */}
418
- <nav className="space-y-1 mb-4">
419
- <SideBarItem active>
420
- <i className="ri-dashboard-line mr-2"></i>
421
- Dashboard
422
- </SideBarItem>
423
- <SideBarItem>
424
- <i className="ri-folder-line mr-2"></i>
425
- Projects
426
- </SideBarItem>
427
- <SideBarItem>
428
- <i className="ri-task-line mr-2"></i>
429
- Tasks
430
- </SideBarItem>
431
- </nav>
432
-
433
- <Divider className="my-4" />
434
-
435
- {/* Secondary navigation */}
436
- <nav className="space-y-1">
437
- <SideBarItem>
438
- <i className="ri-settings-3-line mr-2"></i>
439
- Settings
440
- </SideBarItem>
441
- <SideBarItem>
442
- <i className="ri-question-line mr-2"></i>
443
- Help
444
- </SideBarItem>
445
- <SideBarItem>
446
- <i className="ri-logout-box-line mr-2"></i>
447
- Sign Out
448
- </SideBarItem>
449
- </nav>
450
- </aside>
451
- )
452
- }
453
- ```
454
-
455
- ### Custom Styling
456
-
457
- Styled dividers with custom colors and thickness.
458
-
459
- ```tsx
460
- export function StyledDividers() {
461
- return (
462
- <div className="space-y-8">
463
- {/* Thick divider */}
464
- <div>
465
- <h3>Thick Divider</h3>
466
- <Divider className="h-[2px]" />
467
- </div>
468
-
469
- {/* Colored dividers */}
470
- <div>
471
- <h3>Colored Dividers</h3>
472
- <Divider className="bg-blue-500" />
473
- <br />
474
- <Divider className="bg-green-500" />
475
- <br />
476
- <Divider className="bg-red-500" />
477
- </div>
478
-
479
- {/* Gradient divider */}
480
- <div>
481
- <h3>Gradient Divider</h3>
482
- <Divider className="h-[2px] bg-gradient-to-r from-transparent via-blue-500 to-transparent" />
483
- </div>
484
-
485
- {/* Dashed divider */}
486
- <div>
487
- <h3>Dashed Divider</h3>
488
- <Divider className="border-t border-dashed border-border-presentation-global-primary bg-transparent" />
489
- </div>
490
-
491
- {/* Dotted divider */}
492
- <div>
493
- <h3>Dotted Divider</h3>
494
- <Divider className="border-t border-dotted border-border-presentation-global-primary bg-transparent" />
495
- </div>
496
- </div>
497
- )
498
- }
499
- ```
500
-
501
- ## API Reference
502
-
503
- ### Divider Props
504
-
505
- | Prop | Type | Default | Description |
506
- |------|------|---------|-------------|
507
- | orientation | `'horizontal' \| 'vertical'` | `'horizontal'` | Divider orientation |
508
- | decorative | `boolean` | `true` | Whether divider is purely visual |
509
- | className | `string` | - | Additional CSS classes |
510
- | ref | `Ref<HTMLDivElement>` | - | Forward ref to div element |
511
-
512
- ### Decorative vs Semantic
513
-
514
- | decorative | role | aria-orientation | Use Case |
515
- |------------|------|------------------|----------|
516
- | `true` | `"none"` | `undefined` | Visual separation only |
517
- | `false` | `"separator"` | orientation value | Semantic content separation |
518
-
519
- ## Styling
520
-
521
- ### Default Styles
522
-
523
- - **Horizontal**: `height: 1px`, `width: 100%`
524
- - **Vertical**: `height: 100%`, `width: 1px`
525
- - **Color**: `--border-presentation-global-primary`
526
- - **Background**: Solid color fill
527
-
528
- ### Customization
529
-
530
- ```tsx
531
- // Adjust thickness
532
- <Divider className="h-[2px]" />
533
- <Divider orientation="vertical" className="w-[2px]" />
534
-
535
- // Custom colors
536
- <Divider className="bg-blue-500" />
537
-
538
- // With margins
539
- <Divider className="my-6" />
540
- <Divider orientation="vertical" className="mx-3" />
541
-
542
- // Custom height for vertical
543
- <Divider orientation="vertical" className="h-8" />
544
- ```
545
-
546
- ## TypeScript Types
547
-
548
- ```typescript
549
- interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {
550
- orientation?: 'horizontal' | 'vertical'
551
- decorative?: boolean
552
- }
553
- ```
554
-
555
- ## Common Patterns
556
-
557
- ### Conditional Dividers
558
-
559
- ```tsx
560
- function ConditionalDivider({ items }) {
561
- return (
562
- <div>
563
- {items.map((item, index) => (
564
- <React.Fragment key={item.id}>
565
- <div>{item.content}</div>
566
- {index < items.length - 1 && <Divider className="my-2" />}
567
- </React.Fragment>
568
- ))}
569
- </div>
570
- )
571
- }
572
- ```
573
-
574
- ### Responsive Dividers
575
-
576
- ```tsx
577
- function ResponsiveDivider() {
578
- return (
579
- <>
580
- {/* Horizontal on mobile, vertical on desktop */}
581
- <Divider className="md:hidden" />
582
- <Divider orientation="vertical" className="hidden md:block" />
583
- </>
584
- )
585
- }
586
- ```
587
-
588
- ### Divider Group
589
-
590
- ```tsx
591
- function DividerGroup({ children, spacing = 'md' }) {
592
- const spacingClasses = {
593
- sm: 'space-y-2',
594
- md: 'space-y-4',
595
- lg: 'space-y-6',
596
- }
597
-
598
- return (
599
- <div className={spacingClasses[spacing]}>
600
- {React.Children.map(children, (child, index) => (
601
- <React.Fragment>
602
- {child}
603
- {index < React.Children.count(children) - 1 && <Divider />}
604
- </React.Fragment>
605
- ))}
606
- </div>
607
- )
608
- }
609
- ```
610
-
611
- ## Testing
612
-
613
- ```typescript
614
- import { render, screen } from '@testing-library/react'
615
- import { Divider } from '@/components/Divider'
616
-
617
- describe('Divider', () => {
618
- it('renders horizontal divider by default', () => {
619
- const { container } = render(<Divider />)
620
- const divider = container.firstChild
621
-
622
- expect(divider).toHaveClass('h-[1px]', 'w-full')
623
- })
624
-
625
- it('renders vertical divider', () => {
626
- const { container } = render(<Divider orientation="vertical" />)
627
- const divider = container.firstChild
628
-
629
- expect(divider).toHaveClass('h-full', 'w-[1px]')
630
- })
631
-
632
- it('applies decorative role by default', () => {
633
- const { container } = render(<Divider />)
634
- const divider = container.firstChild
635
-
636
- expect(divider).toHaveAttribute('role', 'none')
637
- expect(divider).not.toHaveAttribute('aria-orientation')
638
- })
639
-
640
- it('applies separator role when not decorative', () => {
641
- const { container } = render(
642
- <Divider decorative={false} orientation="horizontal" />
643
- )
644
- const divider = container.firstChild
645
-
646
- expect(divider).toHaveAttribute('role', 'separator')
647
- expect(divider).toHaveAttribute('aria-orientation', 'horizontal')
648
- })
649
-
650
- it('forwards ref correctly', () => {
651
- const ref = React.createRef<HTMLDivElement>()
652
- render(<Divider ref={ref} />)
653
-
654
- expect(ref.current).toBeInstanceOf(HTMLDivElement)
655
- })
656
-
657
- it('applies custom className', () => {
658
- const { container } = render(<Divider className="custom-class" />)
659
- const divider = container.firstChild
660
-
661
- expect(divider).toHaveClass('custom-class')
662
- })
663
- })
664
- ```
665
-
666
- ## Accessibility
667
-
668
- - **Semantic Role**: Uses `role="separator"` for semantic dividers
669
- - **Decorative**: Uses `role="none"` for purely visual dividers
670
- - **ARIA Orientation**: Properly indicates orientation for screen readers
671
- - **Visual Clarity**: Clear visual separation for all users
672
- - **Keyboard Navigation**: Does not interfere with keyboard navigation
673
-
674
- ### Accessibility Best Practices
675
-
676
- ```tsx
677
- // Decorative divider (default) - purely visual
678
- <Divider />
679
-
680
- // Semantic divider - meaningful content separation
681
- <section>
682
- <h2>Section 1</h2>
683
- <p>Content...</p>
684
- </section>
685
-
686
- <Divider decorative={false} />
687
-
688
- <section>
689
- <h2>Section 2</h2>
690
- <p>Content...</p>
691
- </section>
692
- ```
693
-
694
- ## Performance
695
-
696
- - **Lightweight**: Minimal DOM footprint (single div element)
697
- - **CSS-Only**: No JavaScript logic or event handlers
698
- - **Reflow Impact**: Minimal - simple 1px height/width
699
- - **Bundle Size**: ~0.3 KB gzipped (including types)
700
- - **Render Performance**: < 0.1ms average render time
701
-
702
- ### Performance Tips
703
-
704
- ```tsx
705
- // Use CSS classes instead of inline styles
706
- <Divider className="my-4" /> // Good
707
-
708
- // Memoize in lists
709
- const MemoizedDivider = React.memo(Divider)
710
-
711
- // Avoid unnecessary dividers
712
- {items.length > 1 && <Divider />} // Conditional rendering
713
- ```
714
-
715
- ## Migration Guide
716
-
717
- ### From HTML hr Element
718
-
719
- ```tsx
720
- // Before: HTML hr
721
- <hr className="my-4 border-gray-300" />
722
-
723
- // After: Divider component
724
- <Divider className="my-4" />
725
- ```
726
-
727
- ### From Custom Divider
728
-
729
- ```tsx
730
- // Before: Custom div
731
- <div className="h-[1px] w-full bg-gray-300" />
732
-
733
- // After: Divider component
734
- <Divider />
735
- ```
736
-
737
- ### From Material-UI Divider
738
-
739
- ```tsx
740
- // Before: Material-UI
741
- <Divider orientation="vertical" flexItem />
742
-
743
- // After: Divider component
744
- <Divider orientation="vertical" className="h-full" />
745
- ```
746
-
747
- ### From Radix Separator
748
-
749
- ```tsx
750
- // Before: Radix Separator
751
- <Separator.Root orientation="horizontal" decorative />
752
-
753
- // After: Divider component
754
- <Divider orientation="horizontal" decorative />
755
- ```
756
-
757
- ## Best Practices
758
-
759
- 1. **Use decorative by default**: Most dividers are purely visual
760
- 2. **Semantic dividers for content**: Use `decorative={false}` when dividing meaningful content sections
761
- 3. **Consistent spacing**: Apply consistent margin classes for uniform spacing
762
- 4. **Group related content**: Use dividers to create visual hierarchy
763
- 5. **Avoid overuse**: Too many dividers can clutter the interface
764
- 6. **Vertical height**: Always specify height for vertical dividers
765
- 7. **Responsive consideration**: Consider different orientations for mobile/desktop
766
- 8. **Color consistency**: Use theme colors for consistent appearance