torch-glare 2.5.5 → 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 (359) 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 -338
  69. package/apps/lib/components/Breadcrumb.tsx +0 -280
  70. package/apps/lib/components/Button.tsx +0 -317
  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 -383
  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 -84
  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 -63
  106. package/apps/lib/components/DataViews/states.tsx +0 -38
  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 -420
  118. package/apps/lib/components/DropdownMenu.tsx +0 -540
  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 -73
  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 -163
  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 -91
  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 -47
  147. package/apps/lib/components/FormBuilder/types.ts +0 -311
  148. package/apps/lib/components/FormRenderer/FormDrawer.tsx +0 -128
  149. package/apps/lib/components/FormRenderer/detail.tsx +0 -207
  150. package/apps/lib/components/FormRenderer/form-renderer.tsx +0 -297
  151. package/apps/lib/components/FormRenderer/header.tsx +0 -88
  152. package/apps/lib/components/FormRenderer/index.ts +0 -15
  153. package/apps/lib/components/FormRenderer/section.tsx +0 -39
  154. package/apps/lib/components/FormRenderer/stepper.tsx +0 -339
  155. package/apps/lib/components/FormRenderer/types.ts +0 -78
  156. package/apps/lib/components/FormSummary.tsx +0 -282
  157. package/apps/lib/components/HeaderBar.tsx +0 -117
  158. package/apps/lib/components/ImageAttachment.tsx +0 -209
  159. package/apps/lib/components/InnerLabelField.tsx +0 -154
  160. package/apps/lib/components/Input.tsx +0 -224
  161. package/apps/lib/components/InputField.tsx +0 -147
  162. package/apps/lib/components/InputOTP.tsx +0 -84
  163. package/apps/lib/components/Label.tsx +0 -129
  164. package/apps/lib/components/LabelField.tsx +0 -76
  165. package/apps/lib/components/LabeledCheckBox.tsx +0 -51
  166. package/apps/lib/components/LabeledRadio.tsx +0 -51
  167. package/apps/lib/components/LinkButton.tsx +0 -94
  168. package/apps/lib/components/LoginButton.tsx +0 -51
  169. package/apps/lib/components/PasswordLevel.tsx +0 -58
  170. package/apps/lib/components/Popover.tsx +0 -312
  171. package/apps/lib/components/ProfileMenu.tsx +0 -85
  172. package/apps/lib/components/Radio.tsx +0 -59
  173. package/apps/lib/components/RadioCard.tsx +0 -50
  174. package/apps/lib/components/ScrollArea.tsx +0 -54
  175. package/apps/lib/components/SearchField.tsx +0 -62
  176. package/apps/lib/components/SearchableSelect.tsx +0 -318
  177. package/apps/lib/components/SearchableTable.tsx +0 -344
  178. package/apps/lib/components/SearchableTree.tsx +0 -485
  179. package/apps/lib/components/SearchableTreeDialog.tsx +0 -502
  180. package/apps/lib/components/SectionBlock.tsx +0 -147
  181. package/apps/lib/components/Select.tsx +0 -347
  182. package/apps/lib/components/SimpleSelect.tsx +0 -225
  183. package/apps/lib/components/Skeleton.tsx +0 -12
  184. package/apps/lib/components/SlideDatePicker.tsx +0 -253
  185. package/apps/lib/components/SpinLoading.tsx +0 -174
  186. package/apps/lib/components/Stepper.tsx +0 -480
  187. package/apps/lib/components/Switch.tsx +0 -82
  188. package/apps/lib/components/TabFormItem.tsx +0 -153
  189. package/apps/lib/components/TabSwitch.tsx +0 -172
  190. package/apps/lib/components/Table.tsx +0 -610
  191. package/apps/lib/components/TextEditor/ChartBlockTool.ts +0 -676
  192. package/apps/lib/components/TextEditor/RichTextField.tsx +0 -46
  193. package/apps/lib/components/TextEditor/TableDnDWrapper.ts +0 -462
  194. package/apps/lib/components/TextEditor/TextEditor.tsx +0 -1164
  195. package/apps/lib/components/TextEditor/TextEditorToolbar.tsx +0 -429
  196. package/apps/lib/components/TextEditor/editor-tools/AlignmentTune.ts +0 -70
  197. package/apps/lib/components/TextEditor/editor-tools/ColorInlineTool.ts +0 -50
  198. package/apps/lib/components/TextEditor/editor-tools/StrikethroughInlineTool.ts +0 -48
  199. package/apps/lib/components/TextEditor/editor-tools/inlineFormat.ts +0 -98
  200. package/apps/lib/components/TextEditor/editorjs.d.ts +0 -60
  201. package/apps/lib/components/TextEditor/index.ts +0 -7
  202. package/apps/lib/components/TextEditor/markdownParser.ts +0 -346
  203. package/apps/lib/components/Textarea.tsx +0 -117
  204. package/apps/lib/components/Timeline.tsx +0 -263
  205. package/apps/lib/components/Toast.tsx +0 -87
  206. package/apps/lib/components/Toggle.tsx +0 -125
  207. package/apps/lib/components/ToggleButton.tsx +0 -140
  208. package/apps/lib/components/Tooltip.tsx +0 -116
  209. package/apps/lib/components/TransparentLabel.tsx +0 -71
  210. package/apps/lib/components/TreeDropDown.tsx +0 -115
  211. package/apps/lib/components/TreeFolder/TreeFolder.tsx +0 -380
  212. package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +0 -75
  213. package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +0 -354
  214. package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +0 -60
  215. package/apps/lib/components/TreeFolder/icons.tsx +0 -60
  216. package/apps/lib/components/TreeFolder/index.ts +0 -24
  217. package/apps/lib/components/TreeFolder/treeFolderUtils.ts +0 -109
  218. package/apps/lib/components/TreeFolder/types.ts +0 -77
  219. package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +0 -118
  220. package/apps/lib/hooks/useActiveTreeItem.ts +0 -58
  221. package/apps/lib/hooks/useClickOutside.ts +0 -27
  222. package/apps/lib/hooks/useDragDrop.tsx +0 -365
  223. package/apps/lib/hooks/useInfiniteScroll.ts +0 -108
  224. package/apps/lib/hooks/useIsMobile.ts +0 -21
  225. package/apps/lib/hooks/useResize.ts +0 -67
  226. package/apps/lib/hooks/useTagSelection.ts +0 -214
  227. package/apps/lib/layouts/CNLayout.tsx +0 -372
  228. package/apps/lib/layouts/DataViewCard.tsx +0 -62
  229. package/apps/lib/layouts/FieldSection.tsx +0 -91
  230. package/apps/lib/layouts/TreeSubLayout.tsx +0 -173
  231. package/apps/lib/providers/ThemeProvider.tsx +0 -84
  232. package/apps/lib/registry.json +0 -1201
  233. package/apps/lib/tsconfig.json +0 -9
  234. package/apps/lib/tsconfig.tsbuildinfo +0 -1
  235. package/apps/lib/utils/cn.ts +0 -6
  236. package/apps/lib/utils/color.ts +0 -175
  237. package/apps/lib/utils/dataViews/path.ts +0 -67
  238. package/apps/lib/utils/dataViews/query.ts +0 -73
  239. package/apps/lib/utils/dataViews/types.ts +0 -187
  240. package/apps/lib/utils/dateFormat.ts +0 -108
  241. package/apps/lib/utils/resize.ts +0 -31
  242. package/apps/lib/utils/types.ts +0 -16
  243. package/docs/BLOCKS.md +0 -129
  244. package/docs/CHANGELOG-1.1.16.md +0 -108
  245. package/docs/Cover.png +0 -0
  246. package/docs/README.md +0 -215
  247. package/docs/components/action-button.md +0 -638
  248. package/docs/components/actions-group.md +0 -708
  249. package/docs/components/alert-dialog.md +0 -920
  250. package/docs/components/avatar.md +0 -709
  251. package/docs/components/badge-field.md +0 -712
  252. package/docs/components/badge.md +0 -301
  253. package/docs/components/breadcrumb.md +0 -930
  254. package/docs/components/button-group.md +0 -650
  255. package/docs/components/button.md +0 -639
  256. package/docs/components/calendar.md +0 -555
  257. package/docs/components/card.md +0 -622
  258. package/docs/components/chart-block-tool.md +0 -129
  259. package/docs/components/checkbox.md +0 -699
  260. package/docs/components/cn-layout.md +0 -854
  261. package/docs/components/color-picker.md +0 -101
  262. package/docs/components/conclusion-header.md +0 -80
  263. package/docs/components/context-menu.md +0 -483
  264. package/docs/components/count-badge.md +0 -560
  265. package/docs/components/data-table.md +0 -854
  266. package/docs/components/data-views/backend-response.md +0 -324
  267. package/docs/components/data-views/examples/a11y-rtl.md +0 -250
  268. package/docs/components/data-views/examples/api-orders-route.md +0 -130
  269. package/docs/components/data-views/examples/fields.md +0 -362
  270. package/docs/components/data-views/examples/filters.md +0 -307
  271. package/docs/components/data-views/examples/inbox-routing.md +0 -218
  272. package/docs/components/data-views/examples/index.md +0 -29
  273. package/docs/components/data-views/examples/overview.md +0 -244
  274. package/docs/components/data-views/examples/panel.md +0 -212
  275. package/docs/components/data-views/examples/scale.md +0 -231
  276. package/docs/components/data-views/examples/server-side.md +0 -210
  277. package/docs/components/data-views/examples/state.md +0 -250
  278. package/docs/components/data-views/examples/tree-custom.md +0 -388
  279. package/docs/components/data-views/examples/view-registry.md +0 -313
  280. package/docs/components/data-views/examples/views.md +0 -534
  281. package/docs/components/data-views/guide.md +0 -405
  282. package/docs/components/data-views/index.md +0 -1495
  283. package/docs/components/data-views/migration.md +0 -79
  284. package/docs/components/date-picker.md +0 -857
  285. package/docs/components/dialog.md +0 -929
  286. package/docs/components/divider.md +0 -766
  287. package/docs/components/drawer.md +0 -654
  288. package/docs/components/dropdown-menu.md +0 -668
  289. package/docs/components/field-hint.md +0 -898
  290. package/docs/components/field-section.md +0 -781
  291. package/docs/components/form-builder.md +0 -276
  292. package/docs/components/form-renderer.md +0 -326
  293. package/docs/components/form-summary.md +0 -138
  294. package/docs/components/form.md +0 -785
  295. package/docs/components/header-bar.md +0 -188
  296. package/docs/components/image-attachment.md +0 -906
  297. package/docs/components/inner-label-field.md +0 -819
  298. package/docs/components/input-field.md +0 -623
  299. package/docs/components/input-otp.md +0 -756
  300. package/docs/components/input.md +0 -634
  301. package/docs/components/label-field.md +0 -770
  302. package/docs/components/label.md +0 -761
  303. package/docs/components/labeled-check-box.md +0 -642
  304. package/docs/components/labeled-radio.md +0 -796
  305. package/docs/components/link-button.md +0 -685
  306. package/docs/components/login-button.md +0 -872
  307. package/docs/components/password-level.md +0 -803
  308. package/docs/components/popover.md +0 -649
  309. package/docs/components/profile-menu.md +0 -656
  310. package/docs/components/radio-card.md +0 -801
  311. package/docs/components/radio.md +0 -735
  312. package/docs/components/scroll-area.md +0 -691
  313. package/docs/components/search-field.md +0 -702
  314. package/docs/components/searchable-select.md +0 -368
  315. package/docs/components/searchable-table.md +0 -438
  316. package/docs/components/searchable-tree-dialog.md +0 -190
  317. package/docs/components/searchable-tree.md +0 -200
  318. package/docs/components/section-block.md +0 -477
  319. package/docs/components/select.md +0 -709
  320. package/docs/components/simple-select.md +0 -741
  321. package/docs/components/skeleton.md +0 -706
  322. package/docs/components/slide-date-picker.md +0 -837
  323. package/docs/components/spin-loading.md +0 -696
  324. package/docs/components/stepper.md +0 -316
  325. package/docs/components/switch.md +0 -770
  326. package/docs/components/tab-form-item.md +0 -773
  327. package/docs/components/tab-switch.md +0 -170
  328. package/docs/components/table-dnd-wrapper.md +0 -107
  329. package/docs/components/table.md +0 -1088
  330. package/docs/components/text-editor.md +0 -735
  331. package/docs/components/textarea.md +0 -681
  332. package/docs/components/timeline.md +0 -254
  333. package/docs/components/toast.md +0 -773
  334. package/docs/components/toggle-button.md +0 -643
  335. package/docs/components/toggle.md +0 -882
  336. package/docs/components/tooltip.md +0 -513
  337. package/docs/components/transparent-label.md +0 -721
  338. package/docs/components/tree-drop-down.md +0 -740
  339. package/docs/components/tree-folder.md +0 -110
  340. package/docs/components/tree-sub-layout.md +0 -707
  341. package/docs/explanation/architecture.md +0 -54
  342. package/docs/explanation/design-system.md +0 -52
  343. package/docs/how-to/form-and-list-recipes.md +0 -386
  344. package/docs/how-to/forms-with-form-builder.md +0 -472
  345. package/docs/how-to/guides.md +0 -1027
  346. package/docs/migration/changelog.md +0 -54
  347. package/docs/migration/form-builder-2.5.2.md +0 -113
  348. package/docs/reference/cli.md +0 -112
  349. package/docs/reference/components.md +0 -572
  350. package/docs/reference/hooks.md +0 -1500
  351. package/docs/reference/providers.md +0 -866
  352. package/docs/reference/tailwind-plugins.md +0 -942
  353. package/docs/reference/theme.md +0 -85
  354. package/docs/reference/types.md +0 -1016
  355. package/docs/reference/utilities.md +0 -704
  356. package/docs/tutorials/building-first-form.md +0 -846
  357. package/docs/tutorials/component-composition.md +0 -882
  358. package/docs/tutorials/getting-started.md +0 -302
  359. 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