@g4rcez/components 4.0.2 → 4.1.2

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 (337) hide show
  1. package/ai/SKILL.md +120 -153
  2. package/ai/docs/Alert.md +47 -48
  3. package/ai/docs/AnimatedList.md +88 -87
  4. package/ai/docs/Autocomplete.md +102 -106
  5. package/ai/docs/Button.md +33 -33
  6. package/ai/docs/Calendar.md +67 -101
  7. package/ai/docs/Card.md +59 -55
  8. package/ai/docs/Checkbox.md +77 -82
  9. package/ai/docs/CommandPalette.md +154 -172
  10. package/ai/docs/DatePicker.md +45 -64
  11. package/ai/docs/Dropdown.md +98 -126
  12. package/ai/docs/Empty.md +41 -44
  13. package/ai/docs/Expand.md +40 -54
  14. package/ai/docs/FileUpload.md +102 -109
  15. package/ai/docs/Form.md +35 -29
  16. package/ai/docs/FormReset.md +37 -37
  17. package/ai/docs/Heading.md +4 -6
  18. package/ai/docs/Input.md +73 -98
  19. package/ai/docs/InputField.md +67 -67
  20. package/ai/docs/List.md +88 -85
  21. package/ai/docs/Menu.md +62 -60
  22. package/ai/docs/Modal.md +129 -136
  23. package/ai/docs/MultiSelect.md +65 -84
  24. package/ai/docs/Notifications.md +96 -96
  25. package/ai/docs/PageCalendar.md +88 -97
  26. package/ai/docs/Polymorph.md +25 -41
  27. package/ai/docs/Progress.md +55 -51
  28. package/ai/docs/Radiobox.md +49 -41
  29. package/ai/docs/RenderOnView.md +26 -32
  30. package/ai/docs/Resizable.md +60 -65
  31. package/ai/docs/Select.md +158 -158
  32. package/ai/docs/Shortcut.md +14 -14
  33. package/ai/docs/Skeleton.md +56 -60
  34. package/ai/docs/Slider.md +26 -49
  35. package/ai/docs/Slot.md +15 -17
  36. package/ai/docs/Spinner.md +17 -15
  37. package/ai/docs/Stats.md +44 -42
  38. package/ai/docs/Step.md +60 -60
  39. package/ai/docs/Switch.md +44 -54
  40. package/ai/docs/Table.md +124 -136
  41. package/ai/docs/Tabs.md +90 -90
  42. package/ai/docs/Tag.md +63 -65
  43. package/ai/docs/TaskList.md +40 -50
  44. package/ai/docs/Textarea.md +47 -70
  45. package/ai/docs/Timeline.md +98 -96
  46. package/ai/docs/Toolbar.md +46 -46
  47. package/ai/docs/Tooltip.md +103 -103
  48. package/ai/docs/Typography.md +55 -55
  49. package/ai/docs/Wizard.md +104 -109
  50. package/ai/docs/index.md +116 -116
  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.d.ts.map +1 -1
  56. package/dist/components/core/button.js +10 -10
  57. package/dist/components/core/button.js.map +1 -1
  58. package/dist/components/core/button.jsx +79 -0
  59. package/dist/components/core/heading.jsx +4 -0
  60. package/dist/components/core/polymorph.d.ts +1 -1
  61. package/dist/components/core/polymorph.d.ts.map +1 -1
  62. package/dist/components/core/polymorph.jsx +5 -0
  63. package/dist/components/core/render-on-view.jsx +31 -0
  64. package/dist/components/core/resizable.jsx +51 -0
  65. package/dist/components/core/slot.d.ts.map +1 -1
  66. package/dist/components/core/slot.jsx +156 -0
  67. package/dist/components/core/tag.d.ts +1 -1
  68. package/dist/components/core/tag.d.ts.map +1 -1
  69. package/dist/components/core/tag.js +4 -4
  70. package/dist/components/core/tag.js.map +1 -1
  71. package/dist/components/core/tag.jsx +51 -0
  72. package/dist/components/core/typography.jsx +18 -0
  73. package/dist/components/display/alert.d.ts +1 -1
  74. package/dist/components/display/alert.d.ts.map +1 -1
  75. package/dist/components/display/alert.js +48 -46
  76. package/dist/components/display/alert.js.map +1 -1
  77. package/dist/components/display/alert.jsx +61 -0
  78. package/dist/components/display/calendar.js +6 -6
  79. package/dist/components/display/calendar.jsx +299 -0
  80. package/dist/components/display/card.js +2 -2
  81. package/dist/components/display/card.js.map +1 -1
  82. package/dist/components/display/card.jsx +43 -0
  83. package/dist/components/display/empty.jsx +11 -0
  84. package/dist/components/display/list.js +1 -1
  85. package/dist/components/display/list.js.map +1 -1
  86. package/dist/components/display/list.jsx +81 -0
  87. package/dist/components/display/notifications.d.ts +1 -1
  88. package/dist/components/display/notifications.d.ts.map +1 -1
  89. package/dist/components/display/notifications.js +3 -3
  90. package/dist/components/display/notifications.jsx +126 -0
  91. package/dist/components/display/progress.jsx +11 -0
  92. package/dist/components/display/shortcut.jsx +23 -0
  93. package/dist/components/display/skeleton.d.ts.map +1 -1
  94. package/dist/components/display/skeleton.jsx +19 -0
  95. package/dist/components/display/spinner.d.ts.map +1 -1
  96. package/dist/components/display/spinner.jsx +11 -0
  97. package/dist/components/display/stats.js +1 -1
  98. package/dist/components/display/stats.jsx +20 -0
  99. package/dist/components/display/step.jsx +131 -0
  100. package/dist/components/display/tabs.d.ts +1 -1
  101. package/dist/components/display/tabs.d.ts.map +1 -1
  102. package/dist/components/display/tabs.js +2 -2
  103. package/dist/components/display/tabs.jsx +125 -0
  104. package/dist/components/display/timeline.js +1 -1
  105. package/dist/components/display/timeline.jsx +25 -0
  106. package/dist/components/floating/command-palette.d.ts.map +1 -1
  107. package/dist/components/floating/command-palette.jsx +197 -0
  108. package/dist/components/floating/dropdown.d.ts.map +1 -1
  109. package/dist/components/floating/dropdown.js +25 -17
  110. package/dist/components/floating/dropdown.js.map +1 -1
  111. package/dist/components/floating/dropdown.jsx +56 -0
  112. package/dist/components/floating/expand.js +7 -7
  113. package/dist/components/floating/expand.js.map +1 -1
  114. package/dist/components/floating/expand.jsx +44 -0
  115. package/dist/components/floating/menu.js +10 -10
  116. package/dist/components/floating/menu.js.map +1 -1
  117. package/dist/components/floating/menu.jsx +147 -0
  118. package/dist/components/floating/modal.d.ts +4 -4
  119. package/dist/components/floating/modal.d.ts.map +1 -1
  120. package/dist/components/floating/modal.js +106 -102
  121. package/dist/components/floating/modal.js.map +1 -1
  122. package/dist/components/floating/modal.jsx +301 -0
  123. package/dist/components/floating/toolbar.jsx +5 -0
  124. package/dist/components/floating/tooltip.d.ts.map +1 -1
  125. package/dist/components/floating/tooltip.js +14 -14
  126. package/dist/components/floating/tooltip.js.map +1 -1
  127. package/dist/components/floating/tooltip.jsx +58 -0
  128. package/dist/components/floating/wizard.jsx +161 -0
  129. package/dist/components/form/autocomplete.d.ts.map +1 -1
  130. package/dist/components/form/autocomplete.js +6 -6
  131. package/dist/components/form/autocomplete.jsx +278 -0
  132. package/dist/components/form/checkbox.js +1 -1
  133. package/dist/components/form/checkbox.jsx +12 -0
  134. package/dist/components/form/date-picker.d.ts.map +1 -1
  135. package/dist/components/form/date-picker.js +5 -5
  136. package/dist/components/form/date-picker.jsx +115 -0
  137. package/dist/components/form/file-upload.d.ts.map +1 -1
  138. package/dist/components/form/file-upload.js +2 -2
  139. package/dist/components/form/file-upload.jsx +134 -0
  140. package/dist/components/form/form.js.map +1 -1
  141. package/dist/components/form/form.jsx +10 -0
  142. package/dist/components/form/formReset.jsx +17 -0
  143. package/dist/components/form/free-text.d.ts.map +1 -1
  144. package/dist/components/form/free-text.jsx +41 -0
  145. package/dist/components/form/input-field.d.ts +11 -11
  146. package/dist/components/form/input-field.d.ts.map +1 -1
  147. package/dist/components/form/input-field.jsx +58 -0
  148. package/dist/components/form/input.js +1 -1
  149. package/dist/components/form/input.jsx +36 -0
  150. package/dist/components/form/multi-select.d.ts.map +1 -1
  151. package/dist/components/form/multi-select.jsx +336 -0
  152. package/dist/components/form/radiobox.js +1 -1
  153. package/dist/components/form/radiobox.jsx +6 -0
  154. package/dist/components/form/select.js +3 -3
  155. package/dist/components/form/select.jsx +42 -0
  156. package/dist/components/form/slider.jsx +45 -0
  157. package/dist/components/form/switch.js +2 -2
  158. package/dist/components/form/switch.js.map +1 -1
  159. package/dist/components/form/switch.jsx +46 -0
  160. package/dist/components/form/task-list.jsx +26 -0
  161. package/dist/components/form/textarea.jsx +12 -0
  162. package/dist/components/index.d.ts +0 -1
  163. package/dist/components/index.d.ts.map +1 -1
  164. package/dist/components/index.js +44 -0
  165. package/dist/components/page-calendar/calendar-header.jsx +83 -0
  166. package/dist/components/page-calendar/day-view.jsx +94 -0
  167. package/dist/components/page-calendar/event-pill.d.ts.map +1 -1
  168. package/dist/components/page-calendar/event-pill.jsx +25 -0
  169. package/dist/components/page-calendar/index.js +2 -0
  170. package/dist/components/page-calendar/month-view.jsx +46 -0
  171. package/dist/components/page-calendar/page-calendar.jsx +41 -0
  172. package/dist/components/page-calendar/page-calendar.types.js +1 -0
  173. package/dist/components/page-calendar/page-calendar.utils.js +93 -0
  174. package/dist/components/page-calendar/week-view.jsx +71 -0
  175. package/dist/components/table/filter.jsx +141 -0
  176. package/dist/components/table/group.jsx +68 -0
  177. package/dist/components/table/index.d.ts +2 -3
  178. package/dist/components/table/index.d.ts.map +1 -1
  179. package/dist/components/table/index.jsx +60 -0
  180. package/dist/components/table/inner-table.d.ts +2 -3
  181. package/dist/components/table/inner-table.d.ts.map +1 -1
  182. package/dist/components/table/inner-table.jsx +102 -0
  183. package/dist/components/table/metadata.jsx +36 -0
  184. package/dist/components/table/pagination.d.ts +3 -1
  185. package/dist/components/table/pagination.d.ts.map +1 -1
  186. package/dist/components/table/pagination.jsx +74 -0
  187. package/dist/components/table/row.d.ts +4 -5
  188. package/dist/components/table/row.d.ts.map +1 -1
  189. package/dist/components/table/row.jsx +49 -0
  190. package/dist/components/table/sort.d.ts.map +1 -1
  191. package/dist/components/table/sort.jsx +109 -0
  192. package/dist/components/table/table-lib.d.ts +1 -1
  193. package/dist/components/table/table-lib.d.ts.map +1 -1
  194. package/dist/components/table/table-lib.js +83 -0
  195. package/dist/components/table/table.context.jsx +4 -0
  196. package/dist/components/table/table.js +3 -3
  197. package/dist/components/table/thead.jsx +103 -0
  198. package/dist/config/context.js +12 -0
  199. package/dist/config/default-translations.d.ts +4 -0
  200. package/dist/config/default-translations.d.ts.map +1 -1
  201. package/dist/config/default-translations.jsx +87 -0
  202. package/dist/config/default-tweaks.js +4 -0
  203. package/dist/constants.js +2 -0
  204. package/dist/{date-picker-DwNo22lx.js → date-picker-Bnl07nd8.js} +8 -6
  205. package/dist/date-picker-Bnl07nd8.js.map +1 -0
  206. package/dist/{dom-Dl8XH0CK.js → dom-CyQHY7ID.js} +66 -61
  207. package/dist/dom-CyQHY7ID.js.map +1 -0
  208. package/dist/{file-upload-Brf2NkLr.js → file-upload-93d5DR4q.js} +139 -129
  209. package/dist/file-upload-93d5DR4q.js.map +1 -0
  210. package/dist/{floating-ui.react-QNHG9W4N.js → floating-ui.react-M2PGXLDp.js} +8 -8
  211. package/dist/floating-ui.react-M2PGXLDp.js.map +1 -0
  212. package/dist/{fns-D2eyJKd5.js → fns-C7Dt27Qd.js} +2 -2
  213. package/dist/fns-C7Dt27Qd.js.map +1 -0
  214. package/dist/hooks/use-click-outside.js +17 -0
  215. package/dist/hooks/use-color-parser.js +9 -0
  216. package/dist/hooks/use-components-provider.jsx +22 -0
  217. package/dist/hooks/use-debounce.d.ts +3 -3
  218. package/dist/hooks/use-debounce.d.ts.map +1 -1
  219. package/dist/hooks/use-debounce.js +12 -0
  220. package/dist/hooks/use-floating-ref.js +6 -0
  221. package/dist/hooks/use-form.d.ts +14 -13
  222. package/dist/hooks/use-form.d.ts.map +1 -1
  223. package/dist/hooks/use-form.js +563 -0
  224. package/dist/hooks/use-hover.js +18 -0
  225. package/dist/hooks/use-input-id.js +5 -0
  226. package/dist/hooks/use-is-coarse-device.js +12 -0
  227. package/dist/hooks/use-locale.js +10 -0
  228. package/dist/hooks/use-media-query.js +25 -0
  229. package/dist/hooks/use-on-event.js +7 -0
  230. package/dist/hooks/use-parent.js +21 -0
  231. package/dist/hooks/use-preferences.js +23 -0
  232. package/dist/hooks/use-previous.js +9 -0
  233. package/dist/hooks/use-reactive.js +9 -0
  234. package/dist/hooks/use-remove-scroll.d.ts.map +1 -1
  235. package/dist/hooks/use-remove-scroll.js +48 -0
  236. package/dist/hooks/use-resize-observer.js +17 -0
  237. package/dist/hooks/use-stable-ref.js +9 -0
  238. package/dist/hooks/use-swipe.js +17 -0
  239. package/dist/hooks/use-translations.d.ts +4 -0
  240. package/dist/hooks/use-translations.d.ts.map +1 -1
  241. package/dist/hooks/use-translations.js +9 -0
  242. package/dist/hooks/use-tweaks.js +9 -0
  243. package/dist/hooks/use-window-size.js +14 -0
  244. package/dist/index-BJ1ayTam.js +126 -0
  245. package/dist/index-BJ1ayTam.js.map +1 -0
  246. package/dist/index-C-PuFUZi.js.map +1 -1
  247. package/dist/{index-BelDtX5M.js → index-DDeQW0JW.js} +399 -404
  248. package/dist/index-DDeQW0JW.js.map +1 -0
  249. package/dist/index-DE4shK8D.js +215 -0
  250. package/dist/index-DE4shK8D.js.map +1 -0
  251. package/dist/{index-DJSMaZR4.js → index-DlJ_2RBL.js} +2 -2
  252. package/dist/index-DlJ_2RBL.js.map +1 -0
  253. package/dist/index.css +1 -1
  254. package/dist/index.esm-BaIwleSE.js.map +1 -1
  255. package/dist/index.js +20 -8177
  256. package/dist/index.js.map +1 -1
  257. package/dist/{input-CrGrSnUt.js → input-_MVxmIpu.js} +116 -114
  258. package/dist/input-_MVxmIpu.js.map +1 -0
  259. package/dist/{input-field-5vYcz5tT.js → input-field-CDCOODOl.js} +63 -47
  260. package/dist/input-field-CDCOODOl.js.map +1 -0
  261. package/dist/lib/combi-keys.js +60 -0
  262. package/dist/lib/dict.d.ts +1 -4
  263. package/dist/lib/dict.d.ts.map +1 -1
  264. package/dist/lib/dict.js +28 -0
  265. package/dist/lib/dom.d.ts +3 -2
  266. package/dist/lib/dom.d.ts.map +1 -1
  267. package/dist/lib/dom.js +66 -0
  268. package/dist/lib/fns.js +46 -0
  269. package/dist/lib/fzf.d.ts.map +1 -1
  270. package/dist/lib/fzf.js +115 -0
  271. package/dist/lib/keyboard-area.js +14 -0
  272. package/dist/notifications-Dp0ydKJS.js +2576 -0
  273. package/dist/notifications-Dp0ydKJS.js.map +1 -0
  274. package/dist/polymorph-B5n9fs_K.js.map +1 -1
  275. package/dist/preset/plugin.tailwind.d.ts.map +1 -1
  276. package/dist/preset/plugin.tailwind.js +20 -18
  277. package/dist/preset/preset.tailwind.js +24 -25
  278. package/dist/preset/src/styles/common.js +6 -3
  279. package/dist/preset/src/styles/dark.d.ts.map +1 -1
  280. package/dist/preset/src/styles/dark.js +9 -5
  281. package/dist/preset/src/styles/design-tokens.js +68 -89
  282. package/dist/preset/src/styles/light.d.ts.map +1 -1
  283. package/dist/preset/src/styles/light.js +9 -5
  284. package/dist/preset/src/styles/theme.js +7 -4
  285. package/dist/preset/src/styles/theme.types.d.ts +2 -1
  286. package/dist/preset/src/styles/theme.types.d.ts.map +1 -1
  287. package/dist/preset/src/styles/theme.types.js +2 -1
  288. package/dist/skeleton-BjJobYYf.js +24 -0
  289. package/dist/skeleton-BjJobYYf.js.map +1 -0
  290. package/dist/slot-CRyweuj0.js.map +1 -1
  291. package/dist/styles/common.js +6 -3
  292. package/dist/styles/dark.d.ts.map +1 -1
  293. package/dist/styles/dark.js +9 -5
  294. package/dist/styles/design-tokens.js +68 -89
  295. package/dist/styles/light.d.ts.map +1 -1
  296. package/dist/styles/light.js +9 -5
  297. package/dist/styles/theme.js +7 -4
  298. package/dist/styles/theme.types.d.ts +2 -1
  299. package/dist/styles/theme.types.d.ts.map +1 -1
  300. package/dist/styles/theme.types.js +2 -1
  301. package/dist/tabs-B0g7YtQv.js +123 -0
  302. package/dist/tabs-B0g7YtQv.js.map +1 -0
  303. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  304. package/dist/types.d.ts +2 -2
  305. package/dist/types.d.ts.map +1 -1
  306. package/dist/types.js +1 -0
  307. package/dist/{context-BFXNJVn2.js → use-translations-DSltA7H_.js} +38 -30
  308. package/dist/use-translations-DSltA7H_.js.map +1 -0
  309. package/package.json +99 -86
  310. package/ai/docs/TransferList.md +0 -142
  311. package/dist/autocomplete-Cn9Z2hLq.js +0 -375
  312. package/dist/autocomplete-Cn9Z2hLq.js.map +0 -1
  313. package/dist/calendar-B5lSd0ID.js.map +0 -1
  314. package/dist/components/form/transfer-list.d.ts +0 -14
  315. package/dist/components/form/transfer-list.d.ts.map +0 -1
  316. package/dist/components/form/transfer-list.js +0 -55
  317. package/dist/components/form/transfer-list.js.map +0 -1
  318. package/dist/context-BFXNJVn2.js.map +0 -1
  319. package/dist/date-picker-DwNo22lx.js.map +0 -1
  320. package/dist/dom-Dl8XH0CK.js.map +0 -1
  321. package/dist/file-upload-Brf2NkLr.js.map +0 -1
  322. package/dist/floating-ui.react-QNHG9W4N.js.map +0 -1
  323. package/dist/fns-D2eyJKd5.js.map +0 -1
  324. package/dist/index-BelDtX5M.js.map +0 -1
  325. package/dist/index-DJSMaZR4.js.map +0 -1
  326. package/dist/index-Z-fZHxfJ.js +0 -335
  327. package/dist/index-Z-fZHxfJ.js.map +0 -1
  328. package/dist/input-CrGrSnUt.js.map +0 -1
  329. package/dist/input-field-5vYcz5tT.js.map +0 -1
  330. package/dist/notifications-cUdVPs-B.js +0 -2786
  331. package/dist/notifications-cUdVPs-B.js.map +0 -1
  332. package/dist/skeleton-D75GFBV6.js +0 -10
  333. package/dist/skeleton-D75GFBV6.js.map +0 -1
  334. package/dist/tabs-S00a8qq8.js +0 -106
  335. package/dist/tabs-S00a8qq8.js.map +0 -1
  336. package/dist/use-translations-BwLKTrZv.js +0 -10
  337. package/dist/use-translations-BwLKTrZv.js.map +0 -1
package/ai/docs/Tabs.md CHANGED
@@ -21,35 +21,35 @@ import { Tabs, Tab } from "@g4rcez/components/tabs";
21
21
 
22
22
  ### Tabs (Container)
23
23
 
24
- | Prop | Type | Default | Description |
25
- |------|------|---------|-------------|
26
- | `active` | `string` | — | ID of the currently active tab |
27
- | `onChange` | `(id: string) => void` | — | Called when the active tab changes |
28
- | `container` | `string` | — | Additional classes for the outer card container |
29
- | `className` | `string` | — | Additional classes for the card body (content area) |
30
- | `children` | `Tab[]` | — | `Tab` panel components |
24
+ | Prop | Type | Default | Description |
25
+ | ----------- | ---------------------- | ------- | --------------------------------------------------- |
26
+ | `active` | `string` | — | ID of the currently active tab |
27
+ | `onChange` | `(id: string) => void` | — | Called when the active tab changes |
28
+ | `container` | `string` | — | Additional classes for the outer card container |
29
+ | `className` | `string` | — | Additional classes for the card body (content area) |
30
+ | `children` | `Tab[]` | — | `Tab` panel components |
31
31
 
32
32
  ### Tab (Panel)
33
33
 
34
- | Prop | Type | Default | Description |
35
- |------|------|---------|-------------|
36
- | `id` | `string` | — | Unique identifier; matched against `Tabs.active` |
37
- | `title` | `string` | — | Tab button label (use when label is a plain string) |
38
- | `label` | `string` | — | Accessible label when `title` is a non-string React element |
39
- | `disabled` | `boolean` | `false` | Disables the tab button and skips it during keyboard navigation |
40
- | `children` | `React.ReactNode` | — | Panel content rendered when this tab is active |
34
+ | Prop | Type | Default | Description |
35
+ | ---------- | ----------------- | ------- | --------------------------------------------------------------- |
36
+ | `id` | `string` | — | Unique identifier; matched against `Tabs.active` |
37
+ | `title` | `string` | — | Tab button label (use when label is a plain string) |
38
+ | `label` | `string` | — | Accessible label when `title` is a non-string React element |
39
+ | `disabled` | `boolean` | `false` | Disables the tab button and skips it during keyboard navigation |
40
+ | `children` | `React.ReactNode` | — | Panel content rendered when this tab is active |
41
41
 
42
42
  ## Design Tokens
43
43
 
44
44
  Tokens this component reads. Customize by overriding these CSS variables in your theme.
45
45
 
46
- | Token | CSS Variable | Purpose |
47
- |-------|-------------|---------|
48
- | `bg-card-background` | `--card-background` | Tab panel surface |
49
- | `border-card-border` | `--card-border` | Tab bar bottom line and card border |
50
- | `border-primary` | `--primary` | Active tab bottom indicator |
51
- | `text-primary` | `--primary` | Active tab text color |
52
- | `text-disabled` | `--disabled` | Disabled tab text |
46
+ | Token | CSS Variable | Purpose |
47
+ | -------------------- | ------------------- | ----------------------------------- |
48
+ | `bg-card-background` | `--card-background` | Tab panel surface |
49
+ | `border-card-border` | `--card-border` | Tab bar bottom line and card border |
50
+ | `border-primary` | `--primary` | Active tab bottom indicator |
51
+ | `text-primary` | `--primary` | Active tab text color |
52
+ | `text-disabled` | `--disabled` | Disabled tab text |
53
53
 
54
54
  ## Examples
55
55
 
@@ -59,38 +59,38 @@ Tokens this component reads. Customize by overriding these CSS variables in your
59
59
  const [active, setActive] = useState("overview");
60
60
 
61
61
  <Tabs active={active} onChange={setActive}>
62
- <Tab id="overview" title="Overview">
63
- <h3>Project Overview</h3>
64
- <p>This is the overview of your project.</p>
65
- </Tab>
66
-
67
- <Tab id="details" title="Details">
68
- <h3>Project Details</h3>
69
- <p>Detailed information about your project.</p>
70
- </Tab>
71
-
72
- <Tab id="settings" title="Settings">
73
- <h3>Project Settings</h3>
74
- <p>Configure your project settings here.</p>
75
- </Tab>
76
- </Tabs>
62
+ <Tab id="overview" title="Overview">
63
+ <h3>Project Overview</h3>
64
+ <p>This is the overview of your project.</p>
65
+ </Tab>
66
+
67
+ <Tab id="details" title="Details">
68
+ <h3>Project Details</h3>
69
+ <p>Detailed information about your project.</p>
70
+ </Tab>
71
+
72
+ <Tab id="settings" title="Settings">
73
+ <h3>Project Settings</h3>
74
+ <p>Configure your project settings here.</p>
75
+ </Tab>
76
+ </Tabs>;
77
77
  ```
78
78
 
79
79
  ### Tabs with Disabled State
80
80
 
81
81
  ```tsx
82
82
  <Tabs active={activeTab} onChange={setActiveTab}>
83
- <Tab id="available" title="Available">
84
- <p>This tab is available.</p>
85
- </Tab>
83
+ <Tab id="available" title="Available">
84
+ <p>This tab is available.</p>
85
+ </Tab>
86
86
 
87
- <Tab id="locked" title="Locked" disabled>
88
- <p>This content is not accessible yet.</p>
89
- </Tab>
87
+ <Tab id="locked" title="Locked" disabled>
88
+ <p>This content is not accessible yet.</p>
89
+ </Tab>
90
90
 
91
- <Tab id="also-available" title="Also Available">
92
- <p>This tab is also available.</p>
93
- </Tab>
91
+ <Tab id="also-available" title="Also Available">
92
+ <p>This tab is also available.</p>
93
+ </Tab>
94
94
  </Tabs>
95
95
  ```
96
96
 
@@ -98,15 +98,15 @@ const [active, setActive] = useState("overview");
98
98
 
99
99
  ```tsx
100
100
  <Tabs active={activeTab} onChange={setActiveTab}>
101
- <Tab id="general" title="General">
102
- <GeneralSettings />
103
- </Tab>
104
- <Tab id="privacy" title="Privacy">
105
- <PrivacySettings />
106
- </Tab>
107
- <Tab id="notifications" title="Notifications">
108
- <NotificationSettings />
109
- </Tab>
101
+ <Tab id="general" title="General">
102
+ <GeneralSettings />
103
+ </Tab>
104
+ <Tab id="privacy" title="Privacy">
105
+ <PrivacySettings />
106
+ </Tab>
107
+ <Tab id="notifications" title="Notifications">
108
+ <NotificationSettings />
109
+ </Tab>
110
110
  </Tabs>
111
111
  ```
112
112
 
@@ -114,33 +114,33 @@ const [active, setActive] = useState("overview");
114
114
 
115
115
  ```tsx
116
116
  function DynamicTabs() {
117
- const [tabs, setTabs] = useState([
118
- { id: "tab1", title: "Tab 1", content: "Content 1" },
119
- { id: "tab2", title: "Tab 2", content: "Content 2" },
120
- ]);
121
- const [activeTab, setActiveTab] = useState("tab1");
122
-
123
- const addTab = () => {
124
- const newId = `tab${tabs.length + 1}`;
125
- setTabs([...tabs, { id: newId, title: `Tab ${tabs.length + 1}`, content: `Content ${tabs.length + 1}` }]);
126
- setActiveTab(newId);
127
- };
128
-
129
- return (
130
- <div className="space-y-4">
131
- <button onClick={addTab} className="px-3 py-1 bg-primary text-primary-foreground rounded-button">
132
- Add Tab
133
- </button>
134
-
135
- <Tabs active={activeTab} onChange={setActiveTab}>
136
- {tabs.map((tab) => (
137
- <Tab key={tab.id} id={tab.id} title={tab.title}>
138
- <p>{tab.content}</p>
139
- </Tab>
140
- ))}
141
- </Tabs>
142
- </div>
143
- );
117
+ const [tabs, setTabs] = useState([
118
+ { id: "tab1", title: "Tab 1", content: "Content 1" },
119
+ { id: "tab2", title: "Tab 2", content: "Content 2" },
120
+ ]);
121
+ const [activeTab, setActiveTab] = useState("tab1");
122
+
123
+ const addTab = () => {
124
+ const newId = `tab${tabs.length + 1}`;
125
+ setTabs([...tabs, { id: newId, title: `Tab ${tabs.length + 1}`, content: `Content ${tabs.length + 1}` }]);
126
+ setActiveTab(newId);
127
+ };
128
+
129
+ return (
130
+ <div className="space-y-4">
131
+ <button onClick={addTab} className="px-3 py-1 bg-primary text-primary-foreground rounded-button">
132
+ Add Tab
133
+ </button>
134
+
135
+ <Tabs active={activeTab} onChange={setActiveTab}>
136
+ {tabs.map((tab) => (
137
+ <Tab key={tab.id} id={tab.id} title={tab.title}>
138
+ <p>{tab.content}</p>
139
+ </Tab>
140
+ ))}
141
+ </Tabs>
142
+ </div>
143
+ );
144
144
  }
145
145
  ```
146
146
 
@@ -148,15 +148,15 @@ function DynamicTabs() {
148
148
 
149
149
  ```tsx
150
150
  <Tabs active={currentStep} onChange={setCurrentStep}>
151
- <Tab id="step1" title="Personal Info">
152
- <PersonalInfoForm />
153
- </Tab>
154
- <Tab id="step2" title="Address" disabled={!step1Complete}>
155
- <AddressForm />
156
- </Tab>
157
- <Tab id="step3" title="Payment" disabled={!step2Complete}>
158
- <PaymentForm />
159
- </Tab>
151
+ <Tab id="step1" title="Personal Info">
152
+ <PersonalInfoForm />
153
+ </Tab>
154
+ <Tab id="step2" title="Address" disabled={!step1Complete}>
155
+ <AddressForm />
156
+ </Tab>
157
+ <Tab id="step3" title="Payment" disabled={!step2Complete}>
158
+ <PaymentForm />
159
+ </Tab>
160
160
  </Tabs>
161
161
  ```
162
162
 
package/ai/docs/Tag.md CHANGED
@@ -19,47 +19,47 @@ import { Tag } from "@g4rcez/components/tag";
19
19
 
20
20
  ## Props
21
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 |
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
32
 
33
33
  ## Design Tokens
34
34
 
35
35
  Tokens this component reads. Customize by overriding these CSS variables in your theme.
36
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 |
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
63
 
64
64
  ## Theme Variants
65
65
 
@@ -119,26 +119,28 @@ import { StarIcon, CheckIcon } from "@phosphor-icons/react";
119
119
 
120
120
  ```tsx
121
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" },
122
+ active: { theme: "success" },
123
+ pending: { theme: "warn" },
124
+ inactive: { theme: "muted" },
125
+ error: { theme: "danger" },
126
126
  };
127
127
 
128
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
- );
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
135
  };
136
136
  ```
137
137
 
138
138
  ### Loading State
139
139
 
140
140
  ```tsx
141
- <Tag loading theme="primary">Processing...</Tag>
141
+ <Tag loading theme="primary">
142
+ Processing...
143
+ </Tag>
142
144
  ```
143
145
 
144
146
  ### Polymorphic Usage
@@ -157,18 +159,18 @@ const StatusTag = ({ status }: { status: string }) => {
157
159
 
158
160
  ```tsx
159
161
  const categories = [
160
- { name: "React", theme: "info" },
161
- { name: "TypeScript", theme: "primary" },
162
- { name: "CSS", theme: "success" },
162
+ { name: "React", theme: "info" },
163
+ { name: "TypeScript", theme: "primary" },
164
+ { name: "CSS", theme: "success" },
163
165
  ];
164
166
 
165
167
  <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>
168
+ {categories.map((cat) => (
169
+ <Tag key={cat.name} theme={cat.theme as any}>
170
+ {cat.name}
171
+ </Tag>
172
+ ))}
173
+ </div>;
172
174
  ```
173
175
 
174
176
  ### Notification Badge
@@ -177,15 +179,11 @@ const categories = [
177
179
  import { BellIcon } from "@phosphor-icons/react";
178
180
 
179
181
  <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>
182
+ <BellIcon size={24} />
183
+ <Tag size="small" theme="danger" className="absolute -top-2 -right-2 min-w-[20px] h-5 text-xs">
184
+ 3
185
+ </Tag>
186
+ </div>;
189
187
  ```
190
188
 
191
189
  ## Do
@@ -22,20 +22,20 @@ import { Checkbox } from "@g4rcez/components/checkbox";
22
22
 
23
23
  Accepts all standard HTML `<fieldset>` attributes.
24
24
 
25
- | Prop | Type | Default | Description |
26
- |------|------|---------|-------------|
27
- | `children` | `React.ReactNode` | — | `Checkbox` components with the `asTask` prop. |
28
- | `className` | `string` | — | Additional CSS classes for the `<fieldset>`. |
25
+ | Prop | Type | Default | Description |
26
+ | ----------- | ----------------- | ------- | --------------------------------------------- |
27
+ | `children` | `React.ReactNode` | — | `Checkbox` components with the `asTask` prop. |
28
+ | `className` | `string` | — | Additional CSS classes for the `<fieldset>`. |
29
29
 
30
30
  ## Design Tokens
31
31
 
32
32
  `TaskList` itself is a plain `<fieldset>` and inherits ambient tokens from its children. No component-scoped tokens are consumed directly. Style the container using semantic tokens:
33
33
 
34
- | Token | CSS Variable | Purpose |
35
- |-------|-------------|---------|
36
- | `border-border` | `--border` | Optional border around the task group |
37
- | `bg-background` | `--background` | Container background |
38
- | `text-foreground` | `--foreground` | Task label text |
34
+ | Token | CSS Variable | Purpose |
35
+ | ----------------- | -------------- | ------------------------------------- |
36
+ | `border-border` | `--border` | Optional border around the task group |
37
+ | `bg-background` | `--background` | Container background |
38
+ | `text-foreground` | `--foreground` | Task label text |
39
39
 
40
40
  ## Examples
41
41
 
@@ -46,13 +46,13 @@ import { TaskList } from "@g4rcez/components/task-list";
46
46
  import { Checkbox } from "@g4rcez/components/checkbox";
47
47
 
48
48
  export default function OnboardingChecklist() {
49
- return (
50
- <TaskList className="flex flex-col gap-sm border border-border rounded-card p-4">
51
- <Checkbox asTask>Complete initial setup</Checkbox>
52
- <Checkbox asTask>Upload profile picture</Checkbox>
53
- <Checkbox asTask>Verify email address</Checkbox>
54
- </TaskList>
55
- );
49
+ return (
50
+ <TaskList className="flex flex-col gap-sm border border-border rounded-card p-4">
51
+ <Checkbox asTask>Complete initial setup</Checkbox>
52
+ <Checkbox asTask>Upload profile picture</Checkbox>
53
+ <Checkbox asTask>Verify email address</Checkbox>
54
+ </TaskList>
55
+ );
56
56
  }
57
57
  ```
58
58
 
@@ -66,27 +66,19 @@ import { Checkbox } from "@g4rcez/components/checkbox";
66
66
  type Task = { id: string; text: string; done: boolean };
67
67
 
68
68
  export default function DynamicTaskList({ tasks }: { tasks: Task[] }) {
69
- const [items, setItems] = useState(tasks);
70
-
71
- const toggle = (id: string) =>
72
- setItems((prev) =>
73
- prev.map((t) => (t.id === id ? { ...t, done: !t.done } : t))
69
+ const [items, setItems] = useState(tasks);
70
+
71
+ const toggle = (id: string) => setItems((prev) => prev.map((t) => (t.id === id ? { ...t, done: !t.done } : t)));
72
+
73
+ return (
74
+ <TaskList className="flex flex-col gap-sm">
75
+ {items.map((task) => (
76
+ <Checkbox key={task.id} asTask checked={task.done} onChange={() => toggle(task.id)}>
77
+ {task.text}
78
+ </Checkbox>
79
+ ))}
80
+ </TaskList>
74
81
  );
75
-
76
- return (
77
- <TaskList className="flex flex-col gap-sm">
78
- {items.map((task) => (
79
- <Checkbox
80
- key={task.id}
81
- asTask
82
- checked={task.done}
83
- onChange={() => toggle(task.id)}
84
- >
85
- {task.text}
86
- </Checkbox>
87
- ))}
88
- </TaskList>
89
- );
90
82
  }
91
83
  ```
92
84
 
@@ -97,16 +89,14 @@ import { TaskList } from "@g4rcez/components/task-list";
97
89
  import { Checkbox } from "@g4rcez/components/checkbox";
98
90
 
99
91
  export default function ProjectSubtasks() {
100
- return (
101
- <TaskList className="flex flex-col gap-sm rounded-card border border-border p-4">
102
- <legend className="px-1 text-sm font-medium text-foreground">
103
- Phase 1 — Design
104
- </legend>
105
- <Checkbox asTask>Create wireframes</Checkbox>
106
- <Checkbox asTask>Review with stakeholders</Checkbox>
107
- <Checkbox asTask>Export design tokens</Checkbox>
108
- </TaskList>
109
- );
92
+ return (
93
+ <TaskList className="flex flex-col gap-sm rounded-card border border-border p-4">
94
+ <legend className="px-1 text-sm font-medium text-foreground">Phase 1 — Design</legend>
95
+ <Checkbox asTask>Create wireframes</Checkbox>
96
+ <Checkbox asTask>Review with stakeholders</Checkbox>
97
+ <Checkbox asTask>Export design tokens</Checkbox>
98
+ </TaskList>
99
+ );
110
100
  }
111
101
  ```
112
102
 
@@ -132,10 +122,10 @@ export default function ProjectSubtasks() {
132
122
 
133
123
  ## Data Attributes
134
124
 
135
- | Attribute | Element | Value | Description |
136
- |-----------|---------|-------|-------------|
137
- | `data-component` | `fieldset` | `"task-list"` | Identifies the component. |
138
- | `data-task` | child `input` | `"true"` | Must be present on child checkbox inputs for them to be counted in the completion check. Set automatically via `asTask`. |
125
+ | Attribute | Element | Value | Description |
126
+ | ---------------- | ------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------ |
127
+ | `data-component` | `fieldset` | `"task-list"` | Identifies the component. |
128
+ | `data-task` | child `input` | `"true"` | Must be present on child checkbox inputs for them to be counted in the completion check. Set automatically via `asTask`. |
139
129
 
140
130
  ## Notes
141
131