@tribepad/themis 1.0.1 → 1.0.3

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 (308) 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/NumberField.variants.d.ts +1 -1
  115. package/dist/elements/NumberField/index.js +1 -666
  116. package/dist/elements/NumberField/index.js.map +1 -1
  117. package/dist/elements/NumberField/index.mjs +1 -654
  118. package/dist/elements/NumberField/index.mjs.map +1 -1
  119. package/dist/elements/OTPInput/OTPInput.d.ts.map +1 -1
  120. package/dist/elements/OTPInput/index.js +1 -734
  121. package/dist/elements/OTPInput/index.js.map +1 -1
  122. package/dist/elements/OTPInput/index.mjs +1 -732
  123. package/dist/elements/OTPInput/index.mjs.map +1 -1
  124. package/dist/elements/Pagination/Pagination.d.ts +45 -0
  125. package/dist/elements/Pagination/Pagination.d.ts.map +1 -0
  126. package/dist/elements/Pagination/Pagination.styles.d.ts +10 -0
  127. package/dist/elements/Pagination/Pagination.styles.d.ts.map +1 -0
  128. package/dist/elements/Pagination/Pagination.types.d.ts +55 -0
  129. package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -0
  130. package/dist/elements/Pagination/index.d.ts +21 -0
  131. package/dist/elements/Pagination/index.d.ts.map +1 -0
  132. package/dist/elements/Pagination/index.js +3 -0
  133. package/dist/elements/Pagination/index.js.map +1 -0
  134. package/dist/elements/Pagination/index.mjs +3 -0
  135. package/dist/elements/Pagination/index.mjs.map +1 -0
  136. package/dist/elements/Panel/index.js +1 -330
  137. package/dist/elements/Panel/index.js.map +1 -1
  138. package/dist/elements/Panel/index.mjs +1 -323
  139. package/dist/elements/Panel/index.mjs.map +1 -1
  140. package/dist/elements/PasswordField/PasswordField.d.ts +27 -0
  141. package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -0
  142. package/dist/elements/PasswordField/PasswordField.styles.d.ts +32 -0
  143. package/dist/elements/PasswordField/PasswordField.styles.d.ts.map +1 -0
  144. package/dist/elements/PasswordField/PasswordField.types.d.ts +100 -0
  145. package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -0
  146. package/dist/elements/PasswordField/index.css +2 -0
  147. package/dist/elements/PasswordField/index.css.map +1 -0
  148. package/dist/elements/PasswordField/index.d.ts +20 -0
  149. package/dist/elements/PasswordField/index.d.ts.map +1 -0
  150. package/dist/elements/PasswordField/index.js +3 -0
  151. package/dist/elements/PasswordField/index.js.map +1 -0
  152. package/dist/elements/PasswordField/index.mjs +3 -0
  153. package/dist/elements/PasswordField/index.mjs.map +1 -0
  154. package/dist/elements/Progress/index.js +1 -187
  155. package/dist/elements/Progress/index.js.map +1 -1
  156. package/dist/elements/Progress/index.mjs +1 -181
  157. package/dist/elements/Progress/index.mjs.map +1 -1
  158. package/dist/elements/RadioGroup/index.js +1 -369
  159. package/dist/elements/RadioGroup/index.js.map +1 -1
  160. package/dist/elements/RadioGroup/index.mjs +1 -359
  161. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  162. package/dist/elements/Resizable/index.js +1 -1580
  163. package/dist/elements/Resizable/index.js.map +1 -1
  164. package/dist/elements/Resizable/index.mjs +1 -1566
  165. package/dist/elements/Resizable/index.mjs.map +1 -1
  166. package/dist/elements/SearchField/SearchField.d.ts +27 -0
  167. package/dist/elements/SearchField/SearchField.d.ts.map +1 -0
  168. package/dist/elements/SearchField/SearchField.styles.d.ts +32 -0
  169. package/dist/elements/SearchField/SearchField.styles.d.ts.map +1 -0
  170. package/dist/elements/SearchField/SearchField.types.d.ts +45 -0
  171. package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -0
  172. package/dist/elements/SearchField/index.css +2 -0
  173. package/dist/elements/SearchField/index.css.map +1 -0
  174. package/dist/elements/SearchField/index.d.ts +21 -0
  175. package/dist/elements/SearchField/index.d.ts.map +1 -0
  176. package/dist/elements/SearchField/index.js +3 -0
  177. package/dist/elements/SearchField/index.js.map +1 -0
  178. package/dist/elements/SearchField/index.mjs +3 -0
  179. package/dist/elements/SearchField/index.mjs.map +1 -0
  180. package/dist/elements/Select/Select.d.ts +19 -48
  181. package/dist/elements/Select/Select.d.ts.map +1 -1
  182. package/dist/elements/Select/Select.styles.d.ts +55 -0
  183. package/dist/elements/Select/Select.styles.d.ts.map +1 -0
  184. package/dist/elements/Select/index.js +1 -589
  185. package/dist/elements/Select/index.js.map +1 -1
  186. package/dist/elements/Select/index.mjs +1 -582
  187. package/dist/elements/Select/index.mjs.map +1 -1
  188. package/dist/elements/Skeleton/index.js +1 -82
  189. package/dist/elements/Skeleton/index.js.map +1 -1
  190. package/dist/elements/Skeleton/index.mjs +1 -78
  191. package/dist/elements/Skeleton/index.mjs.map +1 -1
  192. package/dist/elements/Switch/index.js +1 -179
  193. package/dist/elements/Switch/index.js.map +1 -1
  194. package/dist/elements/Switch/index.mjs +1 -173
  195. package/dist/elements/Switch/index.mjs.map +1 -1
  196. package/dist/elements/Table/Table.d.ts +3 -24
  197. package/dist/elements/Table/Table.d.ts.map +1 -1
  198. package/dist/elements/Table/Table.styles.d.ts +24 -0
  199. package/dist/elements/Table/Table.styles.d.ts.map +1 -0
  200. package/dist/elements/Table/index.js +1 -595
  201. package/dist/elements/Table/index.js.map +1 -1
  202. package/dist/elements/Table/index.mjs +1 -578
  203. package/dist/elements/Table/index.mjs.map +1 -1
  204. package/dist/elements/Tabs/Tabs.d.ts +5 -3
  205. package/dist/elements/Tabs/Tabs.d.ts.map +1 -1
  206. package/dist/elements/Tabs/Tabs.types.d.ts +15 -0
  207. package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -1
  208. package/dist/elements/Tabs/index.js +1 -337
  209. package/dist/elements/Tabs/index.js.map +1 -1
  210. package/dist/elements/Tabs/index.mjs +1 -320
  211. package/dist/elements/Tabs/index.mjs.map +1 -1
  212. package/dist/elements/TextField/TextField.d.ts +6 -42
  213. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  214. package/dist/elements/TextField/TextField.hooks.d.ts +63 -0
  215. package/dist/elements/TextField/TextField.hooks.d.ts.map +1 -0
  216. package/dist/elements/TextField/TextField.icons.d.ts +19 -0
  217. package/dist/elements/TextField/TextField.icons.d.ts.map +1 -0
  218. package/dist/elements/TextField/TextField.styles.d.ts +37 -0
  219. package/dist/elements/TextField/TextField.styles.d.ts.map +1 -0
  220. package/dist/elements/TextField/TextField.types.d.ts +3 -0
  221. package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
  222. package/dist/elements/TextField/index.css +1 -22
  223. package/dist/elements/TextField/index.css.map +1 -1
  224. package/dist/elements/TextField/index.js +1 -902
  225. package/dist/elements/TextField/index.js.map +1 -1
  226. package/dist/elements/TextField/index.mjs +1 -882
  227. package/dist/elements/TextField/index.mjs.map +1 -1
  228. package/dist/elements/TimeField/index.js +1 -254
  229. package/dist/elements/TimeField/index.js.map +1 -1
  230. package/dist/elements/TimeField/index.mjs +1 -238
  231. package/dist/elements/TimeField/index.mjs.map +1 -1
  232. package/dist/elements/Toast/Toast.d.ts +0 -22
  233. package/dist/elements/Toast/Toast.d.ts.map +1 -1
  234. package/dist/elements/Toast/index.js +1 -737
  235. package/dist/elements/Toast/index.js.map +1 -1
  236. package/dist/elements/Toast/index.mjs +1 -724
  237. package/dist/elements/Toast/index.mjs.map +1 -1
  238. package/dist/elements/Tooltip/index.js +1 -323
  239. package/dist/elements/Tooltip/index.js.map +1 -1
  240. package/dist/elements/Tooltip/index.mjs +1 -310
  241. package/dist/elements/Tooltip/index.mjs.map +1 -1
  242. package/dist/elements/index.css +1 -22
  243. package/dist/elements/index.css.map +1 -1
  244. package/dist/elements/index.d.ts +13 -1
  245. package/dist/elements/index.d.ts.map +1 -1
  246. package/dist/elements/index.js +1 -12455
  247. package/dist/elements/index.js.map +1 -1
  248. package/dist/elements/index.mjs +1 -12233
  249. package/dist/elements/index.mjs.map +1 -1
  250. package/dist/index.css +1 -22
  251. package/dist/index.css.map +1 -1
  252. package/dist/index.js +2 -12490
  253. package/dist/index.js.map +1 -1
  254. package/dist/index.mjs +2 -12262
  255. package/dist/index.mjs.map +1 -1
  256. package/dist/schemas/index.js +2 -54
  257. package/dist/schemas/index.js.map +1 -1
  258. package/dist/schemas/index.mjs +2 -48
  259. package/dist/schemas/index.mjs.map +1 -1
  260. package/dist/styles/defaults.css +151 -0
  261. package/dist/styles/index.js +1 -166
  262. package/dist/styles/index.js.map +1 -1
  263. package/dist/styles/index.mjs +1 -129
  264. package/dist/styles/index.mjs.map +1 -1
  265. package/dist/styles/shared-variants.d.ts +3 -3
  266. package/dist/styles/shared-variants.d.ts.map +1 -1
  267. package/dist/utils/index.js +1 -12
  268. package/dist/utils/index.js.map +1 -1
  269. package/dist/utils/index.mjs +1 -10
  270. package/dist/utils/index.mjs.map +1 -1
  271. package/package.json +9 -7
  272. package/src/elements/Accordion/Accordion.stories.tsx +1 -1
  273. package/src/elements/AlertDialog/AlertDialog.stories.tsx +124 -0
  274. package/src/elements/Avatar/Avatar.stories.tsx +1 -1
  275. package/src/elements/Badge/Badge.stories.tsx +1 -1
  276. package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  277. package/src/elements/Button/Button.stories.tsx +1 -1
  278. package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +1 -1
  279. package/src/elements/Card/Card.stories.tsx +1 -1
  280. package/src/elements/Carousel/Carousel.stories.tsx +1 -1
  281. package/src/elements/Chart/Chart.stories.tsx +1 -1
  282. package/src/elements/Checkbox/Checkbox.stories.tsx +1 -1
  283. package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +4 -4
  284. package/src/elements/Combobox/Combobox.stories.tsx +133 -0
  285. package/src/elements/DatePicker/DatePicker.stories.tsx +1 -1
  286. package/src/elements/Dropdown/Dropdown.stories.tsx +1 -1
  287. package/src/elements/FileField/FileField.stories.tsx +2 -2
  288. package/src/elements/FileField/FileProgress.stories.tsx +1 -1
  289. package/src/elements/FormLayout/FormLayout.stories.tsx +1 -1
  290. package/src/elements/Modal/Modal.stories.tsx +1 -1
  291. package/src/elements/NumberField/NumberField.stories.tsx +1 -1
  292. package/src/elements/OTPInput/OTPInput.stories.tsx +1 -1
  293. package/src/elements/Pagination/Pagination.stories.tsx +203 -0
  294. package/src/elements/Panel/Panel.stories.tsx +1 -1
  295. package/src/elements/PasswordField/PasswordField.stories.tsx +167 -0
  296. package/src/elements/Progress/Progress.stories.tsx +7 -2
  297. package/src/elements/RadioGroup/RadioGroup.stories.tsx +3 -3
  298. package/src/elements/Resizable/Resizable.stories.tsx +1 -1
  299. package/src/elements/SearchField/SearchField.stories.tsx +146 -0
  300. package/src/elements/Select/Select.stories.tsx +1 -1
  301. package/src/elements/Skeleton/Skeleton.stories.tsx +1 -1
  302. package/src/elements/Switch/Switch.stories.tsx +1 -1
  303. package/src/elements/Table/Table.stories.tsx +1 -1
  304. package/src/elements/Tabs/Tabs.stories.tsx +46 -2
  305. package/src/elements/TextField/TextField.stories.tsx +1 -1
  306. package/src/elements/TimeField/TimeField.stories.tsx +1 -1
  307. package/src/elements/Toast/Toast.stories.tsx +1 -1
  308. package/src/elements/Tooltip/Tooltip.stories.tsx +1 -1
@@ -1,441 +1,3 @@
1
1
  "use client";
2
- import { z } from 'zod';
3
- import { createContext, forwardRef, useId, useContext, isValidElement, cloneElement } from 'react';
4
- import { CheckboxGroup as CheckboxGroup$1, Label, Text, FieldError, Checkbox as Checkbox$1 } from 'react-aria-components';
5
- import { cva } from 'class-variance-authority';
6
- import { clsx } from 'clsx';
7
- import { twMerge } from 'tailwind-merge';
8
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
-
10
- // src/elements/CheckboxGroup/CheckboxGroup.types.ts
11
- var BaseComponentPropsSchema = z.object({
12
- // Styling
13
- className: z.string().optional(),
14
- // React
15
- children: z.any().optional(),
16
- // ReactNode not directly supported by Zod
17
- id: z.string().optional(),
18
- // Accessibility (WCAG 2.2 AA requirements)
19
- "aria-label": z.string().optional(),
20
- "aria-labelledby": z.string().optional(),
21
- "aria-describedby": z.string().optional(),
22
- "aria-live": z.enum(["off", "polite", "assertive"]).optional(),
23
- "aria-hidden": z.boolean().optional(),
24
- // Testing & Development
25
- "data-testid": z.string().optional()
26
- });
27
-
28
- // src/elements/CheckboxGroup/CheckboxGroup.types.ts
29
- var CheckboxGroupVariantSchema = z.enum(["default", "destructive"]);
30
- var CheckboxGroupSizeSchema = z.enum(["sm", "default", "lg"]);
31
- var CheckboxGroupOrientationSchema = z.enum(["vertical", "horizontal"]);
32
- var CheckboxGroupPropsSchema = BaseComponentPropsSchema.extend({
33
- // Display props (US-4)
34
- label: z.string().optional(),
35
- description: z.string().optional(),
36
- errorMessage: z.string().optional(),
37
- // Selection props (US-1) - array for multi-select (key difference from RadioGroup)
38
- value: z.array(z.string()).optional(),
39
- defaultValue: z.array(z.string()).optional(),
40
- // State props (US-6)
41
- isDisabled: z.boolean().optional().default(false),
42
- isReadOnly: z.boolean().optional().default(false),
43
- isRequired: z.boolean().optional().default(false),
44
- isInvalid: z.boolean().optional().default(false),
45
- // Layout props (US-5)
46
- orientation: CheckboxGroupOrientationSchema.optional().default("vertical"),
47
- // Variant props (US-2, US-3)
48
- variant: CheckboxGroupVariantSchema.optional().default("default"),
49
- size: CheckboxGroupSizeSchema.optional().default("default"),
50
- // Form props (US-6)
51
- name: z.string().optional(),
52
- // Event handlers
53
- onChange: z.custom().optional(),
54
- onFocusChange: z.custom().optional(),
55
- // Children (Checkbox components)
56
- children: z.custom()
57
- });
58
- var CheckboxPropsSchema = BaseComponentPropsSchema.extend({
59
- // Item value (required)
60
- value: z.string(),
61
- // Disabled state (individual item)
62
- isDisabled: z.boolean().optional().default(false),
63
- // Item content - accepts any ReactNode for flexible children
64
- children: z.custom(),
65
- // Optional className for custom styling
66
- className: z.string().optional(),
67
- // Custom icon to display when selected (defaults to checkmark)
68
- // Useful for destructive variants where an X icon may be more appropriate
69
- selectedIcon: z.custom().optional()
70
- });
71
- var CheckboxLabelPropsSchema = z.object({
72
- // Label content
73
- children: z.custom(),
74
- // Optional className for custom styling
75
- className: z.string().optional()
76
- });
77
- var CheckboxDescriptionPropsSchema = z.object({
78
- // Description content
79
- children: z.custom(),
80
- // Optional className for custom styling
81
- className: z.string().optional()
82
- });
83
- function cn(...inputs) {
84
- return twMerge(clsx(inputs));
85
- }
86
-
87
- // src/styles/interaction-states.ts
88
- var FOCUS_STYLES = "data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2";
89
- var 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";
90
- var CheckboxGroupContext = createContext({
91
- variant: "default",
92
- size: "default",
93
- isInvalid: false,
94
- isDisabled: false,
95
- isReadOnly: false
96
- });
97
- var checkboxGroupVariants = cva(
98
- // Base: flex container
99
- "flex",
100
- {
101
- variants: {
102
- orientation: {
103
- vertical: "flex-col gap-2",
104
- horizontal: "flex-row flex-wrap gap-2"
105
- }
106
- },
107
- defaultVariants: {
108
- orientation: "vertical"
109
- }
110
- }
111
- );
112
- var checkboxItemVariants = cva(
113
- // Base: bordered container with flex layout, RTL support
114
- [
115
- "flex items-center gap-3 rounded-md border cursor-pointer",
116
- "transition-colors duration-200",
117
- "rtl:flex-row-reverse",
118
- // RTL: indicator flips to right
119
- // Focus ring on entire container
120
- FOCUS_STYLES,
121
- HIGH_CONTRAST_FOCUS
122
- ].join(" "),
123
- {
124
- variants: {
125
- variant: {
126
- default: [
127
- "border-[var(--border)]",
128
- "data-[hovered]:bg-[var(--accent)]/10",
129
- "data-[selected]:border-[var(--primary)]",
130
- "data-[selected]:bg-[var(--primary)]/10"
131
- ].join(" "),
132
- destructive: [
133
- "border-[var(--border)]",
134
- "data-[hovered]:bg-[var(--destructive)]/10",
135
- "data-[selected]:border-[var(--destructive)]",
136
- "data-[selected]:bg-[var(--destructive)]/10"
137
- ].join(" ")
138
- },
139
- size: {
140
- sm: "min-h-[44px] py-2 px-3 text-sm",
141
- default: "min-h-[48px] py-3 px-4 text-sm",
142
- lg: "min-h-[56px] py-4 px-5 text-base"
143
- },
144
- isDisabled: {
145
- true: "opacity-50 cursor-not-allowed",
146
- false: ""
147
- },
148
- isReadOnly: {
149
- // Subtle visual cue per clarification
150
- true: "cursor-default",
151
- false: ""
152
- },
153
- isInvalid: {
154
- // Error: ALL items get destructive border (cognitive accessibility)
155
- true: "border-[var(--destructive)]",
156
- false: ""
157
- }
158
- },
159
- defaultVariants: {
160
- variant: "default",
161
- size: "default",
162
- isDisabled: false,
163
- isReadOnly: false,
164
- isInvalid: false
165
- }
166
- }
167
- );
168
- var checkboxIndicatorVariants = cva(
169
- // Base: square with border, flex-shrink-0 to prevent squishing
170
- "flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200",
171
- {
172
- variants: {
173
- variant: {
174
- default: [
175
- "border-[var(--border)]",
176
- "data-[selected]:border-[var(--primary)]",
177
- "data-[selected]:bg-[var(--primary)]"
178
- ].join(" "),
179
- destructive: [
180
- "border-[var(--border)]",
181
- "data-[selected]:border-[var(--destructive)]",
182
- "data-[selected]:bg-[var(--destructive)]"
183
- ].join(" ")
184
- },
185
- size: {
186
- sm: "h-4 w-4",
187
- default: "h-5 w-5",
188
- lg: "h-6 w-6"
189
- }
190
- },
191
- defaultVariants: {
192
- variant: "default",
193
- size: "default"
194
- }
195
- }
196
- );
197
- var checkmarkVariants = cva(
198
- // Base: centered checkmark with spring animation
199
- [
200
- "transition-transform duration-200",
201
- // Spring animation with overshoot
202
- "[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]",
203
- // Respect reduced motion preference
204
- "motion-reduce:transition-none",
205
- // Scale from 0 to 1 on selection
206
- "scale-0 data-[selected]:scale-100"
207
- ].join(" "),
208
- {
209
- variants: {
210
- variant: {
211
- default: "text-[var(--primary-foreground)]",
212
- destructive: "text-[var(--destructive-foreground)]"
213
- },
214
- size: {
215
- sm: "h-3 w-3",
216
- default: "h-3.5 w-3.5",
217
- lg: "h-4 w-4"
218
- }
219
- },
220
- defaultVariants: {
221
- variant: "default",
222
- size: "default"
223
- }
224
- }
225
- );
226
- function CheckmarkIcon({ className, ...props }) {
227
- return /* @__PURE__ */ jsx(
228
- "svg",
229
- {
230
- className,
231
- viewBox: "0 0 24 24",
232
- fill: "none",
233
- stroke: "currentColor",
234
- strokeWidth: 3,
235
- strokeLinecap: "round",
236
- strokeLinejoin: "round",
237
- "aria-hidden": "true",
238
- ...props,
239
- children: /* @__PURE__ */ jsx("polyline", { points: "20 6 9 17 4 12" })
240
- }
241
- );
242
- }
243
- function TimesIcon({ className, ...props }) {
244
- return /* @__PURE__ */ jsxs(
245
- "svg",
246
- {
247
- className,
248
- viewBox: "0 0 24 24",
249
- fill: "none",
250
- stroke: "currentColor",
251
- strokeWidth: 3,
252
- strokeLinecap: "round",
253
- strokeLinejoin: "round",
254
- "aria-hidden": "true",
255
- ...props,
256
- children: [
257
- /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
258
- /* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
259
- ]
260
- }
261
- );
262
- }
263
- function CheckboxLabel({ children, className }) {
264
- return /* @__PURE__ */ jsx("span", { className: cn("font-medium text-[var(--content-foreground)]", className), children });
265
- }
266
- CheckboxLabel.displayName = "Checkbox.Label";
267
- function CheckboxDescription({ children, className }) {
268
- return /* @__PURE__ */ jsx("span", { className: cn("text-sm text-[var(--menu-muted)]", className), children });
269
- }
270
- CheckboxDescription.displayName = "Checkbox.Description";
271
- function CheckboxComponent({ value, isDisabled, children, className, selectedIcon }) {
272
- const { variant, size, isInvalid, isDisabled: groupDisabled, isReadOnly } = useContext(CheckboxGroupContext);
273
- const effectiveDisabled = isDisabled || groupDisabled;
274
- const renderSelectedIcon = (isSelected) => {
275
- const iconClassName = cn(checkmarkVariants({ variant, size }));
276
- const dataSelected = isSelected || void 0;
277
- if (selectedIcon) {
278
- if (isValidElement(selectedIcon)) {
279
- const iconElement = selectedIcon;
280
- return cloneElement(iconElement, {
281
- className: cn(iconClassName, iconElement.props.className),
282
- "data-selected": dataSelected
283
- });
284
- }
285
- return /* @__PURE__ */ jsx("span", { className: iconClassName, "data-selected": dataSelected, children: selectedIcon });
286
- }
287
- return /* @__PURE__ */ jsx(
288
- CheckmarkIcon,
289
- {
290
- className: iconClassName,
291
- "data-selected": dataSelected
292
- }
293
- );
294
- };
295
- return /* @__PURE__ */ jsx(
296
- Checkbox$1,
297
- {
298
- value,
299
- isDisabled: effectiveDisabled,
300
- className: (renderProps) => cn(
301
- checkboxItemVariants({
302
- variant,
303
- size,
304
- isDisabled: renderProps.isDisabled,
305
- isReadOnly,
306
- isInvalid
307
- }),
308
- className
309
- ),
310
- children: (renderProps) => /* @__PURE__ */ jsxs(Fragment, { children: [
311
- /* @__PURE__ */ jsx(
312
- "div",
313
- {
314
- className: checkboxIndicatorVariants({ variant, size }),
315
- "data-selected": renderProps.isSelected || void 0,
316
- children: renderSelectedIcon(renderProps.isSelected)
317
- }
318
- ),
319
- /* @__PURE__ */ jsx("div", { className: "flex-1 flex flex-col", children })
320
- ] })
321
- }
322
- );
323
- }
324
- var Checkbox = Object.assign(CheckboxComponent, {
325
- Label: CheckboxLabel,
326
- Description: CheckboxDescription
327
- });
328
- Checkbox.displayName = "Checkbox";
329
- function dedupeWithWarning(values, componentName) {
330
- if (!values) return values;
331
- const uniqueValues = [...new Set(values)];
332
- if (process.env.NODE_ENV !== "production" && uniqueValues.length !== values.length) {
333
- console.warn(
334
- `[${componentName}] Received duplicate values in value/defaultValue prop. Original: [${values.join(", ")}], Deduplicated: [${uniqueValues.join(", ")}]. Duplicate values are automatically removed.`
335
- );
336
- }
337
- return uniqueValues;
338
- }
339
- var CheckboxGroup = forwardRef(
340
- function CheckboxGroup2(props, ref) {
341
- const {
342
- // Display props
343
- label,
344
- description,
345
- errorMessage,
346
- // Selection props (string[] for multi-select)
347
- value,
348
- defaultValue,
349
- // State props
350
- isDisabled = false,
351
- isReadOnly = false,
352
- isRequired = false,
353
- isInvalid = false,
354
- // Layout props
355
- orientation = "vertical",
356
- // Variant props
357
- variant = "default",
358
- size = "default",
359
- // Form props
360
- name,
361
- // Event handlers
362
- onChange,
363
- onFocusChange,
364
- // Standard props
365
- className,
366
- children,
367
- id,
368
- "aria-label": ariaLabel,
369
- "aria-labelledby": ariaLabelledby,
370
- "aria-describedby": ariaDescribedby,
371
- "data-testid": dataTestId,
372
- ...restProps
373
- } = props;
374
- const generatedId = useId();
375
- const checkboxGroupId = id ?? generatedId;
376
- const labelId = `${checkboxGroupId}-label`;
377
- const descriptionId = `${checkboxGroupId}-description`;
378
- const errorId = `${checkboxGroupId}-error`;
379
- const describedByParts = [];
380
- if (ariaDescribedby) describedByParts.push(ariaDescribedby);
381
- if (description) describedByParts.push(descriptionId);
382
- if (isInvalid && errorMessage) describedByParts.push(errorId);
383
- const computedAriaDescribedBy = describedByParts.length > 0 ? describedByParts.join(" ") : void 0;
384
- const dedupedValue = dedupeWithWarning(value, "CheckboxGroup");
385
- const dedupedDefaultValue = dedupeWithWarning(defaultValue, "CheckboxGroup");
386
- return /* @__PURE__ */ jsx(CheckboxGroupContext.Provider, { value: { variant, size, isInvalid, isDisabled, isReadOnly }, children: /* @__PURE__ */ jsxs(
387
- CheckboxGroup$1,
388
- {
389
- ref,
390
- id: checkboxGroupId,
391
- name,
392
- value: dedupedValue,
393
- defaultValue: dedupedDefaultValue,
394
- isDisabled,
395
- isReadOnly,
396
- isRequired,
397
- isInvalid,
398
- onChange,
399
- onFocusChange,
400
- "aria-label": ariaLabel,
401
- "aria-labelledby": label ? labelId : ariaLabelledby,
402
- "aria-describedby": computedAriaDescribedBy,
403
- "aria-orientation": orientation,
404
- "aria-required": isRequired || void 0,
405
- "aria-invalid": isInvalid || void 0,
406
- "data-testid": dataTestId,
407
- className: cn("flex flex-col gap-1.5", className),
408
- ...restProps,
409
- children: [
410
- label && /* @__PURE__ */ jsxs(Label, { id: labelId, className: "text-sm font-medium text-[var(--content-foreground)]", children: [
411
- label,
412
- isRequired && /* @__PURE__ */ jsx("span", { className: "ml-1 text-[var(--destructive)]", "aria-hidden": "true", children: "*" })
413
- ] }),
414
- description && /* @__PURE__ */ jsx(
415
- Text,
416
- {
417
- id: descriptionId,
418
- slot: "description",
419
- className: "text-sm text-[var(--menu-muted)]",
420
- children: description
421
- }
422
- ),
423
- /* @__PURE__ */ jsx("div", { className: checkboxGroupVariants({ orientation }), children }),
424
- isInvalid && errorMessage && /* @__PURE__ */ jsx(
425
- FieldError,
426
- {
427
- id: errorId,
428
- className: "text-sm text-[var(--destructive)]",
429
- children: /* @__PURE__ */ jsx("span", { role: "alert", children: errorMessage })
430
- }
431
- )
432
- ]
433
- }
434
- ) });
435
- }
436
- );
437
- CheckboxGroup.displayName = "CheckboxGroup";
438
-
439
- export { Checkbox, CheckboxDescriptionPropsSchema, CheckboxGroup, CheckboxGroupOrientationSchema, CheckboxGroupPropsSchema, CheckboxGroupSizeSchema, CheckboxGroupVariantSchema, CheckboxLabelPropsSchema, CheckboxPropsSchema, CheckmarkIcon, TimesIcon, checkboxGroupVariants, checkboxIndicatorVariants, checkboxItemVariants, checkmarkVariants };
440
- //# sourceMappingURL=index.mjs.map
2
+ import {z}from'zod';import {createContext,forwardRef,useId,useContext,isValidElement,cloneElement}from'react';import {CheckboxGroup,Label,Text,FieldError,Checkbox}from'react-aria-components';import {cva}from'class-variance-authority';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var P=z.object({className:z.string().optional(),children:z.any().optional(),id:z.string().optional(),"aria-label":z.string().optional(),"aria-labelledby":z.string().optional(),"aria-describedby":z.string().optional(),"aria-live":z.enum(["off","polite","assertive"]).optional(),"aria-hidden":z.boolean().optional(),"data-testid":z.string().optional()});var T=z.enum(["default","destructive"]),I=z.enum(["sm","default","lg"]),O=z.enum(["vertical","horizontal"]),ne=P.extend({label:z.string().optional(),description:z.string().optional(),errorMessage:z.string().optional(),value:z.array(z.string()).optional(),defaultValue:z.array(z.string()).optional(),isDisabled:z.boolean().optional().default(false),isReadOnly:z.boolean().optional().default(false),isRequired:z.boolean().optional().default(false),isInvalid:z.boolean().optional().default(false),orientation:O.optional().default("vertical"),variant:T.optional().default("default"),size:I.optional().default("default"),name:z.string().optional(),onChange:z.custom().optional(),onFocusChange:z.custom().optional(),children:z.custom()}),se=P.extend({value:z.string(),isDisabled:z.boolean().optional().default(false),children:z.custom(),className:z.string().optional(),selectedIcon:z.custom().optional()}),ce=z.object({children:z.custom(),className:z.string().optional()}),de=z.object({children:z.custom(),className:z.string().optional()});function l(...o){return twMerge(clsx(o))}var g="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2";var m="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground";var A=createContext({variant:"default",size:"default",isInvalid:false,isDisabled:false,isReadOnly:false}),w=cva("flex",{variants:{orientation:{vertical:"flex-col gap-2",horizontal:"flex-row flex-wrap gap-2"}},defaultVariants:{orientation:"vertical"}}),$=cva(["flex items-center gap-3 rounded-md border cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",g,m].join(" "),{variants:{variant:{default:["border-[var(--border)]","data-[hovered]:bg-[var(--accent)]/10","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]/10"].join(" "),destructive:["border-[var(--border)]","data-[hovered]:bg-[var(--destructive-background)]/10","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]/10"].join(" ")},size:{sm:"min-h-[44px] py-2 px-3 text-sm",default:"min-h-[48px] py-3 px-4 text-sm",lg:"min-h-[56px] py-4 px-5 text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""},isReadOnly:{true:"cursor-default",false:""},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isDisabled:false,isReadOnly:false,isInvalid:false}}),j=cva("flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{variant:"default",size:"default"}}),H=cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function F({className:o,...t}){return jsx("svg",{className:o,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:jsx("polyline",{points:"20 6 9 17 4 12"})})}function Ne({className:o,...t}){return jsxs("svg",{className:o,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:[jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})}function B({children:o,className:t}){return jsx("span",{className:l("font-medium text-[var(--content-foreground)]",t),children:o})}B.displayName="Checkbox.Label";function Y({children:o,className:t}){return jsx("span",{className:l("text-sm text-[var(--menu-muted)]",t),children:o})}Y.displayName="Checkbox.Description";function Pe({value:o,isDisabled:t,children:s,className:p,selectedIcon:n}){let{variant:c,size:u,isInvalid:N,isDisabled:C,isReadOnly:k}=useContext(A),b=t||C,d=i=>{let h=l(H({variant:c,size:u})),x=i||void 0;if(n){if(isValidElement(n)){let v=n;return cloneElement(v,{className:l(h,v.props.className),"data-selected":x})}return jsx("span",{className:h,"data-selected":x,children:n})}return jsx(F,{className:h,"data-selected":x})};return jsx(Checkbox,{value:o,isDisabled:b,className:i=>l($({variant:c,size:u,isDisabled:i.isDisabled,isReadOnly:k,isInvalid:N}),p),children:i=>jsxs(Fragment,{children:[jsx("div",{className:j({variant:c,size:u}),"data-selected":i.isSelected||void 0,children:d(i.isSelected)}),jsx("div",{className:"flex-1 flex flex-col",children:s})]})})}var U=Object.assign(Pe,{Label:B,Description:Y});U.displayName="Checkbox";function _(o,t){if(!o)return o;let s=[...new Set(o)];return process.env.NODE_ENV!=="production"&&s.length!==o.length&&console.warn(`[${t}] Received duplicate values in value/defaultValue prop. Original: [${o.join(", ")}], Deduplicated: [${s.join(", ")}]. Duplicate values are automatically removed.`),s}var q=forwardRef(function(t,s){let{label:p,description:n,errorMessage:c,value:u,defaultValue:N,isDisabled:C=false,isReadOnly:k=false,isRequired:b=false,isInvalid:d=false,orientation:i="vertical",variant:h="default",size:x="default",name:v,onChange:M,onFocusChange:W,className:J,children:K,id:Q,"aria-label":X,"aria-labelledby":Z,"aria-describedby":R,"data-testid":ee,...oe}=t,ae=useId(),y=Q??ae,D=`${y}-label`,V=`${y}-description`,E=`${y}-error`,f=[];R&&f.push(R),n&&f.push(V),d&&c&&f.push(E);let te=f.length>0?f.join(" "):void 0,re=_(u,"CheckboxGroup"),ie=_(N,"CheckboxGroup");return jsx(A.Provider,{value:{variant:h,size:x,isInvalid:d,isDisabled:C,isReadOnly:k},children:jsxs(CheckboxGroup,{ref:s,id:y,name:v,value:re,defaultValue:ie,isDisabled:C,isReadOnly:k,isRequired:b,isInvalid:d,onChange:M,onFocusChange:W,"aria-label":X,"aria-labelledby":p?D:Z,"aria-describedby":te,"aria-orientation":i,"aria-required":b||void 0,"aria-invalid":d||void 0,"data-testid":ee,className:l("flex flex-col gap-1.5",J),...oe,children:[p&&jsxs(Label,{id:D,className:"text-sm font-medium text-[var(--content-foreground)]",children:[p,b&&jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:"*"})]}),n&&jsx(Text,{id:V,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:n}),jsx("div",{className:w({orientation:i}),children:K}),d&&c&&jsx(FieldError,{id:E,className:"text-sm text-[var(--destructive-background)]",children:jsx("span",{role:"alert",children:c})})]})})});q.displayName="CheckboxGroup";export{U as Checkbox,de as CheckboxDescriptionPropsSchema,q as CheckboxGroup,O as CheckboxGroupOrientationSchema,ne as CheckboxGroupPropsSchema,I as CheckboxGroupSizeSchema,T as CheckboxGroupVariantSchema,ce as CheckboxLabelPropsSchema,se as CheckboxPropsSchema,F as CheckmarkIcon,Ne as TimesIcon,w as checkboxGroupVariants,j as checkboxIndicatorVariants,$ as checkboxItemVariants,H as checkmarkVariants};//# sourceMappingURL=index.mjs.map
441
3
  //# sourceMappingURL=index.mjs.map