@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
@@ -19,19 +19,19 @@ import { Tooltip } from "@g4rcez/components/tooltip";
19
19
 
20
20
  ## Props
21
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 |
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
35
 
36
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
37
 
@@ -39,14 +39,14 @@ import { Tooltip } from "@g4rcez/components/tooltip";
39
39
 
40
40
  Tokens this component reads. Customize by overriding these CSS variables in your theme.
41
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 |
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
50
 
51
51
  ## Placement Options
52
52
 
@@ -60,8 +60,8 @@ Supports all Floating UI placements: `"top"`, `"top-start"`, `"top-end"`, `"bott
60
60
  import { Tooltip } from "@g4rcez/components/tooltip";
61
61
 
62
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>
63
+ This is a helpful tooltip
64
+ </Tooltip>;
65
65
  ```
66
66
 
67
67
  ### Icon Button with Label
@@ -71,9 +71,15 @@ import { FloppyDiskIcon } from "@phosphor-icons/react";
71
71
  import { Tooltip } from "@g4rcez/components/tooltip";
72
72
  import { Button } from "@g4rcez/components/button";
73
73
 
74
- <Tooltip title={<Button size="icon" theme="ghost-neutral"><FloppyDiskIcon size={16} /></Button>}>
75
- Save (Ctrl+S)
76
- </Tooltip>
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>;
77
83
  ```
78
84
 
79
85
  ### Interaction Modes
@@ -81,32 +87,30 @@ import { Button } from "@g4rcez/components/button";
81
87
  ```tsx
82
88
  import { Tooltip } from "@g4rcez/components/tooltip";
83
89
 
84
- {/* Hover only */}
85
- <Tooltip
86
- title={<button className="px-4 py-2 rounded-button border border-border text-foreground">Hover Only</button>}
87
- focus={false}
88
- popover={false}
89
- >
90
- Shown on hover
91
- </Tooltip>
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>;
92
96
 
93
- {/* Focus only — keyboard accessible */}
97
+ {
98
+ /* Focus only — keyboard accessible */
99
+ }
94
100
  <Tooltip
95
- title={<input placeholder="Focus me with tab" className="px-3 py-2 rounded-button border border-border bg-background text-foreground" />}
96
- hover={false}
97
- popover={false}
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}
98
104
  >
99
- Shown on focus
100
- </Tooltip>
105
+ Shown on focus
106
+ </Tooltip>;
101
107
 
102
- {/* Click only — acts like a popover */}
103
- <Tooltip
104
- title={<button className="px-4 py-2 bg-primary text-primary-foreground rounded-button">Click me</button>}
105
- hover={false}
106
- focus={false}
107
- >
108
- Shown on click
109
- </Tooltip>
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>;
110
114
  ```
111
115
 
112
116
  ### Cursor-Following Tooltip
@@ -115,16 +119,16 @@ import { Tooltip } from "@g4rcez/components/tooltip";
115
119
  import { Tooltip } from "@g4rcez/components/tooltip";
116
120
 
117
121
  <Tooltip
118
- followCursor
119
- placement="top-start"
120
- title={
121
- <div className="w-full h-32 rounded-card border border-border bg-muted flex items-center justify-center">
122
- <span className="text-muted-foreground">Move your mouse over this area</span>
123
- </div>
124
- }
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
+ }
125
129
  >
126
- Follows your cursor
127
- </Tooltip>
130
+ Follows your cursor
131
+ </Tooltip>;
128
132
  ```
129
133
 
130
134
  ### Controlled Tooltip
@@ -134,31 +138,31 @@ import { useState } from "react";
134
138
  import { Tooltip } from "@g4rcez/components/tooltip";
135
139
 
136
140
  function ControlledTooltip() {
137
- const [isOpen, setIsOpen] = useState(false);
138
-
139
- return (
140
- <>
141
- <Tooltip
142
- title={<button className="px-4 py-2 rounded-button border border-border text-foreground">Target</button>}
143
- open={isOpen}
144
- onChange={setIsOpen}
145
- hover={false}
146
- focus={false}
147
- popover={false}
148
- >
149
- Externally controlled
150
- </Tooltip>
151
-
152
- <div className="mt-4 flex gap-2">
153
- <button onClick={() => setIsOpen(true)} className="px-3 py-1 bg-primary text-primary-foreground rounded-button text-sm">
154
- Show
155
- </button>
156
- <button onClick={() => setIsOpen(false)} className="px-3 py-1 bg-muted text-foreground rounded-button text-sm">
157
- Hide
158
- </button>
159
- </div>
160
- </>
161
- );
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
+ );
162
166
  }
163
167
  ```
164
168
 
@@ -167,21 +171,19 @@ function ControlledTooltip() {
167
171
  ```tsx
168
172
  import { Tooltip } from "@g4rcez/components/tooltip";
169
173
 
170
- {/* Render as <div> */}
171
- <Tooltip
172
- as="div"
173
- title={<span className="p-3 bg-muted rounded-button inline-block text-foreground">Div with tooltip</span>}
174
- >
175
- Tooltip on a div
176
- </Tooltip>
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>;
177
180
 
178
- {/* Wrap a paragraph */}
179
- <Tooltip
180
- as="p"
181
- title={<span className="text-primary cursor-pointer">Hover this paragraph</span>}
182
- >
183
- Paragraph tooltip
184
- </Tooltip>
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>;
185
187
  ```
186
188
 
187
189
  ### Form Field Help Tooltip
@@ -191,13 +193,11 @@ import { InfoIcon } from "@phosphor-icons/react";
191
193
  import { Tooltip } from "@g4rcez/components/tooltip";
192
194
 
193
195
  <label className="block text-sm font-medium text-foreground mb-1">
194
- Username
195
- <Tooltip
196
- title={<InfoIcon className="inline ml-1 text-muted-foreground cursor-help" size={14} />}
197
- >
198
- 3–20 characters; letters, numbers, and underscores only
199
- </Tooltip>
200
- </label>
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
201
  ```
202
202
 
203
203
  ## Do
@@ -14,13 +14,7 @@ A set of text and page-structure components for consistent typographic styling a
14
14
  ## Import
15
15
 
16
16
  ```tsx
17
- import {
18
- Paragraph,
19
- Description,
20
- Info,
21
- PageTitle,
22
- PageHeader,
23
- } from "@g4rcez/components";
17
+ import { Paragraph, Description, Info, PageTitle, PageHeader } from "@g4rcez/components";
24
18
  ```
25
19
 
26
20
  ## Props
@@ -29,66 +23,66 @@ import {
29
23
 
30
24
  Renders a `<p>` element with `text-base leading-snug`.
31
25
 
32
- | Prop | Type | Default | Description |
33
- |------|------|---------|-------------|
34
- | `children` | `React.ReactNode` | - | Paragraph content |
35
- | `className` | `string` | - | Additional CSS classes |
36
- | `...props` | `React.ComponentProps<"p">` | - | All standard `<p>` attributes |
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 |
37
31
 
38
32
  ### Description
39
33
 
40
34
  Renders a `<p>` element with `text-sm text-secondary mb-kilo`.
41
35
 
42
- | Prop | Type | Default | Description |
43
- |------|------|---------|-------------|
44
- | `children` | `React.ReactNode` | - | Description content |
45
- | `className` | `string` | - | Additional CSS classes |
46
- | `...props` | `React.ComponentProps<"p">` | - | All standard `<p>` attributes |
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 |
47
41
 
48
42
  ### Info
49
43
 
50
44
  Renders a labeled key-value pair in a flex container.
51
45
 
52
- | Prop | Type | Default | Description |
53
- |------|------|---------|-------------|
54
- | `label` | `Label` | - | The label text (required) |
55
- | `children` | `React.ReactNode` | - | The value content |
56
- | `row` | `boolean` | `false` | Renders label and value side-by-side instead of stacked |
57
- | `disabled` | `Label` | - | When set, applies `text-disabled` to the value |
58
- | `className` | `string` | - | Additional classes for the container |
59
- | `info` | `Label` | - | Reserved field (available in type, not currently rendered) |
60
- | `infoDescription` | `string` | - | Reserved field (available in type, not currently rendered) |
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) |
61
55
 
62
56
  ### PageTitle
63
57
 
64
58
  Renders an `<h2>` title with a paragraph subtitle.
65
59
 
66
- | Prop | Type | Default | Description |
67
- |------|------|---------|-------------|
68
- | `title` | `string` | - | Main title text (required) |
69
- | `children` | `React.ReactNode` | - | Subtitle or description beneath the title |
60
+ | Prop | Type | Default | Description |
61
+ | ---------- | ----------------- | ------- | ----------------------------------------- |
62
+ | `title` | `string` | - | Main title text (required) |
63
+ | `children` | `React.ReactNode` | - | Subtitle or description beneath the title |
70
64
 
71
65
  ### PageHeader
72
66
 
73
67
  Renders a `<header>` element with title/description on the left and action slots on the right.
74
68
 
75
- | Prop | Type | Default | Description |
76
- |------|------|---------|-------------|
77
- | `title` | `string` | - | Page title (required) |
78
- | `description` | `Label` | - | Short description beneath the title (required) |
79
- | `children` | `React.ReactNode` | - | Action buttons or other right-aligned content |
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 |
80
74
 
81
75
  ## Design Tokens
82
76
 
83
77
  Tokens these components read. Customize by overriding these CSS variables in your theme.
84
78
 
85
- | Token | CSS Variable | Purpose |
86
- |-------|-------------|---------|
87
- | `text-secondary` | `--secondary` | Description and subtitle text color |
88
- | `text-disabled` | `--disabled` | Disabled value text in `Info` |
89
- | `mb-kilo` | `--spacing-kilo` | Bottom margin on `Description` |
90
- | `gap-mega` | `--spacing-mega` | Gap in `PageHeader` between sections |
91
- | `gap-kilo` | `--spacing-kilo` | Gap between action items in `PageHeader` |
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` |
92
86
 
93
87
  ## Examples
94
88
 
@@ -98,17 +92,17 @@ Tokens these components read. Customize by overriding these CSS variables in you
98
92
  import { Button } from "@g4rcez/components/button";
99
93
 
100
94
  <PageHeader title="Orders" description="List of all orders from your shop">
101
- <Button size="small">Export CSV</Button>
102
- <Button theme="primary" size="small">Create Order</Button>
103
- </PageHeader>
95
+ <Button size="small">Export CSV</Button>
96
+ <Button theme="primary" size="small">
97
+ Create Order
98
+ </Button>
99
+ </PageHeader>;
104
100
  ```
105
101
 
106
102
  ### Standalone Page Title
107
103
 
108
104
  ```tsx
109
- <PageTitle title="Dashboard">
110
- Overview of your application metrics
111
- </PageTitle>
105
+ <PageTitle title="Dashboard">Overview of your application metrics</PageTitle>
112
106
  ```
113
107
 
114
108
  ### Paragraph and Description
@@ -142,7 +136,7 @@ import { Button } from "@g4rcez/components/button";
142
136
 
143
137
  ```tsx
144
138
  <Info label="API Key" disabled="true">
145
- sk-••••••••••••••••
139
+ sk-••••••••••••••••
146
140
  </Info>
147
141
  ```
148
142
 
@@ -150,12 +144,18 @@ import { Button } from "@g4rcez/components/button";
150
144
 
151
145
  ```tsx
152
146
  <div className="flex flex-col gap-base rounded-card border border-border bg-card-background p-4">
153
- <PageTitle title="John Doe">Software Engineer</PageTitle>
154
- <div className="flex flex-col gap-sm">
155
- <Info label="Email" row>john@example.com</Info>
156
- <Info label="Team" row>Platform</Info>
157
- <Info label="Joined" row>March 2024</Info>
158
- </div>
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
159
  </div>
160
160
  ```
161
161