@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,282 +0,0 @@
1
- import { FOCUS_STYLES, HIGH_CONTRAST_FOCUS } from './chunk-HK46BT5U.mjs';
2
- import { cn } from './chunk-E2KQFV3O.mjs';
3
- import { BaseComponentPropsSchema } from './chunk-5SVLJN2C.mjs';
4
- import { forwardRef, isValidElement, cloneElement } from 'react';
5
- import { Checkbox as Checkbox$1 } from 'react-aria-components';
6
- import { cva } from 'class-variance-authority';
7
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
- import { z } from 'zod';
9
-
10
- var checkboxContainerVariants = cva(
11
- [
12
- "group inline-flex items-center gap-2 cursor-pointer",
13
- "transition-colors duration-200",
14
- "rtl:flex-row-reverse",
15
- FOCUS_STYLES,
16
- HIGH_CONTRAST_FOCUS
17
- ].join(" "),
18
- {
19
- variants: {
20
- size: {
21
- sm: "min-h-[44px] text-sm",
22
- default: "min-h-[44px] text-sm",
23
- lg: "min-h-[48px] text-base"
24
- },
25
- isDisabled: {
26
- true: "opacity-50 cursor-not-allowed",
27
- false: ""
28
- }
29
- },
30
- defaultVariants: {
31
- size: "default",
32
- isDisabled: false
33
- }
34
- }
35
- );
36
- var checkboxIndicatorVariants = cva(
37
- "flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200",
38
- {
39
- variants: {
40
- variant: {
41
- default: [
42
- "border-[var(--border)]",
43
- "data-[selected]:border-[var(--primary)]",
44
- "data-[selected]:bg-[var(--primary)]",
45
- "data-[indeterminate]:border-[var(--primary)]",
46
- "data-[indeterminate]:bg-[var(--primary)]"
47
- ].join(" "),
48
- destructive: [
49
- "border-[var(--border)]",
50
- "data-[selected]:border-[var(--destructive)]",
51
- "data-[selected]:bg-[var(--destructive)]",
52
- "data-[indeterminate]:border-[var(--destructive)]",
53
- "data-[indeterminate]:bg-[var(--destructive)]"
54
- ].join(" ")
55
- },
56
- size: {
57
- sm: "h-4 w-4",
58
- default: "h-5 w-5",
59
- lg: "h-6 w-6"
60
- },
61
- isInvalid: {
62
- true: "border-[var(--destructive)]",
63
- false: ""
64
- }
65
- },
66
- defaultVariants: {
67
- variant: "default",
68
- size: "default",
69
- isInvalid: false
70
- }
71
- }
72
- );
73
- var checkmarkVariants = cva(
74
- [
75
- "transition-transform duration-200",
76
- "[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]",
77
- "motion-reduce:transition-none",
78
- "scale-0 data-[selected]:scale-100 data-[indeterminate]:scale-100"
79
- ].join(" "),
80
- {
81
- variants: {
82
- variant: {
83
- default: "text-[var(--primary-foreground)]",
84
- destructive: "text-[var(--destructive-foreground)]"
85
- },
86
- size: {
87
- sm: "h-3 w-3",
88
- default: "h-3.5 w-3.5",
89
- lg: "h-4 w-4"
90
- }
91
- },
92
- defaultVariants: {
93
- variant: "default",
94
- size: "default"
95
- }
96
- }
97
- );
98
- function CheckmarkIcon({ className, ...props }) {
99
- return /* @__PURE__ */ jsx(
100
- "svg",
101
- {
102
- className,
103
- viewBox: "0 0 24 24",
104
- fill: "none",
105
- stroke: "currentColor",
106
- strokeWidth: 3,
107
- strokeLinecap: "round",
108
- strokeLinejoin: "round",
109
- "aria-hidden": "true",
110
- ...props,
111
- children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" })
112
- }
113
- );
114
- }
115
- function MinusIcon({ className, ...props }) {
116
- return /* @__PURE__ */ jsx(
117
- "svg",
118
- {
119
- className,
120
- viewBox: "0 0 24 24",
121
- fill: "none",
122
- stroke: "currentColor",
123
- strokeWidth: 3,
124
- strokeLinecap: "round",
125
- strokeLinejoin: "round",
126
- "aria-hidden": "true",
127
- ...props,
128
- children: /* @__PURE__ */ jsx("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
129
- }
130
- );
131
- }
132
- var Checkbox = forwardRef(
133
- ({
134
- isSelected,
135
- defaultSelected,
136
- isDisabled,
137
- isReadOnly,
138
- isIndeterminate,
139
- isInvalid = false,
140
- isRequired = false,
141
- onChange,
142
- onFocusChange,
143
- value,
144
- name,
145
- size = "default",
146
- variant = "default",
147
- label,
148
- description,
149
- selectedIcon,
150
- className,
151
- id,
152
- "aria-label": ariaLabel,
153
- "aria-labelledby": ariaLabelledby,
154
- "aria-describedby": ariaDescribedby,
155
- "data-testid": dataTestId,
156
- slot
157
- }, ref) => {
158
- const computedIsDisabled = isDisabled || void 0;
159
- const computedIsReadOnly = isReadOnly || void 0;
160
- const computedIsIndeterminate = isIndeterminate || void 0;
161
- const renderIcon = (isChecked, isIndet) => {
162
- const iconClassName = cn(checkmarkVariants({ variant, size }));
163
- const dataSelected = isChecked || void 0;
164
- const dataIndeterminate = isIndet || void 0;
165
- if (isIndet) {
166
- return /* @__PURE__ */ jsx(
167
- MinusIcon,
168
- {
169
- className: iconClassName,
170
- "data-selected": dataSelected,
171
- "data-indeterminate": dataIndeterminate
172
- }
173
- );
174
- }
175
- if (selectedIcon && isChecked) {
176
- if (isValidElement(selectedIcon)) {
177
- const iconElement = selectedIcon;
178
- return cloneElement(iconElement, {
179
- className: cn(iconClassName, iconElement.props.className),
180
- "data-selected": dataSelected
181
- });
182
- }
183
- return /* @__PURE__ */ jsx("span", { className: iconClassName, "data-selected": dataSelected, children: selectedIcon });
184
- }
185
- return /* @__PURE__ */ jsx(
186
- CheckmarkIcon,
187
- {
188
- className: iconClassName,
189
- "data-selected": dataSelected,
190
- "data-indeterminate": dataIndeterminate
191
- }
192
- );
193
- };
194
- return /* @__PURE__ */ jsx(
195
- Checkbox$1,
196
- {
197
- ref,
198
- id,
199
- isSelected,
200
- defaultSelected,
201
- isDisabled: computedIsDisabled,
202
- isReadOnly: computedIsReadOnly,
203
- isIndeterminate: computedIsIndeterminate,
204
- isInvalid,
205
- isRequired,
206
- onChange,
207
- onFocusChange,
208
- value,
209
- name,
210
- slot,
211
- "aria-label": ariaLabel,
212
- "aria-labelledby": ariaLabelledby,
213
- "aria-describedby": ariaDescribedby,
214
- "data-testid": dataTestId,
215
- className: (renderProps) => cn(
216
- checkboxContainerVariants({
217
- size,
218
- isDisabled: renderProps.isDisabled
219
- }),
220
- className
221
- ),
222
- children: (renderProps) => /* @__PURE__ */ jsxs(Fragment, { children: [
223
- /* @__PURE__ */ jsx(
224
- "div",
225
- {
226
- className: checkboxIndicatorVariants({
227
- variant,
228
- size,
229
- isInvalid: renderProps.isInvalid
230
- }),
231
- "data-selected": renderProps.isSelected || void 0,
232
- "data-indeterminate": renderProps.isIndeterminate || void 0,
233
- children: renderIcon(renderProps.isSelected, renderProps.isIndeterminate)
234
- }
235
- ),
236
- (label || description) && /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
237
- label && /* @__PURE__ */ jsx("span", { className: "font-medium text-[var(--content-foreground)]", children: label }),
238
- description && /* @__PURE__ */ jsx("span", { className: "text-sm text-[var(--menu-muted)]", children: description })
239
- ] })
240
- ] })
241
- }
242
- );
243
- }
244
- );
245
- Checkbox.displayName = "Checkbox";
246
- var CheckboxSizeSchema = z.enum(["sm", "default", "lg"]);
247
- var CheckboxVariantSchema = z.enum(["default", "destructive"]);
248
- var CheckboxPropsSchema = BaseComponentPropsSchema.extend({
249
- // State management (controlled/uncontrolled)
250
- isSelected: z.boolean().optional(),
251
- defaultSelected: z.boolean().optional(),
252
- onChange: z.custom().optional(),
253
- // Variants (matching Switch/Button pattern)
254
- variant: CheckboxVariantSchema.optional(),
255
- size: CheckboxSizeSchema.optional(),
256
- // States
257
- isDisabled: z.boolean().optional(),
258
- isReadOnly: z.boolean().optional(),
259
- isIndeterminate: z.boolean().optional(),
260
- isInvalid: z.boolean().optional(),
261
- isRequired: z.boolean().optional(),
262
- // Labels (optional built-in labeling)
263
- label: z.string().optional(),
264
- description: z.string().optional(),
265
- // Form integration
266
- value: z.string().optional(),
267
- name: z.string().optional(),
268
- // Custom icon
269
- selectedIcon: z.any().optional(),
270
- // ReactNode
271
- // React Aria slot integration (e.g., for Table)
272
- slot: z.string().optional(),
273
- // React Aria CheckboxProps integration
274
- onFocus: z.custom().optional(),
275
- onBlur: z.custom().optional(),
276
- onFocusChange: z.custom().optional(),
277
- autoFocus: z.boolean().optional()
278
- });
279
-
280
- export { Checkbox, CheckboxPropsSchema, CheckboxSizeSchema, CheckboxVariantSchema, CheckmarkIcon, MinusIcon, checkboxContainerVariants, checkboxIndicatorVariants, checkmarkVariants };
281
- //# sourceMappingURL=chunk-UTW3QX2A.mjs.map
282
- //# sourceMappingURL=chunk-UTW3QX2A.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/elements/Checkbox/Checkbox.tsx","../src/elements/Checkbox/Checkbox.types.ts"],"names":["AriaCheckbox"],"mappings":";;;;;;;;;AAyCA,IAAM,yBAAA,GAA4B,GAAA;AAAA,EAChC;AAAA,IACE,qDAAA;AAAA,IACA,gCAAA;AAAA,IACA,sBAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,sBAAA;AAAA,QACJ,OAAA,EAAS,sBAAA;AAAA,QACT,EAAA,EAAI;AAAA,OACN;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,+BAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM,SAAA;AAAA,MACN,UAAA,EAAY;AAAA;AACd;AAEJ;AAKA,IAAM,yBAAA,GAA4B,GAAA;AAAA,EAChC,mGAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS;AAAA,UACP,wBAAA;AAAA,UACA,yCAAA;AAAA,UACA,qCAAA;AAAA,UACA,8CAAA;AAAA,UACA;AAAA,SACF,CAAE,KAAK,GAAG,CAAA;AAAA,QACV,WAAA,EAAa;AAAA,UACX,wBAAA;AAAA,UACA,6CAAA;AAAA,UACA,yCAAA;AAAA,UACA,kDAAA;AAAA,UACA;AAAA,SACF,CAAE,KAAK,GAAG;AAAA,OACZ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,OAAA,EAAS,SAAA;AAAA,QACT,EAAA,EAAI;AAAA,OACN;AAAA,MACA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM,6BAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM,SAAA;AAAA,MACN,SAAA,EAAW;AAAA;AACb;AAEJ;AAKA,IAAM,iBAAA,GAAoB,GAAA;AAAA,EACxB;AAAA,IACE,mCAAA;AAAA,IACA,6DAAA;AAAA,IACA,+BAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAAA,EACV;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,kCAAA;AAAA,QACT,WAAA,EAAa;AAAA,OACf;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,SAAA;AAAA,QACJ,OAAA,EAAS,aAAA;AAAA,QACT,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AASA,SAAS,aAAA,CAAc,EAAE,SAAA,EAAW,GAAG,OAAM,EAAiG;AAC5I,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAa,CAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,aAAA,EAAY,MAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAS,MAAA,EAAO,gBAAA,EAAiB;AAAA;AAAA,GACpC;AAEJ;AAKA,SAAS,SAAA,CAAU,EAAE,SAAA,EAAW,GAAG,OAAM,EAAiG;AACxI,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,OAAA,EAAQ,WAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAa,CAAA;AAAA,MACb,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,aAAA,EAAY,MAAA;AAAA,MACX,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAAC,UAAK,EAAA,EAAG,GAAA,EAAI,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK;AAAA;AAAA,GACvC;AAEJ;AAUA,IAAM,QAAA,GAAW,UAAA;AAAA,EACf,CACE;AAAA,IACE,UAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA,SAAA,GAAY,KAAA;AAAA,IACZ,UAAA,GAAa,KAAA;AAAA,IACb,QAAA;AAAA,IACA,aAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA,GAAO,SAAA;AAAA,IACP,OAAA,GAAU,SAAA;AAAA,IACV,KAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAA;AAAA,IACA,EAAA;AAAA,IACA,YAAA,EAAc,SAAA;AAAA,IACd,iBAAA,EAAmB,cAAA;AAAA,IACnB,kBAAA,EAAoB,eAAA;AAAA,IACpB,aAAA,EAAe,UAAA;AAAA,IACf;AAAA,KAEF,GAAA,KACG;AAGH,IAAA,MAAM,qBAAqB,UAAA,IAAc,MAAA;AACzC,IAAA,MAAM,qBAAqB,UAAA,IAAc,MAAA;AACzC,IAAA,MAAM,0BAA0B,eAAA,IAAmB,MAAA;AAEnD,IAAA,MAAM,UAAA,GAAa,CAAC,SAAA,EAAoB,OAAA,KAAqB;AAC3D,MAAA,MAAM,gBAAgB,EAAA,CAAG,iBAAA,CAAkB,EAAE,OAAA,EAAS,IAAA,EAAM,CAAC,CAAA;AAC7D,MAAA,MAAM,eAAe,SAAA,IAAa,MAAA;AAClC,MAAA,MAAM,oBAAoB,OAAA,IAAW,MAAA;AAGrC,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,uBACE,GAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,aAAA;AAAA,YACX,eAAA,EAAe,YAAA;AAAA,YACf,oBAAA,EAAoB;AAAA;AAAA,SACtB;AAAA,MAEJ;AAGA,MAAA,IAAI,gBAAgB,SAAA,EAAW;AAC7B,QAAA,IAAI,cAAA,CAAe,YAAY,CAAA,EAAG;AAChC,UAAA,MAAM,WAAA,GAAc,YAAA;AACpB,UAAA,OAAO,aAAa,WAAA,EAAa;AAAA,YAC/B,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,WAAA,CAAY,MAAM,SAAS,CAAA;AAAA,YACxD,eAAA,EAAiB;AAAA,WAClB,CAAA;AAAA,QACH;AACA,QAAA,2BAAQ,MAAA,EAAA,EAAK,SAAA,EAAW,aAAA,EAAe,eAAA,EAAe,cAAe,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,MACpF;AAGA,MAAA,uBACE,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,aAAA;AAAA,UACX,eAAA,EAAe,YAAA;AAAA,UACf,oBAAA,EAAoB;AAAA;AAAA,OACtB;AAAA,IAEJ,CAAA;AAEA,IAAA,uBACE,GAAA;AAAA,MAACA,UAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,EAAA;AAAA,QACA,UAAA;AAAA,QACA,eAAA;AAAA,QACA,UAAA,EAAY,kBAAA;AAAA,QACZ,UAAA,EAAY,kBAAA;AAAA,QACZ,eAAA,EAAiB,uBAAA;AAAA,QACjB,SAAA;AAAA,QACA,UAAA;AAAA,QACA,QAAA;AAAA,QACA,aAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA;AAAA,QACA,IAAA;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QACZ,iBAAA,EAAiB,cAAA;AAAA,QACjB,kBAAA,EAAkB,eAAA;AAAA,QAClB,aAAA,EAAa,UAAA;AAAA,QACb,SAAA,EAAW,CAAC,WAAA,KACV,EAAA;AAAA,UACE,yBAAA,CAA0B;AAAA,YACxB,IAAA;AAAA,YACA,YAAY,WAAA,CAAY;AAAA,WACzB,CAAA;AAAA,UACD;AAAA,SACF;AAAA,QAGD,QAAA,EAAA,CAAC,gCACA,IAAA,CAAA,QAAA,EAAA,EAEE,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAW,yBAAA,CAA0B;AAAA,gBACnC,OAAA;AAAA,gBACA,IAAA;AAAA,gBACA,WAAW,WAAA,CAAY;AAAA,eACxB,CAAA;AAAA,cACD,eAAA,EAAe,YAAY,UAAA,IAAc,MAAA;AAAA,cACzC,oBAAA,EAAoB,YAAY,eAAA,IAAmB,MAAA;AAAA,cAElD,QAAA,EAAA,UAAA,CAAW,WAAA,CAAY,UAAA,EAAY,WAAA,CAAY,eAAe;AAAA;AAAA,WACjE;AAAA,UAAA,CAGE,KAAA,IAAS,WAAA,qBACT,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,eAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8CAAA,EACb,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,YAED,WAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oCACb,QAAA,EAAA,WAAA,EACH;AAAA,WAAA,EAEJ;AAAA,SAAA,EAEJ;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AC3ThB,IAAM,qBAAqB,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,SAAA,EAAW,IAAI,CAAC;AAOzD,IAAM,wBAAwB,CAAA,CAAE,IAAA,CAAK,CAAC,SAAA,EAAW,aAAa,CAAC;AAY/D,IAAM,mBAAA,GAAsB,yBAAyB,MAAA,CAAO;AAAA;AAAA,EAEjE,UAAA,EAAY,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,eAAA,EAAiB,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACtC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAsC,CAAE,QAAA,EAAS;AAAA;AAAA,EAG7D,OAAA,EAAS,sBAAsB,QAAA,EAAS;AAAA,EACxC,IAAA,EAAM,mBAAmB,QAAA,EAAS;AAAA;AAAA,EAGlC,UAAA,EAAY,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,UAAA,EAAY,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACjC,eAAA,EAAiB,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACtC,SAAA,EAAW,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAChC,UAAA,EAAY,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA;AAAA,EAGjC,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAGjC,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAG1B,YAAA,EAAc,CAAA,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS;AAAA;AAAA;AAAA,EAG/B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAG1B,OAAA,EAAS,CAAA,CAAE,MAAA,EAAmB,CAAE,QAAA,EAAS;AAAA,EACzC,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAmB,CAAE,QAAA,EAAS;AAAA,EACxC,aAAA,EAAe,CAAA,CAAE,MAAA,EAAqC,CAAE,QAAA,EAAS;AAAA,EACjE,SAAA,EAAW,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACzB,CAAC","file":"chunk-UTW3QX2A.mjs","sourcesContent":["\"use client\";\n\n/**\n * Checkbox Component\n * Standalone accessible checkbox with React Aria primitives and CVA styling\n *\n * Key Features:\n * - Standalone checkbox (not requiring CheckboxGroup)\n * - 44px+ touch targets (WCAG 2.2 AAA)\n * - 2 variants: default, destructive\n * - 3 sizes: sm, default, lg\n * - Indeterminate state support\n * - Spring animation for checkmark\n * - RTL support\n * - Works with React Aria slot system (for Table integration)\n *\n * @see React Aria Checkbox: https://react-spectrum.adobe.com/react-aria/Checkbox.html\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AAA)\n */\n\nimport {\n forwardRef,\n cloneElement,\n isValidElement,\n type ReactNode,\n type ReactElement,\n} from 'react';\nimport { Checkbox as AriaCheckbox } from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport { FOCUS_STYLES, HIGH_CONTRAST_FOCUS } from '../../styles/interaction-states';\nimport type { CheckboxProps } from './Checkbox.types';\n\n// ============================================================================\n// CVA Variants\n// ============================================================================\n\n/**\n * Checkbox container variants\n * Controls the overall checkbox layout with touch target\n */\nconst checkboxContainerVariants = cva(\n [\n \"group inline-flex items-center gap-2 cursor-pointer\",\n \"transition-colors duration-200\",\n \"rtl:flex-row-reverse\",\n FOCUS_STYLES,\n HIGH_CONTRAST_FOCUS,\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"min-h-[44px] text-sm\",\n default: \"min-h-[44px] text-sm\",\n lg: \"min-h-[48px] text-base\",\n },\n isDisabled: {\n true: \"opacity-50 cursor-not-allowed\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"default\",\n isDisabled: false,\n },\n }\n);\n\n/**\n * Checkbox indicator (the box) variants\n */\nconst checkboxIndicatorVariants = cva(\n \"flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: [\n \"border-[var(--border)]\",\n \"data-[selected]:border-[var(--primary)]\",\n \"data-[selected]:bg-[var(--primary)]\",\n \"data-[indeterminate]:border-[var(--primary)]\",\n \"data-[indeterminate]:bg-[var(--primary)]\",\n ].join(\" \"),\n destructive: [\n \"border-[var(--border)]\",\n \"data-[selected]:border-[var(--destructive)]\",\n \"data-[selected]:bg-[var(--destructive)]\",\n \"data-[indeterminate]:border-[var(--destructive)]\",\n \"data-[indeterminate]:bg-[var(--destructive)]\",\n ].join(\" \"),\n },\n size: {\n sm: \"h-4 w-4\",\n default: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n },\n isInvalid: {\n true: \"border-[var(--destructive)]\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n isInvalid: false,\n },\n }\n);\n\n/**\n * Checkmark icon variants with spring animation\n */\nconst checkmarkVariants = cva(\n [\n \"transition-transform duration-200\",\n \"[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]\",\n \"motion-reduce:transition-none\",\n \"scale-0 data-[selected]:scale-100 data-[indeterminate]:scale-100\",\n ].join(\" \"),\n {\n variants: {\n variant: {\n default: \"text-[var(--primary-foreground)]\",\n destructive: \"text-[var(--destructive-foreground)]\",\n },\n size: {\n sm: \"h-3 w-3\",\n default: \"h-3.5 w-3.5\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\n// ============================================================================\n// Icon Components\n// ============================================================================\n\n/**\n * Checkmark SVG icon\n */\nfunction CheckmarkIcon({ className, ...props }: { className?: string; 'data-selected'?: boolean; 'data-indeterminate'?: boolean }): ReactNode {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\n/**\n * Minus (indeterminate) SVG icon\n */\nfunction MinusIcon({ className, ...props }: { className?: string; 'data-selected'?: boolean; 'data-indeterminate'?: boolean }): ReactNode {\n return (\n <svg\n className={className}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={3}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n}\n\n// ============================================================================\n// Checkbox Component\n// ============================================================================\n\n/**\n * Standalone Checkbox component\n * Accessible checkbox that can be used independently or within Table\n */\nconst Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>(\n (\n {\n isSelected,\n defaultSelected,\n isDisabled,\n isReadOnly,\n isIndeterminate,\n isInvalid = false,\n isRequired = false,\n onChange,\n onFocusChange,\n value,\n name,\n size = 'default',\n variant = 'default',\n label,\n description,\n selectedIcon,\n className,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'data-testid': dataTestId,\n slot,\n },\n ref\n ) => {\n // Only set these props when explicitly true to allow slot system to control them\n // (e.g., Table's selection slot injects isIndeterminate for partial selection)\n const computedIsDisabled = isDisabled || undefined;\n const computedIsReadOnly = isReadOnly || undefined;\n const computedIsIndeterminate = isIndeterminate || undefined;\n // Render the icon based on state\n const renderIcon = (isChecked: boolean, isIndet: boolean) => {\n const iconClassName = cn(checkmarkVariants({ variant, size }));\n const dataSelected = isChecked || undefined;\n const dataIndeterminate = isIndet || undefined;\n\n // For indeterminate state, always show minus\n if (isIndet) {\n return (\n <MinusIcon\n className={iconClassName}\n data-selected={dataSelected}\n data-indeterminate={dataIndeterminate}\n />\n );\n }\n\n // Custom icon support\n if (selectedIcon && isChecked) {\n if (isValidElement(selectedIcon)) {\n const iconElement = selectedIcon as ReactElement<{ className?: string; 'data-selected'?: boolean }>;\n return cloneElement(iconElement, {\n className: cn(iconClassName, iconElement.props.className),\n 'data-selected': dataSelected,\n });\n }\n return <span className={iconClassName} data-selected={dataSelected}>{selectedIcon}</span>;\n }\n\n // Default checkmark\n return (\n <CheckmarkIcon\n className={iconClassName}\n data-selected={dataSelected}\n data-indeterminate={dataIndeterminate}\n />\n );\n };\n\n return (\n <AriaCheckbox\n ref={ref}\n id={id}\n isSelected={isSelected}\n defaultSelected={defaultSelected}\n isDisabled={computedIsDisabled}\n isReadOnly={computedIsReadOnly}\n isIndeterminate={computedIsIndeterminate}\n isInvalid={isInvalid}\n isRequired={isRequired}\n onChange={onChange}\n onFocusChange={onFocusChange}\n value={value}\n name={name}\n slot={slot}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-describedby={ariaDescribedby}\n data-testid={dataTestId}\n className={(renderProps) =>\n cn(\n checkboxContainerVariants({\n size,\n isDisabled: renderProps.isDisabled,\n }),\n className\n )\n }\n >\n {(renderProps) => (\n <>\n {/* Checkbox indicator (the box) */}\n <div\n className={checkboxIndicatorVariants({\n variant,\n size,\n isInvalid: renderProps.isInvalid,\n })}\n data-selected={renderProps.isSelected || undefined}\n data-indeterminate={renderProps.isIndeterminate || undefined}\n >\n {renderIcon(renderProps.isSelected, renderProps.isIndeterminate)}\n </div>\n\n {/* Label and description */}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <span className=\"font-medium text-[var(--content-foreground)]\">\n {label}\n </span>\n )}\n {description && (\n <span className=\"text-sm text-[var(--menu-muted)]\">\n {description}\n </span>\n )}\n </div>\n )}\n </>\n )}\n </AriaCheckbox>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n Checkbox,\n checkboxContainerVariants,\n checkboxIndicatorVariants,\n checkmarkVariants,\n CheckmarkIcon,\n MinusIcon,\n};\n","/**\n * Checkbox Component Types\n * Standalone accessible checkbox with Zod schema validation\n *\n * @see React Aria Checkbox: https://react-spectrum.adobe.com/react-aria/Checkbox.html\n * @see constitution.md Principle II (Type Safety - Zod schema validation)\n * @see constitution.md Principle IV (Accessibility First - WCAG 2.2 AAA)\n */\n\nimport { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { CheckboxProps as AriaCheckboxProps } from 'react-aria-components';\n\n/**\n * Checkbox size schema\n * All sizes maintain 44px minimum height for WCAG 2.2 AAA compliance\n */\nexport const CheckboxSizeSchema = z.enum(['sm', 'default', 'lg']);\nexport type CheckboxSize = z.infer<typeof CheckboxSizeSchema>;\n\n/**\n * Checkbox variant schema\n * 2 variants: default and destructive\n */\nexport const CheckboxVariantSchema = z.enum(['default', 'destructive']);\nexport type CheckboxVariant = z.infer<typeof CheckboxVariantSchema>;\n\n/**\n * Checkbox props schema extending BaseComponentProps\n *\n * Note: We use .optional() without .default() to allow the component to handle defaults.\n * This ensures compatibility with React Aria's type system and allows partial props.\n *\n * @see React Aria Checkbox: https://react-spectrum.adobe.com/react-aria/Checkbox.html\n * @see constitution.md Principle IV (Accessibility First)\n */\nexport const CheckboxPropsSchema = BaseComponentPropsSchema.extend({\n // State management (controlled/uncontrolled)\n isSelected: z.boolean().optional(),\n defaultSelected: z.boolean().optional(),\n onChange: z.custom<(isSelected: boolean) => void>().optional(),\n\n // Variants (matching Switch/Button pattern)\n variant: CheckboxVariantSchema.optional(),\n size: CheckboxSizeSchema.optional(),\n\n // States\n isDisabled: z.boolean().optional(),\n isReadOnly: z.boolean().optional(),\n isIndeterminate: z.boolean().optional(),\n isInvalid: z.boolean().optional(),\n isRequired: z.boolean().optional(),\n\n // Labels (optional built-in labeling)\n label: z.string().optional(),\n description: z.string().optional(),\n\n // Form integration\n value: z.string().optional(),\n name: z.string().optional(),\n\n // Custom icon\n selectedIcon: z.any().optional(), // ReactNode\n\n // React Aria slot integration (e.g., for Table)\n slot: z.string().optional(),\n\n // React Aria CheckboxProps integration\n onFocus: z.custom<() => void>().optional(),\n onBlur: z.custom<() => void>().optional(),\n onFocusChange: z.custom<(isFocused: boolean) => void>().optional(),\n autoFocus: z.boolean().optional(),\n});\n\nexport type CheckboxProps = z.infer<typeof CheckboxPropsSchema> &\n Omit<AriaCheckboxProps, keyof z.infer<typeof CheckboxPropsSchema>>;\n"]}