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,721 +0,0 @@
1
- ---
2
- title: TransparentLabel
3
- description: Text label with gradient fade-out effect and comprehensive typography size options
4
- group: Labels & Text
5
- keywords: [transparent-label, text, typography, gradient, fade, truncate]
6
- ---
7
-
8
- # TransparentLabel
9
-
10
- > A specialized text label component with a built-in gradient fade-out effect (mask-image) that creates a smooth transition to transparency at the end. Supports all typography variants from display to labels with extensive customization.
11
-
12
- ## Installation
13
-
14
- TORCH Glare is a copy-in library: the CLI copies this component's source into your project
15
- (you do **not** install it from the npm package). Run `init` once, then `add`:
16
-
17
- ```bash
18
- npx torch-glare@latest init
19
- npx torch-glare@latest add TransparentLabel
20
- ```
21
-
22
- `add` also copies any components, hooks, and utilities that `TransparentLabel` depends on.
23
-
24
- ## Import
25
-
26
- Import from your project's local path — the alias configured in `glare.json` (e.g. `@/*`):
27
-
28
- ```tsx
29
- import { TransparentLabel } from "@/components/TransparentLabel";
30
- ```
31
-
32
- ## Quick Examples
33
-
34
- ### Basic Usage
35
-
36
- ```typescript
37
- import { TransparentLabel } from "@/components/TransparentLabel";
38
-
39
- function Example() {
40
- return (
41
- <TransparentLabel>
42
- This text will fade out at the end with a gradient effect
43
- </TransparentLabel>
44
- )
45
- }
46
- ```
47
-
48
- ### Different Sizes
49
-
50
- ```typescript
51
- import { TransparentLabel } from "@/components/TransparentLabel";
52
-
53
- function Sizes() {
54
- return (
55
- <div className="space-y-2">
56
- <TransparentLabel size="display-large-bold">
57
- Large Display Text
58
- </TransparentLabel>
59
-
60
- <TransparentLabel size="headers-medium-semibold">
61
- Medium Header
62
- </TransparentLabel>
63
-
64
- <TransparentLabel size="body-medium-regular">
65
- Regular Body Text
66
- </TransparentLabel>
67
-
68
- <TransparentLabel size="labels-small-regular">
69
- Small Label
70
- </TransparentLabel>
71
- </div>
72
- )
73
- }
74
- ```
75
-
76
- ### Truncating Long Text
77
-
78
- ```typescript
79
- import { TransparentLabel } from "@/components/TransparentLabel";
80
-
81
- function TruncatedText() {
82
- const longText = "This is a very long text that needs to be truncated gracefully with a fade-out effect instead of showing ellipsis or cutting off abruptly"
83
-
84
- return (
85
- <div className="w-64">
86
- <TransparentLabel size="body-medium-regular">
87
- {longText}
88
- </TransparentLabel>
89
- </div>
90
- )
91
- }
92
- ```
93
-
94
- ### Typography Variants
95
-
96
- ```typescript
97
- import { TransparentLabel } from "@/components/TransparentLabel";
98
-
99
- function TypographyShowcase() {
100
- return (
101
- <div className="space-y-4">
102
- <div>
103
- <p className="text-sm text-gray-500 mb-1">Display Large Bold</p>
104
- <TransparentLabel size="display-large-bold">
105
- Welcome to Torch
106
- </TransparentLabel>
107
- </div>
108
-
109
- <div>
110
- <p className="text-sm text-gray-500 mb-1">Headers Medium Semibold</p>
111
- <TransparentLabel size="headers-medium-semibold">
112
- Section Header
113
- </TransparentLabel>
114
- </div>
115
-
116
- <div>
117
- <p className="text-sm text-gray-500 mb-1">Body Large Regular</p>
118
- <TransparentLabel size="body-large-regular">
119
- This is body text with a fade-out effect
120
- </TransparentLabel>
121
- </div>
122
-
123
- <div>
124
- <p className="text-sm text-gray-500 mb-1">Labels Medium Medium</p>
125
- <TransparentLabel size="labels-medium-medium">
126
- Field Label
127
- </TransparentLabel>
128
- </div>
129
- </div>
130
- )
131
- }
132
- ```
133
-
134
- ### Card with Fade Effect
135
-
136
- ```typescript
137
- import { TransparentLabel } from "@/components/TransparentLabel";
138
- import { Card } from "@/components/Card";
139
-
140
- function ProductCard() {
141
- return (
142
- <Card className="p-4 w-64">
143
- <img
144
- src="/product.jpg"
145
- alt="Product"
146
- className="w-full h-32 object-cover rounded mb-2"
147
- />
148
- <TransparentLabel size="headers-small-bold">
149
- Premium Wireless Headphones with Active Noise Cancellation
150
- </TransparentLabel>
151
- <p className="text-sm text-gray-500 mt-2">$299.99</p>
152
- </Card>
153
- )
154
- }
155
- ```
156
-
157
- ### List with Truncated Items
158
-
159
- ```typescript
160
- import { TransparentLabel } from "@/components/TransparentLabel";
161
-
162
- function TruncatedList() {
163
- const items = [
164
- "Short item",
165
- "This is a medium length item that fits",
166
- "This is a very long item that will definitely need truncation with the fade effect to look good",
167
- "Another item",
168
- ]
169
-
170
- return (
171
- <div className="w-64 space-y-2">
172
- {items.map((item, index) => (
173
- <div key={index} className="p-2 bg-gray-50 rounded">
174
- <TransparentLabel size="body-medium-regular">
175
- {item}
176
- </TransparentLabel>
177
- </div>
178
- ))}
179
- </div>
180
- )
181
- }
182
- ```
183
-
184
- ### Navigation with Fade
185
-
186
- ```typescript
187
- import { TransparentLabel } from "@/components/TransparentLabel";
188
-
189
- function Navigation() {
190
- const navItems = [
191
- { label: "Dashboard", icon: "ri-dashboard-line" },
192
- { label: "Analytics and Reporting", icon: "ri-bar-chart-line" },
193
- { label: "User Management System", icon: "ri-user-line" },
194
- { label: "Settings", icon: "ri-settings-line" },
195
- ]
196
-
197
- return (
198
- <nav className="w-48 space-y-1">
199
- {navItems.map((item) => (
200
- <a
201
- key={item.label}
202
- href="#"
203
- className="flex items-center gap-2 p-2 hover:bg-gray-100 rounded"
204
- >
205
- <i className={item.icon} />
206
- <TransparentLabel size="body-medium-regular">
207
- {item.label}
208
- </TransparentLabel>
209
- </a>
210
- ))}
211
- </nav>
212
- )
213
- }
214
- ```
215
-
216
- ### Breadcrumbs
217
-
218
- ```typescript
219
- import { TransparentLabel } from "@/components/TransparentLabel";
220
-
221
- function Breadcrumbs() {
222
- const crumbs = [
223
- "Home",
224
- "Products",
225
- "Electronics",
226
- "Computers and Laptops",
227
- "Gaming Laptops",
228
- "High Performance Gaming Laptops"
229
- ]
230
-
231
- return (
232
- <div className="flex items-center gap-2 max-w-lg">
233
- {crumbs.map((crumb, index) => (
234
- <div key={index} className="flex items-center gap-2">
235
- {index > 0 && <span>/</span>}
236
- <TransparentLabel
237
- size="labels-medium-regular"
238
- className={index === crumbs.length - 1 ? 'font-semibold' : ''}
239
- >
240
- {crumb}
241
- </TransparentLabel>
242
- </div>
243
- ))}
244
- </div>
245
- )
246
- }
247
- ```
248
-
249
- ### Table Cell with Fade
250
-
251
- ```typescript
252
- import { TransparentLabel } from "@/components/TransparentLabel";
253
-
254
- function DataTable() {
255
- const data = [
256
- { name: "Alice Johnson", email: "alice.johnson@verylongdomain.com", role: "Administrator" },
257
- { name: "Bob Smith", email: "bob.smith@company.com", role: "Editor" },
258
- { name: "Carol Williams with a very long name", email: "carol@email.com", role: "Viewer" },
259
- ]
260
-
261
- return (
262
- <table className="w-full">
263
- <thead>
264
- <tr className="border-b">
265
- <th className="text-left p-2">Name</th>
266
- <th className="text-left p-2">Email</th>
267
- <th className="text-left p-2">Role</th>
268
- </tr>
269
- </thead>
270
- <tbody>
271
- {data.map((row, index) => (
272
- <tr key={index} className="border-b">
273
- <td className="p-2">
274
- <TransparentLabel size="body-medium-regular">
275
- {row.name}
276
- </TransparentLabel>
277
- </td>
278
- <td className="p-2">
279
- <TransparentLabel size="body-medium-regular">
280
- {row.email}
281
- </TransparentLabel>
282
- </td>
283
- <td className="p-2">
284
- <TransparentLabel size="labels-medium-regular">
285
- {row.role}
286
- </TransparentLabel>
287
- </td>
288
- </tr>
289
- ))}
290
- </tbody>
291
- </table>
292
- )
293
- }
294
- ```
295
-
296
- ### Custom Color with Fade
297
-
298
- ```typescript
299
- import { TransparentLabel } from "@/components/TransparentLabel";
300
-
301
- function ColoredLabels() {
302
- return (
303
- <div className="space-y-2">
304
- <TransparentLabel
305
- size="body-medium-semibold"
306
- className="text-blue-600"
307
- >
308
- This is a blue label with fade effect
309
- </TransparentLabel>
310
-
311
- <TransparentLabel
312
- size="body-medium-semibold"
313
- className="text-green-600"
314
- >
315
- This is a green label with fade effect
316
- </TransparentLabel>
317
-
318
- <TransparentLabel
319
- size="body-medium-semibold"
320
- className="text-red-600"
321
- >
322
- This is a red label with fade effect
323
- </TransparentLabel>
324
- </div>
325
- )
326
- }
327
- ```
328
-
329
- ### RTL Support
330
-
331
- ```typescript
332
- import { TransparentLabel } from "@/components/TransparentLabel";
333
-
334
- function RTLExample() {
335
- return (
336
- <div dir="rtl" className="space-y-2">
337
- <TransparentLabel size="body-medium-regular">
338
- هذا نص باللغة العربية سيتلاشى في النهاية
339
- </TransparentLabel>
340
-
341
- <TransparentLabel size="headers-medium-bold">
342
- عنوان باللغة العربية
343
- </TransparentLabel>
344
- </div>
345
- )
346
- }
347
- ```
348
-
349
- ## API Reference
350
-
351
- ### TransparentLabel Props
352
-
353
- Extends all standard HTML paragraph attributes.
354
-
355
- | Prop | Type | Default | Description |
356
- |------|------|---------|-------------|
357
- | `size` | `TypographySize` | `'body-medium-regular'` | Typography variant |
358
- | `className` | `string` | - | Additional CSS classes |
359
- | `children` | `ReactNode` | - | Text content |
360
- | ...HTMLParagraphElement | - | - | All paragraph attributes |
361
-
362
- ### Typography Sizes
363
-
364
- The component supports all typography sizes from the design system:
365
-
366
- #### Display Sizes
367
- - `display-large-bold`
368
- - `display-large-semibold`
369
- - `display-large-medium`
370
- - `display-large-regular`
371
- - `display-medium-bold`
372
- - `display-medium-semibold`
373
- - `display-medium-medium`
374
- - `display-medium-regular`
375
- - `display-small-bold`
376
- - `display-small-semibold`
377
- - `display-small-medium`
378
- - `display-small-regular`
379
-
380
- #### Header Sizes
381
- - `headers-large-bold`
382
- - `headers-large-semibold`
383
- - `headers-large-medium`
384
- - `headers-large-regular`
385
- - `headers-medium-bold`
386
- - `headers-medium-semibold`
387
- - `headers-medium-medium`
388
- - `headers-medium-regular`
389
- - `headers-small-bold`
390
- - `headers-small-semibold`
391
- - `headers-small-medium`
392
- - `headers-small-regular`
393
-
394
- #### Body Sizes
395
- - `body-large-bold`
396
- - `body-large-semibold`
397
- - `body-large-medium`
398
- - `body-large-regular`
399
- - `body-medium-bold`
400
- - `body-medium-semibold`
401
- - `body-medium-medium`
402
- - `body-medium-regular`
403
- - `body-small-bold`
404
- - `body-small-semibold`
405
- - `body-small-medium`
406
- - `body-small-regular`
407
-
408
- #### Label Sizes
409
- - `labels-large-bold`
410
- - `labels-large-semibold`
411
- - `labels-large-medium`
412
- - `labels-large-regular`
413
- - `labels-medium-bold`
414
- - `labels-medium-semibold`
415
- - `labels-medium-medium`
416
- - `labels-medium-regular`
417
- - `labels-small-bold`
418
- - `labels-small-semibold`
419
- - `labels-small-medium`
420
- - `labels-small-regular`
421
-
422
- ### Gradient Fade Details
423
-
424
- The component uses CSS mask-image to create the fade effect:
425
- - **LTR**: Fades from 85% to 100% on the right
426
- - **RTL**: Fades from 85% to 100% on the left
427
- - **Gradient**: `linear-gradient(to right, black 0%, black 85%, transparent 100%)`
428
-
429
- ## TypeScript
430
-
431
- ### Full Type Definitions
432
-
433
- ```typescript
434
- import { HTMLAttributes } from 'react'
435
- import { VariantProps } from 'class-variance-authority'
436
-
437
- type TypographySize =
438
- | 'display-large-bold' | 'display-large-semibold' | 'display-large-medium' | 'display-large-regular'
439
- | 'display-medium-bold' | 'display-medium-semibold' | 'display-medium-medium' | 'display-medium-regular'
440
- | 'display-small-bold' | 'display-small-semibold' | 'display-small-medium' | 'display-small-regular'
441
- | 'headers-large-bold' | 'headers-large-semibold' | 'headers-large-medium' | 'headers-large-regular'
442
- | 'headers-medium-bold' | 'headers-medium-semibold' | 'headers-medium-medium' | 'headers-medium-regular'
443
- | 'headers-small-bold' | 'headers-small-semibold' | 'headers-small-medium' | 'headers-small-regular'
444
- | 'body-large-bold' | 'body-large-semibold' | 'body-large-medium' | 'body-large-regular'
445
- | 'body-medium-bold' | 'body-medium-semibold' | 'body-medium-medium' | 'body-medium-regular'
446
- | 'body-small-bold' | 'body-small-semibold' | 'body-small-medium' | 'body-small-regular'
447
- | 'labels-large-bold' | 'labels-large-semibold' | 'labels-large-medium' | 'labels-large-regular'
448
- | 'labels-medium-bold' | 'labels-medium-semibold' | 'labels-medium-medium' | 'labels-medium-regular'
449
- | 'labels-small-bold' | 'labels-small-semibold' | 'labels-small-medium' | 'labels-small-regular'
450
-
451
- interface TransparentLabelProps
452
- extends HTMLAttributes<HTMLParagraphElement>,
453
- VariantProps<typeof TransparentLabelStyles> {
454
- size?: TypographySize
455
- }
456
-
457
- export const TransparentLabel: React.FC<TransparentLabelProps>
458
- ```
459
-
460
- ### Usage with Types
461
-
462
- ```typescript
463
- import { TransparentLabel } from "@/components/TransparentLabel";
464
- import { useState } from 'react'
465
-
466
- type Size = 'body-medium-regular' | 'body-large-bold' | 'headers-medium-semibold'
467
-
468
- function TypedExample() {
469
- const [size, setSize] = useState<Size>('body-medium-regular')
470
-
471
- return (
472
- <div>
473
- <TransparentLabel size={size}>
474
- This text uses typed size prop
475
- </TransparentLabel>
476
-
477
- <select
478
- value={size}
479
- onChange={(e) => setSize(e.target.value as Size)}
480
- >
481
- <option value="body-medium-regular">Body Regular</option>
482
- <option value="body-large-bold">Body Bold</option>
483
- <option value="headers-medium-semibold">Header</option>
484
- </select>
485
- </div>
486
- )
487
- }
488
- ```
489
-
490
- ## Common Patterns
491
-
492
- ### Truncated Text Component
493
-
494
- ```typescript
495
- import { TransparentLabel } from "@/components/TransparentLabel";
496
- import { useState } from 'react'
497
-
498
- interface TruncatedTextProps {
499
- text: string
500
- maxWidth?: string
501
- size?: ComponentProps<typeof TransparentLabel>['size']
502
- }
503
-
504
- function TruncatedText({ text, maxWidth = '200px', size = 'body-medium-regular' }: TruncatedTextProps) {
505
- const [showFull, setShowFull] = useState(false)
506
-
507
- return (
508
- <div>
509
- <div style={{ maxWidth }} className={showFull ? '' : 'overflow-hidden'}>
510
- <TransparentLabel size={size}>
511
- {text}
512
- </TransparentLabel>
513
- </div>
514
- {text.length > 50 && (
515
- <button
516
- onClick={() => setShowFull(!showFull)}
517
- className="text-sm text-blue-600 mt-1"
518
- >
519
- {showFull ? 'Show less' : 'Show more'}
520
- </button>
521
- )}
522
- </div>
523
- )
524
- }
525
- ```
526
-
527
- ### Responsive Typography
528
-
529
- ```typescript
530
- import { TransparentLabel } from "@/components/TransparentLabel";
531
- import { useMediaQuery } from '@/hooks/useMediaQuery'
532
-
533
- function ResponsiveText() {
534
- const isMobile = useMediaQuery('(max-width: 768px)')
535
-
536
- return (
537
- <TransparentLabel
538
- size={isMobile ? 'body-medium-regular' : 'body-large-regular'}
539
- >
540
- This text adjusts size based on screen width
541
- </TransparentLabel>
542
- )
543
- }
544
- ```
545
-
546
- ## Testing
547
-
548
- ### Unit Test Examples
549
-
550
- ```typescript
551
- import { render, screen } from '@testing-library/react'
552
- import { TransparentLabel } from "@/components/TransparentLabel";
553
-
554
- describe('TransparentLabel', () => {
555
- it('renders text content', () => {
556
- render(<TransparentLabel>Test Text</TransparentLabel>)
557
-
558
- expect(screen.getByText('Test Text')).toBeInTheDocument()
559
- })
560
-
561
- it('applies typography class', () => {
562
- const { container } = render(
563
- <TransparentLabel size="body-large-bold">
564
- Bold Text
565
- </TransparentLabel>
566
- )
567
-
568
- expect(container.querySelector('.typography-body-large-bold')).toBeInTheDocument()
569
- })
570
-
571
- it('applies gradient mask', () => {
572
- const { container } = render(
573
- <TransparentLabel>Fading Text</TransparentLabel>
574
- )
575
-
576
- const element = container.querySelector('p')
577
- const styles = window.getComputedStyle(element!)
578
- expect(styles.maskImage).toContain('linear-gradient')
579
- })
580
-
581
- it('applies custom className', () => {
582
- const { container } = render(
583
- <TransparentLabel className="custom-class">
584
- Text
585
- </TransparentLabel>
586
- )
587
-
588
- expect(container.querySelector('.custom-class')).toBeInTheDocument()
589
- })
590
-
591
- it('renders as paragraph element', () => {
592
- const { container } = render(
593
- <TransparentLabel>Text</TransparentLabel>
594
- )
595
-
596
- expect(container.querySelector('p')).toBeInTheDocument()
597
- })
598
-
599
- it('supports all HTML paragraph attributes', () => {
600
- render(
601
- <TransparentLabel
602
- id="test-id"
603
- data-testid="test-label"
604
- aria-label="Test Label"
605
- >
606
- Text
607
- </TransparentLabel>
608
- )
609
-
610
- const element = screen.getByTestId('test-label')
611
- expect(element).toHaveAttribute('id', 'test-id')
612
- expect(element).toHaveAttribute('aria-label', 'Test Label')
613
- })
614
- })
615
- ```
616
-
617
- ## Accessibility
618
-
619
- - **Semantic HTML**: Uses `<p>` element
620
- - **Screen Readers**: Content announced normally
621
- - **Keyboard Navigation**: Not interactive, doesn't affect navigation
622
- - **Color Independence**: Fade effect is visual enhancement only
623
- - **Text Readability**: Ensure sufficient contrast for visible portion
624
-
625
- ### Accessibility Best Practices
626
-
627
- ```typescript
628
- // Provide full text in aria-label for screen readers
629
- <TransparentLabel aria-label="Full text without fade">
630
- Visible truncated text
631
- </TransparentLabel>
632
-
633
- // Use appropriate semantic elements
634
- <TransparentLabel as="h2" size="headers-large-bold">
635
- Section Heading
636
- </TransparentLabel>
637
-
638
- // Don't hide critical information
639
- <TransparentLabel>
640
- Important: Read this completely {/* ❌ Bad - might fade important info */}
641
- </TransparentLabel>
642
- ```
643
-
644
- ## Performance
645
-
646
- | Metric | Value |
647
- |--------|-------|
648
- | Bundle size (minified) | ~2kb |
649
- | Bundle size (gzipped) | ~0.8kb |
650
- | Dependencies | class-variance-authority |
651
- | CSS mask support | 98% browsers |
652
- | Re-renders | Minimal |
653
- | Tree-shakeable | ✅ |
654
-
655
- ### Performance Tips
656
-
657
- 1. **Use appropriate size**: Don't over-size text
658
- 2. **Avoid re-renders**: Memoize content when possible
659
- ```typescript
660
- const memoizedText = useMemo(() => generateText(), [deps])
661
- <TransparentLabel>{memoizedText}</TransparentLabel>
662
- ```
663
- 3. **Consider container width**: Fade effect works best with constrained width
664
-
665
- ## Styling
666
-
667
- ### Gradient Customization
668
-
669
- ```typescript
670
- // Custom fade point
671
- <TransparentLabel
672
- className="[mask-image:linear-gradient(to_right,black_0%,black_70%,transparent_100%)]"
673
- >
674
- Fades earlier at 70%
675
- </TransparentLabel>
676
-
677
- // No fade
678
- <TransparentLabel className="[mask-image:none]">
679
- No fade effect
680
- </TransparentLabel>
681
-
682
- // Different gradient
683
- <TransparentLabel
684
- className="[mask-image:linear-gradient(to_bottom,black_0%,transparent_100%)]"
685
- >
686
- Vertical fade
687
- </TransparentLabel>
688
- ```
689
-
690
- ### Default Styling
691
-
692
- - Mask Image: Linear gradient from left to right (or right to left for RTL)
693
- - Fade Start: 85% of text width
694
- - Fade End: 100% of text width
695
- - Typography: Design system typography classes
696
-
697
- ## Best Practices
698
-
699
- 1. **Use for truncation**: Ideal for long text in constrained spaces
700
- 2. **Constrain width**: Works best with defined container width
701
- 3. **Don't hide critical info**: Ensure important text isn't in fade zone
702
- 4. **Match typography**: Use appropriate size for context
703
- 5. **Test with long text**: Verify fade appears naturally
704
- 6. **Consider hover states**: Optionally show full text on hover
705
- 7. **RTL support**: Component automatically handles RTL languages
706
-
707
- ## Comparison with Standard Truncation
708
-
709
- | Feature | TransparentLabel | text-ellipsis |
710
- |---------|-----------------|---------------|
711
- | Visual Effect | Gradual fade | Abrupt cutoff |
712
- | Customization | Full gradient control | Limited |
713
- | Multi-line | Works well | single-line-clamp needed |
714
- | Performance | CSS mask | CSS overflow |
715
- | Browser Support | 98% | 100% |
716
-
717
- ## Related Components
718
-
719
- - [Label](./label.md) - Form label component
720
- - [LabelField](./label-field.md) - Combined label and input
721
- - [InnerLabelField](./inner-label-field.md) - Floating label input