@tribepad/themis 1.0.0 → 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 (482) hide show
  1. package/dist/elements/Accordion/index.js +2 -77
  2. package/dist/elements/Accordion/index.js.map +1 -1
  3. package/dist/elements/Accordion/index.mjs +2 -4
  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 +2 -53
  18. package/dist/elements/Avatar/index.js.map +1 -1
  19. package/dist/elements/Avatar/index.mjs +2 -4
  20. package/dist/elements/Avatar/index.mjs.map +1 -1
  21. package/dist/elements/Badge/index.js +2 -42
  22. package/dist/elements/Badge/index.js.map +1 -1
  23. package/dist/elements/Badge/index.mjs +2 -5
  24. package/dist/elements/Badge/index.mjs.map +1 -1
  25. package/dist/elements/Breadcrumbs/index.js +2 -53
  26. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  27. package/dist/elements/Breadcrumbs/index.mjs +2 -8
  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 +2 -26
  36. package/dist/elements/Button/index.js.map +1 -1
  37. package/dist/elements/Button/index.mjs +2 -5
  38. package/dist/elements/Button/index.mjs.map +1 -1
  39. package/dist/elements/ButtonGroup/index.js +2 -65
  40. package/dist/elements/ButtonGroup/index.js.map +1 -1
  41. package/dist/elements/ButtonGroup/index.mjs +2 -4
  42. package/dist/elements/ButtonGroup/index.mjs.map +1 -1
  43. package/dist/elements/Card/Card.d.ts.map +1 -1
  44. package/dist/elements/Card/index.js +2 -84
  45. package/dist/elements/Card/index.js.map +1 -1
  46. package/dist/elements/Card/index.mjs +2 -7
  47. package/dist/elements/Card/index.mjs.map +1 -1
  48. package/dist/elements/Carousel/Carousel.d.ts +1 -11
  49. package/dist/elements/Carousel/Carousel.d.ts.map +1 -1
  50. package/dist/elements/Carousel/LazyCarousel.d.ts +1 -1
  51. package/dist/elements/Carousel/LazyCarousel.d.ts.map +1 -1
  52. package/dist/elements/Carousel/index.js +2 -22
  53. package/dist/elements/Carousel/index.js.map +1 -1
  54. package/dist/elements/Carousel/index.mjs +2 -9
  55. package/dist/elements/Carousel/index.mjs.map +1 -1
  56. package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
  57. package/dist/elements/Chart/index.js +2 -46
  58. package/dist/elements/Chart/index.js.map +1 -1
  59. package/dist/elements/Chart/index.mjs +2 -5
  60. package/dist/elements/Chart/index.mjs.map +1 -1
  61. package/dist/elements/Checkbox/index.js +2 -46
  62. package/dist/elements/Checkbox/index.js.map +1 -1
  63. package/dist/elements/Checkbox/index.mjs +2 -5
  64. package/dist/elements/Checkbox/index.mjs.map +1 -1
  65. package/dist/elements/CheckboxGroup/index.js +2 -70
  66. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  67. package/dist/elements/CheckboxGroup/index.mjs +2 -5
  68. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  69. package/dist/elements/Combobox/Combobox.d.ts +56 -0
  70. package/dist/elements/Combobox/Combobox.d.ts.map +1 -0
  71. package/dist/elements/Combobox/Combobox.styles.d.ts +29 -0
  72. package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -0
  73. package/dist/elements/Combobox/Combobox.types.d.ts +67 -0
  74. package/dist/elements/Combobox/Combobox.types.d.ts.map +1 -0
  75. package/dist/elements/Combobox/index.d.ts +20 -0
  76. package/dist/elements/Combobox/index.d.ts.map +1 -0
  77. package/dist/elements/Combobox/index.js +3 -0
  78. package/dist/elements/Combobox/index.js.map +1 -0
  79. package/dist/elements/Combobox/index.mjs +3 -0
  80. package/dist/elements/Combobox/index.mjs.map +1 -0
  81. package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
  82. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  83. package/dist/elements/DatePicker/index.js +2 -122
  84. package/dist/elements/DatePicker/index.js.map +1 -1
  85. package/dist/elements/DatePicker/index.mjs +2 -5
  86. package/dist/elements/DatePicker/index.mjs.map +1 -1
  87. package/dist/elements/Dropdown/Dropdown.d.ts +7 -15
  88. package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
  89. package/dist/elements/Dropdown/Dropdown.styles.d.ts +22 -0
  90. package/dist/elements/Dropdown/Dropdown.styles.d.ts.map +1 -0
  91. package/dist/elements/Dropdown/index.d.ts +1 -0
  92. package/dist/elements/Dropdown/index.d.ts.map +1 -1
  93. package/dist/elements/Dropdown/index.js +2 -40
  94. package/dist/elements/Dropdown/index.js.map +1 -1
  95. package/dist/elements/Dropdown/index.mjs +2 -3
  96. package/dist/elements/Dropdown/index.mjs.map +1 -1
  97. package/dist/elements/FileField/index.js +2 -137
  98. package/dist/elements/FileField/index.js.map +1 -1
  99. package/dist/elements/FileField/index.mjs +2 -8
  100. package/dist/elements/FileField/index.mjs.map +1 -1
  101. package/dist/elements/FormLayout/index.js +2 -16
  102. package/dist/elements/FormLayout/index.js.map +1 -1
  103. package/dist/elements/FormLayout/index.mjs +2 -3
  104. package/dist/elements/FormLayout/index.mjs.map +1 -1
  105. package/dist/elements/Modal/Modal.d.ts +9 -14
  106. package/dist/elements/Modal/Modal.d.ts.map +1 -1
  107. package/dist/elements/Modal/Modal.styles.d.ts +29 -0
  108. package/dist/elements/Modal/Modal.styles.d.ts.map +1 -0
  109. package/dist/elements/Modal/index.d.ts +1 -0
  110. package/dist/elements/Modal/index.d.ts.map +1 -1
  111. package/dist/elements/Modal/index.js +2 -51
  112. package/dist/elements/Modal/index.js.map +1 -1
  113. package/dist/elements/Modal/index.mjs +2 -2
  114. package/dist/elements/Modal/index.mjs.map +1 -1
  115. package/dist/elements/NumberField/index.js +2 -56
  116. package/dist/elements/NumberField/index.js.map +1 -1
  117. package/dist/elements/NumberField/index.mjs +2 -7
  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 +2 -12
  121. package/dist/elements/OTPInput/index.js.map +1 -1
  122. package/dist/elements/OTPInput/index.mjs +2 -3
  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 +2 -32
  137. package/dist/elements/Panel/index.js.map +1 -1
  138. package/dist/elements/Panel/index.mjs +2 -3
  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 +2 -29
  155. package/dist/elements/Progress/index.js.map +1 -1
  156. package/dist/elements/Progress/index.mjs +2 -4
  157. package/dist/elements/Progress/index.mjs.map +1 -1
  158. package/dist/elements/RadioGroup/index.js +2 -46
  159. package/dist/elements/RadioGroup/index.js.map +1 -1
  160. package/dist/elements/RadioGroup/index.mjs +2 -5
  161. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  162. package/dist/elements/Resizable/components/ResizableHandle.d.ts +0 -8
  163. package/dist/elements/Resizable/components/ResizableHandle.d.ts.map +1 -1
  164. package/dist/elements/Resizable/components/ResizablePanel.d.ts +0 -8
  165. package/dist/elements/Resizable/components/ResizablePanel.d.ts.map +1 -1
  166. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts +0 -8
  167. package/dist/elements/Resizable/components/ResizablePanelGroup.d.ts.map +1 -1
  168. package/dist/elements/Resizable/components/ResizablePopover.d.ts +0 -8
  169. package/dist/elements/Resizable/components/ResizablePopover.d.ts.map +1 -1
  170. package/dist/elements/Resizable/index.js +2 -64
  171. package/dist/elements/Resizable/index.js.map +1 -1
  172. package/dist/elements/Resizable/index.mjs +2 -7
  173. package/dist/elements/Resizable/index.mjs.map +1 -1
  174. package/dist/elements/SearchField/SearchField.d.ts +27 -0
  175. package/dist/elements/SearchField/SearchField.d.ts.map +1 -0
  176. package/dist/elements/SearchField/SearchField.styles.d.ts +32 -0
  177. package/dist/elements/SearchField/SearchField.styles.d.ts.map +1 -0
  178. package/dist/elements/SearchField/SearchField.types.d.ts +45 -0
  179. package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -0
  180. package/dist/elements/SearchField/index.css +2 -0
  181. package/dist/elements/SearchField/index.css.map +1 -0
  182. package/dist/elements/SearchField/index.d.ts +21 -0
  183. package/dist/elements/SearchField/index.d.ts.map +1 -0
  184. package/dist/elements/SearchField/index.js +3 -0
  185. package/dist/elements/SearchField/index.js.map +1 -0
  186. package/dist/elements/SearchField/index.mjs +3 -0
  187. package/dist/elements/SearchField/index.mjs.map +1 -0
  188. package/dist/elements/Select/Select.d.ts +19 -48
  189. package/dist/elements/Select/Select.d.ts.map +1 -1
  190. package/dist/elements/Select/Select.styles.d.ts +55 -0
  191. package/dist/elements/Select/Select.styles.d.ts.map +1 -0
  192. package/dist/elements/Select/index.js +2 -32
  193. package/dist/elements/Select/index.js.map +1 -1
  194. package/dist/elements/Select/index.mjs +2 -3
  195. package/dist/elements/Select/index.mjs.map +1 -1
  196. package/dist/elements/Skeleton/index.js +2 -21
  197. package/dist/elements/Skeleton/index.js.map +1 -1
  198. package/dist/elements/Skeleton/index.mjs +2 -4
  199. package/dist/elements/Skeleton/index.mjs.map +1 -1
  200. package/dist/elements/Switch/index.js +2 -48
  201. package/dist/elements/Switch/index.js.map +1 -1
  202. package/dist/elements/Switch/index.mjs +2 -30
  203. package/dist/elements/Switch/index.mjs.map +1 -1
  204. package/dist/elements/Table/Table.d.ts +3 -24
  205. package/dist/elements/Table/Table.d.ts.map +1 -1
  206. package/dist/elements/Table/Table.styles.d.ts +24 -0
  207. package/dist/elements/Table/Table.styles.d.ts.map +1 -0
  208. package/dist/elements/Table/index.js +2 -75
  209. package/dist/elements/Table/index.js.map +1 -1
  210. package/dist/elements/Table/index.mjs +2 -6
  211. package/dist/elements/Table/index.mjs.map +1 -1
  212. package/dist/elements/Tabs/index.js +2 -73
  213. package/dist/elements/Tabs/index.js.map +1 -1
  214. package/dist/elements/Tabs/index.mjs +2 -4
  215. package/dist/elements/Tabs/index.mjs.map +1 -1
  216. package/dist/elements/TextField/TextField.d.ts +6 -42
  217. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  218. package/dist/elements/TextField/TextField.hooks.d.ts +63 -0
  219. package/dist/elements/TextField/TextField.hooks.d.ts.map +1 -0
  220. package/dist/elements/TextField/TextField.icons.d.ts +19 -0
  221. package/dist/elements/TextField/TextField.icons.d.ts.map +1 -0
  222. package/dist/elements/TextField/TextField.styles.d.ts +37 -0
  223. package/dist/elements/TextField/TextField.styles.d.ts.map +1 -0
  224. package/dist/elements/TextField/TextField.types.d.ts +3 -0
  225. package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
  226. package/dist/elements/TextField/index.css +1 -22
  227. package/dist/elements/TextField/index.css.map +1 -1
  228. package/dist/elements/TextField/index.js +2 -259
  229. package/dist/elements/TextField/index.js.map +1 -1
  230. package/dist/elements/TextField/index.mjs +2 -206
  231. package/dist/elements/TextField/index.mjs.map +1 -1
  232. package/dist/elements/TimeField/index.js +2 -44
  233. package/dist/elements/TimeField/index.js.map +1 -1
  234. package/dist/elements/TimeField/index.mjs +2 -3
  235. package/dist/elements/TimeField/index.mjs.map +1 -1
  236. package/dist/elements/Toast/Toast.d.ts +0 -22
  237. package/dist/elements/Toast/Toast.d.ts.map +1 -1
  238. package/dist/elements/Toast/index.js +2 -59
  239. package/dist/elements/Toast/index.js.map +1 -1
  240. package/dist/elements/Toast/index.mjs +2 -6
  241. package/dist/elements/Toast/index.mjs.map +1 -1
  242. package/dist/elements/Tooltip/index.js +2 -58
  243. package/dist/elements/Tooltip/index.js.map +1 -1
  244. package/dist/elements/Tooltip/index.mjs +2 -5
  245. package/dist/elements/Tooltip/index.mjs.map +1 -1
  246. package/dist/elements/index.css +1 -22
  247. package/dist/elements/index.css.map +1 -1
  248. package/dist/elements/index.d.ts +13 -1
  249. package/dist/elements/index.d.ts.map +1 -1
  250. package/dist/elements/index.js +2 -838
  251. package/dist/elements/index.js.map +1 -1
  252. package/dist/elements/index.mjs +2 -41
  253. package/dist/elements/index.mjs.map +1 -1
  254. package/dist/index.css +1 -22
  255. package/dist/index.css.map +1 -1
  256. package/dist/index.js +3 -864
  257. package/dist/index.js.map +1 -1
  258. package/dist/index.mjs +3 -43
  259. package/dist/index.mjs.map +1 -1
  260. package/dist/schemas/index.js +2 -28
  261. package/dist/schemas/index.js.map +1 -1
  262. package/dist/schemas/index.mjs +2 -3
  263. package/dist/schemas/index.mjs.map +1 -1
  264. package/dist/styles/defaults.css +151 -0
  265. package/dist/styles/index.js +1 -152
  266. package/dist/styles/index.js.map +1 -1
  267. package/dist/styles/index.mjs +1 -3
  268. package/dist/styles/index.mjs.map +1 -1
  269. package/dist/utils/index.js +1 -12
  270. package/dist/utils/index.js.map +1 -1
  271. package/dist/utils/index.mjs +1 -3
  272. package/dist/utils/index.mjs.map +1 -1
  273. package/package.json +9 -7
  274. package/src/elements/Accordion/Accordion.stories.tsx +1 -1
  275. package/src/elements/AlertDialog/AlertDialog.stories.tsx +124 -0
  276. package/src/elements/Avatar/Avatar.stories.tsx +1 -1
  277. package/src/elements/Badge/Badge.stories.tsx +1 -1
  278. package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  279. package/src/elements/Button/Button.stories.tsx +1 -1
  280. package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +1 -1
  281. package/src/elements/Card/Card.stories.tsx +1 -1
  282. package/src/elements/Carousel/Carousel.stories.tsx +1 -1
  283. package/src/elements/Chart/Chart.stories.tsx +1 -1
  284. package/src/elements/Checkbox/Checkbox.stories.tsx +1 -1
  285. package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +1 -1
  286. package/src/elements/Combobox/Combobox.stories.tsx +133 -0
  287. package/src/elements/DatePicker/DatePicker.stories.tsx +1 -1
  288. package/src/elements/Dropdown/Dropdown.stories.tsx +1 -1
  289. package/src/elements/FileField/FileField.stories.tsx +1 -1
  290. package/src/elements/FileField/FileProgress.stories.tsx +1 -1
  291. package/src/elements/FormLayout/FormLayout.stories.tsx +1 -1
  292. package/src/elements/Modal/Modal.stories.tsx +1 -1
  293. package/src/elements/NumberField/NumberField.stories.tsx +1 -1
  294. package/src/elements/OTPInput/OTPInput.stories.tsx +1 -1
  295. package/src/elements/Pagination/Pagination.stories.tsx +203 -0
  296. package/src/elements/Panel/Panel.stories.tsx +1 -1
  297. package/src/elements/PasswordField/PasswordField.stories.tsx +167 -0
  298. package/src/elements/Progress/Progress.stories.tsx +1 -1
  299. package/src/elements/RadioGroup/RadioGroup.stories.tsx +1 -1
  300. package/src/elements/Resizable/Resizable.stories.tsx +1 -1
  301. package/src/elements/SearchField/SearchField.stories.tsx +146 -0
  302. package/src/elements/Select/Select.stories.tsx +1 -1
  303. package/src/elements/Skeleton/Skeleton.stories.tsx +1 -1
  304. package/src/elements/Switch/Switch.stories.tsx +1 -1
  305. package/src/elements/Table/Table.stories.tsx +1 -1
  306. package/src/elements/Tabs/Tabs.stories.tsx +1 -1
  307. package/src/elements/TextField/TextField.stories.tsx +1 -1
  308. package/src/elements/TimeField/TimeField.stories.tsx +1 -1
  309. package/src/elements/Toast/Toast.stories.tsx +1 -1
  310. package/src/elements/Tooltip/Tooltip.stories.tsx +1 -1
  311. package/dist/Carousel-NTZX5TOW.js +0 -16
  312. package/dist/Carousel-NTZX5TOW.js.map +0 -1
  313. package/dist/Carousel-YH3DOQJU.mjs +0 -7
  314. package/dist/Carousel-YH3DOQJU.mjs.map +0 -1
  315. package/dist/chunk-2HIUTHMU.mjs +0 -234
  316. package/dist/chunk-2HIUTHMU.mjs.map +0 -1
  317. package/dist/chunk-34GTFTDO.js +0 -431
  318. package/dist/chunk-34GTFTDO.js.map +0 -1
  319. package/dist/chunk-3H7ASYR7.js +0 -250
  320. package/dist/chunk-3H7ASYR7.js.map +0 -1
  321. package/dist/chunk-3IEN7JOP.js +0 -316
  322. package/dist/chunk-3IEN7JOP.js.map +0 -1
  323. package/dist/chunk-3JHN4GAL.js +0 -326
  324. package/dist/chunk-3JHN4GAL.js.map +0 -1
  325. package/dist/chunk-3MJPASQU.js +0 -232
  326. package/dist/chunk-3MJPASQU.js.map +0 -1
  327. package/dist/chunk-3XD2JUL3.js +0 -572
  328. package/dist/chunk-3XD2JUL3.js.map +0 -1
  329. package/dist/chunk-3YOY2VJ6.js +0 -189
  330. package/dist/chunk-3YOY2VJ6.js.map +0 -1
  331. package/dist/chunk-4DU5JSXB.js +0 -408
  332. package/dist/chunk-4DU5JSXB.js.map +0 -1
  333. package/dist/chunk-4E4E2GSS.js +0 -352
  334. package/dist/chunk-4E4E2GSS.js.map +0 -1
  335. package/dist/chunk-4NHAP4AN.mjs +0 -3
  336. package/dist/chunk-4NHAP4AN.mjs.map +0 -1
  337. package/dist/chunk-4S33J5NY.mjs +0 -415
  338. package/dist/chunk-4S33J5NY.mjs.map +0 -1
  339. package/dist/chunk-5SMGRT3G.mjs +0 -354
  340. package/dist/chunk-5SMGRT3G.mjs.map +0 -1
  341. package/dist/chunk-5SVLJN2C.mjs +0 -22
  342. package/dist/chunk-5SVLJN2C.mjs.map +0 -1
  343. package/dist/chunk-66WTU4EB.mjs +0 -299
  344. package/dist/chunk-66WTU4EB.mjs.map +0 -1
  345. package/dist/chunk-6S25NMOT.mjs +0 -335
  346. package/dist/chunk-6S25NMOT.mjs.map +0 -1
  347. package/dist/chunk-6SP7UB3D.js +0 -4
  348. package/dist/chunk-6SP7UB3D.js.map +0 -1
  349. package/dist/chunk-6TYWWQHM.mjs +0 -565
  350. package/dist/chunk-6TYWWQHM.mjs.map +0 -1
  351. package/dist/chunk-A3YUJA6W.mjs +0 -384
  352. package/dist/chunk-A3YUJA6W.mjs.map +0 -1
  353. package/dist/chunk-A6KEDVUR.js +0 -61
  354. package/dist/chunk-A6KEDVUR.js.map +0 -1
  355. package/dist/chunk-A77RUEWL.js +0 -730
  356. package/dist/chunk-A77RUEWL.js.map +0 -1
  357. package/dist/chunk-AA4IKMPE.mjs +0 -3
  358. package/dist/chunk-AA4IKMPE.mjs.map +0 -1
  359. package/dist/chunk-AKIA6GW6.mjs +0 -163
  360. package/dist/chunk-AKIA6GW6.mjs.map +0 -1
  361. package/dist/chunk-AL6P275L.mjs +0 -435
  362. package/dist/chunk-AL6P275L.mjs.map +0 -1
  363. package/dist/chunk-AZ3RJYTB.js +0 -37
  364. package/dist/chunk-AZ3RJYTB.js.map +0 -1
  365. package/dist/chunk-B5Q4UPL6.js +0 -32
  366. package/dist/chunk-B5Q4UPL6.js.map +0 -1
  367. package/dist/chunk-B6DHPMDP.mjs +0 -335
  368. package/dist/chunk-B6DHPMDP.mjs.map +0 -1
  369. package/dist/chunk-BDXKKMBZ.mjs +0 -184
  370. package/dist/chunk-BDXKKMBZ.mjs.map +0 -1
  371. package/dist/chunk-BL6E2DLZ.mjs +0 -52
  372. package/dist/chunk-BL6E2DLZ.mjs.map +0 -1
  373. package/dist/chunk-CGFDS4XS.mjs +0 -121
  374. package/dist/chunk-CGFDS4XS.mjs.map +0 -1
  375. package/dist/chunk-CJIW5TKI.js +0 -139
  376. package/dist/chunk-CJIW5TKI.js.map +0 -1
  377. package/dist/chunk-CKNISJOQ.js +0 -314
  378. package/dist/chunk-CKNISJOQ.js.map +0 -1
  379. package/dist/chunk-D6CBOECS.mjs +0 -1757
  380. package/dist/chunk-D6CBOECS.mjs.map +0 -1
  381. package/dist/chunk-DDWEVC2S.js +0 -166
  382. package/dist/chunk-DDWEVC2S.js.map +0 -1
  383. package/dist/chunk-DZ556D2F.mjs +0 -176
  384. package/dist/chunk-DZ556D2F.mjs.map +0 -1
  385. package/dist/chunk-E2KQFV3O.mjs +0 -10
  386. package/dist/chunk-E2KQFV3O.mjs.map +0 -1
  387. package/dist/chunk-EMMLADSC.js +0 -126
  388. package/dist/chunk-EMMLADSC.js.map +0 -1
  389. package/dist/chunk-EP4WOI5D.mjs +0 -926
  390. package/dist/chunk-EP4WOI5D.mjs.map +0 -1
  391. package/dist/chunk-FJRXLJC2.mjs +0 -160
  392. package/dist/chunk-FJRXLJC2.mjs.map +0 -1
  393. package/dist/chunk-FKQI434R.js +0 -345
  394. package/dist/chunk-FKQI434R.js.map +0 -1
  395. package/dist/chunk-FPKEAJRZ.mjs +0 -100
  396. package/dist/chunk-FPKEAJRZ.mjs.map +0 -1
  397. package/dist/chunk-FWQYB22U.js +0 -183
  398. package/dist/chunk-FWQYB22U.js.map +0 -1
  399. package/dist/chunk-GD5GHTMA.js +0 -189
  400. package/dist/chunk-GD5GHTMA.js.map +0 -1
  401. package/dist/chunk-GE5XTSDZ.js +0 -447
  402. package/dist/chunk-GE5XTSDZ.js.map +0 -1
  403. package/dist/chunk-GVE47ZAX.mjs +0 -32
  404. package/dist/chunk-GVE47ZAX.mjs.map +0 -1
  405. package/dist/chunk-HK46BT5U.mjs +0 -18
  406. package/dist/chunk-HK46BT5U.mjs.map +0 -1
  407. package/dist/chunk-HQVRMR6N.js +0 -365
  408. package/dist/chunk-HQVRMR6N.js.map +0 -1
  409. package/dist/chunk-HSGBJPJO.mjs +0 -398
  410. package/dist/chunk-HSGBJPJO.mjs.map +0 -1
  411. package/dist/chunk-I3AUTOMZ.mjs +0 -125
  412. package/dist/chunk-I3AUTOMZ.mjs.map +0 -1
  413. package/dist/chunk-IEI5LD5C.mjs +0 -1161
  414. package/dist/chunk-IEI5LD5C.mjs.map +0 -1
  415. package/dist/chunk-IIPTC2X7.mjs +0 -118
  416. package/dist/chunk-IIPTC2X7.mjs.map +0 -1
  417. package/dist/chunk-J7TLHF2Q.js +0 -4
  418. package/dist/chunk-J7TLHF2Q.js.map +0 -1
  419. package/dist/chunk-JJOWXFXQ.mjs +0 -765
  420. package/dist/chunk-JJOWXFXQ.mjs.map +0 -1
  421. package/dist/chunk-JPTSS2OA.mjs +0 -3
  422. package/dist/chunk-JPTSS2OA.mjs.map +0 -1
  423. package/dist/chunk-KFXXRLTP.js +0 -396
  424. package/dist/chunk-KFXXRLTP.js.map +0 -1
  425. package/dist/chunk-KPRRBSG6.mjs +0 -272
  426. package/dist/chunk-KPRRBSG6.mjs.map +0 -1
  427. package/dist/chunk-NFSBGRDB.mjs +0 -57
  428. package/dist/chunk-NFSBGRDB.mjs.map +0 -1
  429. package/dist/chunk-NGJVCFTM.js +0 -219
  430. package/dist/chunk-NGJVCFTM.js.map +0 -1
  431. package/dist/chunk-NSQ6MZJ6.mjs +0 -728
  432. package/dist/chunk-NSQ6MZJ6.mjs.map +0 -1
  433. package/dist/chunk-NYQYHT76.mjs +0 -296
  434. package/dist/chunk-NYQYHT76.mjs.map +0 -1
  435. package/dist/chunk-OLJJGI5B.js +0 -1193
  436. package/dist/chunk-OLJJGI5B.js.map +0 -1
  437. package/dist/chunk-Q3572X2J.js +0 -292
  438. package/dist/chunk-Q3572X2J.js.map +0 -1
  439. package/dist/chunk-QH7N7D4I.mjs +0 -210
  440. package/dist/chunk-QH7N7D4I.mjs.map +0 -1
  441. package/dist/chunk-R7XUIV25.js +0 -466
  442. package/dist/chunk-R7XUIV25.js.map +0 -1
  443. package/dist/chunk-RFFO4KPM.js +0 -135
  444. package/dist/chunk-RFFO4KPM.js.map +0 -1
  445. package/dist/chunk-RFX7QKA7.mjs +0 -180
  446. package/dist/chunk-RFX7QKA7.mjs.map +0 -1
  447. package/dist/chunk-SN5LFAP3.js +0 -940
  448. package/dist/chunk-SN5LFAP3.js.map +0 -1
  449. package/dist/chunk-T4COXKQ3.js +0 -24
  450. package/dist/chunk-T4COXKQ3.js.map +0 -1
  451. package/dist/chunk-TS54QM27.js +0 -125
  452. package/dist/chunk-TS54QM27.js.map +0 -1
  453. package/dist/chunk-UE2S4PCX.mjs +0 -220
  454. package/dist/chunk-UE2S4PCX.mjs.map +0 -1
  455. package/dist/chunk-UTW3QX2A.mjs +0 -282
  456. package/dist/chunk-UTW3QX2A.mjs.map +0 -1
  457. package/dist/chunk-V74LGMAE.js +0 -1767
  458. package/dist/chunk-V74LGMAE.js.map +0 -1
  459. package/dist/chunk-VIREG536.js +0 -12
  460. package/dist/chunk-VIREG536.js.map +0 -1
  461. package/dist/chunk-VY7M7346.js +0 -4
  462. package/dist/chunk-VY7M7346.js.map +0 -1
  463. package/dist/chunk-W3TJOO7H.mjs +0 -319
  464. package/dist/chunk-W3TJOO7H.mjs.map +0 -1
  465. package/dist/chunk-WIUOB36M.js +0 -54
  466. package/dist/chunk-WIUOB36M.js.map +0 -1
  467. package/dist/chunk-WJGLM4CY.js +0 -291
  468. package/dist/chunk-WJGLM4CY.js.map +0 -1
  469. package/dist/chunk-WNURH5OO.mjs +0 -453
  470. package/dist/chunk-WNURH5OO.mjs.map +0 -1
  471. package/dist/chunk-X25TNRSD.mjs +0 -364
  472. package/dist/chunk-X25TNRSD.mjs.map +0 -1
  473. package/dist/chunk-Y3GT7ETK.js +0 -108
  474. package/dist/chunk-Y3GT7ETK.js.map +0 -1
  475. package/dist/chunk-Z4FRNOF6.mjs +0 -115
  476. package/dist/chunk-Z4FRNOF6.mjs.map +0 -1
  477. package/dist/chunk-ZMYLD3BN.js +0 -166
  478. package/dist/chunk-ZMYLD3BN.js.map +0 -1
  479. package/dist/chunk-ZP2KV6EX.js +0 -815
  480. package/dist/chunk-ZP2KV6EX.js.map +0 -1
  481. package/dist/chunk-ZVKXFELU.js +0 -366
  482. package/dist/chunk-ZVKXFELU.js.map +0 -1
@@ -1,272 +0,0 @@
1
- import { Button } from './chunk-BDXKKMBZ.mjs';
2
- import { cn } from './chunk-E2KQFV3O.mjs';
3
- import { BaseComponentPropsSchema } from './chunk-5SVLJN2C.mjs';
4
- import { forwardRef, useState, useCallback } from 'react';
5
- import { RotateCcw } from 'lucide-react';
6
- import { z } from 'zod';
7
- import { cva } from 'class-variance-authority';
8
- import { jsx, jsxs } from 'react/jsx-runtime';
9
-
10
- var FlipButtonPositionSchema = z.enum([
11
- "top-right",
12
- "top-left",
13
- "bottom-right",
14
- "bottom-left"
15
- ]);
16
- var FlipButtonLabelSchema = z.object({
17
- show: z.string().optional(),
18
- hide: z.string().optional()
19
- });
20
- var FlipButtonIconSchema = z.object({
21
- /** Icon to show on front side button (default: RotateCcw) */
22
- front: z.custom().optional(),
23
- /** Icon to show on back side button (default: same as front or RotateCcw) */
24
- back: z.custom().optional()
25
- });
26
- var CardPropsSchema = BaseComponentPropsSchema.extend({
27
- // Flip functionality
28
- /** Enable flip animation feature */
29
- flippable: z.boolean().optional().default(false),
30
- /** Content to display on the back side of the card */
31
- backContent: z.custom().optional(),
32
- /** Controlled mode: current flip state */
33
- isFlipped: z.boolean().optional(),
34
- /** Uncontrolled mode: initial flip state */
35
- defaultFlipped: z.boolean().optional().default(false),
36
- /** Callback fired when flip state changes */
37
- onFlipChange: z.custom().optional(),
38
- // Flip button configuration
39
- /** Position of the flip button on the card */
40
- flipButtonPosition: FlipButtonPositionSchema.optional().default("top-right"),
41
- /** Custom labels for the flip button title attribute */
42
- flipButtonLabel: FlipButtonLabelSchema.optional(),
43
- /** Custom icons for the flip button (default: RotateCcw) */
44
- flipButtonIcon: FlipButtonIconSchema.optional(),
45
- /** Duration of flip animation in milliseconds */
46
- flipDuration: z.number().optional().default(600)
47
- });
48
- var CardHeaderPropsSchema = BaseComponentPropsSchema.extend({
49
- children: z.custom()
50
- });
51
- var CardTitlePropsSchema = BaseComponentPropsSchema.extend({
52
- /** Heading level (h1-h6) - defaults to h3 */
53
- as: z.enum(["h1", "h2", "h3", "h4", "h5", "h6"]).optional().default("h3"),
54
- children: z.custom()
55
- });
56
- var CardDescriptionPropsSchema = BaseComponentPropsSchema.extend({
57
- children: z.custom()
58
- });
59
- var CardContentPropsSchema = BaseComponentPropsSchema.extend({
60
- children: z.custom()
61
- });
62
- var CardFooterPropsSchema = BaseComponentPropsSchema.extend({
63
- children: z.custom()
64
- });
65
- var CardActionPropsSchema = BaseComponentPropsSchema.extend({
66
- children: z.custom()
67
- });
68
- var flipButtonPositionVariants = cva(
69
- [
70
- "absolute z-10 min-h-[44px] min-w-[44px] p-2",
71
- "flex items-center justify-center",
72
- "rounded-full bg-[var(--accent-background)]",
73
- "text-[var(--primary-action)] hover:text-[var(--primary-action-hover)]",
74
- "transition-colors duration-200",
75
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]"
76
- ],
77
- {
78
- variants: {
79
- position: {
80
- "top-right": "top-2 right-2",
81
- "top-left": "top-2 left-2",
82
- "bottom-right": "bottom-2 right-2",
83
- "bottom-left": "bottom-2 left-2"
84
- }
85
- },
86
- defaultVariants: {
87
- position: "top-right"
88
- }
89
- }
90
- );
91
- var Card = forwardRef(
92
- (props, ref) => {
93
- const {
94
- children,
95
- className,
96
- flippable = false,
97
- backContent,
98
- isFlipped: controlledFlipped,
99
- defaultFlipped = false,
100
- onFlipChange,
101
- flipButtonPosition = "top-right",
102
- flipButtonLabel,
103
- flipButtonIcon,
104
- flipDuration = 600,
105
- ...rest
106
- } = props;
107
- const [internalFlipped, setInternalFlipped] = useState(defaultFlipped);
108
- const isControlled = controlledFlipped !== void 0;
109
- const flipped = isControlled ? controlledFlipped : internalFlipped;
110
- const handleFlip = useCallback(() => {
111
- const newState = !flipped;
112
- if (!isControlled) {
113
- setInternalFlipped(newState);
114
- }
115
- onFlipChange?.(newState);
116
- }, [flipped, isControlled, onFlipChange]);
117
- if (!flippable) {
118
- return /* @__PURE__ */ jsx(
119
- "article",
120
- {
121
- ref,
122
- className: cn(
123
- "rounded-lg border border-[var(--border)] bg-[var(--content-background)] text-[var(--content-foreground)] shadow-sm",
124
- className
125
- ),
126
- ...rest,
127
- children
128
- }
129
- );
130
- }
131
- const showLabel = flipButtonLabel?.show ?? "Show more details";
132
- const hideLabel = flipButtonLabel?.hide ?? "Show less details";
133
- const defaultIcon = /* @__PURE__ */ jsx(RotateCcw, { className: "h-5 w-5", "aria-hidden": "true" });
134
- const frontIcon = flipButtonIcon?.front ?? defaultIcon;
135
- const backIcon = flipButtonIcon?.back ?? flipButtonIcon?.front ?? defaultIcon;
136
- const FlipButton = ({ label, icon }) => /* @__PURE__ */ jsx(
137
- Button,
138
- {
139
- variant: "ghost",
140
- visualSize: "icon",
141
- "aria-hidden": "true",
142
- excludeFromTabOrder: true,
143
- onPress: handleFlip,
144
- className: flipButtonPositionVariants({ position: flipButtonPosition }),
145
- "aria-label": label,
146
- children: icon
147
- }
148
- );
149
- return /* @__PURE__ */ jsx(
150
- "article",
151
- {
152
- ref,
153
- className: cn("relative", className),
154
- style: { perspective: "1000px" },
155
- ...rest,
156
- children: /* @__PURE__ */ jsxs(
157
- "div",
158
- {
159
- className: cn(
160
- "relative transition-transform",
161
- "motion-reduce:transition-none"
162
- ),
163
- style: {
164
- transformStyle: "preserve-3d",
165
- transitionDuration: `${flipDuration}ms`,
166
- transform: flipped ? "rotateY(180deg)" : "rotateY(0deg)"
167
- },
168
- "data-flipped": flipped,
169
- children: [
170
- /* @__PURE__ */ jsxs(
171
- "div",
172
- {
173
- className: "relative rounded-lg border border-[var(--border)] bg-[var(--content-background)] text-[var(--content-foreground)] shadow-sm",
174
- style: { backfaceVisibility: "hidden" },
175
- "data-side": "front",
176
- children: [
177
- children,
178
- /* @__PURE__ */ jsx(FlipButton, { label: showLabel, icon: frontIcon })
179
- ]
180
- }
181
- ),
182
- /* @__PURE__ */ jsxs(
183
- "div",
184
- {
185
- className: "absolute inset-0 overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--content-background)] text-[var(--content-foreground)] shadow-sm",
186
- style: {
187
- backfaceVisibility: "hidden",
188
- transform: "rotateY(180deg)"
189
- },
190
- "data-side": "back",
191
- children: [
192
- backContent,
193
- /* @__PURE__ */ jsx(FlipButton, { label: hideLabel, icon: backIcon })
194
- ]
195
- }
196
- )
197
- ]
198
- }
199
- )
200
- }
201
- );
202
- }
203
- );
204
- Card.displayName = "Card";
205
- var CardHeader = forwardRef(
206
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
207
- "header",
208
- {
209
- ref,
210
- className: cn("flex flex-col space-y-1.5 p-6", className),
211
- ...props,
212
- children
213
- }
214
- )
215
- );
216
- CardHeader.displayName = "CardHeader";
217
- var CardTitle = forwardRef(
218
- ({ className, as: Comp = "h3", children, ...props }, ref) => /* @__PURE__ */ jsx(
219
- Comp,
220
- {
221
- ref,
222
- className: cn("text-2xl font-semibold leading-none tracking-tight", className),
223
- ...props,
224
- children
225
- }
226
- )
227
- );
228
- CardTitle.displayName = "CardTitle";
229
- var CardDescription = forwardRef(
230
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
231
- "p",
232
- {
233
- ref,
234
- className: cn("text-sm text-[var(--content-foreground-muted)]", className),
235
- ...props,
236
- children
237
- }
238
- )
239
- );
240
- CardDescription.displayName = "CardDescription";
241
- var CardContent = forwardRef(
242
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("p-6 pt-0", className), ...props, children })
243
- );
244
- CardContent.displayName = "CardContent";
245
- var CardFooter = forwardRef(
246
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
247
- "footer",
248
- {
249
- ref,
250
- className: cn("flex items-center p-6 pt-0", className),
251
- ...props,
252
- children
253
- }
254
- )
255
- );
256
- CardFooter.displayName = "CardFooter";
257
- var CardAction = forwardRef(
258
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
259
- "div",
260
- {
261
- ref,
262
- className: cn("ml-auto", className),
263
- ...props,
264
- children
265
- }
266
- )
267
- );
268
- CardAction.displayName = "CardAction";
269
-
270
- export { Card, CardAction, CardActionPropsSchema, CardContent, CardContentPropsSchema, CardDescription, CardDescriptionPropsSchema, CardFooter, CardFooterPropsSchema, CardHeader, CardHeaderPropsSchema, CardPropsSchema, CardTitle, CardTitlePropsSchema, FlipButtonIconSchema, FlipButtonLabelSchema, FlipButtonPositionSchema, flipButtonPositionVariants };
271
- //# sourceMappingURL=chunk-KPRRBSG6.mjs.map
272
- //# sourceMappingURL=chunk-KPRRBSG6.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/elements/Card/Card.types.ts","../src/elements/Card/Card.tsx"],"names":[],"mappings":"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","file":"chunk-KPRRBSG6.mjs","sourcesContent":["import { z } from 'zod';\nimport { cva } from 'class-variance-authority';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\nimport type { ReactNode } from 'react';\n\n/**\n * Flip button position variants\n * Controls where the flip button appears on the card\n *\n * @see card-prd.md US-5 (Flip Button Position)\n */\nexport const FlipButtonPositionSchema = z.enum([\n 'top-right',\n 'top-left',\n 'bottom-right',\n 'bottom-left',\n]);\nexport type FlipButtonPosition = z.infer<typeof FlipButtonPositionSchema>;\n\n/**\n * Flip button label configuration\n * Custom labels for the flip button title attribute\n *\n * @see card-prd.md US-6 (Custom Labels)\n */\nexport const FlipButtonLabelSchema = z.object({\n show: z.string().optional(),\n hide: z.string().optional(),\n});\nexport type FlipButtonLabel = z.infer<typeof FlipButtonLabelSchema>;\n\n/**\n * Flip button icon configuration\n * Custom icons for the front and back flip buttons\n */\nexport const FlipButtonIconSchema = z.object({\n /** Icon to show on front side button (default: RotateCcw) */\n front: z.custom<ReactNode>().optional(),\n /** Icon to show on back side button (default: same as front or RotateCcw) */\n back: z.custom<ReactNode>().optional(),\n});\nexport type FlipButtonIcon = z.infer<typeof FlipButtonIconSchema>;\n\n/**\n * Card root component props schema\n *\n * @see card-prd.md US-1 (Basic Card Container)\n * @see card-prd.md US-2 (Flippable Card)\n * @see card-prd.md US-3 (Controlled/Uncontrolled State)\n */\nexport const CardPropsSchema = BaseComponentPropsSchema.extend({\n // Flip functionality\n /** Enable flip animation feature */\n flippable: z.boolean().optional().default(false),\n\n /** Content to display on the back side of the card */\n backContent: z.custom<ReactNode>().optional(),\n\n /** Controlled mode: current flip state */\n isFlipped: z.boolean().optional(),\n\n /** Uncontrolled mode: initial flip state */\n defaultFlipped: z.boolean().optional().default(false),\n\n /** Callback fired when flip state changes */\n onFlipChange: z.custom<(isFlipped: boolean) => void>().optional(),\n\n // Flip button configuration\n /** Position of the flip button on the card */\n flipButtonPosition: FlipButtonPositionSchema.optional().default('top-right'),\n\n /** Custom labels for the flip button title attribute */\n flipButtonLabel: FlipButtonLabelSchema.optional(),\n\n /** Custom icons for the flip button (default: RotateCcw) */\n flipButtonIcon: FlipButtonIconSchema.optional(),\n\n /** Duration of flip animation in milliseconds */\n flipDuration: z.number().optional().default(600),\n});\n\nexport type CardProps = z.infer<typeof CardPropsSchema>;\n\n/**\n * CardHeader props schema\n *\n * @see card-prd.md US-1 (Basic Card Container)\n */\nexport const CardHeaderPropsSchema = BaseComponentPropsSchema.extend({\n children: z.custom<ReactNode>(),\n});\n\nexport type CardHeaderProps = z.infer<typeof CardHeaderPropsSchema>;\n\n/**\n * CardTitle props schema\n *\n * @see card-prd.md US-1 (Basic Card Container)\n */\nexport const CardTitlePropsSchema = BaseComponentPropsSchema.extend({\n /** Heading level (h1-h6) - defaults to h3 */\n as: z.enum(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']).optional().default('h3'),\n\n children: z.custom<ReactNode>(),\n});\n\nexport type CardTitleProps = z.infer<typeof CardTitlePropsSchema>;\n\n/**\n * CardDescription props schema\n *\n * @see card-prd.md US-1 (Basic Card Container)\n */\nexport const CardDescriptionPropsSchema = BaseComponentPropsSchema.extend({\n children: z.custom<ReactNode>(),\n});\n\nexport type CardDescriptionProps = z.infer<typeof CardDescriptionPropsSchema>;\n\n/**\n * CardContent props schema\n *\n * @see card-prd.md US-1 (Basic Card Container)\n */\nexport const CardContentPropsSchema = BaseComponentPropsSchema.extend({\n children: z.custom<ReactNode>(),\n});\n\nexport type CardContentProps = z.infer<typeof CardContentPropsSchema>;\n\n/**\n * CardFooter props schema\n *\n * @see card-prd.md US-1 (Basic Card Container)\n */\nexport const CardFooterPropsSchema = BaseComponentPropsSchema.extend({\n children: z.custom<ReactNode>(),\n});\n\nexport type CardFooterProps = z.infer<typeof CardFooterPropsSchema>;\n\n/**\n * CardAction props schema\n *\n * @see card-prd.md US-1 (Basic Card Container)\n */\nexport const CardActionPropsSchema = BaseComponentPropsSchema.extend({\n children: z.custom<ReactNode>(),\n});\n\nexport type CardActionProps = z.infer<typeof CardActionPropsSchema>;\n\n/**\n * CVA variants for flip button positioning\n *\n * Provides consistent positioning classes for the flip button\n * based on the flipButtonPosition prop.\n *\n * Buttons are rendered INSIDE both front and back sides so they\n * flip along with the card content for a more natural feel.\n *\n * @see card-prd.md US-5 (Flip Button Position)\n */\nexport const flipButtonPositionVariants = cva(\n [\n 'absolute z-10 min-h-[44px] min-w-[44px] p-2',\n 'flex items-center justify-center',\n 'rounded-full bg-[var(--accent-background)]',\n 'text-[var(--primary-action)] hover:text-[var(--primary-action-hover)]',\n 'transition-colors duration-200',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)]',\n ],\n {\n variants: {\n position: {\n 'top-right': 'top-2 right-2',\n 'top-left': 'top-2 left-2',\n 'bottom-right': 'bottom-2 right-2',\n 'bottom-left': 'bottom-2 left-2',\n },\n },\n defaultVariants: {\n position: 'top-right',\n },\n }\n);\n","/**\n * Card Component (TDD Stub)\n *\n * This is a minimal stub to allow tests to run during the RED phase.\n * Full implementation will be added in the GREEN phase.\n *\n * @see card-prd.md (Product Requirements)\n * @see plan.md (Implementation Plan)\n */\n\nimport { forwardRef, useState, useCallback, type HTMLAttributes, type ReactNode } from 'react';\nimport { RotateCcw } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { Button } from '../Button';\nimport {\n flipButtonPositionVariants,\n type CardProps,\n type CardHeaderProps,\n type CardTitleProps,\n type CardDescriptionProps,\n type CardContentProps,\n type CardFooterProps,\n type CardActionProps,\n} from './Card.types';\n\n// ============================================================================\n// Card (Root Component)\n// ============================================================================\n\nexport const Card = forwardRef<HTMLElement, CardProps & HTMLAttributes<HTMLElement>>(\n (props, ref) => {\n const {\n children,\n className,\n flippable = false,\n backContent,\n isFlipped: controlledFlipped,\n defaultFlipped = false,\n onFlipChange,\n flipButtonPosition = 'top-right',\n flipButtonLabel,\n flipButtonIcon,\n flipDuration = 600,\n ...rest\n } = props;\n\n // Controlled/uncontrolled state\n const [internalFlipped, setInternalFlipped] = useState(defaultFlipped);\n const isControlled = controlledFlipped !== undefined;\n const flipped = isControlled ? controlledFlipped : internalFlipped;\n\n const handleFlip = useCallback(() => {\n const newState = !flipped;\n if (!isControlled) {\n setInternalFlipped(newState);\n }\n onFlipChange?.(newState);\n }, [flipped, isControlled, onFlipChange]);\n\n // Non-flippable card\n if (!flippable) {\n return (\n <article\n ref={ref}\n className={cn(\n 'rounded-lg border border-[var(--border)] bg-[var(--content-background)] text-[var(--content-foreground)] shadow-sm',\n className\n )}\n {...rest}\n >\n {children}\n </article>\n );\n }\n\n // Flippable card\n const showLabel = flipButtonLabel?.show ?? 'Show more details';\n const hideLabel = flipButtonLabel?.hide ?? 'Show less details';\n\n // Default icon\n const defaultIcon = <RotateCcw className=\"h-5 w-5\" aria-hidden=\"true\" />;\n // Custom icons (back defaults to front if not specified)\n const frontIcon = flipButtonIcon?.front ?? defaultIcon;\n const backIcon = flipButtonIcon?.back ?? flipButtonIcon?.front ?? defaultIcon;\n\n // Flip button component - rendered on both front and back\n const FlipButton = ({ label, icon }: { label: string; icon: ReactNode }) => (\n <Button\n variant=\"ghost\"\n visualSize=\"icon\"\n aria-hidden=\"true\"\n excludeFromTabOrder\n onPress={handleFlip}\n className={flipButtonPositionVariants({ position: flipButtonPosition })}\n aria-label={label}\n >\n {icon}\n </Button>\n );\n\n return (\n <article\n ref={ref}\n className={cn('relative', className)}\n style={{ perspective: '1000px' }}\n {...rest}\n >\n {/* Flipper container - handles 3D transform */}\n <div\n className={cn(\n 'relative transition-transform',\n 'motion-reduce:transition-none'\n )}\n style={{\n transformStyle: 'preserve-3d',\n transitionDuration: `${flipDuration}ms`,\n transform: flipped ? 'rotateY(180deg)' : 'rotateY(0deg)',\n }}\n data-flipped={flipped}\n >\n {/* Front side */}\n <div\n className=\"relative rounded-lg border border-[var(--border)] bg-[var(--content-background)] text-[var(--content-foreground)] shadow-sm\"\n style={{ backfaceVisibility: 'hidden' }}\n data-side=\"front\"\n >\n {children}\n <FlipButton label={showLabel} icon={frontIcon} />\n </div>\n\n {/* Back side - scrollable if content overflows */}\n <div\n className=\"absolute inset-0 overflow-y-auto rounded-lg border border-[var(--border)] bg-[var(--content-background)] text-[var(--content-foreground)] shadow-sm\"\n style={{\n backfaceVisibility: 'hidden',\n transform: 'rotateY(180deg)',\n }}\n data-side=\"back\"\n >\n {backContent}\n <FlipButton label={hideLabel} icon={backIcon} />\n </div>\n </div>\n </article>\n );\n }\n);\n\nCard.displayName = 'Card';\n\n// ============================================================================\n// CardHeader\n// ============================================================================\n\nexport const CardHeader = forwardRef<HTMLElement, CardHeaderProps & HTMLAttributes<HTMLElement>>(\n ({ className, children, ...props }, ref) => (\n <header\n ref={ref}\n className={cn('flex flex-col space-y-1.5 p-6', className)}\n {...props}\n >\n {children}\n </header>\n )\n);\n\nCardHeader.displayName = 'CardHeader';\n\n// ============================================================================\n// CardTitle\n// ============================================================================\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, CardTitleProps & HTMLAttributes<HTMLHeadingElement>>(\n ({ className, as: Comp = 'h3', children, ...props }, ref) => (\n <Comp\n ref={ref}\n className={cn('text-2xl font-semibold leading-none tracking-tight', className)}\n {...props}\n >\n {children}\n </Comp>\n )\n);\n\nCardTitle.displayName = 'CardTitle';\n\n// ============================================================================\n// CardDescription\n// ============================================================================\n\nexport const CardDescription = forwardRef<HTMLParagraphElement, CardDescriptionProps & HTMLAttributes<HTMLParagraphElement>>(\n ({ className, children, ...props }, ref) => (\n <p\n ref={ref}\n className={cn('text-sm text-[var(--content-foreground-muted)]', className)}\n {...props}\n >\n {children}\n </p>\n )\n);\n\nCardDescription.displayName = 'CardDescription';\n\n// ============================================================================\n// CardContent\n// ============================================================================\n\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps & HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props}>\n {children}\n </div>\n )\n);\n\nCardContent.displayName = 'CardContent';\n\n// ============================================================================\n// CardFooter\n// ============================================================================\n\nexport const CardFooter = forwardRef<HTMLElement, CardFooterProps & HTMLAttributes<HTMLElement>>(\n ({ className, children, ...props }, ref) => (\n <footer\n ref={ref}\n className={cn('flex items-center p-6 pt-0', className)}\n {...props}\n >\n {children}\n </footer>\n )\n);\n\nCardFooter.displayName = 'CardFooter';\n\n// ============================================================================\n// CardAction\n// ============================================================================\n\nexport const CardAction = forwardRef<HTMLDivElement, CardActionProps & HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('ml-auto', className)}\n {...props}\n >\n {children}\n </div>\n )\n);\n\nCardAction.displayName = 'CardAction';\n"]}
@@ -1,57 +0,0 @@
1
- import { cn } from './chunk-E2KQFV3O.mjs';
2
- import { BaseComponentPropsSchema } from './chunk-5SVLJN2C.mjs';
3
- import { memo, forwardRef } from 'react';
4
- import { cva } from 'class-variance-authority';
5
- import { jsx } from 'react/jsx-runtime';
6
- import { z } from 'zod';
7
-
8
- var skeletonVariants = cva(
9
- // Base styles - pulse animation and theme-aware background
10
- "animate-pulse bg-[var(--accent-background)] relative",
11
- {
12
- variants: {
13
- // Shape variants
14
- variant: {
15
- rectangle: "rounded-md",
16
- // Default: 0.375rem border radius
17
- circle: "rounded-full",
18
- // Circular shape (for avatars, icons)
19
- text: "rounded-sm h-4"
20
- // Text line placeholder (1rem height, 0.125rem radius)
21
- }
22
- },
23
- defaultVariants: {
24
- variant: "rectangle"
25
- }
26
- }
27
- );
28
- var Skeleton = memo(
29
- forwardRef(
30
- ({ className, variant, ...props }, ref) => {
31
- return /* @__PURE__ */ jsx(
32
- "div",
33
- {
34
- ref,
35
- role: "status",
36
- "aria-live": "polite",
37
- "aria-busy": "true",
38
- className: cn(skeletonVariants({ variant }), className),
39
- ...props,
40
- children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading..." })
41
- }
42
- );
43
- }
44
- )
45
- );
46
- Skeleton.displayName = "Skeleton";
47
- var SkeletonPropsSchema = BaseComponentPropsSchema.extend({
48
- // Variants - shape of the skeleton placeholder
49
- variant: z.enum(["rectangle", "circle", "text"]).optional().default("rectangle"),
50
- // Custom className for width/height overrides
51
- // Users can pass className="w-20 h-20" for custom sizing
52
- className: z.string().optional()
53
- });
54
-
55
- export { Skeleton, SkeletonPropsSchema, skeletonVariants };
56
- //# sourceMappingURL=chunk-NFSBGRDB.mjs.map
57
- //# sourceMappingURL=chunk-NFSBGRDB.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/elements/Skeleton/Skeleton.tsx","../src/elements/Skeleton/Skeleton.types.ts"],"names":[],"mappings":";;;;;;;AAoBA,IAAM,gBAAA,GAAmB,GAAA;AAAA;AAAA,EAEvB,sDAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA;AAAA,MAER,OAAA,EAAS;AAAA,QACP,SAAA,EAAW,YAAA;AAAA;AAAA,QACX,MAAA,EAAQ,cAAA;AAAA;AAAA,QACR,IAAA,EAAM;AAAA;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ;AAeA,IAAM,QAAA,GAAW,IAAA;AAAA,EACf,UAAA;AAAA,IACE,CAAC,EAAE,SAAA,EAAW,SAAS,GAAG,KAAA,IAAS,GAAA,KAAQ;AACzC,MAAA,uBACE,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAK,QAAA;AAAA,UACL,WAAA,EAAU,QAAA;AAAA,UACV,WAAA,EAAU,MAAA;AAAA,UACV,WAAW,EAAA,CAAG,gBAAA,CAAiB,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,UACrD,GAAG,KAAA;AAAA,UAGJ,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,YAAA,EAAU;AAAA;AAAA,OACtC;AAAA,IAEJ;AAAA;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AC5DhB,IAAM,mBAAA,GAAsB,yBAAyB,MAAA,CAAO;AAAA;AAAA,EAEjE,OAAA,EAAS,CAAA,CACN,IAAA,CAAK,CAAC,WAAA,EAAa,QAAA,EAAU,MAAM,CAAC,CAAA,CACpC,QAAA,EAAS,CACT,OAAA,CAAQ,WAAW,CAAA;AAAA;AAAA;AAAA,EAItB,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACxB,CAAC","file":"chunk-NFSBGRDB.mjs","sourcesContent":["\"use client\";\n\n/**\n * Skeleton Component\n * Loading placeholder with pulse animation and theme-aware styling\n *\n * @see ShadCN Skeleton: https://ui.shadcn.com/docs/components/skeleton\n * @see spec.md FR-009 (WCAG 2.2 AAA - 7:1 contrast ratio)\n * @see tasks.md Phase 2 (Green Phase - Implementation)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\nimport { forwardRef, memo, type HTMLAttributes } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\n\n/**\n * Skeleton variant styles using CVA\n * @see tasks.md Phase 2.2 (CVA Variant Definitions)\n */\nconst skeletonVariants = cva(\n // Base styles - pulse animation and theme-aware background\n \"animate-pulse bg-[var(--accent-background)] relative\",\n {\n variants: {\n // Shape variants\n variant: {\n rectangle: \"rounded-md\", // Default: 0.375rem border radius\n circle: \"rounded-full\", // Circular shape (for avatars, icons)\n text: \"rounded-sm h-4\", // Text line placeholder (1rem height, 0.125rem radius)\n },\n },\n defaultVariants: {\n variant: \"rectangle\",\n },\n }\n);\n\nexport interface SkeletonProps\n extends HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof skeletonVariants> {\n variant?: 'rectangle' | 'circle' | 'text';\n className?: string;\n}\n\n/**\n * Skeleton Component\n * Non-interactive loading placeholder with pulse animation\n *\n * @see tasks.md Phase 2.4 (Component Implementation)\n */\nconst Skeleton = memo(\n forwardRef<HTMLDivElement, SkeletonProps>(\n ({ className, variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n className={cn(skeletonVariants({ variant }), className)}\n {...props}\n >\n {/* Screen reader text for accessibility */}\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n }\n )\n);\n\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton, skeletonVariants };\n","import { z } from 'zod';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\n\n/**\n * Skeleton props schema extending BaseComponentProps\n *\n * @see ShadCN Skeleton: https://ui.shadcn.com/docs/components/skeleton\n * @see tasks.md Phase 1.1 (Type System)\n * @see spec.md FR-009 (WCAG 2.2 AAA - 7:1 contrast ratio)\n * @see constitution.md Principle IV (Accessibility First)\n */\nexport const SkeletonPropsSchema = BaseComponentPropsSchema.extend({\n // Variants - shape of the skeleton placeholder\n variant: z\n .enum(['rectangle', 'circle', 'text'])\n .optional()\n .default('rectangle'),\n\n // Custom className for width/height overrides\n // Users can pass className=\"w-20 h-20\" for custom sizing\n className: z.string().optional(),\n});\n\nexport type SkeletonProps = z.infer<typeof SkeletonPropsSchema>;\n\n/**\n * CVA variant configuration type\n * Used for class-variance-authority integration\n */\nexport type SkeletonVariant = z.infer<typeof SkeletonPropsSchema>['variant'];\n"]}
@@ -1,219 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkB5Q4UPL6_js = require('./chunk-B5Q4UPL6.js');
4
- var chunkVIREG536_js = require('./chunk-VIREG536.js');
5
- var chunkT4COXKQ3_js = require('./chunk-T4COXKQ3.js');
6
- var react = require('react');
7
- var reactAriaComponents = require('react-aria-components');
8
- var classVarianceAuthority = require('class-variance-authority');
9
- var jsxRuntime = require('react/jsx-runtime');
10
- var zod = require('zod');
11
-
12
- var badgeOuterVariants = classVarianceAuthority.cva(
13
- [
14
- "relative inline-flex items-center justify-center",
15
- "min-h-[44px] min-w-[44px]",
16
- "focus-visible:outline-none",
17
- "focus-visible:ring-2",
18
- "focus-visible:ring-[var(--ring)]",
19
- "focus-visible:ring-offset-2",
20
- "focus-visible:ring-offset-[var(--page-background)]",
21
- "disabled:pointer-events-none",
22
- "disabled:opacity-50"
23
- ],
24
- {
25
- variants: {},
26
- defaultVariants: {}
27
- }
28
- );
29
- var badgeVisualVariants = classVarianceAuthority.cva(
30
- [
31
- "inline-flex items-center justify-center",
32
- "gap-1",
33
- "rounded-full",
34
- "font-medium",
35
- "whitespace-nowrap",
36
- "transition-colors"
37
- ],
38
- {
39
- variants: {
40
- variant: {
41
- primary: [
42
- "bg-[var(--primary-action)]",
43
- "text-[var(--primary-action-foreground)]",
44
- "hover:bg-[var(--primary-action)]/90",
45
- "data-[pressed]:bg-[var(--primary-action)]/80"
46
- ],
47
- accent: [
48
- "bg-[var(--accent-background)]",
49
- "text-[var(--accent-foreground)]",
50
- "hover:bg-[var(--accent-background)]/90",
51
- "data-[pressed]:bg-[var(--accent-background)]/80"
52
- ],
53
- destructive: [
54
- "bg-[var(--destructive-background)]",
55
- "text-[var(--destructive-foreground)]",
56
- "hover:bg-[var(--destructive-background)]/90",
57
- "data-[pressed]:bg-[var(--destructive-background)]/80"
58
- ],
59
- content: [
60
- "bg-[var(--accent-background)]",
61
- "text-[var(--accent-foreground)]",
62
- "hover:bg-[var(--accent-background)]/90",
63
- "data-[pressed]:bg-[var(--accent-background)]/80"
64
- ]
65
- },
66
- size: {
67
- sm: "h-5 px-2 text-xs",
68
- default: "h-6 px-2.5 text-xs",
69
- lg: "h-7 px-3 text-sm"
70
- }
71
- },
72
- defaultVariants: {
73
- variant: "primary",
74
- size: "default"
75
- }
76
- }
77
- );
78
- var badgeVariants = badgeVisualVariants;
79
- var iconSizeClasses = {
80
- sm: "[&_svg]:h-2.5 [&_svg]:w-2.5",
81
- // 10px icons for 20px badge
82
- default: "[&_svg]:h-3 [&_svg]:w-3",
83
- // 12px icons for 24px badge
84
- lg: "[&_svg]:h-3.5 [&_svg]:w-3.5"
85
- // 14px icons for 28px badge
86
- };
87
- var Badge = react.memo(
88
- react.forwardRef(
89
- ({
90
- className,
91
- variant = "primary",
92
- size = "default",
93
- children,
94
- icon,
95
- iconPosition = "start",
96
- count,
97
- onPress,
98
- isDisabled,
99
- id,
100
- "aria-label": ariaLabel,
101
- "aria-labelledby": ariaLabelledby,
102
- "aria-describedby": ariaDescribedby,
103
- "data-testid": dataTestId,
104
- ...props
105
- }, ref) => {
106
- const visualClasses = chunkVIREG536_js.cn(
107
- badgeVisualVariants({ variant, size }),
108
- iconSizeClasses[size],
109
- className
110
- );
111
- const hasIcon = !!icon;
112
- const hasCount = count !== void 0;
113
- const hasChildren = !!children;
114
- const multipleElements = [hasIcon, hasCount, hasChildren].filter(Boolean).length > 1;
115
- const renderContent = () => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
116
- icon && iconPosition === "start" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", "aria-hidden": "true", children: icon }),
117
- children && (multipleElements ? /* @__PURE__ */ jsxRuntime.jsx("span", { children }) : children),
118
- count !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono tabular-nums", children: count }),
119
- icon && iconPosition === "end" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", "aria-hidden": "true", children: icon })
120
- ] });
121
- if (onPress) {
122
- return /* @__PURE__ */ jsxRuntime.jsx(
123
- reactAriaComponents.Button,
124
- {
125
- ref,
126
- isDisabled,
127
- onPress,
128
- className: badgeOuterVariants(),
129
- id,
130
- "aria-label": ariaLabel,
131
- "aria-labelledby": ariaLabelledby,
132
- "aria-describedby": ariaDescribedby,
133
- "data-testid": dataTestId,
134
- ...props,
135
- children: (renderProps) => /* @__PURE__ */ jsxRuntime.jsx(
136
- "span",
137
- {
138
- className: chunkVIREG536_js.cn(
139
- visualClasses,
140
- // Interaction styles for visual feedback
141
- chunkB5Q4UPL6_js.PRESSED_STYLES,
142
- chunkB5Q4UPL6_js.HOVER_STYLES,
143
- chunkB5Q4UPL6_js.HIGH_CONTRAST_HOVER,
144
- chunkB5Q4UPL6_js.HIGH_CONTRAST_PRESSED
145
- ),
146
- "data-pressed": renderProps.isPressed || void 0,
147
- children: renderContent()
148
- }
149
- )
150
- }
151
- );
152
- }
153
- return /* @__PURE__ */ jsxRuntime.jsx(
154
- "span",
155
- {
156
- ref,
157
- className: visualClasses,
158
- id,
159
- "aria-label": ariaLabel,
160
- "aria-labelledby": ariaLabelledby,
161
- "aria-describedby": ariaDescribedby,
162
- "data-testid": dataTestId,
163
- ...props,
164
- children: renderContent()
165
- }
166
- );
167
- }
168
- )
169
- );
170
- Badge.displayName = "Badge";
171
- var BadgeVariantSchema = zod.z.enum([
172
- "primary",
173
- // Default brand color for general labels
174
- "accent",
175
- // Highlighted/featured content
176
- "destructive",
177
- // Errors, warnings, critical states
178
- "content"
179
- // Neutral/informational content
180
- ]);
181
- var BadgeSizeSchema = zod.z.enum([
182
- "sm",
183
- // 20px height
184
- "default",
185
- // 24px height
186
- "lg"
187
- // 28px height
188
- ]);
189
- var BadgeIconPositionSchema = zod.z.enum([
190
- "start",
191
- // Icon before text (default)
192
- "end"
193
- // Icon after text (useful for dismiss/close)
194
- ]);
195
- var BadgePropsSchema = chunkT4COXKQ3_js.BaseComponentPropsSchema.extend({
196
- // Content - override children to be string only for badges
197
- children: zod.z.string().optional(),
198
- icon: zod.z.custom().optional(),
199
- iconPosition: BadgeIconPositionSchema.optional().default("start"),
200
- count: zod.z.union([zod.z.number(), zod.z.string()]).optional(),
201
- // Variants
202
- variant: BadgeVariantSchema.optional().default("primary"),
203
- size: BadgeSizeSchema.optional().default("default"),
204
- // Interaction - makes badge actionable when provided
205
- onPress: zod.z.function().optional(),
206
- // React Aria PressEvent handler
207
- isDisabled: zod.z.boolean().optional()
208
- });
209
-
210
- exports.Badge = Badge;
211
- exports.BadgeIconPositionSchema = BadgeIconPositionSchema;
212
- exports.BadgePropsSchema = BadgePropsSchema;
213
- exports.BadgeSizeSchema = BadgeSizeSchema;
214
- exports.BadgeVariantSchema = BadgeVariantSchema;
215
- exports.badgeOuterVariants = badgeOuterVariants;
216
- exports.badgeVariants = badgeVariants;
217
- exports.badgeVisualVariants = badgeVisualVariants;
218
- //# sourceMappingURL=chunk-NGJVCFTM.js.map
219
- //# sourceMappingURL=chunk-NGJVCFTM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/elements/Badge/Badge.tsx","../src/elements/Badge/Badge.types.ts"],"names":["cva","memo","forwardRef","cn","jsxs","Fragment","jsx","AriaButton","PRESSED_STYLES","HOVER_STYLES","HIGH_CONTRAST_HOVER","HIGH_CONTRAST_PRESSED","z","BaseComponentPropsSchema"],"mappings":"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","file":"chunk-NGJVCFTM.js","sourcesContent":["\"use client\";\n\n/**\n * Badge Component - 2-Layer Architecture for Actionable Badges\n * Accessible badge with React Aria primitives and CVA styling\n *\n * Architecture:\n * - Static badges: Single span element\n * - Actionable badges (with onPress):\n * - Layer 1: Touch Target (44x44px WCAG AAA compliant, transparent)\n * - Layer 2: Visual Badge (compact size, colors)\n *\n * @see plan.md for architecture details\n * @see badge-prd.md for requirements\n * @see constitution.md Principle IV (Accessibility First)\n */\n\nimport { forwardRef, memo, type ReactElement } from 'react';\nimport {\n Button as AriaButton,\n type ButtonProps as AriaButtonProps,\n} from 'react-aria-components';\nimport { cva } from 'class-variance-authority';\nimport { cn } from '../../utils/cn';\nimport {\n PRESSED_STYLES,\n HOVER_STYLES,\n HIGH_CONTRAST_HOVER,\n HIGH_CONTRAST_PRESSED,\n} from '../../styles/interaction-states';\nimport type { BadgeProps } from './Badge.types';\n\n/**\n * Layer 1: Transparent outer touch target (44x44px minimum)\n * Only used for actionable badges (with onPress)\n * Handles WCAG 2.2 AAA touch target requirement\n * IMPORTANT: Focus ring stays on Layer 1 for AAA compliance (2.4.13)\n */\nexport const badgeOuterVariants = cva(\n [\n 'relative inline-flex items-center justify-center',\n 'min-h-[44px] min-w-[44px]',\n 'focus-visible:outline-none',\n 'focus-visible:ring-2',\n 'focus-visible:ring-[var(--ring)]',\n 'focus-visible:ring-offset-2',\n 'focus-visible:ring-offset-[var(--page-background)]',\n 'disabled:pointer-events-none',\n 'disabled:opacity-50',\n ],\n {\n variants: {},\n defaultVariants: {},\n }\n);\n\n/**\n * Layer 2: Visual Badge appearance\n * Used for all badges (both static and actionable)\n * Provides the visual appearance with configurable size and variant\n * NOTE: NO focus-visible styles here - focus ring is on Layer 1\n */\nexport const badgeVisualVariants = cva(\n [\n 'inline-flex items-center justify-center',\n 'gap-1',\n 'rounded-full',\n 'font-medium',\n 'whitespace-nowrap',\n 'transition-colors',\n ],\n {\n variants: {\n variant: {\n primary: [\n 'bg-[var(--primary-action)]',\n 'text-[var(--primary-action-foreground)]',\n 'hover:bg-[var(--primary-action)]/90',\n 'data-[pressed]:bg-[var(--primary-action)]/80',\n ],\n accent: [\n 'bg-[var(--accent-background)]',\n 'text-[var(--accent-foreground)]',\n 'hover:bg-[var(--accent-background)]/90',\n 'data-[pressed]:bg-[var(--accent-background)]/80',\n ],\n destructive: [\n 'bg-[var(--destructive-background)]',\n 'text-[var(--destructive-foreground)]',\n 'hover:bg-[var(--destructive-background)]/90',\n 'data-[pressed]:bg-[var(--destructive-background)]/80',\n ],\n content: [\n 'bg-[var(--accent-background)]',\n 'text-[var(--accent-foreground)]',\n 'hover:bg-[var(--accent-background)]/90',\n 'data-[pressed]:bg-[var(--accent-background)]/80',\n ],\n },\n size: {\n sm: 'h-5 px-2 text-xs',\n default: 'h-6 px-2.5 text-xs',\n lg: 'h-7 px-3 text-sm',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'default',\n },\n }\n);\n\n/**\n * @deprecated Use badgeVisualVariants instead. This alias is kept for backward compatibility.\n */\nexport const badgeVariants = badgeVisualVariants;\n\n// Icon size classes mapped to badge sizes\n// Sizes are proportional to badge height: sm=20px, default=24px, lg=28px\nconst iconSizeClasses: Record<NonNullable<BadgeProps['size']>, string> = {\n sm: '[&_svg]:h-2.5 [&_svg]:w-2.5', // 10px icons for 20px badge\n default: '[&_svg]:h-3 [&_svg]:w-3', // 12px icons for 24px badge\n lg: '[&_svg]:h-3.5 [&_svg]:w-3.5', // 14px icons for 28px badge\n};\n\n/**\n * Badge Component - Accessible badge for labels, tags, and status indicators\n *\n * Features:\n * - WCAG 2.2 AAA compliant (7:1 contrast, 44x44px touch targets for actionable)\n * - 4 semantic variants (primary, accent, destructive, content)\n * - 3 sizes (sm, default, lg)\n * - Icon support with configurable position\n * - Count display (number or string)\n * - Static badges (span) vs actionable badges (button)\n */\nconst Badge = memo(\n forwardRef<HTMLButtonElement | HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant = 'primary',\n size = 'default',\n children,\n icon,\n iconPosition = 'start',\n count,\n onPress,\n isDisabled,\n id,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'data-testid': dataTestId,\n ...props\n },\n ref\n ): ReactElement => {\n // Visual classes for the badge appearance\n const visualClasses = cn(\n badgeVisualVariants({ variant, size }),\n iconSizeClasses[size],\n className\n );\n\n // Check if we have multiple content elements (need gap styling)\n const hasIcon = !!icon;\n const hasCount = count !== undefined;\n const hasChildren = !!children;\n const multipleElements =\n [hasIcon, hasCount, hasChildren].filter(Boolean).length > 1;\n\n // Content rendering: icon + children + count (all can display together)\n // Only wrap children in span when there are multiple elements (for gap)\n const renderContent = (): ReactElement => (\n <>\n {icon && iconPosition === 'start' && (\n <span className=\"shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n {children && (multipleElements ? <span>{children}</span> : children)}\n {count !== undefined && (\n <span className=\"font-mono tabular-nums\">{count}</span>\n )}\n {icon && iconPosition === 'end' && (\n <span className=\"shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n </>\n );\n\n // Actionable badge (with onPress) - uses 2-layer architecture\n if (onPress) {\n return (\n <AriaButton\n ref={ref as React.Ref<HTMLButtonElement>}\n isDisabled={isDisabled}\n onPress={onPress}\n className={badgeOuterVariants()}\n id={id}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-describedby={ariaDescribedby}\n data-testid={dataTestId}\n {...(props as Omit<AriaButtonProps, 'className'>)}\n >\n {(renderProps) => (\n <span\n className={cn(\n visualClasses,\n // Interaction styles for visual feedback\n PRESSED_STYLES,\n HOVER_STYLES,\n HIGH_CONTRAST_HOVER,\n HIGH_CONTRAST_PRESSED\n )}\n data-pressed={renderProps.isPressed || undefined}\n >\n {renderContent()}\n </span>\n )}\n </AriaButton>\n );\n }\n\n // Static badge - simple span element\n return (\n <span\n ref={ref as React.Ref<HTMLSpanElement>}\n className={visualClasses}\n id={id}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-describedby={ariaDescribedby}\n data-testid={dataTestId}\n {...props}\n >\n {renderContent()}\n </span>\n );\n }\n )\n);\n\nBadge.displayName = 'Badge';\n\nexport { Badge };\n","import { z } from 'zod';\nimport { type ReactNode } from 'react';\nimport { type PressEvent } from 'react-aria-components';\nimport { BaseComponentPropsSchema } from '../../schemas/BaseComponentProps';\n\n/**\n * Badge Component Types\n *\n * Defines the props schema and TypeScript types for the Badge component.\n * Extends BaseComponentPropsSchema for consistent accessibility and styling APIs.\n *\n * @see badge-prd.md for full requirements\n * @see WCAG 2.2 AAA compliance requirements\n */\n\n// Variant schema - semantic color variants\nexport const BadgeVariantSchema = z.enum([\n 'primary', // Default brand color for general labels\n 'accent', // Highlighted/featured content\n 'destructive', // Errors, warnings, critical states\n 'content', // Neutral/informational content\n]);\n\n// Size schema - visual size variants\nexport const BadgeSizeSchema = z.enum([\n 'sm', // 20px height\n 'default', // 24px height\n 'lg', // 28px height\n]);\n\n// Icon position schema\nexport const BadgeIconPositionSchema = z.enum([\n 'start', // Icon before text (default)\n 'end', // Icon after text (useful for dismiss/close)\n]);\n\n// Main props schema extending base component props\nexport const BadgePropsSchema = BaseComponentPropsSchema.extend({\n // Content - override children to be string only for badges\n children: z.string().optional(),\n icon: z.custom<ReactNode>().optional(),\n iconPosition: BadgeIconPositionSchema.optional().default('start'),\n count: z.union([z.number(), z.string()]).optional(),\n\n // Variants\n variant: BadgeVariantSchema.optional().default('primary'),\n size: BadgeSizeSchema.optional().default('default'),\n\n // Interaction - makes badge actionable when provided\n onPress: z.function().optional(), // React Aria PressEvent handler\n isDisabled: z.boolean().optional(),\n});\n\n// TypeScript types inferred from schemas\nexport type BadgeVariant = z.infer<typeof BadgeVariantSchema>;\nexport type BadgeSize = z.infer<typeof BadgeSizeSchema>;\nexport type BadgeIconPosition = z.infer<typeof BadgeIconPositionSchema>;\n\n// Base props from Zod schema (excluding onPress which needs proper typing)\ntype BadgePropsBase = Omit<z.infer<typeof BadgePropsSchema>, 'onPress'>;\n\n/**\n * Badge component props interface\n * Uses Zod schema inference for most props, but properly types onPress\n * to match React Aria's PressEvent handler signature\n */\nexport interface BadgeProps extends BadgePropsBase {\n /** Press handler - makes badge actionable when provided */\n onPress?: (e: PressEvent) => void;\n}\n"]}