@tribepad/themis 1.0.0 → 1.0.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 (326) hide show
  1. package/dist/elements/Accordion/index.js +325 -66
  2. package/dist/elements/Accordion/index.js.map +1 -1
  3. package/dist/elements/Accordion/index.mjs +317 -3
  4. package/dist/elements/Accordion/index.mjs.map +1 -1
  5. package/dist/elements/Avatar/index.js +461 -45
  6. package/dist/elements/Avatar/index.js.map +1 -1
  7. package/dist/elements/Avatar/index.mjs +456 -3
  8. package/dist/elements/Avatar/index.mjs.map +1 -1
  9. package/dist/elements/Badge/index.js +238 -36
  10. package/dist/elements/Badge/index.js.map +1 -1
  11. package/dist/elements/Badge/index.mjs +234 -4
  12. package/dist/elements/Badge/index.mjs.map +1 -1
  13. package/dist/elements/Breadcrumbs/index.js +808 -39
  14. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  15. package/dist/elements/Breadcrumbs/index.mjs +810 -7
  16. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  17. package/dist/elements/Button/index.js +282 -19
  18. package/dist/elements/Button/index.js.map +1 -1
  19. package/dist/elements/Button/index.mjs +283 -4
  20. package/dist/elements/Button/index.mjs.map +1 -1
  21. package/dist/elements/ButtonGroup/index.js +229 -56
  22. package/dist/elements/ButtonGroup/index.js.map +1 -1
  23. package/dist/elements/ButtonGroup/index.mjs +222 -3
  24. package/dist/elements/ButtonGroup/index.mjs.map +1 -1
  25. package/dist/elements/Card/Card.d.ts.map +1 -1
  26. package/dist/elements/Card/index.js +563 -67
  27. package/dist/elements/Card/index.js.map +1 -1
  28. package/dist/elements/Card/index.mjs +560 -6
  29. package/dist/elements/Card/index.mjs.map +1 -1
  30. package/dist/elements/Carousel/index.js +782 -14
  31. package/dist/elements/Carousel/index.js.map +1 -1
  32. package/dist/elements/Carousel/index.mjs +786 -8
  33. package/dist/elements/Carousel/index.mjs.map +1 -1
  34. package/dist/elements/Chart/index.js +1833 -36
  35. package/dist/elements/Chart/index.js.map +1 -1
  36. package/dist/elements/Chart/index.mjs +1832 -4
  37. package/dist/elements/Chart/index.mjs.map +1 -1
  38. package/dist/elements/Checkbox/index.js +310 -39
  39. package/dist/elements/Checkbox/index.js.map +1 -1
  40. package/dist/elements/Checkbox/index.mjs +306 -4
  41. package/dist/elements/Checkbox/index.mjs.map +1 -1
  42. package/dist/elements/CheckboxGroup/index.js +445 -59
  43. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  44. package/dist/elements/CheckboxGroup/index.mjs +439 -4
  45. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  46. package/dist/elements/DatePicker/index.js +871 -89
  47. package/dist/elements/DatePicker/index.js.map +1 -1
  48. package/dist/elements/DatePicker/index.mjs +853 -4
  49. package/dist/elements/DatePicker/index.mjs.map +1 -1
  50. package/dist/elements/Dropdown/index.js +189 -35
  51. package/dist/elements/Dropdown/index.js.map +1 -1
  52. package/dist/elements/Dropdown/index.mjs +184 -2
  53. package/dist/elements/Dropdown/index.mjs.map +1 -1
  54. package/dist/elements/FileField/index.js +1532 -129
  55. package/dist/elements/FileField/index.js.map +1 -1
  56. package/dist/elements/FileField/index.mjs +1507 -7
  57. package/dist/elements/FileField/index.mjs.map +1 -1
  58. package/dist/elements/FormLayout/index.js +166 -11
  59. package/dist/elements/FormLayout/index.js.map +1 -1
  60. package/dist/elements/FormLayout/index.mjs +167 -2
  61. package/dist/elements/FormLayout/index.mjs.map +1 -1
  62. package/dist/elements/Modal/index.js +228 -46
  63. package/dist/elements/Modal/index.js.map +1 -1
  64. package/dist/elements/Modal/index.mjs +220 -1
  65. package/dist/elements/Modal/index.mjs.map +1 -1
  66. package/dist/elements/NumberField/index.js +659 -48
  67. package/dist/elements/NumberField/index.js.map +1 -1
  68. package/dist/elements/NumberField/index.mjs +654 -6
  69. package/dist/elements/NumberField/index.mjs.map +1 -1
  70. package/dist/elements/OTPInput/index.js +729 -6
  71. package/dist/elements/OTPInput/index.js.map +1 -1
  72. package/dist/elements/OTPInput/index.mjs +732 -2
  73. package/dist/elements/OTPInput/index.mjs.map +1 -1
  74. package/dist/elements/Panel/index.js +326 -27
  75. package/dist/elements/Panel/index.js.map +1 -1
  76. package/dist/elements/Panel/index.mjs +323 -2
  77. package/dist/elements/Panel/index.mjs.map +1 -1
  78. package/dist/elements/Progress/index.js +181 -22
  79. package/dist/elements/Progress/index.js.map +1 -1
  80. package/dist/elements/Progress/index.mjs +181 -3
  81. package/dist/elements/Progress/index.mjs.map +1 -1
  82. package/dist/elements/RadioGroup/index.js +358 -34
  83. package/dist/elements/RadioGroup/index.js.map +1 -1
  84. package/dist/elements/RadioGroup/index.mjs +359 -4
  85. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  86. package/dist/elements/Resizable/components/ResizableHandle.d.ts +0 -8
  87. package/dist/elements/Resizable/components/ResizableHandle.d.ts.map +1 -1
  88. package/dist/elements/Resizable/components/ResizablePanel.d.ts +0 -8
  89. package/dist/elements/Resizable/components/ResizablePanel.d.ts.map +1 -1
  90. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts +0 -8
  91. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts.map +1 -1
  92. package/dist/elements/Resizable/components/ResizablePopover.d.ts +0 -8
  93. package/dist/elements/Resizable/components/ResizablePopover.d.ts.map +1 -1
  94. package/dist/elements/Resizable/index.js +1568 -51
  95. package/dist/elements/Resizable/index.js.map +1 -1
  96. package/dist/elements/Resizable/index.mjs +1566 -6
  97. package/dist/elements/Resizable/index.mjs.map +1 -1
  98. package/dist/elements/Select/index.js +580 -22
  99. package/dist/elements/Select/index.js.map +1 -1
  100. package/dist/elements/Select/index.mjs +582 -2
  101. package/dist/elements/Select/index.mjs.map +1 -1
  102. package/dist/elements/Skeleton/index.js +77 -15
  103. package/dist/elements/Skeleton/index.js.map +1 -1
  104. package/dist/elements/Skeleton/index.mjs +78 -3
  105. package/dist/elements/Skeleton/index.mjs.map +1 -1
  106. package/dist/elements/Switch/index.js +153 -21
  107. package/dist/elements/Switch/index.js.map +1 -1
  108. package/dist/elements/Switch/index.mjs +149 -5
  109. package/dist/elements/Switch/index.mjs.map +1 -1
  110. package/dist/elements/Table/index.js +589 -68
  111. package/dist/elements/Table/index.js.map +1 -1
  112. package/dist/elements/Table/index.mjs +578 -5
  113. package/dist/elements/Table/index.mjs.map +1 -1
  114. package/dist/elements/Tabs/index.js +328 -63
  115. package/dist/elements/Tabs/index.js.map +1 -1
  116. package/dist/elements/Tabs/index.mjs +320 -3
  117. package/dist/elements/Tabs/index.mjs.map +1 -1
  118. package/dist/elements/TextField/index.js +695 -51
  119. package/dist/elements/TextField/index.js.map +1 -1
  120. package/dist/elements/TextField/index.mjs +684 -7
  121. package/dist/elements/TextField/index.mjs.map +1 -1
  122. package/dist/elements/TimeField/index.js +244 -33
  123. package/dist/elements/TimeField/index.js.map +1 -1
  124. package/dist/elements/TimeField/index.mjs +238 -2
  125. package/dist/elements/TimeField/index.mjs.map +1 -1
  126. package/dist/elements/Toast/index.js +727 -48
  127. package/dist/elements/Toast/index.js.map +1 -1
  128. package/dist/elements/Toast/index.mjs +724 -5
  129. package/dist/elements/Toast/index.mjs.map +1 -1
  130. package/dist/elements/Tooltip/index.js +315 -49
  131. package/dist/elements/Tooltip/index.js.map +1 -1
  132. package/dist/elements/Tooltip/index.mjs +310 -4
  133. package/dist/elements/Tooltip/index.mjs.map +1 -1
  134. package/dist/elements/index.js +12417 -799
  135. package/dist/elements/index.js.map +1 -1
  136. package/dist/elements/index.mjs +12233 -40
  137. package/dist/elements/index.mjs.map +1 -1
  138. package/dist/index.js +12452 -825
  139. package/dist/index.js.map +1 -1
  140. package/dist/index.mjs +12262 -42
  141. package/dist/index.mjs.map +1 -1
  142. package/dist/schemas/index.js +47 -21
  143. package/dist/schemas/index.js.map +1 -1
  144. package/dist/schemas/index.mjs +47 -2
  145. package/dist/schemas/index.mjs.map +1 -1
  146. package/dist/styles/index.js +161 -147
  147. package/dist/styles/index.js.map +1 -1
  148. package/dist/styles/index.mjs +128 -2
  149. package/dist/styles/index.mjs.map +1 -1
  150. package/dist/utils/index.js +7 -7
  151. package/dist/utils/index.js.map +1 -1
  152. package/dist/utils/index.mjs +9 -2
  153. package/dist/utils/index.mjs.map +1 -1
  154. package/package.json +1 -1
  155. package/dist/Carousel-NTZX5TOW.js +0 -16
  156. package/dist/Carousel-NTZX5TOW.js.map +0 -1
  157. package/dist/Carousel-YH3DOQJU.mjs +0 -7
  158. package/dist/Carousel-YH3DOQJU.mjs.map +0 -1
  159. package/dist/chunk-2HIUTHMU.mjs +0 -234
  160. package/dist/chunk-2HIUTHMU.mjs.map +0 -1
  161. package/dist/chunk-34GTFTDO.js +0 -431
  162. package/dist/chunk-34GTFTDO.js.map +0 -1
  163. package/dist/chunk-3H7ASYR7.js +0 -250
  164. package/dist/chunk-3H7ASYR7.js.map +0 -1
  165. package/dist/chunk-3IEN7JOP.js +0 -316
  166. package/dist/chunk-3IEN7JOP.js.map +0 -1
  167. package/dist/chunk-3JHN4GAL.js +0 -326
  168. package/dist/chunk-3JHN4GAL.js.map +0 -1
  169. package/dist/chunk-3MJPASQU.js +0 -232
  170. package/dist/chunk-3MJPASQU.js.map +0 -1
  171. package/dist/chunk-3XD2JUL3.js +0 -572
  172. package/dist/chunk-3XD2JUL3.js.map +0 -1
  173. package/dist/chunk-3YOY2VJ6.js +0 -189
  174. package/dist/chunk-3YOY2VJ6.js.map +0 -1
  175. package/dist/chunk-4DU5JSXB.js +0 -408
  176. package/dist/chunk-4DU5JSXB.js.map +0 -1
  177. package/dist/chunk-4E4E2GSS.js +0 -352
  178. package/dist/chunk-4E4E2GSS.js.map +0 -1
  179. package/dist/chunk-4NHAP4AN.mjs +0 -3
  180. package/dist/chunk-4NHAP4AN.mjs.map +0 -1
  181. package/dist/chunk-4S33J5NY.mjs +0 -415
  182. package/dist/chunk-4S33J5NY.mjs.map +0 -1
  183. package/dist/chunk-5SMGRT3G.mjs +0 -354
  184. package/dist/chunk-5SMGRT3G.mjs.map +0 -1
  185. package/dist/chunk-5SVLJN2C.mjs +0 -22
  186. package/dist/chunk-5SVLJN2C.mjs.map +0 -1
  187. package/dist/chunk-66WTU4EB.mjs +0 -299
  188. package/dist/chunk-66WTU4EB.mjs.map +0 -1
  189. package/dist/chunk-6S25NMOT.mjs +0 -335
  190. package/dist/chunk-6S25NMOT.mjs.map +0 -1
  191. package/dist/chunk-6SP7UB3D.js +0 -4
  192. package/dist/chunk-6SP7UB3D.js.map +0 -1
  193. package/dist/chunk-6TYWWQHM.mjs +0 -565
  194. package/dist/chunk-6TYWWQHM.mjs.map +0 -1
  195. package/dist/chunk-A3YUJA6W.mjs +0 -384
  196. package/dist/chunk-A3YUJA6W.mjs.map +0 -1
  197. package/dist/chunk-A6KEDVUR.js +0 -61
  198. package/dist/chunk-A6KEDVUR.js.map +0 -1
  199. package/dist/chunk-A77RUEWL.js +0 -730
  200. package/dist/chunk-A77RUEWL.js.map +0 -1
  201. package/dist/chunk-AA4IKMPE.mjs +0 -3
  202. package/dist/chunk-AA4IKMPE.mjs.map +0 -1
  203. package/dist/chunk-AKIA6GW6.mjs +0 -163
  204. package/dist/chunk-AKIA6GW6.mjs.map +0 -1
  205. package/dist/chunk-AL6P275L.mjs +0 -435
  206. package/dist/chunk-AL6P275L.mjs.map +0 -1
  207. package/dist/chunk-AZ3RJYTB.js +0 -37
  208. package/dist/chunk-AZ3RJYTB.js.map +0 -1
  209. package/dist/chunk-B5Q4UPL6.js +0 -32
  210. package/dist/chunk-B5Q4UPL6.js.map +0 -1
  211. package/dist/chunk-B6DHPMDP.mjs +0 -335
  212. package/dist/chunk-B6DHPMDP.mjs.map +0 -1
  213. package/dist/chunk-BDXKKMBZ.mjs +0 -184
  214. package/dist/chunk-BDXKKMBZ.mjs.map +0 -1
  215. package/dist/chunk-BL6E2DLZ.mjs +0 -52
  216. package/dist/chunk-BL6E2DLZ.mjs.map +0 -1
  217. package/dist/chunk-CGFDS4XS.mjs +0 -121
  218. package/dist/chunk-CGFDS4XS.mjs.map +0 -1
  219. package/dist/chunk-CJIW5TKI.js +0 -139
  220. package/dist/chunk-CJIW5TKI.js.map +0 -1
  221. package/dist/chunk-CKNISJOQ.js +0 -314
  222. package/dist/chunk-CKNISJOQ.js.map +0 -1
  223. package/dist/chunk-D6CBOECS.mjs +0 -1757
  224. package/dist/chunk-D6CBOECS.mjs.map +0 -1
  225. package/dist/chunk-DDWEVC2S.js +0 -166
  226. package/dist/chunk-DDWEVC2S.js.map +0 -1
  227. package/dist/chunk-DZ556D2F.mjs +0 -176
  228. package/dist/chunk-DZ556D2F.mjs.map +0 -1
  229. package/dist/chunk-E2KQFV3O.mjs +0 -10
  230. package/dist/chunk-E2KQFV3O.mjs.map +0 -1
  231. package/dist/chunk-EMMLADSC.js +0 -126
  232. package/dist/chunk-EMMLADSC.js.map +0 -1
  233. package/dist/chunk-EP4WOI5D.mjs +0 -926
  234. package/dist/chunk-EP4WOI5D.mjs.map +0 -1
  235. package/dist/chunk-FJRXLJC2.mjs +0 -160
  236. package/dist/chunk-FJRXLJC2.mjs.map +0 -1
  237. package/dist/chunk-FKQI434R.js +0 -345
  238. package/dist/chunk-FKQI434R.js.map +0 -1
  239. package/dist/chunk-FPKEAJRZ.mjs +0 -100
  240. package/dist/chunk-FPKEAJRZ.mjs.map +0 -1
  241. package/dist/chunk-FWQYB22U.js +0 -183
  242. package/dist/chunk-FWQYB22U.js.map +0 -1
  243. package/dist/chunk-GD5GHTMA.js +0 -189
  244. package/dist/chunk-GD5GHTMA.js.map +0 -1
  245. package/dist/chunk-GE5XTSDZ.js +0 -447
  246. package/dist/chunk-GE5XTSDZ.js.map +0 -1
  247. package/dist/chunk-GVE47ZAX.mjs +0 -32
  248. package/dist/chunk-GVE47ZAX.mjs.map +0 -1
  249. package/dist/chunk-HK46BT5U.mjs +0 -18
  250. package/dist/chunk-HK46BT5U.mjs.map +0 -1
  251. package/dist/chunk-HQVRMR6N.js +0 -365
  252. package/dist/chunk-HQVRMR6N.js.map +0 -1
  253. package/dist/chunk-HSGBJPJO.mjs +0 -398
  254. package/dist/chunk-HSGBJPJO.mjs.map +0 -1
  255. package/dist/chunk-I3AUTOMZ.mjs +0 -125
  256. package/dist/chunk-I3AUTOMZ.mjs.map +0 -1
  257. package/dist/chunk-IEI5LD5C.mjs +0 -1161
  258. package/dist/chunk-IEI5LD5C.mjs.map +0 -1
  259. package/dist/chunk-IIPTC2X7.mjs +0 -118
  260. package/dist/chunk-IIPTC2X7.mjs.map +0 -1
  261. package/dist/chunk-J7TLHF2Q.js +0 -4
  262. package/dist/chunk-J7TLHF2Q.js.map +0 -1
  263. package/dist/chunk-JJOWXFXQ.mjs +0 -765
  264. package/dist/chunk-JJOWXFXQ.mjs.map +0 -1
  265. package/dist/chunk-JPTSS2OA.mjs +0 -3
  266. package/dist/chunk-JPTSS2OA.mjs.map +0 -1
  267. package/dist/chunk-KFXXRLTP.js +0 -396
  268. package/dist/chunk-KFXXRLTP.js.map +0 -1
  269. package/dist/chunk-KPRRBSG6.mjs +0 -272
  270. package/dist/chunk-KPRRBSG6.mjs.map +0 -1
  271. package/dist/chunk-NFSBGRDB.mjs +0 -57
  272. package/dist/chunk-NFSBGRDB.mjs.map +0 -1
  273. package/dist/chunk-NGJVCFTM.js +0 -219
  274. package/dist/chunk-NGJVCFTM.js.map +0 -1
  275. package/dist/chunk-NSQ6MZJ6.mjs +0 -728
  276. package/dist/chunk-NSQ6MZJ6.mjs.map +0 -1
  277. package/dist/chunk-NYQYHT76.mjs +0 -296
  278. package/dist/chunk-NYQYHT76.mjs.map +0 -1
  279. package/dist/chunk-OLJJGI5B.js +0 -1193
  280. package/dist/chunk-OLJJGI5B.js.map +0 -1
  281. package/dist/chunk-Q3572X2J.js +0 -292
  282. package/dist/chunk-Q3572X2J.js.map +0 -1
  283. package/dist/chunk-QH7N7D4I.mjs +0 -210
  284. package/dist/chunk-QH7N7D4I.mjs.map +0 -1
  285. package/dist/chunk-R7XUIV25.js +0 -466
  286. package/dist/chunk-R7XUIV25.js.map +0 -1
  287. package/dist/chunk-RFFO4KPM.js +0 -135
  288. package/dist/chunk-RFFO4KPM.js.map +0 -1
  289. package/dist/chunk-RFX7QKA7.mjs +0 -180
  290. package/dist/chunk-RFX7QKA7.mjs.map +0 -1
  291. package/dist/chunk-SN5LFAP3.js +0 -940
  292. package/dist/chunk-SN5LFAP3.js.map +0 -1
  293. package/dist/chunk-T4COXKQ3.js +0 -24
  294. package/dist/chunk-T4COXKQ3.js.map +0 -1
  295. package/dist/chunk-TS54QM27.js +0 -125
  296. package/dist/chunk-TS54QM27.js.map +0 -1
  297. package/dist/chunk-UE2S4PCX.mjs +0 -220
  298. package/dist/chunk-UE2S4PCX.mjs.map +0 -1
  299. package/dist/chunk-UTW3QX2A.mjs +0 -282
  300. package/dist/chunk-UTW3QX2A.mjs.map +0 -1
  301. package/dist/chunk-V74LGMAE.js +0 -1767
  302. package/dist/chunk-V74LGMAE.js.map +0 -1
  303. package/dist/chunk-VIREG536.js +0 -12
  304. package/dist/chunk-VIREG536.js.map +0 -1
  305. package/dist/chunk-VY7M7346.js +0 -4
  306. package/dist/chunk-VY7M7346.js.map +0 -1
  307. package/dist/chunk-W3TJOO7H.mjs +0 -319
  308. package/dist/chunk-W3TJOO7H.mjs.map +0 -1
  309. package/dist/chunk-WIUOB36M.js +0 -54
  310. package/dist/chunk-WIUOB36M.js.map +0 -1
  311. package/dist/chunk-WJGLM4CY.js +0 -291
  312. package/dist/chunk-WJGLM4CY.js.map +0 -1
  313. package/dist/chunk-WNURH5OO.mjs +0 -453
  314. package/dist/chunk-WNURH5OO.mjs.map +0 -1
  315. package/dist/chunk-X25TNRSD.mjs +0 -364
  316. package/dist/chunk-X25TNRSD.mjs.map +0 -1
  317. package/dist/chunk-Y3GT7ETK.js +0 -108
  318. package/dist/chunk-Y3GT7ETK.js.map +0 -1
  319. package/dist/chunk-Z4FRNOF6.mjs +0 -115
  320. package/dist/chunk-Z4FRNOF6.mjs.map +0 -1
  321. package/dist/chunk-ZMYLD3BN.js +0 -166
  322. package/dist/chunk-ZMYLD3BN.js.map +0 -1
  323. package/dist/chunk-ZP2KV6EX.js +0 -815
  324. package/dist/chunk-ZP2KV6EX.js.map +0 -1
  325. package/dist/chunk-ZVKXFELU.js +0 -366
  326. package/dist/chunk-ZVKXFELU.js.map +0 -1
@@ -1,6 +1,312 @@
1
- export { TooltipArrowPropsSchema, TooltipContentPropsSchema, TooltipPropsSchema, TooltipSideSchema, TooltipTriggerModeSchema, TooltipTriggerPropsSchema } from '../../chunk-IIPTC2X7.mjs';
2
- export { Tooltip, TooltipArrow, TooltipContent, TooltipTrigger, tooltipArrowVariants, tooltipContentVariants } from '../../chunk-DZ556D2F.mjs';
3
- import '../../chunk-E2KQFV3O.mjs';
4
- import '../../chunk-5SVLJN2C.mjs';
1
+ "use client";
2
+ import { TooltipTrigger as TooltipTrigger$1, Tooltip as Tooltip$1, OverlayArrow, composeRenderProps } from 'react-aria-components';
3
+ import { cva } from 'class-variance-authority';
4
+ import { clsx } from 'clsx';
5
+ import { twMerge } from 'tailwind-merge';
6
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
7
+ import { z } from 'zod';
8
+
9
+ // src/elements/Tooltip/Tooltip.tsx
10
+ function cn(...inputs) {
11
+ return twMerge(clsx(inputs));
12
+ }
13
+ var tooltipContentVariants = cva(
14
+ // Base styles
15
+ [
16
+ "z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md",
17
+ // Inverted colors for high contrast (7:1 ratio)
18
+ "bg-[var(--content-foreground)] text-[var(--content-background)]",
19
+ // Entry animation base
20
+ "animate-in fade-in-0",
21
+ // Exit animation
22
+ "data-[exiting]:animate-out data-[exiting]:fade-out-0"
23
+ ],
24
+ {
25
+ variants: {
26
+ side: {
27
+ top: [
28
+ "motion-safe:slide-in-from-bottom-2",
29
+ "data-[exiting]:motion-safe:slide-out-to-bottom-2"
30
+ ],
31
+ bottom: [
32
+ "motion-safe:slide-in-from-top-2",
33
+ "data-[exiting]:motion-safe:slide-out-to-top-2"
34
+ ],
35
+ left: [
36
+ "motion-safe:slide-in-from-right-2",
37
+ "data-[exiting]:motion-safe:slide-out-to-right-2"
38
+ ],
39
+ right: [
40
+ "motion-safe:slide-in-from-left-2",
41
+ "data-[exiting]:motion-safe:slide-out-to-left-2"
42
+ ]
43
+ }
44
+ },
45
+ defaultVariants: {
46
+ side: "top"
47
+ }
48
+ }
49
+ );
50
+ var tooltipArrowVariants = cva(
51
+ // Base arrow styles
52
+ "fill-[var(--content-foreground)]",
53
+ {
54
+ variants: {
55
+ side: {
56
+ top: "rotate-180",
57
+ bottom: "rotate-0",
58
+ left: "rotate-90",
59
+ right: "-rotate-90"
60
+ }
61
+ },
62
+ defaultVariants: {
63
+ side: "top"
64
+ }
65
+ }
66
+ );
67
+ function placementToSide(placement) {
68
+ if (!placement) return "top";
69
+ const basePlacement = placement.split(" ")[0];
70
+ if (basePlacement === "top" || basePlacement === "bottom" || basePlacement === "left" || basePlacement === "right") {
71
+ return basePlacement;
72
+ }
73
+ return "top";
74
+ }
75
+ function TooltipRoot({
76
+ children,
77
+ delay = 700,
78
+ closeDelay = 300,
79
+ trigger = "hover",
80
+ isOpen,
81
+ defaultOpen = false,
82
+ onOpenChange,
83
+ isDisabled = false
84
+ }) {
85
+ const effectiveDelay = trigger === "focus" ? 99999999 : delay;
86
+ return /* @__PURE__ */ jsx(
87
+ TooltipTrigger$1,
88
+ {
89
+ delay: effectiveDelay,
90
+ closeDelay,
91
+ isOpen,
92
+ defaultOpen,
93
+ onOpenChange,
94
+ isDisabled,
95
+ children
96
+ }
97
+ );
98
+ }
99
+ TooltipRoot.displayName = "Tooltip";
100
+ function TooltipTriggerComponent({
101
+ children
102
+ }) {
103
+ return children;
104
+ }
105
+ TooltipTriggerComponent.displayName = "TooltipTrigger";
106
+ function TooltipContentComponent({
107
+ children,
108
+ side = "top",
109
+ sideOffset = 4,
110
+ alignOffset = 0,
111
+ shouldFlip = true,
112
+ showArrow = false,
113
+ arrowSize = 8,
114
+ className,
115
+ ...restProps
116
+ }) {
117
+ return /* @__PURE__ */ jsx(
118
+ Tooltip$1,
119
+ {
120
+ placement: side,
121
+ offset: sideOffset,
122
+ crossOffset: alignOffset,
123
+ shouldFlip,
124
+ ...restProps,
125
+ className: composeRenderProps(className, (className2, renderProps) => {
126
+ const actualSide = placementToSide(renderProps.placement);
127
+ return cn(
128
+ tooltipContentVariants({ side: actualSide }),
129
+ className2
130
+ );
131
+ }),
132
+ children: (renderProps) => {
133
+ const actualSide = placementToSide(renderProps.placement);
134
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
135
+ showArrow && /* @__PURE__ */ jsx(OverlayArrow, { children: /* @__PURE__ */ jsx(
136
+ "svg",
137
+ {
138
+ width: arrowSize,
139
+ height: arrowSize,
140
+ viewBox: "0 0 8 8",
141
+ className: tooltipArrowVariants({ side: actualSide }),
142
+ "data-testid": "tooltip-arrow",
143
+ children: /* @__PURE__ */ jsx("path", { d: "M0 0 L4 4 L8 0" })
144
+ }
145
+ ) }),
146
+ children
147
+ ] });
148
+ }
149
+ }
150
+ );
151
+ }
152
+ TooltipContentComponent.displayName = "TooltipContent";
153
+ function TooltipArrowComponent({
154
+ size = 8,
155
+ className,
156
+ "data-testid": dataTestId = "tooltip-arrow",
157
+ ...restProps
158
+ }) {
159
+ return /* @__PURE__ */ jsx(OverlayArrow, { children: ({ placement }) => {
160
+ const side = placementToSide(placement);
161
+ return /* @__PURE__ */ jsx(
162
+ "svg",
163
+ {
164
+ width: size,
165
+ height: size,
166
+ viewBox: "0 0 8 8",
167
+ className: cn(tooltipArrowVariants({ side }), className),
168
+ "data-testid": dataTestId,
169
+ ...restProps,
170
+ children: /* @__PURE__ */ jsx("path", { d: "M0 0 L4 4 L8 0" })
171
+ }
172
+ );
173
+ } });
174
+ }
175
+ TooltipArrowComponent.displayName = "TooltipArrow";
176
+ var Tooltip = TooltipRoot;
177
+ var TooltipTrigger = TooltipTriggerComponent;
178
+ var TooltipContent = TooltipContentComponent;
179
+ var TooltipArrow = TooltipArrowComponent;
180
+ var BaseComponentPropsSchema = z.object({
181
+ // Styling
182
+ className: z.string().optional(),
183
+ // React
184
+ children: z.any().optional(),
185
+ // ReactNode not directly supported by Zod
186
+ id: z.string().optional(),
187
+ // Accessibility (WCAG 2.2 AA requirements)
188
+ "aria-label": z.string().optional(),
189
+ "aria-labelledby": z.string().optional(),
190
+ "aria-describedby": z.string().optional(),
191
+ "aria-live": z.enum(["off", "polite", "assertive"]).optional(),
192
+ "aria-hidden": z.boolean().optional(),
193
+ // Testing & Development
194
+ "data-testid": z.string().optional()
195
+ });
196
+
197
+ // src/elements/Tooltip/Tooltip.types.ts
198
+ var TooltipSideSchema = z.enum(["top", "bottom", "left", "right"]);
199
+ var TooltipTriggerModeSchema = z.enum(["hover", "focus"]);
200
+ var TooltipPropsSchema = BaseComponentPropsSchema.extend({
201
+ /**
202
+ * Show delay in milliseconds
203
+ * Time to wait before showing tooltip on hover
204
+ * @default 700
205
+ */
206
+ delay: z.number().min(0).optional().default(700),
207
+ /**
208
+ * Hide delay in milliseconds
209
+ * Time to wait before hiding tooltip after mouse leave
210
+ * @default 300
211
+ */
212
+ closeDelay: z.number().min(0).optional().default(300),
213
+ /**
214
+ * Trigger mode
215
+ * - 'hover': Show on hover and focus (default)
216
+ * - 'focus': Show only on keyboard focus (no hover)
217
+ * @default 'hover'
218
+ */
219
+ trigger: TooltipTriggerModeSchema.optional().default("hover"),
220
+ /**
221
+ * Controlled open state
222
+ * When provided, tooltip becomes controlled
223
+ */
224
+ isOpen: z.boolean().optional(),
225
+ /**
226
+ * Default open state for uncontrolled mode
227
+ * @default false
228
+ */
229
+ defaultOpen: z.boolean().optional().default(false),
230
+ /**
231
+ * Callback when open state changes
232
+ * Called with new isOpen value
233
+ */
234
+ onOpenChange: z.custom().optional(),
235
+ /**
236
+ * Disable tooltip without affecting trigger element
237
+ * @default false
238
+ */
239
+ isDisabled: z.boolean().optional().default(false),
240
+ /**
241
+ * Children must include TooltipTrigger and TooltipContent
242
+ */
243
+ children: z.custom()
244
+ });
245
+ var TooltipTriggerPropsSchema = BaseComponentPropsSchema.extend({
246
+ /**
247
+ * Render as child element instead of wrapping
248
+ * When true, merges props into the child element
249
+ * @default false
250
+ */
251
+ asChild: z.boolean().optional().default(false),
252
+ /**
253
+ * Single child element that triggers the tooltip
254
+ * Must be focusable for keyboard accessibility
255
+ */
256
+ children: z.custom()
257
+ });
258
+ var TooltipContentPropsSchema = BaseComponentPropsSchema.extend({
259
+ /**
260
+ * Placement relative to trigger element
261
+ * @default 'top'
262
+ */
263
+ side: TooltipSideSchema.optional().default("top"),
264
+ /**
265
+ * Offset from trigger in pixels (main axis)
266
+ * @default 4
267
+ */
268
+ sideOffset: z.number().optional().default(4),
269
+ /**
270
+ * Cross-axis offset in pixels
271
+ * @default 0
272
+ */
273
+ alignOffset: z.number().optional().default(0),
274
+ /**
275
+ * Automatically flip placement when constrained by viewport
276
+ * @default true
277
+ */
278
+ shouldFlip: z.boolean().optional().default(true),
279
+ /**
280
+ * Show arrow pointing to trigger element
281
+ * @default false
282
+ */
283
+ showArrow: z.boolean().optional().default(false),
284
+ /**
285
+ * Arrow size in pixels
286
+ * @default 8
287
+ */
288
+ arrowSize: z.number().min(0).optional().default(8),
289
+ /**
290
+ * Custom className for styling
291
+ */
292
+ className: z.string().optional(),
293
+ /**
294
+ * Tooltip content (typically text)
295
+ */
296
+ children: z.custom()
297
+ });
298
+ var TooltipArrowPropsSchema = z.object({
299
+ /**
300
+ * Arrow size in pixels
301
+ * @default 8
302
+ */
303
+ size: z.number().min(0).optional().default(8),
304
+ /**
305
+ * Custom className for styling
306
+ */
307
+ className: z.string().optional()
308
+ });
309
+
310
+ export { Tooltip, TooltipArrow, TooltipArrowPropsSchema, TooltipContent, TooltipContentPropsSchema, TooltipPropsSchema, TooltipSideSchema, TooltipTrigger, TooltipTriggerModeSchema, TooltipTriggerPropsSchema, tooltipArrowVariants, tooltipContentVariants };
5
311
  //# sourceMappingURL=index.mjs.map
6
312
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
1
+ {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/elements/Tooltip/Tooltip.tsx","../../../src/schemas/BaseComponentProps.ts","../../../src/elements/Tooltip/Tooltip.types.ts"],"names":["AriaTooltipTrigger","AriaTooltip","className","z"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Class Name Utility\n * Merges Tailwind CSS classes with conflict resolution\n *\n * Combines clsx for conditional classes and tailwind-merge for deduplication\n *\n * @example\n * cn('px-2 py-1', 'px-4') // => 'py-1 px-4' (px-4 overrides px-2)\n * cn('text-red-500', condition && 'text-blue-500') // => conditional application\n */\n\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","\"use client\";\n\n/**\n * Tooltip Component - Implementation\n *\n * Accessible tooltip component combining React Aria primitives with ShadCN styling.\n * Follows Themis library patterns with compound component structure.\n *\n * @see plan.md (Implementation plan)\n * @see Tooltip.types.ts (Zod schemas)\n * @see tooltip-prd.md (Full requirements)\n */\n\nimport { type ReactElement } from 'react';\nimport {\n TooltipTrigger as AriaTooltipTrigger,\n Tooltip as AriaTooltip,\n OverlayArrow,\n composeRenderProps,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport type {\n TooltipProps,\n TooltipTriggerProps,\n TooltipContentProps,\n TooltipArrowProps,\n TooltipSide,\n} from './Tooltip.types';\n\n/**\n * CVA Variants for TooltipContent\n *\n * Placement-based animations and high-contrast inverted colors.\n *\n * @see plan.md (CVA Variant Structure)\n * @see tooltip-prd.md US-2 (Configurable Placement)\n */\nexport const tooltipContentVariants = cva(\n // Base styles\n [\n \"z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md\",\n // Inverted colors for high contrast (7:1 ratio)\n \"bg-[var(--content-foreground)] text-[var(--content-background)]\",\n // Entry animation base\n \"animate-in fade-in-0\",\n // Exit animation\n \"data-[exiting]:animate-out data-[exiting]:fade-out-0\",\n ],\n {\n variants: {\n side: {\n top: [\n \"motion-safe:slide-in-from-bottom-2\",\n \"data-[exiting]:motion-safe:slide-out-to-bottom-2\",\n ],\n bottom: [\n \"motion-safe:slide-in-from-top-2\",\n \"data-[exiting]:motion-safe:slide-out-to-top-2\",\n ],\n left: [\n \"motion-safe:slide-in-from-right-2\",\n \"data-[exiting]:motion-safe:slide-out-to-right-2\",\n ],\n right: [\n \"motion-safe:slide-in-from-left-2\",\n \"data-[exiting]:motion-safe:slide-out-to-left-2\",\n ],\n },\n },\n defaultVariants: {\n side: \"top\",\n },\n }\n);\n\n/**\n * CVA Variants for TooltipArrow\n *\n * Rotation based on placement for correct arrow pointing direction.\n *\n * @see tooltip-prd.md US-2 (Arrow Indicator)\n */\nexport const tooltipArrowVariants = cva(\n // Base arrow styles\n \"fill-[var(--content-foreground)]\",\n {\n variants: {\n side: {\n top: \"rotate-180\",\n bottom: \"rotate-0\",\n left: \"rotate-90\",\n right: \"-rotate-90\",\n },\n },\n defaultVariants: {\n side: \"top\",\n },\n }\n);\n\n/**\n * Map React Aria placement to our side prop\n * React Aria uses placement prop with values like 'top', 'bottom', etc.\n * PlacementAxis can be 'top' | 'bottom' | 'left' | 'right' | null\n */\nfunction placementToSide(placement: string | null | undefined): TooltipSide {\n if (!placement) return 'top';\n // Extract the base placement (e.g., 'top start' -> 'top')\n const basePlacement = placement.split(' ')[0];\n if (basePlacement === 'top' || basePlacement === 'bottom' ||\n basePlacement === 'left' || basePlacement === 'right') {\n return basePlacement;\n }\n return 'top';\n}\n\n/**\n * Tooltip Root Component\n *\n * Manages tooltip open/close state, delays, and trigger behavior.\n * Wraps React Aria's TooltipTrigger with delay configuration.\n *\n * @see tooltip-prd.md US-1 (Basic Usage)\n * @see tooltip-prd.md US-3 (Delay Configuration)\n * @see tooltip-prd.md US-7 (Controlled State)\n */\nfunction TooltipRoot({\n children,\n delay = 700,\n closeDelay = 300,\n trigger = 'hover',\n isOpen,\n defaultOpen = false,\n onOpenChange,\n isDisabled = false,\n}: TooltipProps): ReactElement {\n // React Aria doesn't have a direct trigger mode prop\n // 'focus' mode is achieved by setting delay to a very high value\n // and relying on focus to trigger immediately\n const effectiveDelay = trigger === 'focus' ? 99999999 : delay;\n\n return (\n <AriaTooltipTrigger\n delay={effectiveDelay}\n closeDelay={closeDelay}\n isOpen={isOpen}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n isDisabled={isDisabled}\n >\n {children}\n </AriaTooltipTrigger>\n );\n}\n\nTooltipRoot.displayName = 'Tooltip';\n\n/**\n * TooltipTrigger Component\n *\n * Wrapper for the element that triggers the tooltip.\n * The child element must be focusable (or wrapped with Focusable).\n *\n * React Aria's TooltipTrigger automatically applies:\n * - aria-describedby linking to tooltip\n * - Hover and focus event handlers\n *\n * @see tooltip-prd.md US-5 (Non-Button Triggers)\n */\nfunction TooltipTriggerComponent({\n children,\n}: TooltipTriggerProps): ReactElement {\n // React Aria's TooltipTrigger expects the trigger element as a direct child\n // We pass through the child element directly\n return children as ReactElement;\n}\n\nTooltipTriggerComponent.displayName = 'TooltipTrigger';\n\n/**\n * TooltipContent Component\n *\n * The actual tooltip overlay that appears.\n * Supports placement, offset, and optional arrow.\n *\n * @see tooltip-prd.md US-2 (Placement and Arrow)\n * @see tooltip-prd.md Technical Implementation Details\n */\nfunction TooltipContentComponent({\n children,\n side = 'top',\n sideOffset = 4,\n alignOffset = 0,\n shouldFlip = true,\n showArrow = false,\n arrowSize = 8,\n className,\n ...restProps\n}: TooltipContentProps & { 'data-testid'?: string }): ReactElement {\n return (\n <AriaTooltip\n placement={side}\n offset={sideOffset}\n crossOffset={alignOffset}\n shouldFlip={shouldFlip}\n {...restProps}\n className={composeRenderProps(className, (className, renderProps) => {\n // Get actual placement from render props for animation direction\n const actualSide = placementToSide(renderProps.placement);\n return cn(\n tooltipContentVariants({ side: actualSide }),\n className\n );\n })}\n >\n {(renderProps) => {\n const actualSide = placementToSide(renderProps.placement);\n return (\n <>\n {showArrow && (\n <OverlayArrow>\n <svg\n width={arrowSize}\n height={arrowSize}\n viewBox=\"0 0 8 8\"\n className={tooltipArrowVariants({ side: actualSide })}\n data-testid=\"tooltip-arrow\"\n >\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n </OverlayArrow>\n )}\n {children}\n </>\n );\n }}\n </AriaTooltip>\n );\n}\n\nTooltipContentComponent.displayName = 'TooltipContent';\n\n/**\n * TooltipArrow Component\n *\n * Optional arrow component for custom arrow rendering.\n * Automatically positioned based on tooltip placement.\n *\n * Note: This is an alternative to using showArrow prop on TooltipContent.\n * Use this when you need custom arrow styling or rendering.\n *\n * @see tooltip-prd.md US-2 (Arrow Indicator)\n */\nfunction TooltipArrowComponent({\n size = 8,\n className,\n 'data-testid': dataTestId = 'tooltip-arrow',\n ...restProps\n}: TooltipArrowProps & { 'data-testid'?: string }): ReactElement {\n // This component is designed to be used inside TooltipContent\n // The actual positioning is handled by OverlayArrow from React Aria\n return (\n <OverlayArrow>\n {({ placement }) => {\n const side = placementToSide(placement);\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 8 8\"\n className={cn(tooltipArrowVariants({ side }), className)}\n data-testid={dataTestId}\n {...restProps}\n >\n <path d=\"M0 0 L4 4 L8 0\" />\n </svg>\n );\n }}\n </OverlayArrow>\n );\n}\n\nTooltipArrowComponent.displayName = 'TooltipArrow';\n\n/**\n * Export all components\n *\n * Following Themis pattern - export individual components\n * No Object.assign compound pattern for Tooltip since React Aria\n * expects specific component hierarchy.\n */\nexport const Tooltip = TooltipRoot;\nexport const TooltipTrigger = TooltipTriggerComponent;\nexport const TooltipContent = TooltipContentComponent;\nexport const TooltipArrow = TooltipArrowComponent;\n","import { z } from 'zod';\n\n/**\n * Base props schema for all Themis components\n * Ensures consistent accessibility and styling APIs across the library\n *\n * @see spec.md FR-009 to FR-014 (Accessibility Requirements)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AA minimum)\n */\nexport const BaseComponentPropsSchema = z.object({\n // Styling\n className: z.string().optional(),\n\n // React\n children: z.any().optional(), // ReactNode not directly supported by Zod\n id: z.string().optional(),\n\n // Accessibility (WCAG 2.2 AA requirements)\n 'aria-label': z.string().optional(),\n 'aria-labelledby': z.string().optional(),\n 'aria-describedby': z.string().optional(),\n 'aria-live': z.enum(['off', 'polite', 'assertive']).optional(),\n 'aria-hidden': z.boolean().optional(),\n\n // Testing & Development\n 'data-testid': z.string().optional(),\n});\n\nexport type BaseComponentProps = z.infer<typeof BaseComponentPropsSchema>;\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\n\n/**\n * Tooltip placement/side options\n *\n * @see tooltip-prd.md US-2 (Configurable Placement)\n */\nexport const TooltipSideSchema = z.enum(['top', 'bottom', 'left', 'right']);\nexport type TooltipSide = z.infer<typeof TooltipSideSchema>;\n\n/**\n * Tooltip trigger mode options\n *\n * @see tooltip-prd.md US-4 (Keyboard-only Mode)\n */\nexport const TooltipTriggerModeSchema = z.enum(['hover', 'focus']);\nexport type TooltipTriggerMode = z.infer<typeof TooltipTriggerModeSchema>;\n\n/**\n * Tooltip root component props schema\n *\n * Manages tooltip open/close state, delays, and trigger behavior.\n * Wraps React Aria's TooltipTrigger with delay configuration.\n *\n * @see tooltip-prd.md US-1 (Basic Usage)\n * @see tooltip-prd.md US-3 (Delay Configuration)\n * @see tooltip-prd.md US-7 (Controlled State)\n */\nexport const TooltipPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Show delay in milliseconds\n * Time to wait before showing tooltip on hover\n * @default 700\n */\n delay: z.number().min(0).optional().default(700),\n\n /**\n * Hide delay in milliseconds\n * Time to wait before hiding tooltip after mouse leave\n * @default 300\n */\n closeDelay: z.number().min(0).optional().default(300),\n\n /**\n * Trigger mode\n * - 'hover': Show on hover and focus (default)\n * - 'focus': Show only on keyboard focus (no hover)\n * @default 'hover'\n */\n trigger: TooltipTriggerModeSchema.optional().default('hover'),\n\n /**\n * Controlled open state\n * When provided, tooltip becomes controlled\n */\n isOpen: z.boolean().optional(),\n\n /**\n * Default open state for uncontrolled mode\n * @default false\n */\n defaultOpen: z.boolean().optional().default(false),\n\n /**\n * Callback when open state changes\n * Called with new isOpen value\n */\n onOpenChange: z.custom<(isOpen: boolean) => void>().optional(),\n\n /**\n * Disable tooltip without affecting trigger element\n * @default false\n */\n isDisabled: z.boolean().optional().default(false),\n\n /**\n * Children must include TooltipTrigger and TooltipContent\n */\n children: z.custom<ReactNode>(),\n});\n\nexport type TooltipProps = z.infer<typeof TooltipPropsSchema>;\n\n/**\n * TooltipTrigger props schema\n *\n * Wrapper for the element that triggers the tooltip.\n * The child element must be focusable (or wrapped with Focusable).\n *\n * @see tooltip-prd.md US-5 (Non-Button Triggers)\n */\nexport const TooltipTriggerPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Render as child element instead of wrapping\n * When true, merges props into the child element\n * @default false\n */\n asChild: z.boolean().optional().default(false),\n\n /**\n * Single child element that triggers the tooltip\n * Must be focusable for keyboard accessibility\n */\n children: z.custom<ReactNode>(),\n});\n\nexport type TooltipTriggerProps = z.infer<typeof TooltipTriggerPropsSchema>;\n\n/**\n * TooltipContent props schema\n *\n * The actual tooltip overlay that appears.\n * Supports placement, offset, and optional arrow.\n *\n * @see tooltip-prd.md US-2 (Placement and Arrow)\n * @see tooltip-prd.md Technical Implementation Details\n */\nexport const TooltipContentPropsSchema = BaseComponentPropsSchema.extend({\n /**\n * Placement relative to trigger element\n * @default 'top'\n */\n side: TooltipSideSchema.optional().default('top'),\n\n /**\n * Offset from trigger in pixels (main axis)\n * @default 4\n */\n sideOffset: z.number().optional().default(4),\n\n /**\n * Cross-axis offset in pixels\n * @default 0\n */\n alignOffset: z.number().optional().default(0),\n\n /**\n * Automatically flip placement when constrained by viewport\n * @default true\n */\n shouldFlip: z.boolean().optional().default(true),\n\n /**\n * Show arrow pointing to trigger element\n * @default false\n */\n showArrow: z.boolean().optional().default(false),\n\n /**\n * Arrow size in pixels\n * @default 8\n */\n arrowSize: z.number().min(0).optional().default(8),\n\n /**\n * Custom className for styling\n */\n className: z.string().optional(),\n\n /**\n * Tooltip content (typically text)\n */\n children: z.custom<ReactNode>(),\n});\n\nexport type TooltipContentProps = z.infer<typeof TooltipContentPropsSchema>;\n\n/**\n * TooltipArrow props schema\n *\n * Optional arrow component for custom arrow rendering.\n * Automatically positioned based on tooltip placement.\n *\n * @see tooltip-prd.md US-2 (Arrow Indicator)\n */\nexport const TooltipArrowPropsSchema = z.object({\n /**\n * Arrow size in pixels\n * @default 8\n */\n size: z.number().min(0).optional().default(8),\n\n /**\n * Custom className for styling\n */\n className: z.string().optional(),\n});\n\nexport type TooltipArrowProps = z.infer<typeof TooltipArrowPropsSchema>;\n"]}