@tribepad/themis 1.0.1 → 1.0.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 (301) hide show
  1. package/dist/elements/Accordion/index.js +1 -335
  2. package/dist/elements/Accordion/index.js.map +1 -1
  3. package/dist/elements/Accordion/index.mjs +1 -317
  4. package/dist/elements/Accordion/index.mjs.map +1 -1
  5. package/dist/elements/AlertDialog/AlertDialog.d.ts +43 -0
  6. package/dist/elements/AlertDialog/AlertDialog.d.ts.map +1 -0
  7. package/dist/elements/AlertDialog/AlertDialog.styles.d.ts +15 -0
  8. package/dist/elements/AlertDialog/AlertDialog.styles.d.ts.map +1 -0
  9. package/dist/elements/AlertDialog/AlertDialog.types.d.ts +72 -0
  10. package/dist/elements/AlertDialog/AlertDialog.types.d.ts.map +1 -0
  11. package/dist/elements/AlertDialog/index.d.ts +25 -0
  12. package/dist/elements/AlertDialog/index.d.ts.map +1 -0
  13. package/dist/elements/AlertDialog/index.js +3 -0
  14. package/dist/elements/AlertDialog/index.js.map +1 -0
  15. package/dist/elements/AlertDialog/index.mjs +3 -0
  16. package/dist/elements/AlertDialog/index.mjs.map +1 -0
  17. package/dist/elements/Avatar/index.js +1 -468
  18. package/dist/elements/Avatar/index.js.map +1 -1
  19. package/dist/elements/Avatar/index.mjs +1 -456
  20. package/dist/elements/Avatar/index.mjs.map +1 -1
  21. package/dist/elements/Badge/index.js +1 -243
  22. package/dist/elements/Badge/index.js.map +1 -1
  23. package/dist/elements/Badge/index.mjs +1 -234
  24. package/dist/elements/Badge/index.mjs.map +1 -1
  25. package/dist/elements/Breadcrumbs/index.js +1 -821
  26. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  27. package/dist/elements/Breadcrumbs/index.mjs +1 -810
  28. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  29. package/dist/elements/Button/Button.d.ts +26 -81
  30. package/dist/elements/Button/Button.d.ts.map +1 -1
  31. package/dist/elements/Button/Button.styles.d.ts +35 -0
  32. package/dist/elements/Button/Button.styles.d.ts.map +1 -0
  33. package/dist/elements/Button/Button.types.d.ts +20 -8
  34. package/dist/elements/Button/Button.types.d.ts.map +1 -1
  35. package/dist/elements/Button/index.js +1 -288
  36. package/dist/elements/Button/index.js.map +1 -1
  37. package/dist/elements/Button/index.mjs +1 -283
  38. package/dist/elements/Button/index.mjs.map +1 -1
  39. package/dist/elements/ButtonGroup/index.js +1 -237
  40. package/dist/elements/ButtonGroup/index.js.map +1 -1
  41. package/dist/elements/ButtonGroup/index.mjs +1 -222
  42. package/dist/elements/ButtonGroup/index.mjs.map +1 -1
  43. package/dist/elements/Card/index.js +1 -579
  44. package/dist/elements/Card/index.js.map +1 -1
  45. package/dist/elements/Card/index.mjs +1 -560
  46. package/dist/elements/Card/index.mjs.map +1 -1
  47. package/dist/elements/Carousel/Carousel.d.ts +1 -11
  48. package/dist/elements/Carousel/Carousel.d.ts.map +1 -1
  49. package/dist/elements/Carousel/LazyCarousel.d.ts +1 -1
  50. package/dist/elements/Carousel/LazyCarousel.d.ts.map +1 -1
  51. package/dist/elements/Carousel/index.js +1 -789
  52. package/dist/elements/Carousel/index.js.map +1 -1
  53. package/dist/elements/Carousel/index.mjs +1 -786
  54. package/dist/elements/Carousel/index.mjs.map +1 -1
  55. package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
  56. package/dist/elements/Chart/index.js +1 -1842
  57. package/dist/elements/Chart/index.js.map +1 -1
  58. package/dist/elements/Chart/index.mjs +1 -1832
  59. package/dist/elements/Chart/index.mjs.map +1 -1
  60. package/dist/elements/Checkbox/index.js +1 -316
  61. package/dist/elements/Checkbox/index.js.map +1 -1
  62. package/dist/elements/Checkbox/index.mjs +1 -306
  63. package/dist/elements/Checkbox/index.mjs.map +1 -1
  64. package/dist/elements/CheckboxGroup/index.js +1 -455
  65. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  66. package/dist/elements/CheckboxGroup/index.mjs +1 -439
  67. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  68. package/dist/elements/Combobox/Combobox.d.ts +56 -0
  69. package/dist/elements/Combobox/Combobox.d.ts.map +1 -0
  70. package/dist/elements/Combobox/Combobox.styles.d.ts +29 -0
  71. package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -0
  72. package/dist/elements/Combobox/Combobox.types.d.ts +67 -0
  73. package/dist/elements/Combobox/Combobox.types.d.ts.map +1 -0
  74. package/dist/elements/Combobox/index.d.ts +20 -0
  75. package/dist/elements/Combobox/index.d.ts.map +1 -0
  76. package/dist/elements/Combobox/index.js +3 -0
  77. package/dist/elements/Combobox/index.js.map +1 -0
  78. package/dist/elements/Combobox/index.mjs +3 -0
  79. package/dist/elements/Combobox/index.mjs.map +1 -0
  80. package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
  81. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  82. package/dist/elements/DatePicker/index.js +1 -903
  83. package/dist/elements/DatePicker/index.js.map +1 -1
  84. package/dist/elements/DatePicker/index.mjs +1 -853
  85. package/dist/elements/DatePicker/index.mjs.map +1 -1
  86. package/dist/elements/Dropdown/Dropdown.d.ts +7 -15
  87. package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
  88. package/dist/elements/Dropdown/Dropdown.styles.d.ts +22 -0
  89. package/dist/elements/Dropdown/Dropdown.styles.d.ts.map +1 -0
  90. package/dist/elements/Dropdown/index.d.ts +1 -0
  91. package/dist/elements/Dropdown/index.d.ts.map +1 -1
  92. package/dist/elements/Dropdown/index.js +1 -193
  93. package/dist/elements/Dropdown/index.js.map +1 -1
  94. package/dist/elements/Dropdown/index.mjs +1 -184
  95. package/dist/elements/Dropdown/index.mjs.map +1 -1
  96. package/dist/elements/FileField/index.js +1 -1539
  97. package/dist/elements/FileField/index.js.map +1 -1
  98. package/dist/elements/FileField/index.mjs +1 -1507
  99. package/dist/elements/FileField/index.mjs.map +1 -1
  100. package/dist/elements/FormLayout/index.js +1 -170
  101. package/dist/elements/FormLayout/index.js.map +1 -1
  102. package/dist/elements/FormLayout/index.mjs +1 -167
  103. package/dist/elements/FormLayout/index.mjs.map +1 -1
  104. package/dist/elements/Modal/Modal.d.ts +9 -14
  105. package/dist/elements/Modal/Modal.d.ts.map +1 -1
  106. package/dist/elements/Modal/Modal.styles.d.ts +29 -0
  107. package/dist/elements/Modal/Modal.styles.d.ts.map +1 -0
  108. package/dist/elements/Modal/index.d.ts +1 -0
  109. package/dist/elements/Modal/index.d.ts.map +1 -1
  110. package/dist/elements/Modal/index.js +1 -232
  111. package/dist/elements/Modal/index.js.map +1 -1
  112. package/dist/elements/Modal/index.mjs +1 -220
  113. package/dist/elements/Modal/index.mjs.map +1 -1
  114. package/dist/elements/NumberField/index.js +1 -666
  115. package/dist/elements/NumberField/index.js.map +1 -1
  116. package/dist/elements/NumberField/index.mjs +1 -654
  117. package/dist/elements/NumberField/index.mjs.map +1 -1
  118. package/dist/elements/OTPInput/OTPInput.d.ts.map +1 -1
  119. package/dist/elements/OTPInput/index.js +1 -734
  120. package/dist/elements/OTPInput/index.js.map +1 -1
  121. package/dist/elements/OTPInput/index.mjs +1 -732
  122. package/dist/elements/OTPInput/index.mjs.map +1 -1
  123. package/dist/elements/Pagination/Pagination.d.ts +45 -0
  124. package/dist/elements/Pagination/Pagination.d.ts.map +1 -0
  125. package/dist/elements/Pagination/Pagination.styles.d.ts +10 -0
  126. package/dist/elements/Pagination/Pagination.styles.d.ts.map +1 -0
  127. package/dist/elements/Pagination/Pagination.types.d.ts +55 -0
  128. package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -0
  129. package/dist/elements/Pagination/index.d.ts +21 -0
  130. package/dist/elements/Pagination/index.d.ts.map +1 -0
  131. package/dist/elements/Pagination/index.js +3 -0
  132. package/dist/elements/Pagination/index.js.map +1 -0
  133. package/dist/elements/Pagination/index.mjs +3 -0
  134. package/dist/elements/Pagination/index.mjs.map +1 -0
  135. package/dist/elements/Panel/index.js +1 -330
  136. package/dist/elements/Panel/index.js.map +1 -1
  137. package/dist/elements/Panel/index.mjs +1 -323
  138. package/dist/elements/Panel/index.mjs.map +1 -1
  139. package/dist/elements/PasswordField/PasswordField.d.ts +27 -0
  140. package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -0
  141. package/dist/elements/PasswordField/PasswordField.styles.d.ts +32 -0
  142. package/dist/elements/PasswordField/PasswordField.styles.d.ts.map +1 -0
  143. package/dist/elements/PasswordField/PasswordField.types.d.ts +100 -0
  144. package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -0
  145. package/dist/elements/PasswordField/index.css +2 -0
  146. package/dist/elements/PasswordField/index.css.map +1 -0
  147. package/dist/elements/PasswordField/index.d.ts +20 -0
  148. package/dist/elements/PasswordField/index.d.ts.map +1 -0
  149. package/dist/elements/PasswordField/index.js +3 -0
  150. package/dist/elements/PasswordField/index.js.map +1 -0
  151. package/dist/elements/PasswordField/index.mjs +3 -0
  152. package/dist/elements/PasswordField/index.mjs.map +1 -0
  153. package/dist/elements/Progress/index.js +1 -187
  154. package/dist/elements/Progress/index.js.map +1 -1
  155. package/dist/elements/Progress/index.mjs +1 -181
  156. package/dist/elements/Progress/index.mjs.map +1 -1
  157. package/dist/elements/RadioGroup/index.js +1 -369
  158. package/dist/elements/RadioGroup/index.js.map +1 -1
  159. package/dist/elements/RadioGroup/index.mjs +1 -359
  160. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  161. package/dist/elements/Resizable/index.js +1 -1580
  162. package/dist/elements/Resizable/index.js.map +1 -1
  163. package/dist/elements/Resizable/index.mjs +1 -1566
  164. package/dist/elements/Resizable/index.mjs.map +1 -1
  165. package/dist/elements/SearchField/SearchField.d.ts +27 -0
  166. package/dist/elements/SearchField/SearchField.d.ts.map +1 -0
  167. package/dist/elements/SearchField/SearchField.styles.d.ts +32 -0
  168. package/dist/elements/SearchField/SearchField.styles.d.ts.map +1 -0
  169. package/dist/elements/SearchField/SearchField.types.d.ts +45 -0
  170. package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -0
  171. package/dist/elements/SearchField/index.css +2 -0
  172. package/dist/elements/SearchField/index.css.map +1 -0
  173. package/dist/elements/SearchField/index.d.ts +21 -0
  174. package/dist/elements/SearchField/index.d.ts.map +1 -0
  175. package/dist/elements/SearchField/index.js +3 -0
  176. package/dist/elements/SearchField/index.js.map +1 -0
  177. package/dist/elements/SearchField/index.mjs +3 -0
  178. package/dist/elements/SearchField/index.mjs.map +1 -0
  179. package/dist/elements/Select/Select.d.ts +19 -48
  180. package/dist/elements/Select/Select.d.ts.map +1 -1
  181. package/dist/elements/Select/Select.styles.d.ts +55 -0
  182. package/dist/elements/Select/Select.styles.d.ts.map +1 -0
  183. package/dist/elements/Select/index.js +1 -589
  184. package/dist/elements/Select/index.js.map +1 -1
  185. package/dist/elements/Select/index.mjs +1 -582
  186. package/dist/elements/Select/index.mjs.map +1 -1
  187. package/dist/elements/Skeleton/index.js +1 -82
  188. package/dist/elements/Skeleton/index.js.map +1 -1
  189. package/dist/elements/Skeleton/index.mjs +1 -78
  190. package/dist/elements/Skeleton/index.mjs.map +1 -1
  191. package/dist/elements/Switch/index.js +1 -179
  192. package/dist/elements/Switch/index.js.map +1 -1
  193. package/dist/elements/Switch/index.mjs +1 -173
  194. package/dist/elements/Switch/index.mjs.map +1 -1
  195. package/dist/elements/Table/Table.d.ts +3 -24
  196. package/dist/elements/Table/Table.d.ts.map +1 -1
  197. package/dist/elements/Table/Table.styles.d.ts +24 -0
  198. package/dist/elements/Table/Table.styles.d.ts.map +1 -0
  199. package/dist/elements/Table/index.js +1 -595
  200. package/dist/elements/Table/index.js.map +1 -1
  201. package/dist/elements/Table/index.mjs +1 -578
  202. package/dist/elements/Table/index.mjs.map +1 -1
  203. package/dist/elements/Tabs/index.js +1 -337
  204. package/dist/elements/Tabs/index.js.map +1 -1
  205. package/dist/elements/Tabs/index.mjs +1 -320
  206. package/dist/elements/Tabs/index.mjs.map +1 -1
  207. package/dist/elements/TextField/TextField.d.ts +6 -42
  208. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  209. package/dist/elements/TextField/TextField.hooks.d.ts +63 -0
  210. package/dist/elements/TextField/TextField.hooks.d.ts.map +1 -0
  211. package/dist/elements/TextField/TextField.icons.d.ts +19 -0
  212. package/dist/elements/TextField/TextField.icons.d.ts.map +1 -0
  213. package/dist/elements/TextField/TextField.styles.d.ts +37 -0
  214. package/dist/elements/TextField/TextField.styles.d.ts.map +1 -0
  215. package/dist/elements/TextField/TextField.types.d.ts +3 -0
  216. package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
  217. package/dist/elements/TextField/index.css +1 -22
  218. package/dist/elements/TextField/index.css.map +1 -1
  219. package/dist/elements/TextField/index.js +1 -902
  220. package/dist/elements/TextField/index.js.map +1 -1
  221. package/dist/elements/TextField/index.mjs +1 -882
  222. package/dist/elements/TextField/index.mjs.map +1 -1
  223. package/dist/elements/TimeField/index.js +1 -254
  224. package/dist/elements/TimeField/index.js.map +1 -1
  225. package/dist/elements/TimeField/index.mjs +1 -238
  226. package/dist/elements/TimeField/index.mjs.map +1 -1
  227. package/dist/elements/Toast/Toast.d.ts +0 -22
  228. package/dist/elements/Toast/Toast.d.ts.map +1 -1
  229. package/dist/elements/Toast/index.js +1 -737
  230. package/dist/elements/Toast/index.js.map +1 -1
  231. package/dist/elements/Toast/index.mjs +1 -724
  232. package/dist/elements/Toast/index.mjs.map +1 -1
  233. package/dist/elements/Tooltip/index.js +1 -323
  234. package/dist/elements/Tooltip/index.js.map +1 -1
  235. package/dist/elements/Tooltip/index.mjs +1 -310
  236. package/dist/elements/Tooltip/index.mjs.map +1 -1
  237. package/dist/elements/index.css +1 -22
  238. package/dist/elements/index.css.map +1 -1
  239. package/dist/elements/index.d.ts +13 -1
  240. package/dist/elements/index.d.ts.map +1 -1
  241. package/dist/elements/index.js +1 -12455
  242. package/dist/elements/index.js.map +1 -1
  243. package/dist/elements/index.mjs +1 -12233
  244. package/dist/elements/index.mjs.map +1 -1
  245. package/dist/index.css +1 -22
  246. package/dist/index.css.map +1 -1
  247. package/dist/index.js +2 -12490
  248. package/dist/index.js.map +1 -1
  249. package/dist/index.mjs +2 -12262
  250. package/dist/index.mjs.map +1 -1
  251. package/dist/schemas/index.js +2 -54
  252. package/dist/schemas/index.js.map +1 -1
  253. package/dist/schemas/index.mjs +2 -48
  254. package/dist/schemas/index.mjs.map +1 -1
  255. package/dist/styles/defaults.css +151 -0
  256. package/dist/styles/index.js +1 -166
  257. package/dist/styles/index.js.map +1 -1
  258. package/dist/styles/index.mjs +1 -129
  259. package/dist/styles/index.mjs.map +1 -1
  260. package/dist/utils/index.js +1 -12
  261. package/dist/utils/index.js.map +1 -1
  262. package/dist/utils/index.mjs +1 -10
  263. package/dist/utils/index.mjs.map +1 -1
  264. package/package.json +9 -7
  265. package/src/elements/Accordion/Accordion.stories.tsx +1 -1
  266. package/src/elements/AlertDialog/AlertDialog.stories.tsx +124 -0
  267. package/src/elements/Avatar/Avatar.stories.tsx +1 -1
  268. package/src/elements/Badge/Badge.stories.tsx +1 -1
  269. package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  270. package/src/elements/Button/Button.stories.tsx +1 -1
  271. package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +1 -1
  272. package/src/elements/Card/Card.stories.tsx +1 -1
  273. package/src/elements/Carousel/Carousel.stories.tsx +1 -1
  274. package/src/elements/Chart/Chart.stories.tsx +1 -1
  275. package/src/elements/Checkbox/Checkbox.stories.tsx +1 -1
  276. package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +1 -1
  277. package/src/elements/Combobox/Combobox.stories.tsx +133 -0
  278. package/src/elements/DatePicker/DatePicker.stories.tsx +1 -1
  279. package/src/elements/Dropdown/Dropdown.stories.tsx +1 -1
  280. package/src/elements/FileField/FileField.stories.tsx +1 -1
  281. package/src/elements/FileField/FileProgress.stories.tsx +1 -1
  282. package/src/elements/FormLayout/FormLayout.stories.tsx +1 -1
  283. package/src/elements/Modal/Modal.stories.tsx +1 -1
  284. package/src/elements/NumberField/NumberField.stories.tsx +1 -1
  285. package/src/elements/OTPInput/OTPInput.stories.tsx +1 -1
  286. package/src/elements/Pagination/Pagination.stories.tsx +203 -0
  287. package/src/elements/Panel/Panel.stories.tsx +1 -1
  288. package/src/elements/PasswordField/PasswordField.stories.tsx +167 -0
  289. package/src/elements/Progress/Progress.stories.tsx +1 -1
  290. package/src/elements/RadioGroup/RadioGroup.stories.tsx +1 -1
  291. package/src/elements/Resizable/Resizable.stories.tsx +1 -1
  292. package/src/elements/SearchField/SearchField.stories.tsx +146 -0
  293. package/src/elements/Select/Select.stories.tsx +1 -1
  294. package/src/elements/Skeleton/Skeleton.stories.tsx +1 -1
  295. package/src/elements/Switch/Switch.stories.tsx +1 -1
  296. package/src/elements/Table/Table.stories.tsx +1 -1
  297. package/src/elements/Tabs/Tabs.stories.tsx +1 -1
  298. package/src/elements/TextField/TextField.stories.tsx +1 -1
  299. package/src/elements/TimeField/TimeField.stories.tsx +1 -1
  300. package/src/elements/Toast/Toast.stories.tsx +1 -1
  301. package/src/elements/Tooltip/Tooltip.stories.tsx +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/styles/interaction-states.ts","../../../src/elements/Checkbox/Checkbox.tsx","../../../src/elements/Table/Table.tsx"],"names":["AriaCheckbox","cva","forwardRef","jsx","AriaTable","jsxs","AriaTableHeader","AriaColumn","AriaTableBody","AriaRow","AriaCell"],"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","/**\n * Global Interaction State Styles\n *\n * Consistent interaction patterns across all Themis components.\n * These styles ensure WCAG 2.2 AAA compliance and predictable UX.\n *\n * @see spec.md FR-010 (Visible focus ring for keyboard navigation)\n * @see spec.md FR-031 (Pressed state feedback)\n * @see spec.md FR-012 (High contrast mode support)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\n/**\n * Focus state styles (FR-010)\n * Visible focus ring for keyboard navigation - WCAG 2.2 Level AAA\n *\n * Components can override by extending these styles:\n * @example\n * cn(FOCUS_STYLES, \"ring-4\") // Increases ring width to 4px\n */\nexport const FOCUS_STYLES = \"data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2\";\n\n/**\n * Pressed/Active state styles (FR-031)\n * Visual feedback for press interactions\n *\n * Components can override the scale amount:\n * @example\n * cn(PRESSED_STYLES_BASE, \"data-[pressed]:scale-[0.95]\") // More pronounced scale\n */\nexport const PRESSED_STYLES = \"data-[pressed]:scale-[0.97]\";\n\n/**\n * Base pressed styles without scale (for components that need different feedback)\n */\nexport const PRESSED_STYLES_BASE = \"data-[pressed]:transition-transform data-[pressed]:duration-100\";\n\n/**\n * Hover state styles\n * Elevation change on hover for better affordance\n *\n * Components can override shadow depth:\n * @example\n * cn(HOVER_STYLES_BASE, \"data-[hovered]:shadow-lg\") // Larger shadow\n */\nexport const HOVER_STYLES = \"data-[hovered]:shadow-md\";\n\n/**\n * Base hover styles without shadow (for components that use different hover effects)\n */\nexport const HOVER_STYLES_BASE = \"data-[hovered]:transition-shadow data-[hovered]:duration-200\";\n\n/**\n * High contrast mode focus (FR-012)\n * Enhanced outlines for users requiring high contrast\n *\n * Uses 'hc:' prefix for prefers-contrast: more media query\n */\nexport const HIGH_CONTRAST_FOCUS = \"hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground\";\n\n/**\n * High contrast mode hover (FR-012)\n * Enhanced outlines for hover in high contrast mode\n */\nexport const HIGH_CONTRAST_HOVER = \"hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground\";\n\n/**\n * High contrast mode pressed state\n * Enhanced outlines for pressed state in high contrast mode\n */\nexport const HIGH_CONTRAST_PRESSED = \"hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground\";\n\n/**\n * Combined high contrast styles\n * Use this for components that need all high contrast interaction states\n */\nexport const HIGH_CONTRAST_INTERACTIONS = `${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Disabled state styles\n * Consistent disabled appearance across all components\n */\nexport const DISABLED_STYLES = \"disabled:pointer-events-none disabled:opacity-50\";\n\n/**\n * Default interaction bundle\n * Most common combination for interactive components\n *\n * Includes: focus ring, pressed scale, hover shadow, high contrast enhancements\n *\n * @example\n * <button className={cn(DEFAULT_INTERACTIONS, \"bg-primary\")}>Click</button>\n */\nexport const DEFAULT_INTERACTIONS = `${FOCUS_STYLES} ${PRESSED_STYLES} ${HOVER_STYLES} ${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Subtle interaction bundle\n * For components that need less pronounced feedback\n *\n * Includes: focus ring and high contrast, but no hover shadow or pressed scale\n */\nexport const SUBTLE_INTERACTIONS = `${FOCUS_STYLES} ${HIGH_CONTRAST_FOCUS}`;\n\n/**\n * Non-interactive element styles\n * For elements that should indicate they are not interactive\n */\nexport const NON_INTERACTIVE = \"cursor-default select-none\";\n","\"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","'use client';\n\n/**\n * Table Component - Accessible Data Table (v1)\n * ARIA grid pattern with React Aria primitives\n *\n * @see plan.md for architecture details\n * @see table-prd.md for requirements\n * @see WCAG 2.2 AAA compliance\n */\n\nimport {\n forwardRef,\n createContext,\n useContext,\n type ReactNode,\n type ReactElement,\n type ForwardedRef,\n} from 'react';\nimport {\n Table as AriaTable,\n TableHeader as AriaTableHeader,\n TableBody as AriaTableBody,\n Column as AriaColumn,\n Row as AriaRow,\n Cell as AriaCell,\n Collection,\n useTableOptions,\n type TableHeaderProps as AriaTableHeaderProps,\n type TableBodyProps as AriaTableBodyProps,\n type RowProps as AriaRowProps,\n type CellProps as AriaCellProps,\n type Selection,\n type SortDescriptor,\n} from 'react-aria-components';\nimport { Checkbox } from '../Checkbox';\nimport { cva } from 'class-variance-authority';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport type {\n TableProps,\n TableHeaderProps,\n TableBodyProps,\n TableFooterProps,\n TableCaptionProps,\n ColumnProps,\n RowProps,\n CellProps,\n TableVariant,\n TableSize,\n} from './Table.types';\n\n// ============================================================================\n// Context for passing table-level props to children\n// ============================================================================\n\ninterface TableContextValue {\n variant: TableVariant;\n size: TableSize;\n selectionMode: 'none' | 'single' | 'multiple';\n stickyHeader: boolean;\n}\n\nconst TableContext = createContext<TableContextValue>({\n variant: 'default',\n size: 'default',\n selectionMode: 'none',\n stickyHeader: false,\n});\n\n// ============================================================================\n// CVA Variants\n// ============================================================================\n\n// Table container variants (wrapper div)\nexport const tableContainerVariants = cva(['relative w-full overflow-auto']);\n\n// Table variants\nexport const tableVariants = cva(\n ['w-full caption-bottom text-sm', 'border-collapse'],\n {\n variants: {\n variant: {\n default: '',\n bordered: 'border border-[var(--border)] rounded-md',\n striped: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\n// Table header variants\nexport const tableHeaderVariants = cva(['[&_tr]:border-b'], {\n variants: {\n sticky: {\n true: 'sticky top-0 z-10 bg-[var(--content-background)]',\n false: '',\n },\n },\n defaultVariants: {\n sticky: false,\n },\n});\n\n// Table footer variants\nexport const tableFooterVariants = cva([\n 'border-t border-[var(--border)]',\n 'bg-[var(--accent-background)]/50',\n 'font-medium',\n '[&>tr]:last:border-b-0',\n]);\n\n// Table caption variants\nexport const tableCaptionVariants = cva([\n 'mt-4 text-sm text-[var(--menu-muted)]',\n]);\n\n// Column variants\nexport const columnVariants = cva(\n [\n 'h-12 px-4 text-left align-middle font-medium',\n 'text-[var(--menu-muted)]',\n '[&:has([role=checkbox])]:pr-0',\n 'select-none',\n 'focus-visible:outline-none focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)] focus-visible:ring-inset',\n ],\n {\n variants: {\n allowsSorting: {\n true: 'cursor-pointer hover:bg-[var(--accent)]/50',\n false: '',\n },\n align: {\n start: 'text-start',\n center: 'text-center',\n end: 'text-end',\n },\n size: {\n sm: 'h-10 px-3 text-xs',\n default: 'h-12 px-4 text-sm',\n lg: 'h-14 px-5 text-base',\n },\n },\n defaultVariants: {\n allowsSorting: false,\n align: 'start',\n size: 'default',\n },\n }\n);\n\n// Row variants\nexport const rowVariants = cva(\n [\n 'border-b border-[var(--border)]',\n 'transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)] focus-visible:ring-inset',\n 'hover:bg-[var(--accent-background)]/50',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n ],\n {\n variants: {\n isSelected: {\n true: 'bg-[var(--accent)] data-[selected]:bg-[var(--accent)]',\n false: '',\n },\n variant: {\n default: '',\n striped: 'even:bg-[var(--accent-background)]/30',\n },\n },\n defaultVariants: {\n isSelected: false,\n variant: 'default',\n },\n }\n);\n\n// Cell variants\nexport const cellVariants = cva(\n ['p-4 align-middle', '[&:has([role=checkbox])]:pr-0'],\n {\n variants: {\n align: {\n start: 'text-start',\n center: 'text-center',\n end: 'text-end',\n },\n size: {\n sm: 'p-3 text-xs',\n default: 'p-4 text-sm',\n lg: 'p-5 text-base',\n },\n isRowHeader: {\n true: 'font-medium',\n false: '',\n },\n },\n defaultVariants: {\n align: 'start',\n size: 'default',\n isRowHeader: false,\n },\n }\n);\n\n// ============================================================================\n// Table Component\n// ============================================================================\n\nconst Table = forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n variant = 'default',\n size = 'default',\n stickyHeader = false,\n selectionMode = 'none',\n selectionBehavior = 'toggle',\n disallowEmptySelection = false,\n disabledBehavior = 'selection',\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n disabledKeys,\n sortDescriptor,\n onSortChange,\n onRowAction,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <TableContext.Provider value={{ variant, size, selectionMode, stickyHeader }}>\n <div\n className={cn(tableContainerVariants(), className)}\n data-testid=\"table-container\"\n >\n <AriaTable\n ref={ref}\n className={cn(tableVariants({ variant }))}\n selectionMode={selectionMode}\n selectionBehavior={selectionBehavior}\n disallowEmptySelection={disallowEmptySelection}\n disabledBehavior={disabledBehavior}\n selectedKeys={selectedKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n onSelectionChange={onSelectionChange}\n disabledKeys={disabledKeys}\n sortDescriptor={sortDescriptor}\n onSortChange={onSortChange}\n onRowAction={onRowAction}\n data-testid=\"table\"\n data-variant={variant}\n data-size={size}\n {...props}\n >\n {children}\n </AriaTable>\n </div>\n </TableContext.Provider>\n );\n }\n);\n\nTable.displayName = 'Table';\n\n// ============================================================================\n// TableHeader Component\n// ============================================================================\n\nfunction TableHeaderInner<T extends object>(\n { className, children, columns, ...props }: TableHeaderProps<T>,\n ref: ForwardedRef<HTMLTableSectionElement>\n): ReactElement {\n const { size, selectionMode, stickyHeader } = useContext(TableContext);\n const { allowsDragging } = useTableOptions();\n\n return (\n <AriaTableHeader\n ref={ref}\n className={cn(tableHeaderVariants({ sticky: stickyHeader }), className)}\n data-testid=\"table-header\"\n {...(props as AriaTableHeaderProps<T>)}\n >\n {/* Selection checkbox column */}\n {selectionMode === 'multiple' && (\n <AriaColumn className={cn(columnVariants({ size }), 'w-12')}>\n <Checkbox slot=\"selection\" aria-label=\"Select all\" size={size} />\n </AriaColumn>\n )}\n {/* Drag handle column if dragging is allowed */}\n {allowsDragging && <AriaColumn />}\n {/* Render columns */}\n {columns ? (\n <Collection items={columns}>{children as (item: T) => ReactElement}</Collection>\n ) : (\n children\n )}\n </AriaTableHeader>\n );\n}\n\nconst TableHeader = forwardRef(TableHeaderInner) as <T extends object>(\n props: TableHeaderProps<T> & { ref?: ForwardedRef<HTMLTableSectionElement> }\n) => ReactElement;\n\n(TableHeader as { displayName?: string }).displayName = 'TableHeader';\n\n// ============================================================================\n// TableBody Component\n// ============================================================================\n\nfunction TableBodyInner<T extends object>(\n { className, children, items, renderEmptyState, ...props }: TableBodyProps<T>,\n ref: ForwardedRef<HTMLTableSectionElement>\n): ReactElement {\n return (\n <AriaTableBody\n ref={ref}\n className={cn(className)}\n items={items}\n renderEmptyState={\n renderEmptyState\n ? () => (\n <tr>\n <td colSpan={99} className=\"text-center p-8\">\n {renderEmptyState()}\n </td>\n </tr>\n )\n : undefined\n }\n data-testid=\"table-body\"\n {...(props as AriaTableBodyProps<T>)}\n >\n {children as AriaTableBodyProps<T>['children']}\n </AriaTableBody>\n );\n}\n\nconst TableBody = forwardRef(TableBodyInner) as <T extends object>(\n props: TableBodyProps<T> & { ref?: ForwardedRef<HTMLTableSectionElement> }\n) => ReactElement;\n\n(TableBody as { displayName?: string }).displayName = 'TableBody';\n\n// ============================================================================\n// TableFooter Component (Custom - not from React Aria)\n// ============================================================================\n\nconst TableFooter = forwardRef<HTMLTableSectionElement, TableFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <tfoot\n ref={ref}\n className={cn(tableFooterVariants(), className)}\n data-testid=\"table-footer\"\n {...props}\n >\n {children}\n </tfoot>\n );\n }\n);\n\nTableFooter.displayName = 'TableFooter';\n\n// ============================================================================\n// TableCaption Component (Custom - not from React Aria)\n// ============================================================================\n\nconst TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <caption\n ref={ref}\n className={cn(tableCaptionVariants(), className)}\n data-testid=\"table-caption\"\n {...props}\n >\n {children}\n </caption>\n );\n }\n);\n\nTableCaption.displayName = 'TableCaption';\n\n// ============================================================================\n// Column Component\n// ============================================================================\n\nconst Column = forwardRef<HTMLTableCellElement, ColumnProps>(\n (\n {\n className,\n children,\n isRowHeader = false,\n allowsSorting = false,\n align = 'start',\n width,\n minWidth,\n maxWidth,\n ...props\n },\n ref\n ) => {\n const { size } = useContext(TableContext);\n\n return (\n <AriaColumn\n ref={ref}\n isRowHeader={isRowHeader}\n allowsSorting={allowsSorting}\n width={width}\n minWidth={minWidth}\n maxWidth={maxWidth}\n className={cn(columnVariants({ allowsSorting, align, size }), className)}\n {...props}\n >\n {({ allowsSorting: canSort, sortDirection }) => (\n <div className=\"flex items-center gap-1\">\n <span>{children as ReactNode}</span>\n {canSort && sortDirection && (\n <span aria-hidden=\"true\" data-sort-direction={sortDirection}>\n {sortDirection === 'ascending' ? (\n <ChevronUp className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4\" />\n )}\n </span>\n )}\n </div>\n )}\n </AriaColumn>\n );\n }\n);\n\n(Column as { displayName?: string }).displayName = 'Column';\n\n// ============================================================================\n// Row Component\n// ============================================================================\n\nfunction RowInner<T extends object>(\n { className, children, columns, href, isDisabled, ...props }: RowProps<T>,\n ref: ForwardedRef<HTMLTableRowElement>\n): ReactElement {\n const { variant, size, selectionMode } = useContext(TableContext);\n const { allowsDragging } = useTableOptions();\n\n return (\n <AriaRow\n ref={ref}\n href={href}\n isDisabled={isDisabled}\n className={({ isSelected, isDisabled: disabled }) =>\n cn(\n rowVariants({\n isSelected,\n variant: variant === 'striped' ? 'striped' : 'default',\n }),\n disabled && 'opacity-50',\n className\n )\n }\n data-testid=\"table-row\"\n {...(props as AriaRowProps<T>)}\n >\n {/* Selection checkbox cell */}\n {selectionMode === 'multiple' && (\n <AriaCell className={cn(cellVariants({ size }), 'w-12')}>\n <Checkbox slot=\"selection\" aria-label=\"Select row\" size={size} />\n </AriaCell>\n )}\n {/* Drag handle cell if dragging is allowed */}\n {allowsDragging && (\n <AriaCell>\n {/* Placeholder for drag handle - v2 feature */}\n </AriaCell>\n )}\n {/* Render cells */}\n {columns ? (\n <Collection items={columns}>{children as (item: T) => ReactElement}</Collection>\n ) : (\n children\n )}\n </AriaRow>\n );\n}\n\nconst Row = forwardRef(RowInner) as <T extends object>(\n props: RowProps<T> & { ref?: ForwardedRef<HTMLTableRowElement> }\n) => ReactElement;\n\n(Row as { displayName?: string }).displayName = 'Row';\n\n// ============================================================================\n// Cell Component\n// ============================================================================\n\nconst Cell = forwardRef<HTMLTableCellElement, CellProps>(\n ({ className, children, align = 'start', colSpan: _colSpan, ...props }, ref) => {\n const { size } = useContext(TableContext);\n\n return (\n <AriaCell\n ref={ref}\n className={cn(cellVariants({ align, size }), className)}\n {...(props as AriaCellProps)}\n >\n {children}\n </AriaCell>\n );\n }\n);\n\nCell.displayName = 'Cell';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableCaption,\n Column,\n Row,\n Cell,\n};\n\n// Re-export types\nexport type { Selection, SortDescriptor };\n"]}
1
+ {"version":3,"sources":["../../../src/utils/cn.ts","../../../src/styles/interaction-states.ts","../../../src/elements/Checkbox/Checkbox.tsx","../../../src/elements/Table/Table.styles.ts","../../../src/elements/Table/Table.tsx"],"names":["cn","inputs","twMerge","clsx","FOCUS_STYLES","HIGH_CONTRAST_FOCUS","checkboxContainerVariants","cva","checkboxIndicatorVariants","checkmarkVariants","CheckmarkIcon","className","props","jsx","MinusIcon","Checkbox","forwardRef","isSelected","defaultSelected","isDisabled","isReadOnly","isIndeterminate","isInvalid","isRequired","onChange","onFocusChange","value","name","size","variant","label","description","selectedIcon","id","ariaLabel","ariaLabelledby","ariaDescribedby","dataTestId","slot","ref","computedIsDisabled","computedIsReadOnly","computedIsIndeterminate","renderIcon","isChecked","isIndet","iconClassName","dataSelected","dataIndeterminate","isValidElement","iconElement","cloneElement","AriaCheckbox","renderProps","jsxs","Fragment","tableContainerVariants","tableVariants","tableHeaderVariants","tableFooterVariants","tableCaptionVariants","columnVariants","rowVariants","cellVariants","TableContext","createContext","Table","stickyHeader","selectionMode","selectionBehavior","disallowEmptySelection","disabledBehavior","selectedKeys","defaultSelectedKeys","onSelectionChange","disabledKeys","sortDescriptor","onSortChange","onRowAction","children","contextValue","useMemo","AriaTable","TableHeaderInner","columns","useContext","allowsDragging","useTableOptions","AriaTableHeader","AriaColumn","Collection","TableHeader","TableBodyInner","items","renderEmptyState","AriaTableBody","TableBody","TableFooter","TableCaption","Column","isRowHeader","allowsSorting","align","width","minWidth","maxWidth","canSort","sortDirection","ChevronUp","ChevronDown","RowInner","href","rowVariant","selectedClasses","unselectedClasses","selectionCellClasses","AriaRow","disabled","AriaCell","Row","Cell","memo","_colSpan"],"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","/**\n * Global Interaction State Styles\n *\n * Consistent interaction patterns across all Themis components.\n * These styles ensure WCAG 2.2 AAA compliance and predictable UX.\n *\n * @see spec.md FR-010 (Visible focus ring for keyboard navigation)\n * @see spec.md FR-031 (Pressed state feedback)\n * @see spec.md FR-012 (High contrast mode support)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\n/**\n * Focus state styles (FR-010)\n * Visible focus ring for keyboard navigation - WCAG 2.2 Level AAA\n *\n * Components can override by extending these styles:\n * @example\n * cn(FOCUS_STYLES, \"ring-4\") // Increases ring width to 4px\n */\nexport const FOCUS_STYLES = \"data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2\";\n\n/**\n * Pressed/Active state styles (FR-031)\n * Visual feedback for press interactions\n *\n * Components can override the scale amount:\n * @example\n * cn(PRESSED_STYLES_BASE, \"data-[pressed]:scale-[0.95]\") // More pronounced scale\n */\nexport const PRESSED_STYLES = \"data-[pressed]:scale-[0.97]\";\n\n/**\n * Base pressed styles without scale (for components that need different feedback)\n */\nexport const PRESSED_STYLES_BASE = \"data-[pressed]:transition-transform data-[pressed]:duration-100\";\n\n/**\n * Hover state styles\n * Elevation change on hover for better affordance\n *\n * Components can override shadow depth:\n * @example\n * cn(HOVER_STYLES_BASE, \"data-[hovered]:shadow-lg\") // Larger shadow\n */\nexport const HOVER_STYLES = \"data-[hovered]:shadow-md\";\n\n/**\n * Base hover styles without shadow (for components that use different hover effects)\n */\nexport const HOVER_STYLES_BASE = \"data-[hovered]:transition-shadow data-[hovered]:duration-200\";\n\n/**\n * High contrast mode focus (FR-012)\n * Enhanced outlines for users requiring high contrast\n *\n * Uses 'hc:' prefix for prefers-contrast: more media query\n */\nexport const HIGH_CONTRAST_FOCUS = \"hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground\";\n\n/**\n * High contrast mode hover (FR-012)\n * Enhanced outlines for hover in high contrast mode\n */\nexport const HIGH_CONTRAST_HOVER = \"hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground\";\n\n/**\n * High contrast mode pressed state\n * Enhanced outlines for pressed state in high contrast mode\n */\nexport const HIGH_CONTRAST_PRESSED = \"hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground\";\n\n/**\n * Combined high contrast styles\n * Use this for components that need all high contrast interaction states\n */\nexport const HIGH_CONTRAST_INTERACTIONS = `${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Disabled state styles\n * Consistent disabled appearance across all components\n */\nexport const DISABLED_STYLES = \"disabled:pointer-events-none disabled:opacity-50\";\n\n/**\n * Default interaction bundle\n * Most common combination for interactive components\n *\n * Includes: focus ring, pressed scale, hover shadow, high contrast enhancements\n *\n * @example\n * <button className={cn(DEFAULT_INTERACTIONS, \"bg-primary\")}>Click</button>\n */\nexport const DEFAULT_INTERACTIONS = `${FOCUS_STYLES} ${PRESSED_STYLES} ${HOVER_STYLES} ${HIGH_CONTRAST_FOCUS} ${HIGH_CONTRAST_HOVER} ${HIGH_CONTRAST_PRESSED}`;\n\n/**\n * Subtle interaction bundle\n * For components that need less pronounced feedback\n *\n * Includes: focus ring and high contrast, but no hover shadow or pressed scale\n */\nexport const SUBTLE_INTERACTIONS = `${FOCUS_STYLES} ${HIGH_CONTRAST_FOCUS}`;\n\n/**\n * Non-interactive element styles\n * For elements that should indicate they are not interactive\n */\nexport const NON_INTERACTIVE = \"cursor-default select-none\";\n","\"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","import { cva } from 'class-variance-authority';\n\n// Table container variants (wrapper div)\nexport const tableContainerVariants = cva(['relative w-full overflow-auto']);\n\n// Table variants\nexport const tableVariants = cva(\n ['w-full caption-bottom text-sm', 'border-collapse'],\n {\n variants: {\n variant: {\n default: '',\n bordered: 'border border-[var(--border)] rounded-md',\n striped: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\n// Table header variants\nexport const tableHeaderVariants = cva(['[&_tr]:border-b'], {\n variants: {\n sticky: {\n true: 'sticky top-0 z-10 bg-[var(--content-background)]',\n false: '',\n },\n },\n defaultVariants: {\n sticky: false,\n },\n});\n\n// Table footer variants\nexport const tableFooterVariants = cva([\n 'border-t border-[var(--border)]',\n 'bg-[var(--accent-background)]/50',\n 'font-medium',\n '[&>tr]:last:border-b-0',\n]);\n\n// Table caption variants\nexport const tableCaptionVariants = cva([\n 'mt-4 text-sm text-[var(--menu-muted)]',\n]);\n\n// Column variants\nexport const columnVariants = cva(\n [\n 'h-12 px-4 text-left align-middle font-medium',\n 'text-[var(--menu-muted)]',\n '[&:has([role=checkbox])]:pr-0',\n 'select-none',\n 'focus-visible:outline-none focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)] focus-visible:ring-inset',\n ],\n {\n variants: {\n allowsSorting: {\n true: 'cursor-pointer hover:bg-[var(--accent)]/50',\n false: '',\n },\n align: {\n start: 'text-start',\n center: 'text-center',\n end: 'text-end',\n },\n size: {\n sm: 'h-10 px-3 text-xs',\n default: 'h-12 px-4 text-sm',\n lg: 'h-14 px-5 text-base',\n },\n },\n defaultVariants: {\n allowsSorting: false,\n align: 'start',\n size: 'default',\n },\n }\n);\n\n// Row variants\nexport const rowVariants = cva(\n [\n 'border-b border-[var(--border)]',\n 'transition-colors',\n 'focus-visible:outline-none focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)] focus-visible:ring-inset',\n 'hover:bg-[var(--accent-background)]/50',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n ],\n {\n variants: {\n isSelected: {\n true: 'bg-[var(--accent)] data-[selected]:bg-[var(--accent)]',\n false: '',\n },\n variant: {\n default: '',\n striped: 'even:bg-[var(--accent-background)]/30',\n },\n },\n defaultVariants: {\n isSelected: false,\n variant: 'default',\n },\n }\n);\n\n// Cell variants\nexport const cellVariants = cva(\n ['p-4 align-middle', '[&:has([role=checkbox])]:pr-0'],\n {\n variants: {\n align: {\n start: 'text-start',\n center: 'text-center',\n end: 'text-end',\n },\n size: {\n sm: 'p-3 text-xs',\n default: 'p-4 text-sm',\n lg: 'p-5 text-base',\n },\n isRowHeader: {\n true: 'font-medium',\n false: '',\n },\n },\n defaultVariants: {\n align: 'start',\n size: 'default',\n isRowHeader: false,\n },\n }\n);\n","'use client';\n\n/**\n * Table Component - Accessible Data Table (v1)\n * ARIA grid pattern with React Aria primitives\n *\n * @see plan.md for architecture details\n * @see table-prd.md for requirements\n * @see WCAG 2.2 AAA compliance\n */\n\nimport {\n forwardRef,\n memo,\n createContext,\n useContext,\n useMemo,\n type ReactNode,\n type ReactElement,\n type ForwardedRef,\n} from 'react';\nimport {\n Table as AriaTable,\n TableHeader as AriaTableHeader,\n TableBody as AriaTableBody,\n Column as AriaColumn,\n Row as AriaRow,\n Cell as AriaCell,\n Collection,\n useTableOptions,\n type TableHeaderProps as AriaTableHeaderProps,\n type TableBodyProps as AriaTableBodyProps,\n type RowProps as AriaRowProps,\n type CellProps as AriaCellProps,\n type Selection,\n type SortDescriptor,\n} from 'react-aria-components';\nimport { Checkbox } from '../Checkbox';\nimport { ChevronUp, ChevronDown } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport {\n tableContainerVariants,\n tableVariants,\n tableHeaderVariants,\n tableFooterVariants,\n tableCaptionVariants,\n columnVariants,\n rowVariants,\n cellVariants,\n} from './Table.styles';\nimport type {\n TableProps,\n TableHeaderProps,\n TableBodyProps,\n TableFooterProps,\n TableCaptionProps,\n ColumnProps,\n RowProps,\n CellProps,\n TableVariant,\n TableSize,\n} from './Table.types';\n\n// ============================================================================\n// Context for passing table-level props to children\n// ============================================================================\n\ninterface TableContextValue {\n variant: TableVariant;\n size: TableSize;\n selectionMode: 'none' | 'single' | 'multiple';\n stickyHeader: boolean;\n}\n\nconst TableContext = createContext<TableContextValue>({\n variant: 'default',\n size: 'default',\n selectionMode: 'none',\n stickyHeader: false,\n});\n\n// ============================================================================\n// Table Component\n// ============================================================================\n\nconst Table = forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n variant = 'default',\n size = 'default',\n stickyHeader = false,\n selectionMode = 'none',\n selectionBehavior = 'toggle',\n disallowEmptySelection = false,\n disabledBehavior = 'selection',\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange,\n disabledKeys,\n sortDescriptor,\n onSortChange,\n onRowAction,\n children,\n ...props\n },\n ref\n ) => {\n // Warn when sm size is used with selection (touch targets < 44px)\n if (process.env.NODE_ENV !== 'production' && size === 'sm' && selectionMode !== 'none') {\n console.warn(\n '[Table] size=\"sm\" with selectionMode produces rows shorter than the 44px WCAG 2.2 AAA minimum touch target. ' +\n 'Use size=\"default\" or size=\"lg\" for accessible interactive tables.'\n );\n }\n\n const contextValue = useMemo(\n () => ({ variant, size, selectionMode, stickyHeader }),\n [variant, size, selectionMode, stickyHeader]\n );\n\n return (\n <TableContext.Provider value={contextValue}>\n <div\n className={cn(tableContainerVariants(), className)}\n data-testid=\"table-container\"\n >\n <AriaTable\n ref={ref}\n className={cn(tableVariants({ variant }))}\n selectionMode={selectionMode}\n selectionBehavior={selectionBehavior}\n disallowEmptySelection={disallowEmptySelection}\n disabledBehavior={disabledBehavior}\n selectedKeys={selectedKeys}\n defaultSelectedKeys={defaultSelectedKeys}\n onSelectionChange={onSelectionChange}\n disabledKeys={disabledKeys}\n sortDescriptor={sortDescriptor}\n onSortChange={onSortChange}\n onRowAction={onRowAction}\n data-testid=\"table\"\n data-variant={variant}\n data-size={size}\n {...props}\n >\n {children}\n </AriaTable>\n </div>\n </TableContext.Provider>\n );\n }\n);\n\nTable.displayName = 'Table';\n\n// ============================================================================\n// TableHeader Component\n// ============================================================================\n\nfunction TableHeaderInner<T extends object>(\n { className, children, columns, ...props }: TableHeaderProps<T>,\n ref: ForwardedRef<HTMLTableSectionElement>\n): ReactElement {\n const { size, selectionMode, stickyHeader } = useContext(TableContext);\n const { allowsDragging } = useTableOptions();\n\n return (\n <AriaTableHeader\n ref={ref}\n className={cn(tableHeaderVariants({ sticky: stickyHeader }), className)}\n data-testid=\"table-header\"\n {...(props as AriaTableHeaderProps<T>)}\n >\n {/* Selection checkbox column */}\n {selectionMode === 'multiple' && (\n <AriaColumn className={cn(columnVariants({ size }), 'w-12')}>\n <Checkbox slot=\"selection\" aria-label=\"Select all\" size={size} />\n </AriaColumn>\n )}\n {/* Drag handle column if dragging is allowed */}\n {allowsDragging && <AriaColumn />}\n {/* Render columns */}\n {columns ? (\n <Collection items={columns}>{children as (item: T) => ReactElement}</Collection>\n ) : (\n children\n )}\n </AriaTableHeader>\n );\n}\n\nconst TableHeader = forwardRef(TableHeaderInner) as <T extends object>(\n props: TableHeaderProps<T> & { ref?: ForwardedRef<HTMLTableSectionElement> }\n) => ReactElement;\n\n(TableHeader as { displayName?: string }).displayName = 'TableHeader';\n\n// ============================================================================\n// TableBody Component\n// ============================================================================\n\nfunction TableBodyInner<T extends object>(\n { className, children, items, renderEmptyState, ...props }: TableBodyProps<T>,\n ref: ForwardedRef<HTMLTableSectionElement>\n): ReactElement {\n return (\n <AriaTableBody\n ref={ref}\n className={cn(className)}\n items={items}\n renderEmptyState={\n renderEmptyState\n ? () => (\n <tr>\n <td colSpan={99} className=\"text-center p-8\">\n {renderEmptyState()}\n </td>\n </tr>\n )\n : undefined\n }\n data-testid=\"table-body\"\n {...(props as AriaTableBodyProps<T>)}\n >\n {children as AriaTableBodyProps<T>['children']}\n </AriaTableBody>\n );\n}\n\nconst TableBody = forwardRef(TableBodyInner) as <T extends object>(\n props: TableBodyProps<T> & { ref?: ForwardedRef<HTMLTableSectionElement> }\n) => ReactElement;\n\n(TableBody as { displayName?: string }).displayName = 'TableBody';\n\n// ============================================================================\n// TableFooter Component (Custom - not from React Aria)\n// ============================================================================\n\nconst TableFooter = forwardRef<HTMLTableSectionElement, TableFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <tfoot\n ref={ref}\n className={cn(tableFooterVariants(), className)}\n data-testid=\"table-footer\"\n {...props}\n >\n {children}\n </tfoot>\n );\n }\n);\n\nTableFooter.displayName = 'TableFooter';\n\n// ============================================================================\n// TableCaption Component (Custom - not from React Aria)\n// ============================================================================\n\nconst TableCaption = forwardRef<HTMLTableCaptionElement, TableCaptionProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <caption\n ref={ref}\n className={cn(tableCaptionVariants(), className)}\n data-testid=\"table-caption\"\n {...props}\n >\n {children}\n </caption>\n );\n }\n);\n\nTableCaption.displayName = 'TableCaption';\n\n// ============================================================================\n// Column Component\n// ============================================================================\n\nconst Column = forwardRef<HTMLTableCellElement, ColumnProps>(\n (\n {\n className,\n children,\n isRowHeader = false,\n allowsSorting = false,\n align = 'start',\n width,\n minWidth,\n maxWidth,\n ...props\n },\n ref\n ) => {\n const { size } = useContext(TableContext);\n\n return (\n <AriaColumn\n ref={ref}\n isRowHeader={isRowHeader}\n allowsSorting={allowsSorting}\n width={width}\n minWidth={minWidth}\n maxWidth={maxWidth}\n className={cn(columnVariants({ allowsSorting, align, size }), className)}\n {...props}\n >\n {({ allowsSorting: canSort, sortDirection }) => (\n <div className=\"flex items-center gap-1\">\n <span>{children as ReactNode}</span>\n {canSort && sortDirection && (\n <span aria-hidden=\"true\" data-sort-direction={sortDirection}>\n {sortDirection === 'ascending' ? (\n <ChevronUp className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4\" />\n )}\n </span>\n )}\n </div>\n )}\n </AriaColumn>\n );\n }\n);\n\n(Column as { displayName?: string }).displayName = 'Column';\n\n// ============================================================================\n// Row Component\n// ============================================================================\n\nfunction RowInner<T extends object>(\n { className, children, columns, href, isDisabled, ...props }: RowProps<T>,\n ref: ForwardedRef<HTMLTableRowElement>\n): ReactElement {\n const { variant, size, selectionMode } = useContext(TableContext);\n const { allowsDragging } = useTableOptions();\n\n // Pre-compute variant class strings to avoid CVA calls in render callback\n const rowVariant = variant === 'striped' ? 'striped' as const : 'default' as const;\n const selectedClasses = rowVariants({ isSelected: true, variant: rowVariant });\n const unselectedClasses = rowVariants({ isSelected: false, variant: rowVariant });\n const selectionCellClasses = cn(cellVariants({ size }), 'w-12');\n\n return (\n <AriaRow\n ref={ref}\n href={href}\n isDisabled={isDisabled}\n className={({ isSelected, isDisabled: disabled }) =>\n cn(\n isSelected ? selectedClasses : unselectedClasses,\n disabled && 'opacity-50',\n className\n )\n }\n data-testid=\"table-row\"\n {...(props as AriaRowProps<T>)}\n >\n {/* Selection checkbox cell */}\n {selectionMode === 'multiple' && (\n <AriaCell className={selectionCellClasses}>\n <Checkbox slot=\"selection\" aria-label=\"Select row\" size={size} />\n </AriaCell>\n )}\n {/* Drag handle cell if dragging is allowed */}\n {allowsDragging && (\n <AriaCell>\n {/* Placeholder for drag handle - v2 feature */}\n </AriaCell>\n )}\n {/* Render cells */}\n {columns ? (\n <Collection items={columns}>{children as (item: T) => ReactElement}</Collection>\n ) : (\n children\n )}\n </AriaRow>\n );\n}\n\nconst Row = forwardRef(RowInner) as <T extends object>(\n props: RowProps<T> & { ref?: ForwardedRef<HTMLTableRowElement> }\n) => ReactElement;\n\n(Row as { displayName?: string }).displayName = 'Row';\n\n// ============================================================================\n// Cell Component\n// ============================================================================\n\nconst Cell = memo(forwardRef<HTMLTableCellElement, CellProps>(\n ({ className, children, align = 'start', colSpan: _colSpan, ...props }, ref) => {\n const { size } = useContext(TableContext);\n\n return (\n <AriaCell\n ref={ref}\n className={cn(cellVariants({ align, size }), className)}\n {...(props as AriaCellProps)}\n >\n {children}\n </AriaCell>\n );\n }\n));\n\nCell.displayName = 'Cell';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableCaption,\n Column,\n Row,\n Cell,\n};\n\n// Re-export CVA variants (defined in Table.styles.ts)\nexport {\n tableContainerVariants,\n tableVariants,\n tableHeaderVariants,\n tableFooterVariants,\n tableCaptionVariants,\n columnVariants,\n rowVariants,\n cellVariants,\n};\n\n// Re-export types\nexport type { Selection, SortDescriptor };\n"]}
@@ -1,339 +1,3 @@
1
1
  "use client";
2
- 'use strict';
3
-
4
- var react = require('react');
5
- var reactAriaComponents = require('react-aria-components');
6
- var classVarianceAuthority = require('class-variance-authority');
7
- var clsx = require('clsx');
8
- var tailwindMerge = require('tailwind-merge');
9
- var jsxRuntime = require('react/jsx-runtime');
10
- var zod = require('zod');
11
-
12
- // src/elements/Tabs/Tabs.tsx
13
- function cn(...inputs) {
14
- return tailwindMerge.twMerge(clsx.clsx(inputs));
15
- }
16
- var Activity = react.Activity ?? function ActivityFallback({
17
- children,
18
- mode
19
- }) {
20
- return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-activity-mode": mode, children });
21
- };
22
- var tabListVariants = classVarianceAuthority.cva(
23
- // Base styles
24
- [
25
- "inline-flex items-center justify-center rounded-md p-1",
26
- "bg-[var(--accent-background)] text-[var(--menu-muted)]"
27
- ],
28
- {
29
- variants: {
30
- orientation: {
31
- horizontal: "h-10 flex-row gap-0",
32
- vertical: "h-auto flex-col w-full gap-1"
33
- }
34
- },
35
- defaultVariants: {
36
- orientation: "horizontal"
37
- }
38
- }
39
- );
40
- var tabVariants = classVarianceAuthority.cva(
41
- // Base styles
42
- [
43
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-sm",
44
- "px-3 py-1.5 text-sm font-medium",
45
- "ring-offset-[var(--content-background)] transition-all",
46
- "focus-visible:outline-none focus-visible:ring-2",
47
- "focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",
48
- // States via data attributes
49
- "data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
50
- "data-[selected]:bg-[var(--content-background)] data-[selected]:text-[var(--content-foreground)]",
51
- "data-[selected]:shadow-sm",
52
- // WCAG 2.2 AAA: 44×44px minimum touch target
53
- "min-h-[44px]"
54
- ],
55
- {
56
- variants: {
57
- orientation: {
58
- horizontal: "",
59
- vertical: "w-full justify-start"
60
- }
61
- },
62
- defaultVariants: {
63
- orientation: "horizontal"
64
- }
65
- }
66
- );
67
- var tabPanelVariants = classVarianceAuthority.cva(
68
- [
69
- "mt-2 ring-offset-[var(--content-background)]",
70
- "focus-visible:outline-none focus-visible:ring-2",
71
- "focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2"
72
- ],
73
- {
74
- variants: {},
75
- defaultVariants: {}
76
- }
77
- );
78
- function TabsRoot({
79
- children,
80
- selectedKey,
81
- defaultSelectedKey,
82
- onSelectionChange,
83
- orientation = "horizontal",
84
- keyboardActivation = "automatic",
85
- isDisabled = false,
86
- disabledKeys,
87
- className,
88
- ...props
89
- }) {
90
- return /* @__PURE__ */ jsxRuntime.jsx(
91
- reactAriaComponents.Tabs,
92
- {
93
- selectedKey,
94
- defaultSelectedKey,
95
- onSelectionChange,
96
- orientation,
97
- keyboardActivation,
98
- isDisabled,
99
- disabledKeys,
100
- className: cn(className),
101
- ...props,
102
- children
103
- }
104
- );
105
- }
106
- TabsRoot.displayName = "Tabs";
107
- function TabListComponent({
108
- children,
109
- className,
110
- ...props
111
- }) {
112
- return /* @__PURE__ */ jsxRuntime.jsx(
113
- reactAriaComponents.TabList,
114
- {
115
- className: reactAriaComponents.composeRenderProps(
116
- className,
117
- (className2, renderProps) => cn(
118
- tabListVariants({ orientation: renderProps.orientation }),
119
- className2
120
- )
121
- ),
122
- ...props,
123
- children
124
- }
125
- );
126
- }
127
- TabListComponent.displayName = "TabList";
128
- function TabComponent({
129
- children,
130
- id,
131
- isDisabled = false,
132
- href,
133
- target,
134
- rel,
135
- download,
136
- className,
137
- ...props
138
- }) {
139
- if (process.env.NODE_ENV !== "production") {
140
- const hasTextContent = typeof children === "string" || Array.isArray(children) && children.some((child) => typeof child === "string");
141
- if (!hasTextContent && !props["aria-label"]) {
142
- console.warn(
143
- "Tabs: Icon-only tabs should have an aria-label for accessibility."
144
- );
145
- }
146
- }
147
- return /* @__PURE__ */ jsxRuntime.jsx(
148
- reactAriaComponents.Tab,
149
- {
150
- id,
151
- isDisabled,
152
- href,
153
- target,
154
- rel,
155
- download,
156
- className: reactAriaComponents.composeRenderProps(
157
- className,
158
- (className2) => cn(tabVariants(), className2)
159
- ),
160
- ...props,
161
- children
162
- }
163
- );
164
- }
165
- TabComponent.displayName = "Tab";
166
- function TabPanelComponent({
167
- children,
168
- id,
169
- shouldForceMount = false,
170
- preserveState = false,
171
- className,
172
- ...props
173
- }) {
174
- const forceMount = preserveState || shouldForceMount;
175
- if (typeof children === "function") {
176
- return /* @__PURE__ */ jsxRuntime.jsx(
177
- reactAriaComponents.TabPanel,
178
- {
179
- id,
180
- shouldForceMount: forceMount,
181
- className: reactAriaComponents.composeRenderProps(
182
- className,
183
- (className2) => cn(tabPanelVariants(), className2)
184
- ),
185
- ...props,
186
- children: (renderProps) => {
187
- const isSelected = !renderProps.isInert;
188
- const content = children({ isSelected });
189
- if (preserveState) {
190
- return /* @__PURE__ */ jsxRuntime.jsx(Activity, { mode: isSelected ? "visible" : "hidden", children: content });
191
- }
192
- return content;
193
- }
194
- }
195
- );
196
- }
197
- if (preserveState) {
198
- return /* @__PURE__ */ jsxRuntime.jsx(
199
- reactAriaComponents.TabPanel,
200
- {
201
- id,
202
- shouldForceMount: forceMount,
203
- className: reactAriaComponents.composeRenderProps(
204
- className,
205
- (className2) => cn(tabPanelVariants(), className2)
206
- ),
207
- ...props,
208
- children: (renderProps) => {
209
- const isSelected = !renderProps.isInert;
210
- return /* @__PURE__ */ jsxRuntime.jsx(Activity, { mode: isSelected ? "visible" : "hidden", children });
211
- }
212
- }
213
- );
214
- }
215
- return /* @__PURE__ */ jsxRuntime.jsx(
216
- reactAriaComponents.TabPanel,
217
- {
218
- id,
219
- shouldForceMount: forceMount,
220
- className: reactAriaComponents.composeRenderProps(
221
- className,
222
- (className2) => cn(tabPanelVariants(), className2)
223
- ),
224
- ...props,
225
- children
226
- }
227
- );
228
- }
229
- TabPanelComponent.displayName = "TabPanel";
230
- var Tabs = TabsRoot;
231
- var TabList = TabListComponent;
232
- var Tab = TabComponent;
233
- var TabPanel = TabPanelComponent;
234
- var BaseComponentPropsSchema = zod.z.object({
235
- // Styling
236
- className: zod.z.string().optional(),
237
- // React
238
- children: zod.z.any().optional(),
239
- // ReactNode not directly supported by Zod
240
- id: zod.z.string().optional(),
241
- // Accessibility (WCAG 2.2 AA requirements)
242
- "aria-label": zod.z.string().optional(),
243
- "aria-labelledby": zod.z.string().optional(),
244
- "aria-describedby": zod.z.string().optional(),
245
- "aria-live": zod.z.enum(["off", "polite", "assertive"]).optional(),
246
- "aria-hidden": zod.z.boolean().optional(),
247
- // Testing & Development
248
- "data-testid": zod.z.string().optional()
249
- });
250
-
251
- // src/elements/Tabs/Tabs.types.ts
252
- var TabsOrientationSchema = zod.z.enum(["horizontal", "vertical"]);
253
- var TabsKeyboardActivationSchema = zod.z.enum(["automatic", "manual"]);
254
- var KeySchema = zod.z.union([zod.z.string(), zod.z.number()]);
255
- var TabsPropsSchema = BaseComponentPropsSchema.extend({
256
- // Controlled mode: selected tab key
257
- selectedKey: KeySchema.optional(),
258
- // Uncontrolled mode: default selected tab key
259
- defaultSelectedKey: KeySchema.optional(),
260
- // Selection change handler
261
- onSelectionChange: zod.z.custom().optional(),
262
- // Orientation: horizontal or vertical layout
263
- orientation: TabsOrientationSchema.optional().default("horizontal"),
264
- // Keyboard activation: automatic (arrows select) or manual (arrows focus, Enter selects)
265
- keyboardActivation: TabsKeyboardActivationSchema.optional().default("automatic"),
266
- // Disable all tabs
267
- isDisabled: zod.z.boolean().optional().default(false),
268
- // Keys of tabs to disable individually
269
- disabledKeys: zod.z.array(KeySchema).optional(),
270
- // Children: TabList and TabPanel components
271
- children: zod.z.custom()
272
- });
273
- var TabListPropsSchema = BaseComponentPropsSchema.extend({
274
- // Accessible label (required for accessibility if no aria-labelledby)
275
- "aria-label": zod.z.string().optional(),
276
- // Reference to labelling element
277
- "aria-labelledby": zod.z.string().optional(),
278
- // Children: Tab components
279
- children: zod.z.custom()
280
- });
281
- var TabPropsSchema = BaseComponentPropsSchema.extend({
282
- // Unique identifier for the tab (required)
283
- id: KeySchema,
284
- // Disable this specific tab
285
- isDisabled: zod.z.boolean().optional().default(false),
286
- // Link tab: URL for navigation-style tabs
287
- href: zod.z.string().optional(),
288
- // Link tab: target attribute
289
- target: zod.z.string().optional(),
290
- // Link tab: rel attribute
291
- rel: zod.z.string().optional(),
292
- // Link tab: download attribute
293
- download: zod.z.union([zod.z.string(), zod.z.boolean()]).optional(),
294
- // Tab content (text, icons, badges)
295
- children: zod.z.custom()
296
- });
297
- var TabPanelPropsSchema = BaseComponentPropsSchema.extend({
298
- // Unique identifier matching a Tab id (required)
299
- id: KeySchema,
300
- // Legacy: Force panel to stay in DOM when hidden
301
- // Use preserveState instead for proper effect cleanup
302
- shouldForceMount: zod.z.boolean().optional().default(false),
303
- // React 19.2 Activity: Preserve state with proper effect cleanup
304
- // When true, wraps content in <Activity> component
305
- // Effects are cleaned up when hidden, restored when visible
306
- preserveState: zod.z.boolean().optional().default(false),
307
- // Panel content
308
- children: zod.z.custom()
309
- });
310
- var ScrollArrowDirectionSchema = zod.z.enum(["left", "right", "up", "down"]);
311
- var ScrollArrowPropsSchema = BaseComponentPropsSchema.extend({
312
- // Scroll direction
313
- direction: ScrollArrowDirectionSchema,
314
- // Disable when can't scroll further
315
- isDisabled: zod.z.boolean().optional().default(false),
316
- // Click handler for scrolling
317
- onPress: zod.z.custom(),
318
- // Accessible label
319
- "aria-label": zod.z.string()
320
- });
321
-
322
- exports.KeySchema = KeySchema;
323
- exports.ScrollArrowDirectionSchema = ScrollArrowDirectionSchema;
324
- exports.ScrollArrowPropsSchema = ScrollArrowPropsSchema;
325
- exports.Tab = Tab;
326
- exports.TabList = TabList;
327
- exports.TabListPropsSchema = TabListPropsSchema;
328
- exports.TabPanel = TabPanel;
329
- exports.TabPanelPropsSchema = TabPanelPropsSchema;
330
- exports.TabPropsSchema = TabPropsSchema;
331
- exports.Tabs = Tabs;
332
- exports.TabsKeyboardActivationSchema = TabsKeyboardActivationSchema;
333
- exports.TabsOrientationSchema = TabsOrientationSchema;
334
- exports.TabsPropsSchema = TabsPropsSchema;
335
- exports.tabListVariants = tabListVariants;
336
- exports.tabPanelVariants = tabPanelVariants;
337
- exports.tabVariants = tabVariants;
338
- //# sourceMappingURL=index.js.map
2
+ 'use strict';var react=require('react'),reactAriaComponents=require('react-aria-components'),classVarianceAuthority=require('class-variance-authority'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime'),zod=require('zod');function m(...a){return tailwindMerge.twMerge(clsx.clsx(a))}var v=react.Activity??function({children:t,mode:i}){return jsxRuntime.jsx("div",{"data-activity-mode":i,children:t})},x=classVarianceAuthority.cva(["inline-flex items-center justify-center rounded-md p-1","bg-[var(--accent-background)] text-[var(--menu-muted)]"],{variants:{orientation:{horizontal:"h-10 flex-row gap-0",vertical:"h-auto flex-col w-full gap-1"}},defaultVariants:{orientation:"horizontal"}}),S=classVarianceAuthority.cva(["inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-sm","px-3 py-1.5 text-sm font-medium","ring-offset-[var(--content-background)] transition-all","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2","data-[disabled]:pointer-events-none data-[disabled]:opacity-50","data-[selected]:bg-[var(--content-background)] data-[selected]:text-[var(--content-foreground)]","data-[selected]:shadow-sm","min-h-[44px]"],{variants:{orientation:{horizontal:"",vertical:"w-full justify-start"}},defaultVariants:{orientation:"horizontal"}}),T=classVarianceAuthority.cva(["mt-2 ring-offset-[var(--content-background)]","focus-visible:outline-none focus-visible:ring-2","focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2"],{variants:{},defaultVariants:{}});function g({children:a,selectedKey:t,defaultSelectedKey:i,onSelectionChange:n,orientation:s="horizontal",keyboardActivation:p="automatic",isDisabled:b=false,disabledKeys:o,className:l,...d}){return jsxRuntime.jsx(reactAriaComponents.Tabs,{selectedKey:t,defaultSelectedKey:i,onSelectionChange:n,orientation:s,keyboardActivation:p,isDisabled:b,disabledKeys:o,className:m(l),...d,children:a})}g.displayName="Tabs";function A({children:a,className:t,...i}){return jsxRuntime.jsx(reactAriaComponents.TabList,{className:reactAriaComponents.composeRenderProps(t,(n,s)=>m(x({orientation:s.orientation}),n)),...i,children:a})}A.displayName="TabList";function w({children:a,id:t,isDisabled:i=false,href:n,target:s,rel:p,download:b,className:o,...l}){return process.env.NODE_ENV!=="production"&&!(typeof a=="string"||Array.isArray(a)&&a.some(C=>typeof C=="string"))&&!l["aria-label"]&&console.warn("Tabs: Icon-only tabs should have an aria-label for accessibility."),jsxRuntime.jsx(reactAriaComponents.Tab,{id:t,isDisabled:i,href:n,target:s,rel:p,download:b,className:reactAriaComponents.composeRenderProps(o,d=>m(S(),d)),...l,children:a})}w.displayName="Tab";function K({children:a,id:t,shouldForceMount:i=false,preserveState:n=false,className:s,...p}){let b=n||i;return typeof a=="function"?jsxRuntime.jsx(reactAriaComponents.TabPanel,{id:t,shouldForceMount:b,className:reactAriaComponents.composeRenderProps(s,o=>m(T(),o)),...p,children:o=>{let l=!o.isInert,d=a({isSelected:l});return n?jsxRuntime.jsx(v,{mode:l?"visible":"hidden",children:d}):d}}):n?jsxRuntime.jsx(reactAriaComponents.TabPanel,{id:t,shouldForceMount:b,className:reactAriaComponents.composeRenderProps(s,o=>m(T(),o)),...p,children:o=>{let l=!o.isInert;return jsxRuntime.jsx(v,{mode:l?"visible":"hidden",children:a})}}):jsxRuntime.jsx(reactAriaComponents.TabPanel,{id:t,shouldForceMount:b,className:reactAriaComponents.composeRenderProps(s,o=>m(T(),o)),...p,children:a})}K.displayName="TabPanel";var F=g,B=A,E=w,I=K;var f=zod.z.object({className:zod.z.string().optional(),children:zod.z.any().optional(),id:zod.z.string().optional(),"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),"aria-describedby":zod.z.string().optional(),"aria-live":zod.z.enum(["off","polite","assertive"]).optional(),"aria-hidden":zod.z.boolean().optional(),"data-testid":zod.z.string().optional()});var N=zod.z.enum(["horizontal","vertical"]),z=zod.z.enum(["automatic","manual"]),u=zod.z.union([zod.z.string(),zod.z.number()]),j=f.extend({selectedKey:u.optional(),defaultSelectedKey:u.optional(),onSelectionChange:zod.z.custom().optional(),orientation:N.optional().default("horizontal"),keyboardActivation:z.optional().default("automatic"),isDisabled:zod.z.boolean().optional().default(false),disabledKeys:zod.z.array(u).optional(),children:zod.z.custom()}),_=f.extend({"aria-label":zod.z.string().optional(),"aria-labelledby":zod.z.string().optional(),children:zod.z.custom()}),q=f.extend({id:u,isDisabled:zod.z.boolean().optional().default(false),href:zod.z.string().optional(),target:zod.z.string().optional(),rel:zod.z.string().optional(),download:zod.z.union([zod.z.string(),zod.z.boolean()]).optional(),children:zod.z.custom()}),G=f.extend({id:u,shouldForceMount:zod.z.boolean().optional().default(false),preserveState:zod.z.boolean().optional().default(false),children:zod.z.custom()}),L=zod.z.enum(["left","right","up","down"]),H=f.extend({direction:L,isDisabled:zod.z.boolean().optional().default(false),onPress:zod.z.custom(),"aria-label":zod.z.string()});exports.KeySchema=u;exports.ScrollArrowDirectionSchema=L;exports.ScrollArrowPropsSchema=H;exports.Tab=E;exports.TabList=B;exports.TabListPropsSchema=_;exports.TabPanel=I;exports.TabPanelPropsSchema=G;exports.TabPropsSchema=q;exports.Tabs=F;exports.TabsKeyboardActivationSchema=z;exports.TabsOrientationSchema=N;exports.TabsPropsSchema=j;exports.tabListVariants=x;exports.tabPanelVariants=T;exports.tabVariants=S;//# sourceMappingURL=index.js.map
339
3
  //# sourceMappingURL=index.js.map