@g4rcez/components 4.0.1 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/ai/SKILL.md +233 -0
  2. package/ai/docs/Alert.md +166 -0
  3. package/ai/docs/AnimatedList.md +206 -0
  4. package/ai/docs/Autocomplete.md +221 -0
  5. package/ai/docs/Button.md +182 -0
  6. package/ai/docs/Calendar.md +185 -0
  7. package/ai/docs/Card.md +178 -0
  8. package/ai/docs/Checkbox.md +194 -0
  9. package/ai/docs/CommandPalette.md +275 -0
  10. package/ai/docs/DatePicker.md +152 -0
  11. package/ai/docs/Dropdown.md +195 -0
  12. package/{dist/ai → ai}/docs/Empty.md +41 -44
  13. package/{dist/ai → ai}/docs/Expand.md +40 -54
  14. package/ai/docs/FileUpload.md +218 -0
  15. package/{dist/ai → ai}/docs/Form.md +35 -29
  16. package/{dist/ai → ai}/docs/FormReset.md +37 -37
  17. package/{dist/ai → ai}/docs/Heading.md +4 -6
  18. package/ai/docs/Input.md +212 -0
  19. package/ai/docs/InputField.md +170 -0
  20. package/ai/docs/List.md +208 -0
  21. package/ai/docs/Menu.md +168 -0
  22. package/ai/docs/Modal.md +273 -0
  23. package/ai/docs/MultiSelect.md +177 -0
  24. package/ai/docs/Notifications.md +231 -0
  25. package/ai/docs/PageCalendar.md +262 -0
  26. package/{dist/ai → ai}/docs/Polymorph.md +25 -41
  27. package/{dist/ai → ai}/docs/Progress.md +55 -51
  28. package/{dist/ai → ai}/docs/Radiobox.md +49 -41
  29. package/{dist/ai → ai}/docs/RenderOnView.md +26 -32
  30. package/{dist/ai → ai}/docs/Resizable.md +60 -65
  31. package/ai/docs/Select.md +284 -0
  32. package/{dist/ai → ai}/docs/Shortcut.md +14 -14
  33. package/{dist/ai → ai}/docs/Skeleton.md +56 -60
  34. package/{dist/ai → ai}/docs/Slider.md +26 -49
  35. package/{dist/ai → ai}/docs/Slot.md +15 -17
  36. package/{dist/ai → ai}/docs/Spinner.md +17 -15
  37. package/{dist/ai → ai}/docs/Stats.md +44 -42
  38. package/ai/docs/Step.md +159 -0
  39. package/{dist/ai → ai}/docs/Switch.md +44 -54
  40. package/ai/docs/Table.md +286 -0
  41. package/ai/docs/Tabs.md +191 -0
  42. package/ai/docs/Tag.md +222 -0
  43. package/{dist/ai → ai}/docs/TaskList.md +40 -50
  44. package/ai/docs/Textarea.md +144 -0
  45. package/ai/docs/Timeline.md +212 -0
  46. package/{dist/ai → ai}/docs/Toolbar.md +46 -46
  47. package/ai/docs/Tooltip.md +231 -0
  48. package/ai/docs/Typography.md +187 -0
  49. package/ai/docs/Wizard.md +208 -0
  50. package/ai/docs/index.md +183 -0
  51. package/dist/autocomplete-DcTNOwyg.js +393 -0
  52. package/dist/autocomplete-DcTNOwyg.js.map +1 -0
  53. package/dist/{calendar-B5lSd0ID.js → calendar-BJMHRoy2.js} +104 -105
  54. package/dist/calendar-BJMHRoy2.js.map +1 -0
  55. package/dist/components/core/button.js +10 -10
  56. package/dist/components/core/button.js.map +1 -1
  57. package/dist/components/core/tag.js +4 -4
  58. package/dist/components/core/tag.js.map +1 -1
  59. package/dist/components/display/alert.js +48 -46
  60. package/dist/components/display/alert.js.map +1 -1
  61. package/dist/components/display/calendar.js +6 -6
  62. package/dist/components/display/card.js +2 -2
  63. package/dist/components/display/card.js.map +1 -1
  64. package/dist/components/display/list.js +1 -1
  65. package/dist/components/display/list.js.map +1 -1
  66. package/dist/components/display/notifications.js +3 -3
  67. package/dist/components/display/stats.js +1 -1
  68. package/dist/components/display/tabs.js +2 -2
  69. package/dist/components/display/timeline.js +1 -1
  70. package/dist/components/floating/dropdown.js +25 -17
  71. package/dist/components/floating/dropdown.js.map +1 -1
  72. package/dist/components/floating/expand.js +7 -7
  73. package/dist/components/floating/expand.js.map +1 -1
  74. package/dist/components/floating/menu.js +10 -10
  75. package/dist/components/floating/menu.js.map +1 -1
  76. package/dist/components/floating/modal.js +106 -102
  77. package/dist/components/floating/modal.js.map +1 -1
  78. package/dist/components/floating/tooltip.js +14 -14
  79. package/dist/components/floating/tooltip.js.map +1 -1
  80. package/dist/components/form/autocomplete.js +6 -6
  81. package/dist/components/form/checkbox.js +1 -1
  82. package/dist/components/form/date-picker.js +5 -5
  83. package/dist/components/form/file-upload.js +2 -2
  84. package/dist/components/form/form.js.map +1 -1
  85. package/dist/components/form/input.js +1 -1
  86. package/dist/components/form/radiobox.js +1 -1
  87. package/dist/components/form/select.js +3 -3
  88. package/dist/components/form/switch.js +2 -2
  89. package/dist/components/form/switch.js.map +1 -1
  90. package/dist/components/table/table.js +3 -3
  91. package/dist/{date-picker-DwNo22lx.js → date-picker-Bnl07nd8.js} +8 -6
  92. package/dist/date-picker-Bnl07nd8.js.map +1 -0
  93. package/dist/{dom-Dl8XH0CK.js → dom-CyQHY7ID.js} +66 -61
  94. package/dist/dom-CyQHY7ID.js.map +1 -0
  95. package/dist/{file-upload-Brf2NkLr.js → file-upload-93d5DR4q.js} +139 -129
  96. package/dist/file-upload-93d5DR4q.js.map +1 -0
  97. package/dist/{floating-ui.react-QNHG9W4N.js → floating-ui.react-M2PGXLDp.js} +8 -8
  98. package/dist/floating-ui.react-M2PGXLDp.js.map +1 -0
  99. package/dist/{fns-D2eyJKd5.js → fns-C7Dt27Qd.js} +2 -2
  100. package/dist/fns-C7Dt27Qd.js.map +1 -0
  101. package/dist/index-BJ1ayTam.js +126 -0
  102. package/dist/index-BJ1ayTam.js.map +1 -0
  103. package/dist/index-C-PuFUZi.js.map +1 -1
  104. package/dist/{index-BelDtX5M.js → index-DDeQW0JW.js} +399 -404
  105. package/dist/index-DDeQW0JW.js.map +1 -0
  106. package/dist/index-DE4shK8D.js +215 -0
  107. package/dist/index-DE4shK8D.js.map +1 -0
  108. package/dist/{index-DJSMaZR4.js → index-DlJ_2RBL.js} +2 -2
  109. package/dist/index-DlJ_2RBL.js.map +1 -0
  110. package/dist/index.css +1 -1
  111. package/dist/index.esm-BaIwleSE.js.map +1 -1
  112. package/dist/index.js +2826 -2765
  113. package/dist/index.js.map +1 -1
  114. package/dist/{input-CrGrSnUt.js → input-_MVxmIpu.js} +116 -114
  115. package/dist/input-_MVxmIpu.js.map +1 -0
  116. package/dist/{input-field-5vYcz5tT.js → input-field-CDCOODOl.js} +63 -47
  117. package/dist/input-field-CDCOODOl.js.map +1 -0
  118. package/dist/notifications-Dp0ydKJS.js +2576 -0
  119. package/dist/notifications-Dp0ydKJS.js.map +1 -0
  120. package/dist/polymorph-B5n9fs_K.js.map +1 -1
  121. package/dist/preset/plugin.tailwind.d.ts.map +1 -1
  122. package/dist/preset/plugin.tailwind.js +20 -18
  123. package/dist/preset/preset.tailwind.js +24 -25
  124. package/dist/preset/src/styles/common.js +6 -3
  125. package/dist/preset/src/styles/dark.d.ts.map +1 -1
  126. package/dist/preset/src/styles/dark.js +9 -5
  127. package/dist/preset/src/styles/design-tokens.js +68 -89
  128. package/dist/preset/src/styles/light.d.ts.map +1 -1
  129. package/dist/preset/src/styles/light.js +9 -5
  130. package/dist/preset/src/styles/theme.js +7 -4
  131. package/dist/preset/src/styles/theme.types.d.ts +2 -1
  132. package/dist/preset/src/styles/theme.types.d.ts.map +1 -1
  133. package/dist/preset/src/styles/theme.types.js +2 -1
  134. package/dist/skeleton-BjJobYYf.js +24 -0
  135. package/dist/skeleton-BjJobYYf.js.map +1 -0
  136. package/dist/slot-CRyweuj0.js.map +1 -1
  137. package/dist/styles/common.js +6 -3
  138. package/dist/styles/dark.d.ts.map +1 -1
  139. package/dist/styles/dark.js +9 -5
  140. package/dist/styles/design-tokens.js +68 -89
  141. package/dist/styles/light.d.ts.map +1 -1
  142. package/dist/styles/light.js +9 -5
  143. package/dist/styles/theme.js +7 -4
  144. package/dist/styles/theme.types.d.ts +2 -1
  145. package/dist/styles/theme.types.d.ts.map +1 -1
  146. package/dist/styles/theme.types.js +2 -1
  147. package/dist/tabs-B0g7YtQv.js +123 -0
  148. package/dist/tabs-B0g7YtQv.js.map +1 -0
  149. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  150. package/dist/{context-BFXNJVn2.js → use-translations-DSltA7H_.js} +38 -30
  151. package/dist/use-translations-DSltA7H_.js.map +1 -0
  152. package/package.json +101 -88
  153. package/dist/ai/SKILL.md +0 -266
  154. package/dist/ai/docs/Alert.md +0 -167
  155. package/dist/ai/docs/AnimatedList.md +0 -205
  156. package/dist/ai/docs/Autocomplete.md +0 -225
  157. package/dist/ai/docs/Button.md +0 -182
  158. package/dist/ai/docs/Calendar.md +0 -219
  159. package/dist/ai/docs/Card.md +0 -174
  160. package/dist/ai/docs/Checkbox.md +0 -199
  161. package/dist/ai/docs/CommandPalette.md +0 -293
  162. package/dist/ai/docs/DatePicker.md +0 -171
  163. package/dist/ai/docs/Dropdown.md +0 -223
  164. package/dist/ai/docs/FileUpload.md +0 -225
  165. package/dist/ai/docs/Input.md +0 -237
  166. package/dist/ai/docs/InputField.md +0 -170
  167. package/dist/ai/docs/List.md +0 -205
  168. package/dist/ai/docs/Menu.md +0 -166
  169. package/dist/ai/docs/Modal.md +0 -280
  170. package/dist/ai/docs/MultiSelect.md +0 -196
  171. package/dist/ai/docs/Notifications.md +0 -231
  172. package/dist/ai/docs/PageCalendar.md +0 -271
  173. package/dist/ai/docs/Select.md +0 -284
  174. package/dist/ai/docs/Step.md +0 -159
  175. package/dist/ai/docs/Table.md +0 -298
  176. package/dist/ai/docs/Tabs.md +0 -191
  177. package/dist/ai/docs/Tag.md +0 -224
  178. package/dist/ai/docs/Textarea.md +0 -167
  179. package/dist/ai/docs/Timeline.md +0 -210
  180. package/dist/ai/docs/Tooltip.md +0 -231
  181. package/dist/ai/docs/TransferList.md +0 -142
  182. package/dist/ai/docs/Typography.md +0 -187
  183. package/dist/ai/docs/Wizard.md +0 -213
  184. package/dist/ai/docs/index.md +0 -183
  185. package/dist/autocomplete-Cn9Z2hLq.js +0 -375
  186. package/dist/autocomplete-Cn9Z2hLq.js.map +0 -1
  187. package/dist/calendar-B5lSd0ID.js.map +0 -1
  188. package/dist/components/core/button.d.ts +0 -77
  189. package/dist/components/core/button.d.ts.map +0 -1
  190. package/dist/components/core/heading.d.ts +0 -3
  191. package/dist/components/core/heading.d.ts.map +0 -1
  192. package/dist/components/core/polymorph.d.ts +0 -10
  193. package/dist/components/core/polymorph.d.ts.map +0 -1
  194. package/dist/components/core/render-on-view.d.ts +0 -7
  195. package/dist/components/core/render-on-view.d.ts.map +0 -1
  196. package/dist/components/core/resizable.d.ts +0 -3
  197. package/dist/components/core/resizable.d.ts.map +0 -1
  198. package/dist/components/core/slot.d.ts +0 -16
  199. package/dist/components/core/slot.d.ts.map +0 -1
  200. package/dist/components/core/tag.d.ts +0 -35
  201. package/dist/components/core/tag.d.ts.map +0 -1
  202. package/dist/components/core/typography.d.ts +0 -24
  203. package/dist/components/core/typography.d.ts.map +0 -1
  204. package/dist/components/display/alert.d.ts +0 -28
  205. package/dist/components/display/alert.d.ts.map +0 -1
  206. package/dist/components/display/calendar.d.ts +0 -42
  207. package/dist/components/display/calendar.d.ts.map +0 -1
  208. package/dist/components/display/card.d.ts +0 -29
  209. package/dist/components/display/card.d.ts.map +0 -1
  210. package/dist/components/display/empty.d.ts +0 -8
  211. package/dist/components/display/empty.d.ts.map +0 -1
  212. package/dist/components/display/list.d.ts +0 -16
  213. package/dist/components/display/list.d.ts.map +0 -1
  214. package/dist/components/display/notifications.d.ts +0 -27
  215. package/dist/components/display/notifications.d.ts.map +0 -1
  216. package/dist/components/display/progress.d.ts +0 -13
  217. package/dist/components/display/progress.d.ts.map +0 -1
  218. package/dist/components/display/shortcut.d.ts +0 -4
  219. package/dist/components/display/shortcut.d.ts.map +0 -1
  220. package/dist/components/display/skeleton.d.ts +0 -12
  221. package/dist/components/display/skeleton.d.ts.map +0 -1
  222. package/dist/components/display/spinner.d.ts +0 -5
  223. package/dist/components/display/spinner.d.ts.map +0 -1
  224. package/dist/components/display/stats.d.ts +0 -12
  225. package/dist/components/display/stats.d.ts.map +0 -1
  226. package/dist/components/display/step.d.ts +0 -24
  227. package/dist/components/display/step.d.ts.map +0 -1
  228. package/dist/components/display/tabs.d.ts +0 -24
  229. package/dist/components/display/tabs.d.ts.map +0 -1
  230. package/dist/components/display/timeline.d.ts +0 -10
  231. package/dist/components/display/timeline.d.ts.map +0 -1
  232. package/dist/components/floating/command-palette.d.ts +0 -49
  233. package/dist/components/floating/command-palette.d.ts.map +0 -1
  234. package/dist/components/floating/dropdown.d.ts +0 -15
  235. package/dist/components/floating/dropdown.d.ts.map +0 -1
  236. package/dist/components/floating/expand.d.ts +0 -11
  237. package/dist/components/floating/expand.d.ts.map +0 -1
  238. package/dist/components/floating/menu.d.ts +0 -52
  239. package/dist/components/floating/menu.d.ts.map +0 -1
  240. package/dist/components/floating/modal.d.ts +0 -60
  241. package/dist/components/floating/modal.d.ts.map +0 -1
  242. package/dist/components/floating/toolbar.d.ts +0 -6
  243. package/dist/components/floating/toolbar.d.ts.map +0 -1
  244. package/dist/components/floating/tooltip.d.ts +0 -17
  245. package/dist/components/floating/tooltip.d.ts.map +0 -1
  246. package/dist/components/floating/wizard.d.ts +0 -26
  247. package/dist/components/floating/wizard.d.ts.map +0 -1
  248. package/dist/components/form/autocomplete.d.ts +0 -16
  249. package/dist/components/form/autocomplete.d.ts.map +0 -1
  250. package/dist/components/form/checkbox.d.ts +0 -12
  251. package/dist/components/form/checkbox.d.ts.map +0 -1
  252. package/dist/components/form/date-picker.d.ts +0 -10
  253. package/dist/components/form/date-picker.d.ts.map +0 -1
  254. package/dist/components/form/file-upload.d.ts +0 -15
  255. package/dist/components/form/file-upload.d.ts.map +0 -1
  256. package/dist/components/form/form.d.ts +0 -3
  257. package/dist/components/form/form.d.ts.map +0 -1
  258. package/dist/components/form/formReset.d.ts +0 -2
  259. package/dist/components/form/formReset.d.ts.map +0 -1
  260. package/dist/components/form/free-text.d.ts +0 -11
  261. package/dist/components/form/free-text.d.ts.map +0 -1
  262. package/dist/components/form/input-field.d.ts +0 -34
  263. package/dist/components/form/input-field.d.ts.map +0 -1
  264. package/dist/components/form/input.d.ts +0 -52
  265. package/dist/components/form/input.d.ts.map +0 -1
  266. package/dist/components/form/multi-select.d.ts +0 -19
  267. package/dist/components/form/multi-select.d.ts.map +0 -1
  268. package/dist/components/form/radiobox.d.ts +0 -7
  269. package/dist/components/form/radiobox.d.ts.map +0 -1
  270. package/dist/components/form/select.d.ts +0 -13
  271. package/dist/components/form/select.d.ts.map +0 -1
  272. package/dist/components/form/slider.d.ts +0 -7
  273. package/dist/components/form/slider.d.ts.map +0 -1
  274. package/dist/components/form/switch.d.ts +0 -9
  275. package/dist/components/form/switch.d.ts.map +0 -1
  276. package/dist/components/form/task-list.d.ts +0 -3
  277. package/dist/components/form/task-list.d.ts.map +0 -1
  278. package/dist/components/form/textarea.d.ts +0 -6
  279. package/dist/components/form/textarea.d.ts.map +0 -1
  280. package/dist/components/form/transfer-list.d.ts +0 -14
  281. package/dist/components/form/transfer-list.d.ts.map +0 -1
  282. package/dist/components/form/transfer-list.js +0 -55
  283. package/dist/components/form/transfer-list.js.map +0 -1
  284. package/dist/components/index.d.ts +0 -46
  285. package/dist/components/index.d.ts.map +0 -1
  286. package/dist/components/page-calendar/calendar-header.d.ts +0 -16
  287. package/dist/components/page-calendar/calendar-header.d.ts.map +0 -1
  288. package/dist/components/page-calendar/day-view.d.ts +0 -12
  289. package/dist/components/page-calendar/day-view.d.ts.map +0 -1
  290. package/dist/components/page-calendar/event-pill.d.ts +0 -9
  291. package/dist/components/page-calendar/event-pill.d.ts.map +0 -1
  292. package/dist/components/page-calendar/index.d.ts +0 -4
  293. package/dist/components/page-calendar/index.d.ts.map +0 -1
  294. package/dist/components/page-calendar/month-view.d.ts +0 -11
  295. package/dist/components/page-calendar/month-view.d.ts.map +0 -1
  296. package/dist/components/page-calendar/page-calendar.d.ts +0 -18
  297. package/dist/components/page-calendar/page-calendar.d.ts.map +0 -1
  298. package/dist/components/page-calendar/page-calendar.types.d.ts +0 -18
  299. package/dist/components/page-calendar/page-calendar.types.d.ts.map +0 -1
  300. package/dist/components/page-calendar/page-calendar.utils.d.ts +0 -24
  301. package/dist/components/page-calendar/page-calendar.utils.d.ts.map +0 -1
  302. package/dist/components/page-calendar/week-view.d.ts +0 -11
  303. package/dist/components/page-calendar/week-view.d.ts.map +0 -1
  304. package/dist/components/table/filter.d.ts +0 -42
  305. package/dist/components/table/filter.d.ts.map +0 -1
  306. package/dist/components/table/group.d.ts +0 -17
  307. package/dist/components/table/group.d.ts.map +0 -1
  308. package/dist/components/table/index.d.ts +0 -20
  309. package/dist/components/table/index.d.ts.map +0 -1
  310. package/dist/components/table/inner-table.d.ts +0 -29
  311. package/dist/components/table/inner-table.d.ts.map +0 -1
  312. package/dist/components/table/metadata.d.ts +0 -4
  313. package/dist/components/table/metadata.d.ts.map +0 -1
  314. package/dist/components/table/pagination.d.ts +0 -3
  315. package/dist/components/table/pagination.d.ts.map +0 -1
  316. package/dist/components/table/row.d.ts +0 -12
  317. package/dist/components/table/row.d.ts.map +0 -1
  318. package/dist/components/table/sort.d.ts +0 -28
  319. package/dist/components/table/sort.d.ts.map +0 -1
  320. package/dist/components/table/table-lib.d.ts +0 -135
  321. package/dist/components/table/table-lib.d.ts.map +0 -1
  322. package/dist/components/table/table.context.d.ts +0 -10
  323. package/dist/components/table/table.context.d.ts.map +0 -1
  324. package/dist/components/table/thead.d.ts +0 -9
  325. package/dist/components/table/thead.d.ts.map +0 -1
  326. package/dist/config/context.d.ts +0 -21
  327. package/dist/config/context.d.ts.map +0 -1
  328. package/dist/config/default-translations.d.ts +0 -90
  329. package/dist/config/default-translations.d.ts.map +0 -1
  330. package/dist/config/default-tweaks.d.ts +0 -13
  331. package/dist/config/default-tweaks.d.ts.map +0 -1
  332. package/dist/constants.d.ts +0 -3
  333. package/dist/constants.d.ts.map +0 -1
  334. package/dist/context-BFXNJVn2.js.map +0 -1
  335. package/dist/date-picker-DwNo22lx.js.map +0 -1
  336. package/dist/dom-Dl8XH0CK.js.map +0 -1
  337. package/dist/file-upload-Brf2NkLr.js.map +0 -1
  338. package/dist/floating-ui.react-QNHG9W4N.js.map +0 -1
  339. package/dist/fns-D2eyJKd5.js.map +0 -1
  340. package/dist/hooks/use-click-outside.d.ts +0 -3
  341. package/dist/hooks/use-click-outside.d.ts.map +0 -1
  342. package/dist/hooks/use-color-parser.d.ts +0 -2
  343. package/dist/hooks/use-color-parser.d.ts.map +0 -1
  344. package/dist/hooks/use-components-provider.d.ts +0 -15
  345. package/dist/hooks/use-components-provider.d.ts.map +0 -1
  346. package/dist/hooks/use-debounce.d.ts +0 -5
  347. package/dist/hooks/use-debounce.d.ts.map +0 -1
  348. package/dist/hooks/use-floating-ref.d.ts +0 -2
  349. package/dist/hooks/use-floating-ref.d.ts.map +0 -1
  350. package/dist/hooks/use-form.d.ts +0 -394
  351. package/dist/hooks/use-form.d.ts.map +0 -1
  352. package/dist/hooks/use-hover.d.ts +0 -3
  353. package/dist/hooks/use-hover.d.ts.map +0 -1
  354. package/dist/hooks/use-input-id.d.ts +0 -4
  355. package/dist/hooks/use-input-id.d.ts.map +0 -1
  356. package/dist/hooks/use-is-coarse-device.d.ts +0 -2
  357. package/dist/hooks/use-is-coarse-device.d.ts.map +0 -1
  358. package/dist/hooks/use-locale.d.ts +0 -3
  359. package/dist/hooks/use-locale.d.ts.map +0 -1
  360. package/dist/hooks/use-media-query.d.ts +0 -2
  361. package/dist/hooks/use-media-query.d.ts.map +0 -1
  362. package/dist/hooks/use-on-event.d.ts +0 -4
  363. package/dist/hooks/use-on-event.d.ts.map +0 -1
  364. package/dist/hooks/use-parent.d.ts +0 -3
  365. package/dist/hooks/use-parent.d.ts.map +0 -1
  366. package/dist/hooks/use-preferences.d.ts +0 -2
  367. package/dist/hooks/use-preferences.d.ts.map +0 -1
  368. package/dist/hooks/use-previous.d.ts +0 -2
  369. package/dist/hooks/use-previous.d.ts.map +0 -1
  370. package/dist/hooks/use-reactive.d.ts +0 -2
  371. package/dist/hooks/use-reactive.d.ts.map +0 -1
  372. package/dist/hooks/use-remove-scroll.d.ts +0 -4
  373. package/dist/hooks/use-remove-scroll.d.ts.map +0 -1
  374. package/dist/hooks/use-resize-observer.d.ts +0 -2
  375. package/dist/hooks/use-resize-observer.d.ts.map +0 -1
  376. package/dist/hooks/use-stable-ref.d.ts +0 -2
  377. package/dist/hooks/use-stable-ref.d.ts.map +0 -1
  378. package/dist/hooks/use-swipe.d.ts +0 -8
  379. package/dist/hooks/use-swipe.d.ts.map +0 -1
  380. package/dist/hooks/use-translations.d.ts +0 -88
  381. package/dist/hooks/use-translations.d.ts.map +0 -1
  382. package/dist/hooks/use-tweaks.d.ts +0 -3
  383. package/dist/hooks/use-tweaks.d.ts.map +0 -1
  384. package/dist/hooks/use-window-size.d.ts +0 -5
  385. package/dist/hooks/use-window-size.d.ts.map +0 -1
  386. package/dist/index-BelDtX5M.js.map +0 -1
  387. package/dist/index-DJSMaZR4.js.map +0 -1
  388. package/dist/index-Z-fZHxfJ.js +0 -335
  389. package/dist/index-Z-fZHxfJ.js.map +0 -1
  390. package/dist/index.d.ts +0 -22
  391. package/dist/index.d.ts.map +0 -1
  392. package/dist/input-CrGrSnUt.js.map +0 -1
  393. package/dist/input-field-5vYcz5tT.js.map +0 -1
  394. package/dist/lib/combi-keys.d.ts +0 -15
  395. package/dist/lib/combi-keys.d.ts.map +0 -1
  396. package/dist/lib/dict.d.ts +0 -12
  397. package/dist/lib/dict.d.ts.map +0 -1
  398. package/dist/lib/dom.d.ts +0 -19
  399. package/dist/lib/dom.d.ts.map +0 -1
  400. package/dist/lib/fns.d.ts +0 -11
  401. package/dist/lib/fns.d.ts.map +0 -1
  402. package/dist/lib/fzf.d.ts +0 -16
  403. package/dist/lib/fzf.d.ts.map +0 -1
  404. package/dist/lib/keyboard-area.d.ts +0 -16
  405. package/dist/lib/keyboard-area.d.ts.map +0 -1
  406. package/dist/notifications-cUdVPs-B.js +0 -2786
  407. package/dist/notifications-cUdVPs-B.js.map +0 -1
  408. package/dist/skeleton-D75GFBV6.js +0 -10
  409. package/dist/skeleton-D75GFBV6.js.map +0 -1
  410. package/dist/tabs-S00a8qq8.js +0 -106
  411. package/dist/tabs-S00a8qq8.js.map +0 -1
  412. package/dist/types.d.ts +0 -26
  413. package/dist/types.d.ts.map +0 -1
  414. package/dist/use-translations-BwLKTrZv.js +0 -10
  415. package/dist/use-translations-BwLKTrZv.js.map +0 -1
@@ -1,224 +0,0 @@
1
- ---
2
- title: Tag
3
- description: A label/badge component for displaying metadata, status, or categorization information.
4
- package: "@g4rcez/components"
5
- export: "{ Tag }"
6
- import: "import { Tag } from '@g4rcez/components/tag'"
7
- category: core
8
- ---
9
-
10
- # Tag
11
-
12
- A versatile label/badge component for displaying metadata, status, or categorization information. Built with polymorphic capabilities and multiple visual variants.
13
-
14
- ## Import
15
-
16
- ```tsx
17
- import { Tag } from "@g4rcez/components/tag";
18
- ```
19
-
20
- ## Props
21
-
22
- | Prop | Type | Default | Description |
23
- |------|------|---------|-------------|
24
- | `theme` | `"primary" \| "secondary" \| "info" \| "warn" \| "danger" \| "success" \| "muted" \| "neutral" \| "custom" \| "disabled" \| "loading"` | `"primary"` | Visual theme/variant of the tag |
25
- | `size` | `"icon" \| "small" \| "default" \| "big" \| "tiny"` | `"default"` | Size of the tag |
26
- | `icon` | `React.ReactNode` | - | Icon to display inside the tag |
27
- | `indicator` | `"primary" \| "secondary" \| "info" \| "warn" \| "danger" \| "success" \| "muted" \| "neutral"` | - | Shows a small colored dot before the label |
28
- | `loading` | `boolean` | `false` | Overrides theme with pulse animation |
29
- | `as` | `React.ElementType` | `"span"` | HTML element to render as |
30
- | `className` | `string` | - | Additional CSS classes |
31
- | `children` | `React.ReactNode` | - | Tag content |
32
-
33
- ## Design Tokens
34
-
35
- Tokens this component reads. Customize by overriding these CSS variables in your theme.
36
-
37
- | Token | CSS Variable | Purpose |
38
- |-------|-------------|---------|
39
- | `bg-tag-primary-bg` | `--tag-primary-bg` | Background for primary theme |
40
- | `text-tag-primary-text` | `--tag-primary-text` | Text color for primary theme |
41
- | `bg-tag-secondary-bg` | `--tag-secondary-bg` | Background for secondary theme |
42
- | `text-tag-secondary-text` | `--tag-secondary-text` | Text color for secondary theme |
43
- | `bg-tag-info-bg` | `--tag-info-bg` | Background for info theme |
44
- | `text-tag-info-text` | `--tag-info-text` | Text color for info theme |
45
- | `bg-tag-warn-bg` | `--tag-warn-bg` | Background for warn theme |
46
- | `text-tag-warn-text` | `--tag-warn-text` | Text color for warn theme |
47
- | `bg-tag-danger-bg` | `--tag-danger-bg` | Background for danger theme |
48
- | `text-tag-danger-text` | `--tag-danger-text` | Text color for danger theme |
49
- | `bg-tag-success-bg` | `--tag-success-bg` | Background for success theme |
50
- | `text-tag-success-text` | `--tag-success-text` | Text color for success theme |
51
- | `bg-tag-muted-bg` | `--tag-muted-bg` | Background for muted theme |
52
- | `text-tag-muted-text` | `--tag-muted-text` | Text color for muted theme |
53
- | `bg-disabled` | `--disabled` | Background for disabled/loading states |
54
- | `border-card-border` | `--card-border` | Border color for neutral theme |
55
- | `rounded-pill` | `--radius-pill` | Pill border radius applied to all tags |
56
- | `bg-primary` | `--primary` | Dot color for primary indicator |
57
- | `bg-secondary` | `--secondary` | Dot color for secondary indicator |
58
- | `bg-info` | `--info` | Dot color for info indicator |
59
- | `bg-warn` | `--warn` | Dot color for warn indicator |
60
- | `bg-danger` | `--danger` | Dot color for danger indicator |
61
- | `bg-success` | `--success` | Dot color for success indicator |
62
- | `bg-muted` | `--muted` | Dot color for muted indicator |
63
-
64
- ## Theme Variants
65
-
66
- - `primary`: Primary brand color
67
- - `secondary`: Secondary color scheme
68
- - `info`: Informational styling
69
- - `warn`: Warning/caution styling
70
- - `danger`: Error/destructive styling
71
- - `success`: Success/positive styling
72
- - `muted`: Subtle/subdued styling
73
- - `neutral`: Transparent with card border
74
- - `custom`: No default styling — supply all classes via `className`
75
- - `disabled`: Disabled appearance with reduced opacity
76
- - `loading`: Pulse animation (also triggered by the `loading` boolean prop)
77
-
78
- ## Examples
79
-
80
- ### Basic Variants
81
-
82
- ```tsx
83
- <Tag theme="primary">Primary</Tag>
84
- <Tag theme="secondary">Secondary</Tag>
85
- <Tag theme="info">Info</Tag>
86
- <Tag theme="warn">Warning</Tag>
87
- <Tag theme="danger">Error</Tag>
88
- <Tag theme="success">Success</Tag>
89
- <Tag theme="muted">Muted</Tag>
90
- <Tag theme="neutral">Neutral</Tag>
91
- ```
92
-
93
- ### Sizes
94
-
95
- ```tsx
96
- <Tag size="small">Small</Tag>
97
- <Tag size="default">Default</Tag>
98
- <Tag size="big">Big</Tag>
99
- ```
100
-
101
- ### With Icons
102
-
103
- ```tsx
104
- import { StarIcon, CheckIcon } from "@phosphor-icons/react";
105
-
106
- <Tag icon={<StarIcon size={14} />} theme="warn">Featured</Tag>
107
- <Tag icon={<CheckIcon size={14} />} theme="success">Completed</Tag>
108
- ```
109
-
110
- ### With Indicators
111
-
112
- ```tsx
113
- <Tag indicator="success">Online</Tag>
114
- <Tag indicator="danger">Offline</Tag>
115
- <Tag indicator="warn">Pending</Tag>
116
- ```
117
-
118
- ### Status Tags
119
-
120
- ```tsx
121
- const statusMap: Record<string, { theme: "success" | "warn" | "muted" | "danger" }> = {
122
- active: { theme: "success" },
123
- pending: { theme: "warn" },
124
- inactive: { theme: "muted" },
125
- error: { theme: "danger" },
126
- };
127
-
128
- const StatusTag = ({ status }: { status: string }) => {
129
- const config = statusMap[status] ?? statusMap.inactive;
130
- return (
131
- <Tag theme={config.theme} indicator={config.theme}>
132
- {status.charAt(0).toUpperCase() + status.slice(1)}
133
- </Tag>
134
- );
135
- };
136
- ```
137
-
138
- ### Loading State
139
-
140
- ```tsx
141
- <Tag loading theme="primary">Processing...</Tag>
142
- ```
143
-
144
- ### Polymorphic Usage
145
-
146
- ```tsx
147
- <Tag as="button" onClick={() => void 0} theme="primary">
148
- Clickable Tag
149
- </Tag>
150
-
151
- <Tag as="a" href="/category/react" theme="info">
152
- React
153
- </Tag>
154
- ```
155
-
156
- ### Content Categorization
157
-
158
- ```tsx
159
- const categories = [
160
- { name: "React", theme: "info" },
161
- { name: "TypeScript", theme: "primary" },
162
- { name: "CSS", theme: "success" },
163
- ];
164
-
165
- <div className="flex gap-2 flex-wrap">
166
- {categories.map((cat) => (
167
- <Tag key={cat.name} theme={cat.theme as any}>
168
- {cat.name}
169
- </Tag>
170
- ))}
171
- </div>
172
- ```
173
-
174
- ### Notification Badge
175
-
176
- ```tsx
177
- import { BellIcon } from "@phosphor-icons/react";
178
-
179
- <div className="relative">
180
- <BellIcon size={24} />
181
- <Tag
182
- size="small"
183
- theme="danger"
184
- className="absolute -top-2 -right-2 min-w-[20px] h-5 text-xs"
185
- >
186
- 3
187
- </Tag>
188
- </div>
189
- ```
190
-
191
- ## Do
192
-
193
- - Use `theme="success"` for positive states and `theme="danger"` for errors — keep it consistent
194
- - Keep tag labels short and scannable
195
- - Use `indicator` to add extra color meaning without extra text
196
- - Use `as="button"` when the tag performs an action (e.g., removing a filter)
197
- - Use design-token classes for wrapper elements (`bg-muted`, `border-border`)
198
-
199
- ## Don't
200
-
201
- - Don't pass raw Tailwind color classes (`bg-blue-500`, `text-white`) — use `theme` prop instead
202
- - Don't use arbitrary Tailwind values (`bg-[#abc]`, `bg-[--my-var]`) — override CSS variables in your `@theme` block
203
- - Don't use too many different themes on one screen — excessive color variety is distracting
204
- - Don't use `Tag` as a replacement for `Button` on primary actions
205
- - Don't combine `icon` and `indicator` on a small tag — it becomes too visually busy
206
-
207
- ## Accessibility
208
-
209
- - Uses semantic HTML via the `as` prop (defaults to `<span>`)
210
- - The indicator dot is `aria-hidden="true"` — it is purely decorative
211
- - When used as a `button` or `a`, standard keyboard navigation applies
212
- - Ensure color meaning is supplemented by text — do not rely on color alone
213
-
214
- ## Data Attributes
215
-
216
- - `data-component="tag"`: Identifies the component for styling/testing
217
- - `data-theme`: Current theme variant value
218
-
219
- ## Notes
220
-
221
- - The `loading` prop overrides the `theme` value and applies the loading animation
222
- - Once `loading` becomes `false`, the original `theme` is restored
223
- - The component forwards refs to the underlying element
224
- - All standard HTML attributes for the target element are forwarded
@@ -1,167 +0,0 @@
1
- ---
2
- title: Textarea
3
- description: Auto-growing multi-line text input built on the InputField foundation.
4
- package: "@g4rcez/components"
5
- export: "{ Textarea }"
6
- import: "import { Textarea } from '@g4rcez/components'"
7
- category: form
8
- ---
9
-
10
- # Textarea
11
-
12
- Auto-growing multi-line text input built on the InputField foundation.
13
-
14
- ## Import
15
-
16
- ```tsx
17
- import { Textarea } from "@g4rcez/components";
18
- ```
19
-
20
- ## Props
21
-
22
- Inherits all `InputField` props and standard HTML `<textarea>` attributes, plus:
23
-
24
- | Prop | Type | Default | Description |
25
- |------|------|---------|-------------|
26
- | `title` | `Label` | — | Label for the textarea. |
27
- | `error` | `string` | — | Error message displayed below the field. |
28
- | `loading` | `boolean` | `false` | Disables the field and signals a pending state. |
29
- | `rows` | `number` | `2` | Initial number of visible text rows. |
30
- | `next` | `string` | — | ID of the next element to focus when Enter is pressed (requires `enterKeyHint="next"`). |
31
- | `placeholder` | `string` | — | Placeholder text. |
32
- | `required` | `boolean` | — | Marks the field as required. |
33
- | `className` | `string` | — | Additional CSS classes for the `<textarea>` element. |
34
-
35
- ## Design Tokens
36
-
37
- Tokens this component reads. Customize by overriding these CSS variables in your theme.
38
-
39
- | Token | CSS Variable | Purpose |
40
- |-------|-------------|---------|
41
- | `placeholder-input-mask` | `--input-mask` | Placeholder text color |
42
- | `placeholder-input-mask-error` (via `group-error`) | `--input-mask-error` | Placeholder tint in error state |
43
- | `text-foreground` | `--foreground` | Input text color |
44
- | `text-danger` (via `group-error`) | `--danger` | Text color in error state |
45
- | `bg-transparent` | — | Input background (inherits from field wrapper) |
46
- | `focus:ring-primary` | `--primary` | Focus ring |
47
- | `group-focus-within:border-primary` | `--primary` | Border highlight on focus |
48
- | `group-hover:border-primary` | `--primary` | Border highlight on hover |
49
- | `h-input-height` | `--input-height` | Base height token (overridden by `rows` in practice) |
50
- | `px-input-x` | `--input-x` | Horizontal padding |
51
- | `py-input-y` | `--input-y` | Vertical padding |
52
-
53
- ## Examples
54
-
55
- ### Basic usage
56
-
57
- ```tsx
58
- import { Textarea } from "@g4rcez/components";
59
-
60
- export default function BioField() {
61
- return (
62
- <Textarea
63
- title="Bio"
64
- name="bio"
65
- placeholder="Tell us about yourself…"
66
- rows={4}
67
- onChange={(e) => console.log(e.target.value)}
68
- />
69
- );
70
- }
71
- ```
72
-
73
- ### With validation error
74
-
75
- ```tsx
76
- import { Textarea } from "@g4rcez/components";
77
-
78
- export default function MessageField() {
79
- return (
80
- <Textarea
81
- title="Message"
82
- name="message"
83
- required
84
- error="Message is required and must be at least 10 characters."
85
- placeholder="Enter your message…"
86
- />
87
- );
88
- }
89
- ```
90
-
91
- ### Monospace styling for code
92
-
93
- ```tsx
94
- import { Textarea } from "@g4rcez/components";
95
-
96
- export default function CssSnippetField() {
97
- return (
98
- <Textarea
99
- title="CSS Snippet"
100
- name="css"
101
- className="font-mono text-sm"
102
- rows={6}
103
- placeholder="body { margin: 0; }"
104
- />
105
- );
106
- }
107
- ```
108
-
109
- ### Focus-next navigation
110
-
111
- ```tsx
112
- import { Textarea } from "@g4rcez/components";
113
- import { Input } from "@g4rcez/components";
114
-
115
- export default function MultiFieldForm() {
116
- return (
117
- <div className="flex flex-col gap-base">
118
- <Textarea
119
- title="Description"
120
- name="description"
121
- enterKeyHint="next"
122
- next="submit-btn"
123
- rows={3}
124
- placeholder="Describe the issue…"
125
- />
126
- <button id="submit-btn" type="submit" className="btn">
127
- Submit
128
- </button>
129
- </div>
130
- );
131
- }
132
- ```
133
-
134
- ## Do
135
-
136
- - Provide a descriptive `title` to label the field.
137
- - Set a sensible initial `rows` value based on the expected content length.
138
- - Use `Textarea` whenever the user is expected to provide more than a single line of text.
139
- - Use design-token classes on wrapper elements (`bg-background`, `text-foreground`, `border-border`).
140
-
141
- ## Don't
142
-
143
- - Don't use `Textarea` for single-line inputs like names or emails — use `Input` instead.
144
- - Don't fix the height with a `className` like `h-32` if you want the auto-resize behavior to work.
145
- - Don't pass raw Tailwind color classes (`bg-gray-50`, `border-gray-300`) — use design tokens instead.
146
- - Don't use arbitrary Tailwind values (`bg-[#abc]`) — override CSS variables in your `@theme` block instead.
147
-
148
- ## Accessibility
149
-
150
- - Rendered inside an `InputField` which wraps the element with `<fieldset>` and a `<label>` linked via `id`/`for`.
151
- - Supports `aria-required`, `aria-invalid`, `aria-disabled`, and `aria-readonly` via prop spread.
152
- - Keyboard navigation follows standard `<textarea>` behavior (Tab to focus, Shift+Tab to leave).
153
- - When `enterKeyHint="next"` and a `next` id is provided, pressing Enter moves focus to the target element.
154
-
155
- ## Data Attributes
156
-
157
- | Attribute | Element | Value | Description |
158
- |-----------|---------|-------|-------------|
159
- | `data-component` | `InputField` root | `"textarea"` | Identifies the component. |
160
- | `data-error` | `InputField` root | truthy string | Present when an error message is supplied. |
161
- | `data-next` | `<textarea>` | element id | Target element id for Enter-key focus forwarding. |
162
-
163
- ## Notes
164
-
165
- - Auto-resize is driven by a native `input` event listener that sets `style.height = "auto"` then `style.height = scrollHeight + "px"` — no JavaScript polling or ResizeObserver involved.
166
- - The resize handle is set to `resize-y` by default; add `className="resize-none"` to disable it.
167
- - Built via the shared `createFreeText` factory, which also powers the `Input` component — all `InputField` layout features (left/right slots, optional text, feedback, etc.) are available.
@@ -1,210 +0,0 @@
1
- ---
2
- title: Timeline
3
- description: Vertical chronological event list with icon markers, body content, and optional right-side metadata.
4
- package: "@g4rcez/components"
5
- export: "{ Timeline }"
6
- import: "import { Timeline, TimelineItem } from '@g4rcez/components/timeline'"
7
- category: display
8
- ---
9
-
10
- # Timeline
11
-
12
- Vertical chronological event list with icon markers, body content, and optional right-side metadata.
13
-
14
- ## Import
15
-
16
- ```tsx
17
- import { Timeline, TimelineItem } from "@g4rcez/components/timeline";
18
- ```
19
-
20
- ## Components
21
-
22
- ### Timeline
23
-
24
- The root container. Renders as a `<ul>` with `role="list"`. The vertical connector line on the last item is hidden automatically.
25
-
26
- ### TimelineItem
27
-
28
- A single event entry. Renders as a `<li>` with `role="listitem"` and `pb-12` vertical spacing for the connector line.
29
-
30
- ### TimelineItem.Icon
31
-
32
- The visual marker — a rounded circle, typically containing an icon. Renders as a `<header>`.
33
-
34
- | Prop | Type | Default | Description |
35
- |------|------|---------|-------------|
36
- | `className` | `string` | — | Override icon container appearance |
37
- | `children` | `React.ReactNode` | — | Icon element |
38
-
39
- ### TimelineItem.Body
40
-
41
- The main content area. Polymorphic — defaults to `<section>`.
42
-
43
- | Prop | Type | Default | Description |
44
- |------|------|---------|-------------|
45
- | `as` | `React.ElementType` | `"section"` | HTML element to render as |
46
- | `className` | `string` | — | Additional classes |
47
- | `children` | `React.ReactNode` | — | Event body content |
48
-
49
- ### TimelineItem.Right
50
-
51
- Optional right-side slot for timestamps or auxiliary actions. Renders inside a `<footer>` wrapper. Polymorphic — defaults to `<button>`.
52
-
53
- | Prop | Type | Default | Description |
54
- |------|------|---------|-------------|
55
- | `as` | `React.ElementType` | `"button"` | HTML element to render as |
56
- | `children` | `React.ReactNode` | — | Right-side content |
57
-
58
- ## Design Tokens
59
-
60
- Tokens this component reads. Customize by overriding these CSS variables in your theme.
61
-
62
- | Token | CSS Variable | Purpose |
63
- |-------|-------------|---------|
64
- | `bg-card-border` | `--card-border` | Vertical connector line color |
65
- | `bg-primary` | `--primary` | Icon container default background |
66
- | `text-primary-foreground` | `--primary-foreground` | Icon default text/icon color |
67
-
68
- ## Examples
69
-
70
- ### Order Tracking Timeline
71
-
72
- ```tsx
73
- import { CheckIcon, PackageIcon, TruckIcon } from "@phosphor-icons/react";
74
-
75
- <Timeline>
76
- <TimelineItem>
77
- <TimelineItem.Icon>
78
- <CheckIcon size={20} />
79
- </TimelineItem.Icon>
80
- <TimelineItem.Body>
81
- <h4 className="font-bold">Order Placed</h4>
82
- <p className="text-muted-foreground">Your order has been received and is being processed.</p>
83
- </TimelineItem.Body>
84
- <TimelineItem.Right as="time">10:00 AM</TimelineItem.Right>
85
- </TimelineItem>
86
-
87
- <TimelineItem>
88
- <TimelineItem.Icon>
89
- <PackageIcon size={20} />
90
- </TimelineItem.Icon>
91
- <TimelineItem.Body>
92
- <h4 className="font-bold">Packed</h4>
93
- <p className="text-muted-foreground">Your order has been packed and is ready for shipment.</p>
94
- </TimelineItem.Body>
95
- <TimelineItem.Right as="time">1:00 PM</TimelineItem.Right>
96
- </TimelineItem>
97
-
98
- <TimelineItem>
99
- <TimelineItem.Icon>
100
- <TruckIcon size={20} />
101
- </TimelineItem.Icon>
102
- <TimelineItem.Body>
103
- <h4 className="font-bold">Shipped</h4>
104
- <p className="text-muted-foreground">Your package is on its way.</p>
105
- </TimelineItem.Body>
106
- <TimelineItem.Right as="time">2:30 PM</TimelineItem.Right>
107
- </TimelineItem>
108
- </Timeline>
109
- ```
110
-
111
- ### Simple Text Timeline
112
-
113
- ```tsx
114
- <Timeline>
115
- <TimelineItem>
116
- <TimelineItem.Body>
117
- <strong>Step 1:</strong> Initial setup completed.
118
- </TimelineItem.Body>
119
- </TimelineItem>
120
- <TimelineItem>
121
- <TimelineItem.Body>
122
- <strong>Step 2:</strong> Data migration started.
123
- </TimelineItem.Body>
124
- </TimelineItem>
125
- </Timeline>
126
- ```
127
-
128
- ### Activity Feed
129
-
130
- ```tsx
131
- import { UserIcon, PencilSimpleIcon, TrashIcon } from "@phosphor-icons/react";
132
-
133
- function ActivityFeed({ events }: { events: ActivityEvent[] }) {
134
- const iconMap = {
135
- create: UserIcon,
136
- update: PencilSimpleIcon,
137
- delete: TrashIcon,
138
- };
139
-
140
- return (
141
- <Timeline>
142
- {events.map((event) => {
143
- const Icon = iconMap[event.type];
144
- return (
145
- <TimelineItem key={event.id}>
146
- <TimelineItem.Icon>
147
- <Icon size={18} />
148
- </TimelineItem.Icon>
149
- <TimelineItem.Body>
150
- <p className="font-medium">{event.user} {event.action}</p>
151
- <p className="text-sm text-muted-foreground">{event.description}</p>
152
- </TimelineItem.Body>
153
- <TimelineItem.Right as="time" dateTime={event.iso}>
154
- {event.relativeTime}
155
- </TimelineItem.Right>
156
- </TimelineItem>
157
- );
158
- })}
159
- </Timeline>
160
- );
161
- }
162
- ```
163
-
164
- ### Custom Icon Background
165
-
166
- ```tsx
167
- import { WarningCircleIcon } from "@phosphor-icons/react";
168
-
169
- <TimelineItem>
170
- <TimelineItem.Icon className="bg-danger text-danger-foreground">
171
- <WarningCircleIcon size={20} />
172
- </TimelineItem.Icon>
173
- <TimelineItem.Body>
174
- <h4 className="font-bold text-danger-foreground">Deployment Failed</h4>
175
- <p className="text-muted-foreground">Build step exited with code 1.</p>
176
- </TimelineItem.Body>
177
- </TimelineItem>
178
- ```
179
-
180
- ## Do
181
-
182
- - Use icons that clearly represent the status or type of event.
183
- - Keep body content concise; link to a detail view for lengthy information.
184
- - Maintain consistent chronological order (ascending or descending) throughout the list.
185
- - Use semantic elements for timestamps — `as="time"` with a `dateTime` attribute.
186
- - Use design-token classes for icon background overrides (`bg-success`, `bg-danger`).
187
-
188
- ## Don't
189
-
190
- - Don't pass raw Tailwind color classes (`bg-green-500`, `text-red-600`) for icon backgrounds — use design tokens instead.
191
- - Don't use arbitrary Tailwind values (`bg-[#abc]`) — override CSS variables in your `@theme` block.
192
- - Don't cram too much information into a single `TimelineItem`; link to detail pages.
193
- - Don't use `Timeline` for non-sequential data — use `List` or `Table` for unordered collections.
194
-
195
- ## Accessibility
196
-
197
- - `Timeline` uses `<ul role="list">` and each `TimelineItem` uses `<li role="listitem">` for semantic list structure.
198
- - The vertical connector `<span>` between items carries `aria-hidden="true"` since it is purely decorative.
199
- - The last item's connector line is hidden via a CSS selector (`[&>li:last-child>span[aria-hidden=true]]:hidden`), removing it from layout without JS.
200
-
201
- ## Data Attributes
202
-
203
- - `data-component="timeline"` — applied to the `<ul>` container.
204
- - `data-component="timeline-item"` — applied to each `<li>` entry.
205
-
206
- ## Notes
207
-
208
- - `TimelineItem.Right` defaults to `as="button"` — change to `as="time"` or `as="span"` if the right slot is non-interactive.
209
- - Vertical spacing between entries is controlled by `pb-12` on `TimelineItem`; the connector line fills this gap.
210
- - `TimelineItem` can be used without `TimelineItem.Icon` — the connector line still renders from the left edge.