@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,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"]),se=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()}),ne=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()}),le=z.object({children:z.custom(),className:z.string().optional()});function d(...o){return twMerge(clsx(o))}var S="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",S,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)]/10","data-[selected]:border-[var(--destructive)]","data-[selected]:bg-[var(--destructive)]/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)]",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)]","data-[selected]:bg-[var(--destructive)]"].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:d("font-medium text-[var(--content-foreground)]",t),children:o})}B.displayName="Checkbox.Label";function Y({children:o,className:t}){return jsx("span",{className:d("text-sm text-[var(--menu-muted)]",t),children:o})}Y.displayName="Checkbox.Description";function Pe({value:o,isDisabled:t,children:n,className:p,selectedIcon:s}){let{variant:c,size:u,isInvalid:N,isDisabled:C,isReadOnly:k}=useContext(A),b=t||C,l=i=>{let h=d(H({variant:c,size:u})),x=i||void 0;if(s){if(isValidElement(s)){let v=s;return cloneElement(v,{className:d(h,v.props.className),"data-selected":x})}return jsx("span",{className:h,"data-selected":x,children:s})}return jsx(F,{className:h,"data-selected":x})};return jsx(Checkbox,{value:o,isDisabled:b,className:i=>d($({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:l(i.isSelected)}),jsx("div",{className:"flex-1 flex flex-col",children:n})]})})}var U=Object.assign(Pe,{Label:B,Description:Y});U.displayName="Checkbox";function _(o,t){if(!o)return o;let n=[...new Set(o)];return process.env.NODE_ENV!=="production"&&n.length!==o.length&&console.warn(`[${t}] Received duplicate values in value/defaultValue prop. Original: [${o.join(", ")}], Deduplicated: [${n.join(", ")}]. Duplicate values are automatically removed.`),n}var q=forwardRef(function(t,n){let{label:p,description:s,errorMessage:c,value:u,defaultValue:N,isDisabled:C=false,isReadOnly:k=false,isRequired:b=false,isInvalid:l=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),s&&f.push(V),l&&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:l,isDisabled:C,isReadOnly:k},children:jsxs(CheckboxGroup,{ref:n,id:y,name:v,value:re,defaultValue:ie,isDisabled:C,isReadOnly:k,isRequired:b,isInvalid:l,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":l||void 0,"data-testid":ee,className:d("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)]","aria-hidden":"true",children:"*"})]}),s&&jsx(Text,{id:V,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:s}),jsx("div",{className:w({orientation:i}),children:K}),l&&c&&jsx(FieldError,{id:E,className:"text-sm text-[var(--destructive)]",children:jsx("span",{role:"alert",children:c})})]})})});q.displayName="CheckboxGroup";export{U as Checkbox,le as CheckboxDescriptionPropsSchema,q as CheckboxGroup,O as CheckboxGroupOrientationSchema,se as CheckboxGroupPropsSchema,I as CheckboxGroupSizeSchema,T as CheckboxGroupVariantSchema,ce as CheckboxLabelPropsSchema,ne 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