@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
@@ -0,0 +1,231 @@
1
+ ---
2
+ title: Tooltip
3
+ description: Polymorphic tooltip with hover, focus, and click triggers; supports cursor-following and rich content.
4
+ package: "@g4rcez/components"
5
+ export: "{ Tooltip }"
6
+ import: "import { Tooltip } from '@g4rcez/components/tooltip'"
7
+ category: floating
8
+ ---
9
+
10
+ # Tooltip
11
+
12
+ Polymorphic tooltip with hover, focus, and click triggers; supports cursor-following and rich content.
13
+
14
+ ## Import
15
+
16
+ ```tsx
17
+ import { Tooltip } from "@g4rcez/components/tooltip";
18
+ ```
19
+
20
+ ## Props
21
+
22
+ | Prop | Type | Default | Description |
23
+ | -------------- | ------------------------- | -------- | ------------------------------------------------------------- |
24
+ | `title` | `Label` | — | Tooltip trigger element — the element the user interacts with |
25
+ | `children` | `React.ReactNode` | — | Tooltip popup content |
26
+ | `open` | `boolean` | — | Controlled open state |
27
+ | `enabled` | `boolean` | `true` | Enable or disable the tooltip entirely |
28
+ | `hover` | `boolean` | `true` | Show tooltip on hover |
29
+ | `focus` | `boolean` | `true` | Show tooltip on focus |
30
+ | `popover` | `boolean` | `true` | Show tooltip on click |
31
+ | `placement` | `Placement` | auto | Preferred placement; falls back via `autoPlacement` |
32
+ | `followCursor` | `boolean` | `false` | Tooltip follows the mouse cursor position |
33
+ | `onChange` | `(open: boolean) => void` | — | Open state change handler |
34
+ | `as` | `React.ElementType` | `"span"` | HTML element to render the trigger wrapper as |
35
+
36
+ > Note: `title` is the **trigger** and `children` is the **popup content**. This is the inverse of the HTML `title` attribute convention — the prop name matches how the component API evolved.
37
+
38
+ ## Design Tokens
39
+
40
+ Tokens this component reads. Customize by overriding these CSS variables in your theme.
41
+
42
+ | Token | CSS Variable | Purpose |
43
+ | ------------------------- | ---------------------- | ------------------------------------- |
44
+ | `bg-tooltip-background` | `--tooltip-background` | Tooltip popup background |
45
+ | `text-tooltip-foreground` | `--tooltip-foreground` | Tooltip popup text color |
46
+ | `border-tooltip-border` | `--tooltip-border` | Tooltip popup border and arrow stroke |
47
+ | `fill-tooltip-background` | `--tooltip-background` | Arrow fill color |
48
+ | `z-tooltip` | `--z-tooltip` | Z-index of the tooltip popup |
49
+ | `shadow-shadow-floating` | `--shadow-floating` | Tooltip drop shadow |
50
+
51
+ ## Placement Options
52
+
53
+ Supports all Floating UI placements: `"top"`, `"top-start"`, `"top-end"`, `"bottom"`, `"bottom-start"`, `"bottom-end"`, `"left"`, `"left-start"`, `"left-end"`, `"right"`, `"right-start"`, `"right-end"`. When `placement` is omitted, `autoPlacement` picks the best available side.
54
+
55
+ ## Examples
56
+
57
+ ### Basic Hover Tooltip
58
+
59
+ ```tsx
60
+ import { Tooltip } from "@g4rcez/components/tooltip";
61
+
62
+ <Tooltip title={<button className="px-4 py-2 bg-primary text-primary-foreground rounded-button">Hover me</button>}>
63
+ This is a helpful tooltip
64
+ </Tooltip>;
65
+ ```
66
+
67
+ ### Icon Button with Label
68
+
69
+ ```tsx
70
+ import { FloppyDiskIcon } from "@phosphor-icons/react";
71
+ import { Tooltip } from "@g4rcez/components/tooltip";
72
+ import { Button } from "@g4rcez/components/button";
73
+
74
+ <Tooltip
75
+ title={
76
+ <Button size="icon" theme="ghost-neutral">
77
+ <FloppyDiskIcon size={16} />
78
+ </Button>
79
+ }
80
+ >
81
+ Save (Ctrl+S)
82
+ </Tooltip>;
83
+ ```
84
+
85
+ ### Interaction Modes
86
+
87
+ ```tsx
88
+ import { Tooltip } from "@g4rcez/components/tooltip";
89
+
90
+ {
91
+ /* Hover only */
92
+ }
93
+ <Tooltip title={<button className="px-4 py-2 rounded-button border border-border text-foreground">Hover Only</button>} focus={false} popover={false}>
94
+ Shown on hover
95
+ </Tooltip>;
96
+
97
+ {
98
+ /* Focus only — keyboard accessible */
99
+ }
100
+ <Tooltip
101
+ title={<input placeholder="Focus me with tab" className="px-3 py-2 rounded-button border border-border bg-background text-foreground" />}
102
+ hover={false}
103
+ popover={false}
104
+ >
105
+ Shown on focus
106
+ </Tooltip>;
107
+
108
+ {
109
+ /* Click only — acts like a popover */
110
+ }
111
+ <Tooltip title={<button className="px-4 py-2 bg-primary text-primary-foreground rounded-button">Click me</button>} hover={false} focus={false}>
112
+ Shown on click
113
+ </Tooltip>;
114
+ ```
115
+
116
+ ### Cursor-Following Tooltip
117
+
118
+ ```tsx
119
+ import { Tooltip } from "@g4rcez/components/tooltip";
120
+
121
+ <Tooltip
122
+ followCursor
123
+ placement="top-start"
124
+ title={
125
+ <div className="w-full h-32 rounded-card border border-border bg-muted flex items-center justify-center">
126
+ <span className="text-muted-foreground">Move your mouse over this area</span>
127
+ </div>
128
+ }
129
+ >
130
+ Follows your cursor
131
+ </Tooltip>;
132
+ ```
133
+
134
+ ### Controlled Tooltip
135
+
136
+ ```tsx
137
+ import { useState } from "react";
138
+ import { Tooltip } from "@g4rcez/components/tooltip";
139
+
140
+ function ControlledTooltip() {
141
+ const [isOpen, setIsOpen] = useState(false);
142
+
143
+ return (
144
+ <>
145
+ <Tooltip
146
+ title={<button className="px-4 py-2 rounded-button border border-border text-foreground">Target</button>}
147
+ open={isOpen}
148
+ onChange={setIsOpen}
149
+ hover={false}
150
+ focus={false}
151
+ popover={false}
152
+ >
153
+ Externally controlled
154
+ </Tooltip>
155
+
156
+ <div className="mt-4 flex gap-2">
157
+ <button onClick={() => setIsOpen(true)} className="px-3 py-1 bg-primary text-primary-foreground rounded-button text-sm">
158
+ Show
159
+ </button>
160
+ <button onClick={() => setIsOpen(false)} className="px-3 py-1 bg-muted text-foreground rounded-button text-sm">
161
+ Hide
162
+ </button>
163
+ </div>
164
+ </>
165
+ );
166
+ }
167
+ ```
168
+
169
+ ### Polymorphic — Render as Different Elements
170
+
171
+ ```tsx
172
+ import { Tooltip } from "@g4rcez/components/tooltip";
173
+
174
+ {
175
+ /* Render as <div> */
176
+ }
177
+ <Tooltip as="div" title={<span className="p-3 bg-muted rounded-button inline-block text-foreground">Div with tooltip</span>}>
178
+ Tooltip on a div
179
+ </Tooltip>;
180
+
181
+ {
182
+ /* Wrap a paragraph */
183
+ }
184
+ <Tooltip as="p" title={<span className="text-primary cursor-pointer">Hover this paragraph</span>}>
185
+ Paragraph tooltip
186
+ </Tooltip>;
187
+ ```
188
+
189
+ ### Form Field Help Tooltip
190
+
191
+ ```tsx
192
+ import { InfoIcon } from "@phosphor-icons/react";
193
+ import { Tooltip } from "@g4rcez/components/tooltip";
194
+
195
+ <label className="block text-sm font-medium text-foreground mb-1">
196
+ Username
197
+ <Tooltip title={<InfoIcon className="inline ml-1 text-muted-foreground cursor-help" size={14} />}>
198
+ 3–20 characters; letters, numbers, and underscores only
199
+ </Tooltip>
200
+ </label>;
201
+ ```
202
+
203
+ ## Do
204
+
205
+ - Always keep `focus={true}` (default) so keyboard users can access tooltips via Tab navigation.
206
+ - Keep tooltip content short — one or two sentences at most.
207
+ - Use `followCursor` for large interactive areas (charts, canvases) to keep the tip near the pointer.
208
+ - Use design-token classes for any custom elements inside the tooltip popup (`text-tooltip-foreground`, `bg-muted`, etc.).
209
+
210
+ ## Don't
211
+
212
+ - Don't put essential information only in a tooltip — users on touch devices may never see it.
213
+ - Don't use tooltips for long text or complex layouts — use `Modal` or `Dropdown` instead.
214
+ - Don't pass raw Tailwind color classes (`bg-gray-900`, `text-white`) inside tooltip content — use design-token classes.
215
+ - Don't use arbitrary Tailwind values (`bg-[#abc]`, `z-[9999]`) — override CSS variables in your `@theme` block.
216
+ - Don't use tooltips on elements that are already self-explanatory.
217
+
218
+ ## Accessibility
219
+
220
+ - By default all three triggers are active (`hover`, `focus`, `popover`); disable `focus` only when the trigger itself provides equivalent keyboard affordance.
221
+ - The tooltip popup receives `role="tooltip"` via Floating UI's `useRole`.
222
+ - `useDismiss` closes the tooltip when focus moves away or `Escape` is pressed.
223
+ - Safe-polygon hover handling keeps the tooltip open while the pointer moves toward interactive content (`popover={true}` enables this).
224
+ - The `as` prop lets you place the reference on a semantically correct element without extra wrapper divs.
225
+
226
+ ## Notes
227
+
228
+ - The `open` prop syncs to internal state via `useEffect`; when provided, external changes override internal toggle state.
229
+ - `autoPlacement` middleware runs alongside `flip` — placement is fully automatic when `placement` is omitted.
230
+ - Hover delay is controlled by the shared `FLOATING_DELAY` constant; there is no per-instance delay prop.
231
+ - The component is polymorphic via the `Polymorph` core component for the popup and `as` for the trigger wrapper.
@@ -0,0 +1,187 @@
1
+ ---
2
+ title: Typography
3
+ description: A set of text and page-structure components for consistent typographic styling.
4
+ package: "@g4rcez/components"
5
+ export: "{ Paragraph, Description, Info, PageTitle, PageHeader }"
6
+ import: "import { Paragraph, Description, Info, PageTitle, PageHeader } from '@g4rcez/components'"
7
+ category: core
8
+ ---
9
+
10
+ # Typography
11
+
12
+ A set of text and page-structure components for consistent typographic styling across the application. Exports `Paragraph`, `Description`, `Info`, `PageTitle`, and `PageHeader`.
13
+
14
+ ## Import
15
+
16
+ ```tsx
17
+ import { Paragraph, Description, Info, PageTitle, PageHeader } from "@g4rcez/components";
18
+ ```
19
+
20
+ ## Props
21
+
22
+ ### Paragraph
23
+
24
+ Renders a `<p>` element with `text-base leading-snug`.
25
+
26
+ | Prop | Type | Default | Description |
27
+ | ----------- | --------------------------- | ------- | ----------------------------- |
28
+ | `children` | `React.ReactNode` | - | Paragraph content |
29
+ | `className` | `string` | - | Additional CSS classes |
30
+ | `...props` | `React.ComponentProps<"p">` | - | All standard `<p>` attributes |
31
+
32
+ ### Description
33
+
34
+ Renders a `<p>` element with `text-sm text-secondary mb-kilo`.
35
+
36
+ | Prop | Type | Default | Description |
37
+ | ----------- | --------------------------- | ------- | ----------------------------- |
38
+ | `children` | `React.ReactNode` | - | Description content |
39
+ | `className` | `string` | - | Additional CSS classes |
40
+ | `...props` | `React.ComponentProps<"p">` | - | All standard `<p>` attributes |
41
+
42
+ ### Info
43
+
44
+ Renders a labeled key-value pair in a flex container.
45
+
46
+ | Prop | Type | Default | Description |
47
+ | ----------------- | ----------------- | ------- | ---------------------------------------------------------- |
48
+ | `label` | `Label` | - | The label text (required) |
49
+ | `children` | `React.ReactNode` | - | The value content |
50
+ | `row` | `boolean` | `false` | Renders label and value side-by-side instead of stacked |
51
+ | `disabled` | `Label` | - | When set, applies `text-disabled` to the value |
52
+ | `className` | `string` | - | Additional classes for the container |
53
+ | `info` | `Label` | - | Reserved field (available in type, not currently rendered) |
54
+ | `infoDescription` | `string` | - | Reserved field (available in type, not currently rendered) |
55
+
56
+ ### PageTitle
57
+
58
+ Renders an `<h2>` title with a paragraph subtitle.
59
+
60
+ | Prop | Type | Default | Description |
61
+ | ---------- | ----------------- | ------- | ----------------------------------------- |
62
+ | `title` | `string` | - | Main title text (required) |
63
+ | `children` | `React.ReactNode` | - | Subtitle or description beneath the title |
64
+
65
+ ### PageHeader
66
+
67
+ Renders a `<header>` element with title/description on the left and action slots on the right.
68
+
69
+ | Prop | Type | Default | Description |
70
+ | ------------- | ----------------- | ------- | ---------------------------------------------- |
71
+ | `title` | `string` | - | Page title (required) |
72
+ | `description` | `Label` | - | Short description beneath the title (required) |
73
+ | `children` | `React.ReactNode` | - | Action buttons or other right-aligned content |
74
+
75
+ ## Design Tokens
76
+
77
+ Tokens these components read. Customize by overriding these CSS variables in your theme.
78
+
79
+ | Token | CSS Variable | Purpose |
80
+ | ---------------- | ---------------- | ---------------------------------------- |
81
+ | `text-secondary` | `--secondary` | Description and subtitle text color |
82
+ | `text-disabled` | `--disabled` | Disabled value text in `Info` |
83
+ | `mb-kilo` | `--spacing-kilo` | Bottom margin on `Description` |
84
+ | `gap-mega` | `--spacing-mega` | Gap in `PageHeader` between sections |
85
+ | `gap-kilo` | `--spacing-kilo` | Gap between action items in `PageHeader` |
86
+
87
+ ## Examples
88
+
89
+ ### Page Header with Actions
90
+
91
+ ```tsx
92
+ import { Button } from "@g4rcez/components/button";
93
+
94
+ <PageHeader title="Orders" description="List of all orders from your shop">
95
+ <Button size="small">Export CSV</Button>
96
+ <Button theme="primary" size="small">
97
+ Create Order
98
+ </Button>
99
+ </PageHeader>;
100
+ ```
101
+
102
+ ### Standalone Page Title
103
+
104
+ ```tsx
105
+ <PageTitle title="Dashboard">Overview of your application metrics</PageTitle>
106
+ ```
107
+
108
+ ### Paragraph and Description
109
+
110
+ ```tsx
111
+ <Paragraph>
112
+ This is a standard paragraph with base font size and snug line height.
113
+ </Paragraph>
114
+
115
+ <Description>
116
+ Secondary description text, typically used beneath form fields or titles.
117
+ </Description>
118
+ ```
119
+
120
+ ### Info — Stacked (default)
121
+
122
+ ```tsx
123
+ <Info label="Full Name">John Doe</Info>
124
+ <Info label="Email">john@example.com</Info>
125
+ <Info label="Role">Administrator</Info>
126
+ ```
127
+
128
+ ### Info — Row Layout
129
+
130
+ ```tsx
131
+ <Info label="Status" row>Active</Info>
132
+ <Info label="Plan" row>Pro</Info>
133
+ ```
134
+
135
+ ### Info — Disabled Value
136
+
137
+ ```tsx
138
+ <Info label="API Key" disabled="true">
139
+ sk-••••••••••••••••
140
+ </Info>
141
+ ```
142
+
143
+ ### Profile Card
144
+
145
+ ```tsx
146
+ <div className="flex flex-col gap-base rounded-card border border-border bg-card-background p-4">
147
+ <PageTitle title="John Doe">Software Engineer</PageTitle>
148
+ <div className="flex flex-col gap-sm">
149
+ <Info label="Email" row>
150
+ john@example.com
151
+ </Info>
152
+ <Info label="Team" row>
153
+ Platform
154
+ </Info>
155
+ <Info label="Joined" row>
156
+ March 2024
157
+ </Info>
158
+ </div>
159
+ </div>
160
+ ```
161
+
162
+ ## Do
163
+
164
+ - Use `PageHeader` at the top of every page for consistent title + action layout
165
+ - Use `Paragraph` instead of raw `<p>` to inherit consistent base styling
166
+ - Use `Description` for secondary/supporting text — it signals lower visual hierarchy
167
+ - Use design-token classes for any additional styling (`text-foreground`, `bg-background`)
168
+
169
+ ## Don't
170
+
171
+ - Don't use `PageTitle` more than once per page — it represents the page's main topic
172
+ - Don't pass raw Tailwind color classes (`text-gray-500`, `text-black`) — use `text-secondary` or `text-foreground`
173
+ - Don't use arbitrary Tailwind values (`text-[#555]`) — override CSS variables in your `@theme` block
174
+ - Don't use `Info` for long-form content — it is designed for short labeled values
175
+
176
+ ## Accessibility
177
+
178
+ - `PageTitle` renders an `<h2>` — ensure there is an `<h1>` elsewhere on the page
179
+ - `PageHeader` wraps content in a semantic `<header>` element
180
+ - `Info` labels are `<span>` elements; if the label identifies a form field, prefer a `<label>` with `htmlFor` instead
181
+ - `Description` text should be concise and supplementary — do not place critical content only in `Description`
182
+
183
+ ## Notes
184
+
185
+ - All components accept standard HTML props for their root element and merge `className` correctly
186
+ - `PageHeader` uses `gap-mega` and `gap-kilo` spacing tokens — override these in `@theme` to adjust layout rhythm
187
+ - `Info` with `disabled` prop applies `text-disabled` to the value span only, not the label
@@ -0,0 +1,208 @@
1
+ ---
2
+ title: Wizard
3
+ description: Guided tour overlay that highlights page elements step-by-step with animated SVG masking and floating tooltips.
4
+ package: "@g4rcez/components"
5
+ export: "{ Wizard }"
6
+ import: "import { Wizard } from '@g4rcez/components'"
7
+ category: floating
8
+ ---
9
+
10
+ # Wizard
11
+
12
+ Guided tour overlay that highlights page elements step-by-step with animated SVG masking and floating tooltips.
13
+
14
+ ## Import
15
+
16
+ ```tsx
17
+ import { Wizard } from "@g4rcez/components";
18
+ ```
19
+
20
+ ## Props
21
+
22
+ ### Wizard
23
+
24
+ | Prop | Type | Default | Description |
25
+ | ---------- | ---------------------------------------------------------------------- | ------- | -------------------------------------------------- |
26
+ | `active` | `boolean` | `false` | Controls whether the wizard is visible |
27
+ | `steps` | `WizardStep[]` | — | Ordered array of step configurations |
28
+ | `onClose` | `() => void` | — | Callback when the user skips or dismisses the tour |
29
+ | `onFinish` | `() => void` | — | Callback when the last step is completed |
30
+ | `onChange` | `(index: number) => void` | — | Callback fired when the step index changes |
31
+ | `labels` | `{ next?: string; skip?: string; finish?: string; previous?: string }` | — | Override button labels |
32
+
33
+ ### WizardStep
34
+
35
+ | Prop | Type | Default | Description |
36
+ | ------------- | ------------------------------------------------------- | ---------- | ------------------------------------------------------- |
37
+ | `element` | `string \| Element \| React.RefObject<Element \| null>` | — | Target element: CSS selector, DOM element, or React ref |
38
+ | `title` | `React.ReactNode` | — | Step title displayed in the tooltip |
39
+ | `description` | `React.ReactNode` | — | Step body content |
40
+ | `side` | `Placement` | `"bottom"` | Tooltip placement relative to the target element |
41
+ | `onEnter` | `() => void` | — | Called when this step becomes active |
42
+ | `onNext` | `() => void` | — | Called before advancing to the next step |
43
+ | `onPrevious` | `() => void` | — | Called before going back to the previous step |
44
+
45
+ ## Design Tokens
46
+
47
+ Tokens this component reads. Customize by overriding these CSS variables in your theme.
48
+
49
+ | Token | CSS Variable | Purpose |
50
+ | ------------------------ | ----------------------- | ------------------------------------------- |
51
+ | `text-floating-overlay` | `--floating-overlay` | SVG mask fill color (`/70` opacity applied) |
52
+ | `bg-floating-background` | `--floating-background` | Step tooltip surface background |
53
+ | `border-floating-border` | `--floating-border` | Step tooltip border and footer divider |
54
+ | `z-wizard` | `--z-wizard` | Z-index for the overlay layer |
55
+ | `z-floating` | `--z-floating` | Z-index for the step tooltip |
56
+ | `text-muted-foreground` | `--muted-foreground` | Step counter and skip button text |
57
+ | `text-foreground` | `--foreground` | Skip button hover text |
58
+
59
+ ## Examples
60
+
61
+ ### Basic Two-Step Tour
62
+
63
+ ```tsx
64
+ import { useState } from "react";
65
+ import { Wizard } from "@g4rcez/components";
66
+ import { Button } from "@g4rcez/components/button";
67
+
68
+ function OnboardingTour() {
69
+ const [active, setActive] = useState(false);
70
+
71
+ const steps = [
72
+ {
73
+ element: "#create-button",
74
+ title: "Create something new",
75
+ description: "Use this button to create a new project.",
76
+ side: "bottom" as const,
77
+ },
78
+ {
79
+ element: "#notifications-bell",
80
+ title: "Stay up to date",
81
+ description: "Check here for the latest updates.",
82
+ side: "left" as const,
83
+ },
84
+ ];
85
+
86
+ return (
87
+ <>
88
+ <Button onClick={() => setActive(true)}>Start Tour</Button>
89
+
90
+ <Wizard
91
+ active={active}
92
+ steps={steps}
93
+ onClose={() => setActive(false)}
94
+ onFinish={() => {
95
+ setActive(false);
96
+ console.log("Tour complete");
97
+ }}
98
+ />
99
+ </>
100
+ );
101
+ }
102
+ ```
103
+
104
+ ### Using Refs as Targets
105
+
106
+ ```tsx
107
+ import { useRef, useState } from "react";
108
+ import { Wizard } from "@g4rcez/components";
109
+ import { Button } from "@g4rcez/components/button";
110
+
111
+ function RefTour() {
112
+ const [active, setActive] = useState(false);
113
+ const buttonRef = useRef<HTMLButtonElement>(null);
114
+
115
+ const steps = [
116
+ {
117
+ element: buttonRef,
118
+ title: "Action Button",
119
+ description: "Click here to perform the primary action.",
120
+ side: "right" as const,
121
+ },
122
+ ];
123
+
124
+ return (
125
+ <>
126
+ <Button ref={buttonRef} theme="primary">
127
+ Primary Action
128
+ </Button>
129
+
130
+ <Wizard active={active} steps={steps} onClose={() => setActive(false)} labels={{ finish: "Got it!", skip: "No thanks" }} />
131
+ </>
132
+ );
133
+ }
134
+ ```
135
+
136
+ ### Step Lifecycle Callbacks
137
+
138
+ ```tsx
139
+ const steps = [
140
+ {
141
+ element: "#dashboard-chart",
142
+ title: "Your Analytics",
143
+ description: "This chart shows activity for the last 30 days.",
144
+ onEnter: () => console.log("User reached analytics step"),
145
+ onNext: () => console.log("User advancing past analytics"),
146
+ },
147
+ {
148
+ element: "#export-button",
149
+ title: "Export Data",
150
+ description: "Download your data at any time.",
151
+ side: "left" as const,
152
+ },
153
+ ];
154
+ ```
155
+
156
+ ### Custom Labels
157
+
158
+ ```tsx
159
+ <Wizard
160
+ active={active}
161
+ steps={steps}
162
+ onClose={() => setActive(false)}
163
+ onFinish={() => setActive(false)}
164
+ labels={{
165
+ next: "Continue",
166
+ previous: "Back",
167
+ skip: "Skip tour",
168
+ finish: "Done",
169
+ }}
170
+ />
171
+ ```
172
+
173
+ ## Do
174
+
175
+ - Keep tours to 3–7 steps; fewer steps are completed more often.
176
+ - Ensure target elements are visible in the viewport when each step activates — the wizard scrolls to them automatically.
177
+ - Always provide `onClose` so users can exit at any time without completing the tour.
178
+ - Use `onEnter` to trigger any side effects that make the target element visible (e.g., open a panel) before the step highlights it.
179
+
180
+ ## Don't
181
+
182
+ - Don't use the wizard for critical information that isn't accessible elsewhere — some users will skip it.
183
+ - Don't pass more than ~10 steps; tours that feel long are abandoned.
184
+ - Don't block users from navigating if they skip the wizard.
185
+ - Don't pass raw Tailwind color classes in `title` or `description` content — use design-token classes.
186
+ - Don't use arbitrary Tailwind values (`z-[9999]`) — the wizard already uses `z-wizard`; override the CSS variable if needed.
187
+
188
+ ## Accessibility
189
+
190
+ - The wizard renders in a `FloatingPortal` above all other content.
191
+ - The SVG mask highlights the target element using `pointer-events-auto` so users can interact with it during the tour.
192
+ - Navigation buttons use the `Button` component and are keyboard accessible.
193
+ - Step progress is shown as `{current} / {total}` in the tooltip corner.
194
+ - The `FloatingArrow` provides a visual pointer connecting the tooltip to the target element.
195
+
196
+ ## Data Attributes
197
+
198
+ | Attribute | Applied to | Description |
199
+ | ------------------------- | --------------------- | ---------------------------------- |
200
+ | `data-component="wizard"` | Main wizard container | Identifies the wizard overlay root |
201
+
202
+ ## Notes
203
+
204
+ - The SVG mask uses a `<motion.rect>` that animates to the target element's bounding rect with a spring transition. The tooltip appears only after the animation completes (`onAnimationComplete`).
205
+ - The overlay is `pointer-events-none` except for the mask rect, which is `pointer-events-auto` — this allows clicking the highlighted element while the tour is active.
206
+ - When `element` resolves to `null` (selector not found or ref is empty), the tooltip centers on the screen and a console warning is emitted.
207
+ - `useResizeObserver` and scroll/resize event listeners keep the highlight rect in sync as the layout changes.
208
+ - The `labels` prop values fall back to the global translations provided by `useTranslations`.