@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,189 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkY3GT7ETK_js = require('./chunk-Y3GT7ETK.js');
4
- var chunkB5Q4UPL6_js = require('./chunk-B5Q4UPL6.js');
5
- var chunkVIREG536_js = require('./chunk-VIREG536.js');
6
- var react = require('react');
7
- var reactAriaComponents = require('react-aria-components');
8
- var classVarianceAuthority = require('class-variance-authority');
9
- var lucideReact = require('lucide-react');
10
- var jsxRuntime = require('react/jsx-runtime');
11
-
12
- var buttonOuterVariants = classVarianceAuthority.cva(
13
- "inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",
14
- {
15
- variants: {
16
- fullWidth: {
17
- true: "w-full",
18
- false: ""
19
- },
20
- inVerticalGroup: {
21
- true: "items-stretch",
22
- false: "items-center"
23
- }
24
- },
25
- defaultVariants: {
26
- fullWidth: false,
27
- inVerticalGroup: false
28
- }
29
- }
30
- );
31
- var buttonVisualVariants = classVarianceAuthority.cva(
32
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",
33
- {
34
- variants: {
35
- variant: {
36
- default: "bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] data-[pressed]:bg-[var(--primary-action)]/80",
37
- destructive: "bg-[var(--destructive-background)] text-[var(--destructive-foreground)] shadow-md hover:bg-[var(--destructive-background)]/90 data-[pressed]:bg-[var(--destructive-background)]/80",
38
- outline: "border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)] data-[pressed]:bg-[var(--input-border)]",
39
- secondary: "bg-[var(--secondary)] text-[var(--secondary-foreground)] shadow-md hover:bg-[var(--secondary)]/80 data-[pressed]:bg-[var(--secondary)]/70",
40
- ghost: "hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)] data-[pressed]:bg-[var(--accent)]",
41
- link: "text-[var(--text-link)] underline-offset-4 hover:underline data-[pressed]:text-[var(--text-link-hover)]"
42
- },
43
- fullWidth: {
44
- true: "w-full",
45
- false: ""
46
- },
47
- visualSize: {
48
- default: "h-10 px-4 py-2",
49
- sm: "h-9 rounded-md px-3 text-xs",
50
- lg: "h-11 rounded-md px-8",
51
- icon: "h-10 w-10",
52
- dot: "h-5 w-5 rounded-full p-0 min-h-0 min-w-0"
53
- },
54
- paywall: {
55
- true: "!bg-[var(--paywall)] !text-[var(--paywall-foreground)] !shadow-md hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",
56
- false: ""
57
- }
58
- },
59
- defaultVariants: {
60
- variant: "default",
61
- visualSize: "default",
62
- paywall: false
63
- }
64
- }
65
- );
66
- var buttonVariants = buttonVisualVariants;
67
- var Button = react.memo(react.forwardRef(
68
- ({
69
- className,
70
- buttonVisualClassName,
71
- variant,
72
- size,
73
- visualSize,
74
- fullWidth,
75
- loading = false,
76
- loadingText = "Loading...",
77
- shortcut,
78
- children,
79
- isDisabled,
80
- paywall = false,
81
- paywallRedirect,
82
- paywallDescription,
83
- onPress,
84
- ...props
85
- }, ref) => {
86
- const paywallDescriptionId = react.useId();
87
- const groupContext = chunkY3GT7ETK_js.useButtonGroupContext();
88
- const itemContext = chunkY3GT7ETK_js.useButtonGroupItemContext();
89
- const effectiveVariant = variant ?? groupContext?.variant ?? "default";
90
- const effectiveSize = size ?? groupContext?.size;
91
- const effectiveIsDisabled = isDisabled ?? groupContext?.isDisabled ?? false;
92
- const isInVerticalGroup = groupContext?.orientation === "vertical";
93
- const effectiveFullWidth = fullWidth || isInVerticalGroup;
94
- const positionClassName = itemContext ? chunkY3GT7ETK_js.buttonGroupItemVariants({
95
- orientation: groupContext?.orientation ?? "horizontal",
96
- position: itemContext.position
97
- }) : "";
98
- const effectiveVisualSize = visualSize ?? effectiveSize ?? "default";
99
- if (process.env.NODE_ENV !== "production") {
100
- if ((effectiveVisualSize === "dot" || effectiveVisualSize === "icon") && !props["aria-label"] && !children) {
101
- console.warn(
102
- '[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'
103
- );
104
- }
105
- }
106
- const handlePress = (e) => {
107
- if (paywall) {
108
- if (paywallRedirect) {
109
- window.open(paywallRedirect, "_blank", "noopener,noreferrer");
110
- }
111
- return;
112
- }
113
- onPress?.(e);
114
- };
115
- const computedIsDisabled = effectiveIsDisabled || loading || void 0;
116
- return /* @__PURE__ */ jsxRuntime.jsx(
117
- reactAriaComponents.Button,
118
- {
119
- ref,
120
- isDisabled: computedIsDisabled,
121
- "aria-disabled": paywall ? true : void 0,
122
- "aria-describedby": paywall ? paywallDescriptionId : void 0,
123
- onPress: handlePress,
124
- className: chunkVIREG536_js.cn(buttonOuterVariants({ fullWidth: effectiveFullWidth, inVerticalGroup: isInVerticalGroup }), className),
125
- ...props,
126
- children: (renderProps) => (
127
- /* Layer 2: Visual Button */
128
- /* @__PURE__ */ jsxRuntime.jsxs(
129
- "span",
130
- {
131
- className: chunkVIREG536_js.cn(
132
- buttonVisualVariants({
133
- variant: effectiveVariant,
134
- visualSize: effectiveVisualSize,
135
- paywall,
136
- fullWidth: effectiveFullWidth
137
- }),
138
- // Position styling from ButtonGroup context (border-radius adjustments)
139
- positionClassName,
140
- buttonVisualClassName,
141
- // Layer 2 interaction styles (no focus - focus ring is on Layer 1)
142
- chunkB5Q4UPL6_js.PRESSED_STYLES,
143
- chunkB5Q4UPL6_js.HOVER_STYLES,
144
- chunkB5Q4UPL6_js.HIGH_CONTRAST_HOVER,
145
- chunkB5Q4UPL6_js.HIGH_CONTRAST_PRESSED
146
- ),
147
- "data-pressed": renderProps.isPressed || void 0,
148
- children: [
149
- loading && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
150
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "motion-safe:animate-spin", "aria-hidden": "true" }),
151
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", "aria-live": "polite", children: loadingText })
152
- ] }),
153
- !loading && children,
154
- paywall && /* @__PURE__ */ jsxRuntime.jsx(
155
- lucideReact.Zap,
156
- {
157
- "data-testid": "zap-icon",
158
- "aria-hidden": "true",
159
- className: "ml-1"
160
- }
161
- ),
162
- paywall && /* @__PURE__ */ jsxRuntime.jsxs("span", { id: paywallDescriptionId, className: "sr-only", children: [
163
- "Premium feature: ",
164
- paywallDescription || "Upgrade required to access this feature"
165
- ] }),
166
- renderProps.isFocusVisible && shortcut && /* @__PURE__ */ jsxRuntime.jsx("kbd", { className: "ml-auto hidden text-xs opacity-60 lg:inline", children: shortcut }),
167
- renderProps.isPressed && /* @__PURE__ */ jsxRuntime.jsx(
168
- "span",
169
- {
170
- className: "absolute inset-0 rounded-[inherit] bg-current opacity-10 motion-safe:animate-in motion-safe:zoom-in-95",
171
- "aria-hidden": "true"
172
- }
173
- )
174
- ]
175
- }
176
- )
177
- )
178
- }
179
- );
180
- }
181
- ));
182
- Button.displayName = "Button";
183
-
184
- exports.Button = Button;
185
- exports.buttonOuterVariants = buttonOuterVariants;
186
- exports.buttonVariants = buttonVariants;
187
- exports.buttonVisualVariants = buttonVisualVariants;
188
- //# sourceMappingURL=chunk-3YOY2VJ6.js.map
189
- //# sourceMappingURL=chunk-3YOY2VJ6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/elements/Button/Button.tsx"],"names":["cva","memo","forwardRef","useId","useButtonGroupContext","useButtonGroupItemContext","buttonGroupItemVariants","jsx","AriaButton","cn","jsxs","PRESSED_STYLES","HOVER_STYLES","HIGH_CONTRAST_HOVER","HIGH_CONTRAST_PRESSED","Fragment","Loader2","Zap"],"mappings":"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","file":"chunk-3YOY2VJ6.js","sourcesContent":["\"use client\";\n\n/**\n * Button Component - 3-Layer Architecture\n * Accessible button with React Aria primitives and CVA styling\n *\n * Architecture:\n * - Layer 1: Touch Target (44x44px WCAG AAA compliant, transparent)\n * - Layer 2: Visual Button (configurable size, colors, borders)\n * - Layer 3: Content & Effects (text, icons, ripple, loading spinner)\n *\n * @see 3layer-plan.md for architecture details\n * @see spec.md FR-029 to FR-037 (Button Component Requirements)\n * @see spec.md FR-009 (WCAG 2.2 AAA - 7:1 contrast ratio)\n * @see spec.md FR-014 (44x44px minimum touch targets)\n * @see constitution.md Principle IV (Accessibility First)\n */\n\nimport { forwardRef, memo, useId, type ReactNode } from 'react';\nimport {\n Button as AriaButton,\n type ButtonProps as AriaButtonProps,\n} from 'react-aria-components';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Loader2, Zap } from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { PRESSED_STYLES, HOVER_STYLES, HIGH_CONTRAST_HOVER, HIGH_CONTRAST_PRESSED } from '../../styles/interaction-states';\nimport {\n useButtonGroupContext,\n useButtonGroupItemContext,\n} from '../ButtonGroup/ButtonGroupContext';\nimport { buttonGroupItemVariants } from '../ButtonGroup/ButtonGroup.variants';\n\n/**\n * Layer 1: Transparent outer touch target (44x44px minimum)\n * Handles WCAG 2.2 AAA touch target requirement\n * Always transparent, centers the visual button inside\n * IMPORTANT: Focus ring stays on Layer 1 for AAA compliance (2.4.13)\n *\n * In vertical ButtonGroups, uses items-stretch so the visual layer (Layer 2)\n * can fill the full touch target height, eliminating gaps between buttons.\n */\nconst buttonOuterVariants = cva(\n \"inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n fullWidth: {\n true: \"w-full\",\n false: \"\",\n },\n inVerticalGroup: {\n true: \"items-stretch\",\n false: \"items-center\",\n },\n },\n defaultVariants: {\n fullWidth: false,\n inVerticalGroup: false,\n },\n }\n);\n\n/**\n * Layer 2: Visual button appearance (adjustable size)\n * Provides the visual appearance with configurable size\n * Can be smaller than touch target for use cases like carousel dots\n * NOTE: NO focus-visible styles here - focus ring is on Layer 1\n */\nconst buttonVisualVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer\",\n {\n variants: {\n variant: {\n default:\n \"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] data-[pressed]:bg-[var(--primary-action)]/80\",\n destructive:\n \"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] shadow-md hover:bg-[var(--destructive-background)]/90 data-[pressed]:bg-[var(--destructive-background)]/80\",\n outline:\n \"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)] data-[pressed]:bg-[var(--input-border)]\",\n secondary:\n \"bg-[var(--secondary)] text-[var(--secondary-foreground)] shadow-md hover:bg-[var(--secondary)]/80 data-[pressed]:bg-[var(--secondary)]/70\",\n ghost:\n \"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)] data-[pressed]:bg-[var(--accent)]\",\n link: \"text-[var(--text-link)] underline-offset-4 hover:underline data-[pressed]:text-[var(--text-link-hover)]\",\n },\n fullWidth: {\n true: \"w-full\",\n false: \"\",\n },\n visualSize: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3 text-xs\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n dot: \"h-5 w-5 rounded-full p-0 min-h-0 min-w-0\",\n },\n paywall: {\n true: \"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] !shadow-md hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n visualSize: \"default\",\n paywall: false,\n },\n }\n);\n\n/**\n * @deprecated Use buttonVisualVariants instead. This alias is kept for backward compatibility.\n */\nconst buttonVariants = buttonVisualVariants;\n\nexport interface ButtonProps\n extends Omit<AriaButtonProps, 'className'>,\n VariantProps<typeof buttonVisualVariants> {\n as?: 'button' | 'a';\n loading?: boolean;\n loadingText?: string;\n shortcut?: string;\n className?: string;\n buttonVisualClassName?: string;\n children?: ReactNode;\n /** Enables paywall state - overrides variant styling and prevents normal action */\n paywall?: boolean;\n /** URL to open in new tab when paywalled button is clicked */\n paywallRedirect?: string;\n /** Description of the premium feature for tooltips and screen readers (max 200 chars) */\n paywallDescription?: string;\n /** Full width button */\n fullWidth?: boolean;\n /**\n * Visual size of the button (Layer 2)\n * Defaults to `size` for backward compatibility\n * Use independently for small visual buttons with large touch targets\n * @example <Button size=\"default\" visualSize=\"dot\" /> // 44px touch, 12px visual\n */\n visualSize?: 'sm' | 'default' | 'lg' | 'icon' | 'dot';\n /**\n * Size of the button - controls both touch target awareness and visual size\n * @deprecated For independent visual sizing, use visualSize prop instead\n */\n size?: 'sm' | 'default' | 'lg' | 'icon';\n}\n\n/**\n * Button Component - 3-Layer Architecture\n * Fully accessible button with React Aria and themed styling\n *\n * Layer 1: Touch Target (AriaButton) - 44x44px WCAG AAA compliant\n * Layer 2: Visual Button (span) - configurable appearance\n * Layer 3: Content (children) - text, icons, effects\n */\nconst Button = memo(forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n buttonVisualClassName,\n variant,\n size,\n visualSize,\n fullWidth,\n loading = false,\n loadingText = \"Loading...\",\n shortcut,\n children,\n isDisabled,\n paywall = false,\n paywallRedirect,\n paywallDescription,\n onPress,\n ...props\n },\n ref\n ) => {\n const paywallDescriptionId = useId();\n\n // ==========================================================================\n // ButtonGroup Context Integration\n // ==========================================================================\n\n // Consume group-level context (variant, size, isDisabled, orientation)\n const groupContext = useButtonGroupContext();\n\n // Consume item-level context (position for border-radius styling)\n const itemContext = useButtonGroupItemContext();\n\n // Merge context values with props (props take precedence)\n const effectiveVariant = variant ?? groupContext?.variant ?? 'default';\n const effectiveSize = size ?? groupContext?.size;\n const effectiveIsDisabled = isDisabled ?? groupContext?.isDisabled ?? false;\n\n // In vertical groups, buttons should be full width automatically\n const isInVerticalGroup = groupContext?.orientation === 'vertical';\n const effectiveFullWidth = fullWidth || isInVerticalGroup;\n\n // Position styling for ButtonGroup (only applied when in a group)\n const positionClassName = itemContext\n ? buttonGroupItemVariants({\n orientation: groupContext?.orientation ?? 'horizontal',\n position: itemContext.position,\n })\n : '';\n\n // Default visualSize to size for backward compatibility\n const effectiveVisualSize = visualSize ?? effectiveSize ?? 'default';\n\n // AAA Accessibility: Warn in dev/test if icon/dot variant lacks accessible name\n if (process.env.NODE_ENV !== 'production') {\n if (\n (effectiveVisualSize === 'dot' || effectiveVisualSize === 'icon') &&\n !props['aria-label'] &&\n !children\n ) {\n console.warn(\n '[Button] visualSize=\"dot\" or \"icon\" requires aria-label when no visible text is provided (WCAG 1.1.1)'\n );\n }\n }\n\n /**\n * Handle button press - intercepts action when paywalled\n * If paywalled with redirect URL, opens in new tab\n * Otherwise, calls the normal onPress handler\n */\n const handlePress = (e: Parameters<NonNullable<AriaButtonProps['onPress']>>[0]): void => {\n if (paywall) {\n if (paywallRedirect) {\n window.open(paywallRedirect, '_blank', 'noopener,noreferrer');\n }\n // Don't call onPress when paywalled\n return;\n }\n onPress?.(e);\n };\n\n // Only set isDisabled when we have a reason to disable\n // Otherwise, let slot system control disabled state (e.g., in NumberField)\n const computedIsDisabled = effectiveIsDisabled || loading || undefined;\n\n return (\n <AriaButton\n ref={ref}\n isDisabled={computedIsDisabled}\n aria-disabled={paywall ? true : undefined}\n aria-describedby={paywall ? paywallDescriptionId : undefined}\n onPress={handlePress}\n className={cn(buttonOuterVariants({ fullWidth: effectiveFullWidth, inVerticalGroup: isInVerticalGroup }), className)}\n {...props}\n >\n {(renderProps) => (\n /* Layer 2: Visual Button */\n <span\n className={cn(\n buttonVisualVariants({\n variant: effectiveVariant,\n visualSize: effectiveVisualSize,\n paywall,\n fullWidth: effectiveFullWidth,\n }),\n // Position styling from ButtonGroup context (border-radius adjustments)\n positionClassName,\n buttonVisualClassName,\n // Layer 2 interaction styles (no focus - focus ring is on Layer 1)\n PRESSED_STYLES,\n HOVER_STYLES,\n HIGH_CONTRAST_HOVER,\n HIGH_CONTRAST_PRESSED\n )}\n data-pressed={renderProps.isPressed || undefined}\n >\n {/* Layer 3: Content & Effects */}\n\n {/* FR-033: Loading spinner with screen reader announcement */}\n {/* Uses motion-safe: for WCAG 2.3.3 AAA (Animation from Interactions) */}\n {loading && (\n <>\n <Loader2 className=\"motion-safe:animate-spin\" aria-hidden=\"true\" />\n <span className=\"sr-only\" aria-live=\"polite\">\n {loadingText}\n </span>\n </>\n )}\n\n {/* Hide children during loading */}\n {!loading && children}\n\n {/* Paywall: Lightning bolt icon */}\n {paywall && (\n <Zap\n data-testid=\"zap-icon\"\n aria-hidden=\"true\"\n className=\"ml-1\"\n />\n )}\n\n {/* Paywall: Screen reader description */}\n {paywall && (\n <span id={paywallDescriptionId} className=\"sr-only\">\n Premium feature: {paywallDescription || \"Upgrade required to access this feature\"}\n </span>\n )}\n\n {/* FR-034: Keyboard shortcut display on focus */}\n {renderProps.isFocusVisible && shortcut && (\n <kbd className=\"ml-auto hidden text-xs opacity-60 lg:inline\">\n {shortcut}\n </kbd>\n )}\n\n {/* Touch/press ripple effect - FR-031: Pressed state feedback */}\n {/* Uses motion-safe: for WCAG 2.3.3 AAA (Animation from Interactions) */}\n {renderProps.isPressed && (\n <span\n className=\"absolute inset-0 rounded-[inherit] bg-current opacity-10 motion-safe:animate-in motion-safe:zoom-in-95\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n )}\n </AriaButton>\n );\n }\n));\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants, buttonOuterVariants, buttonVisualVariants };\n"]}
@@ -1,408 +0,0 @@
1
- 'use strict';
2
-
3
- var chunk3YOY2VJ6_js = require('./chunk-3YOY2VJ6.js');
4
- var chunkB5Q4UPL6_js = require('./chunk-B5Q4UPL6.js');
5
- var chunkVIREG536_js = require('./chunk-VIREG536.js');
6
- var react = require('react');
7
- var reactAriaComponents = require('react-aria-components');
8
- var classVarianceAuthority = require('class-variance-authority');
9
- var lucideReact = require('lucide-react');
10
- var jsxRuntime = require('react/jsx-runtime');
11
-
12
- var inputVariants = classVarianceAuthority.cva(
13
- // Base styles - FR-014: Proper input styling with focus states
14
- "flex w-full rounded-md border bg-[var(--content-background)] shadow-xs px-3 py-2 text-sm ring-offset-[var(--content-background)] file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--content-foreground)] placeholder:text-[var(--menu-muted)] transition-all duration-200",
15
- {
16
- variants: {
17
- // Size variants (matching Button sizes)
18
- size: {
19
- sm: "h-9 text-xs px-2 py-1",
20
- default: "h-10 px-3 py-2",
21
- lg: "h-11 px-4 py-3 text-base"
22
- },
23
- // State variants
24
- state: {
25
- default: "border-[var(--input-border)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",
26
- error: "border-[var(--destructive-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--destructive-background)] focus-visible:ring-offset-2",
27
- success: "border-green-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-green-500 focus-visible:ring-offset-2",
28
- disabled: "cursor-not-allowed opacity-50",
29
- readonly: "cursor-default bg-[var(--content-background)] opacity-70"
30
- }
31
- },
32
- defaultVariants: {
33
- size: "default",
34
- state: "default"
35
- }
36
- }
37
- );
38
- var labelVariants = classVarianceAuthority.cva(
39
- // Base styles - FR-009: WCAG 2.2 AAA compliance
40
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",
41
- {
42
- variants: {
43
- state: {
44
- default: "text-[var(--content-foreground)]",
45
- error: "text-[var(--destructive-foreground)]",
46
- disabled: "opacity-50 cursor-not-allowed"
47
- }
48
- },
49
- defaultVariants: {
50
- state: "default"
51
- }
52
- }
53
- );
54
- var descriptionVariants = classVarianceAuthority.cva(
55
- "text-sm text-[var(--content-foreground)]"
56
- );
57
- var errorMessageVariants = classVarianceAuthority.cva(
58
- "text-sm text-[var(--destructive-foreground)] font-medium mt-1.5"
59
- );
60
- var successMessageVariants = classVarianceAuthority.cva(
61
- "text-sm text-green-600 dark:text-green-500 font-medium mt-1.5"
62
- );
63
- var TextFieldLabel = react.forwardRef(
64
- ({ className, state = "default", children, ...props }, ref) => {
65
- return /* @__PURE__ */ jsxRuntime.jsx(
66
- reactAriaComponents.Label,
67
- {
68
- ref,
69
- className: chunkVIREG536_js.cn(labelVariants({ state }), className),
70
- ...props,
71
- children
72
- }
73
- );
74
- }
75
- );
76
- TextFieldLabel.displayName = "TextFieldLabel";
77
- var TextFieldInput = react.forwardRef(
78
- ({ className, size = "default", state = "default", ...props }, ref) => {
79
- return /* @__PURE__ */ jsxRuntime.jsx(
80
- reactAriaComponents.Input,
81
- {
82
- ref,
83
- className: chunkVIREG536_js.cn(inputVariants({ size, state }), chunkB5Q4UPL6_js.DISABLED_STYLES, className),
84
- ...props
85
- }
86
- );
87
- }
88
- );
89
- TextFieldInput.displayName = "TextFieldInput";
90
- var TextFieldDescription = react.forwardRef(
91
- ({ className, children, ...props }, ref) => {
92
- return /* @__PURE__ */ jsxRuntime.jsx(
93
- reactAriaComponents.Text,
94
- {
95
- ref,
96
- slot: "description",
97
- className: chunkVIREG536_js.cn(descriptionVariants(), className),
98
- ...props,
99
- children
100
- }
101
- );
102
- }
103
- );
104
- TextFieldDescription.displayName = "TextFieldDescription";
105
- var TextFieldError = react.forwardRef(
106
- ({ className, children, ...props }, ref) => {
107
- return /* @__PURE__ */ jsxRuntime.jsx(
108
- reactAriaComponents.FieldError,
109
- {
110
- ref,
111
- ...props,
112
- className: chunkVIREG536_js.cn(errorMessageVariants(), className),
113
- children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", role: "alert", children: [
114
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleAlert, { className: "h-4 w-4" }),
115
- children
116
- ] })
117
- }
118
- );
119
- }
120
- );
121
- TextFieldError.displayName = "TextFieldError";
122
- var TextFieldSuccess = react.forwardRef(
123
- ({ className, children, ...props }, ref) => {
124
- return /* @__PURE__ */ jsxRuntime.jsx(
125
- reactAriaComponents.Text,
126
- {
127
- ref,
128
- slot: "description",
129
- className: chunkVIREG536_js.cn(successMessageVariants(), className),
130
- ...props,
131
- children
132
- }
133
- );
134
- }
135
- );
136
- TextFieldSuccess.displayName = "TextFieldSuccess";
137
- var TextField = react.forwardRef(
138
- ({
139
- className,
140
- size = "default",
141
- label,
142
- description,
143
- errorMessage,
144
- successMessage,
145
- type = "text",
146
- isRequired = false,
147
- isReadOnly = false,
148
- isDisabled = false,
149
- isInvalid = false,
150
- isValid = false,
151
- id,
152
- autoComplete,
153
- disableCopyPaste = false,
154
- pattern,
155
- patternDescription,
156
- expandOnFocus = false,
157
- collapsedWidth = "200px",
158
- prefix,
159
- suffix,
160
- prefixSize = 16,
161
- suffixSize = 16,
162
- showPasswordToggle,
163
- value,
164
- defaultValue,
165
- onFocus: userOnFocus,
166
- onBlur: userOnBlur,
167
- ...props
168
- }, ref) => {
169
- const errorId = react.useId();
170
- const generatedId = react.useId();
171
- const fieldId = id || generatedId;
172
- const [isShaking, setIsShaking] = react.useState(false);
173
- const [screenReaderMessage, setScreenReaderMessage] = react.useState("");
174
- const [isFocused, setIsFocused] = react.useState(false);
175
- const [showPassword, setShowPassword] = react.useState(false);
176
- react.useEffect(() => {
177
- if (disableCopyPaste && typeof process !== "undefined" && process.env.NODE_ENV === "development") {
178
- console.warn(
179
- "[TextField] Copy/paste prevention should only be used for security-critical fields like password confirmation. This feature can break assistive technology workflows and password managers."
180
- );
181
- }
182
- }, [disableCopyPaste]);
183
- const handlePaste = react.useCallback((e) => {
184
- if (disableCopyPaste) {
185
- e.preventDefault();
186
- setIsShaking(true);
187
- setScreenReaderMessage("Pasting is not allowed in this field. Please type your entry.");
188
- setTimeout(() => {
189
- setIsShaking(false);
190
- setScreenReaderMessage("");
191
- }, 400);
192
- }
193
- }, [disableCopyPaste]);
194
- const handleFocus = react.useCallback((e) => {
195
- if (expandOnFocus) {
196
- setIsFocused(true);
197
- }
198
- userOnFocus?.(e);
199
- }, [expandOnFocus, userOnFocus]);
200
- const handleBlur = react.useCallback((e) => {
201
- if (expandOnFocus) {
202
- const isEmpty = e.target.value === "";
203
- if (isEmpty) {
204
- setIsFocused(false);
205
- }
206
- }
207
- userOnBlur?.(e);
208
- }, [expandOnFocus, userOnBlur]);
209
- const inputWidth = react.useMemo(() => {
210
- if (!expandOnFocus) return void 0;
211
- const hasValue = value !== void 0 ? value !== "" : defaultValue !== void 0 && defaultValue !== "";
212
- if (isFocused || hasValue) {
213
- return "100%";
214
- }
215
- return collapsedWidth;
216
- }, [expandOnFocus, isFocused, value, defaultValue, collapsedWidth]);
217
- const inputState = react.useMemo(() => {
218
- if (isDisabled) return "disabled";
219
- if (isReadOnly) return "readonly";
220
- if (isInvalid) return "error";
221
- if (isValid) return "success";
222
- return "default";
223
- }, [isDisabled, isReadOnly, isInvalid, isValid]);
224
- const labelState = react.useMemo(() => {
225
- if (isDisabled) return "disabled";
226
- if (isInvalid) return "error";
227
- return "default";
228
- }, [isDisabled, isInvalid]);
229
- const combinedDescription = react.useMemo(() => {
230
- if (description && patternDescription) {
231
- return `${description} ${patternDescription}`;
232
- }
233
- return description || patternDescription;
234
- }, [description, patternDescription]);
235
- const inputPadding = react.useMemo(() => {
236
- const basePadding = { left: 12, right: 12 };
237
- if (prefix) {
238
- const prefixWidth = typeof prefix === "string" ? prefix.length * 8 + 16 : prefixSize + 16;
239
- basePadding.left = prefixWidth;
240
- }
241
- if (type === "password" && showPasswordToggle) {
242
- basePadding.right = 16 + 16;
243
- } else if (suffix) {
244
- const suffixWidth = typeof suffix === "string" ? suffix.length * 8 + 16 : suffixSize + 16;
245
- basePadding.right = suffixWidth;
246
- }
247
- return basePadding;
248
- }, [prefix, suffix, prefixSize, suffixSize, type, showPasswordToggle]);
249
- const actualType = react.useMemo(() => {
250
- if (type === "password" && showPasswordToggle && showPassword) {
251
- return "text";
252
- }
253
- return type;
254
- }, [type, showPasswordToggle, showPassword]);
255
- const handlePasswordToggle = react.useCallback(() => {
256
- setShowPassword((prev) => !prev);
257
- }, []);
258
- const EyeIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
259
- "svg",
260
- {
261
- "data-testid": "password-toggle-icon-show",
262
- width: "16",
263
- height: "16",
264
- viewBox: "0 0 16 16",
265
- fill: "none",
266
- stroke: "currentColor",
267
- strokeWidth: "2",
268
- strokeLinecap: "round",
269
- strokeLinejoin: "round",
270
- children: [
271
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z" }),
272
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8", cy: "8", r: "2" })
273
- ]
274
- }
275
- );
276
- const EyeOffIcon = () => /* @__PURE__ */ jsxRuntime.jsxs(
277
- "svg",
278
- {
279
- "data-testid": "password-toggle-icon-hide",
280
- width: "16",
281
- height: "16",
282
- viewBox: "0 0 16 16",
283
- fill: "none",
284
- stroke: "currentColor",
285
- strokeWidth: "2",
286
- strokeLinecap: "round",
287
- strokeLinejoin: "round",
288
- children: [
289
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M10.5 5.5l-5 5" }),
290
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4" }),
291
- /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M3 13l2-2m7-7l2-2" }),
292
- /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8", cy: "8", r: "2" })
293
- ]
294
- }
295
- );
296
- const actualSuffix = react.useMemo(() => {
297
- if (type === "password" && showPasswordToggle) {
298
- return /* @__PURE__ */ jsxRuntime.jsx(
299
- chunk3YOY2VJ6_js.Button,
300
- {
301
- variant: "ghost",
302
- visualSize: "icon",
303
- onPress: handlePasswordToggle,
304
- "aria-label": showPassword ? "Hide password" : "Show password",
305
- className: "!min-h-0 !min-w-0 h-8 w-8",
306
- children: showPassword ? /* @__PURE__ */ jsxRuntime.jsx(EyeOffIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(EyeIcon, {})
307
- }
308
- );
309
- }
310
- return suffix;
311
- }, [type, showPasswordToggle, showPassword, suffix, handlePasswordToggle]);
312
- return /* @__PURE__ */ jsxRuntime.jsxs(
313
- reactAriaComponents.TextField,
314
- {
315
- ref,
316
- className: chunkVIREG536_js.cn("flex flex-col gap-1.5", className),
317
- isRequired,
318
- isReadOnly,
319
- isDisabled,
320
- isInvalid,
321
- value,
322
- defaultValue,
323
- ...props,
324
- children: [
325
- label && /* @__PURE__ */ jsxRuntime.jsxs(reactAriaComponents.Label, { className: chunkVIREG536_js.cn(labelVariants({ state: labelState })), children: [
326
- label,
327
- isRequired && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 text-[var(--destructive-background)]", "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "*" }) })
328
- ] }),
329
- combinedDescription && /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Text, { slot: "description", className: chunkVIREG536_js.cn(descriptionVariants()), children: combinedDescription }),
330
- /* @__PURE__ */ jsxRuntime.jsxs(
331
- "div",
332
- {
333
- className: "relative flex items-center transition-all duration-200",
334
- style: {
335
- width: inputWidth
336
- },
337
- children: [
338
- prefix && /* @__PURE__ */ jsxRuntime.jsx(
339
- "div",
340
- {
341
- "data-testid": "textfield-prefix",
342
- className: "absolute left-3 flex items-center justify-center pointer-events-none text-[var(--content-foreground)]",
343
- "aria-hidden": "true",
344
- children: prefix
345
- }
346
- ),
347
- /* @__PURE__ */ jsxRuntime.jsx(
348
- reactAriaComponents.Input,
349
- {
350
- type: actualType,
351
- id: fieldId,
352
- className: chunkVIREG536_js.cn(
353
- inputVariants({ size, state: inputState }),
354
- chunkB5Q4UPL6_js.DISABLED_STYLES,
355
- isShaking && "shake"
356
- ),
357
- style: {
358
- width: "100%",
359
- paddingLeft: `${inputPadding.left}px`,
360
- paddingRight: `${inputPadding.right}px`
361
- },
362
- autoComplete,
363
- pattern,
364
- onPaste: handlePaste,
365
- onFocus: handleFocus,
366
- onBlur: handleBlur,
367
- "aria-required": isRequired ? "true" : void 0,
368
- "aria-readonly": isReadOnly ? "true" : void 0,
369
- "aria-errormessage": isInvalid && errorMessage ? errorId : void 0
370
- }
371
- ),
372
- actualSuffix && /* @__PURE__ */ jsxRuntime.jsx(
373
- "div",
374
- {
375
- "data-testid": "textfield-suffix",
376
- className: chunkVIREG536_js.cn(
377
- "absolute right-3 flex items-center justify-center text-[var(--content-foreground)]",
378
- // Password toggle is clickable, other suffixes are not
379
- type === "password" && showPasswordToggle ? "" : "pointer-events-none"
380
- ),
381
- "aria-hidden": type === "password" && showPasswordToggle ? void 0 : "true",
382
- children: actualSuffix
383
- }
384
- )
385
- ]
386
- }
387
- ),
388
- isValid && successMessage && !isInvalid && /* @__PURE__ */ jsxRuntime.jsx(reactAriaComponents.Text, { slot: "description", className: chunkVIREG536_js.cn(successMessageVariants()), children: successMessage }),
389
- isInvalid && errorMessage && /* @__PURE__ */ jsxRuntime.jsx(TextFieldError, { id: errorId, children: errorMessage }),
390
- screenReaderMessage && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true", children: screenReaderMessage })
391
- ]
392
- }
393
- );
394
- }
395
- );
396
- TextField.displayName = "TextField";
397
-
398
- exports.TextField = TextField;
399
- exports.TextFieldDescription = TextFieldDescription;
400
- exports.TextFieldError = TextFieldError;
401
- exports.TextFieldInput = TextFieldInput;
402
- exports.TextFieldLabel = TextFieldLabel;
403
- exports.TextFieldSuccess = TextFieldSuccess;
404
- exports.inputVariants = inputVariants;
405
- exports.labelVariants = labelVariants;
406
- exports.successMessageVariants = successMessageVariants;
407
- //# sourceMappingURL=chunk-4DU5JSXB.js.map
408
- //# sourceMappingURL=chunk-4DU5JSXB.js.map