@cerberus-design/react 0.9.2-next-5604236 → 0.9.2-next-74f2c67

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 (310) hide show
  1. package/build/legacy/_tsup-dts-rollup.d.cts +730 -117
  2. package/build/legacy/aria-helpers/tabs.aria.cjs.map +1 -1
  3. package/build/legacy/components/Avatar.cjs.map +1 -1
  4. package/build/legacy/components/Button.cjs.map +1 -1
  5. package/build/legacy/components/Checkbox.cjs.map +1 -1
  6. package/build/legacy/components/CircularProgress.cjs.map +1 -1
  7. package/build/legacy/components/Droppable.cjs.map +1 -1
  8. package/build/legacy/components/FeatureFlag.cjs.map +1 -1
  9. package/build/legacy/components/FieldMessage.cjs.map +1 -1
  10. package/build/legacy/components/FileStatus.cjs +70 -74
  11. package/build/legacy/components/FileStatus.cjs.map +1 -1
  12. package/build/legacy/components/FileUploader.cjs.map +1 -1
  13. package/build/legacy/components/IconButton.cjs.map +1 -1
  14. package/build/legacy/components/Input.cjs.map +1 -1
  15. package/build/legacy/components/Label.cjs.map +1 -1
  16. package/build/legacy/components/Modal.cjs.map +1 -1
  17. package/build/legacy/components/ModalDescription.cjs.map +1 -1
  18. package/build/legacy/components/ModalHeader.cjs.map +1 -1
  19. package/build/legacy/components/ModalHeading.cjs.map +1 -1
  20. package/build/legacy/components/NavMenuLink.cjs.map +1 -1
  21. package/build/legacy/components/NavMenuList.cjs.map +1 -1
  22. package/build/legacy/components/NavMenuTrigger.cjs.map +1 -1
  23. package/build/legacy/components/Notification.cjs.map +1 -1
  24. package/build/legacy/components/NotificationDescription.cjs.map +1 -1
  25. package/build/legacy/components/NotificationHeading.cjs.map +1 -1
  26. package/build/legacy/components/Portal.cjs.map +1 -1
  27. package/build/legacy/components/ProgressBar.cjs.map +1 -1
  28. package/build/legacy/components/Radio.cjs.map +1 -1
  29. package/build/legacy/components/Select.cjs.map +1 -1
  30. package/build/legacy/components/Show.cjs.map +1 -1
  31. package/build/legacy/components/Spinner.cjs.map +1 -1
  32. package/build/legacy/components/Tab.cjs.map +1 -1
  33. package/build/legacy/components/TabList.cjs.map +1 -1
  34. package/build/legacy/components/TabPanel.cjs.map +1 -1
  35. package/build/legacy/components/Table.cjs.map +1 -1
  36. package/build/legacy/components/Tag.cjs +70 -4
  37. package/build/legacy/components/Tag.cjs.map +1 -1
  38. package/build/legacy/components/Tbody.cjs.map +1 -1
  39. package/build/legacy/components/Td.cjs.map +1 -1
  40. package/build/legacy/components/Textarea.cjs.map +1 -1
  41. package/build/legacy/components/Th.cjs.map +1 -1
  42. package/build/legacy/components/Thead.cjs.map +1 -1
  43. package/build/legacy/components/Toggle.cjs.map +1 -1
  44. package/build/legacy/context/confirm-modal.cjs.map +1 -1
  45. package/build/legacy/context/feature-flags.cjs.map +1 -1
  46. package/build/legacy/context/field.cjs.map +1 -1
  47. package/build/legacy/context/navMenu.cjs.map +1 -1
  48. package/build/legacy/context/notification-center.cjs.map +1 -1
  49. package/build/legacy/context/prompt-modal.cjs.map +1 -1
  50. package/build/legacy/context/tabs.cjs.map +1 -1
  51. package/build/legacy/context/theme.cjs.map +1 -1
  52. package/build/legacy/hooks/useModal.cjs.map +1 -1
  53. package/build/legacy/hooks/useTheme.cjs.map +1 -1
  54. package/build/legacy/hooks/useToggle.cjs.map +1 -1
  55. package/build/legacy/index.cjs +5 -5
  56. package/build/legacy/index.cjs.map +1 -1
  57. package/build/modern/_tsup-dts-rollup.d.ts +730 -117
  58. package/build/modern/aria-helpers/tabs.aria.js +2 -2
  59. package/build/modern/{chunk-LAOQSNMN.js → chunk-2RPWSVRX.js} +6 -6
  60. package/build/modern/chunk-2RPWSVRX.js.map +1 -0
  61. package/build/modern/{chunk-JB7IQ2BM.js → chunk-2UXE5PDG.js} +1 -1
  62. package/build/modern/chunk-2UXE5PDG.js.map +1 -0
  63. package/build/modern/{chunk-4CAT3FHV.js → chunk-2VX52EEJ.js} +1 -1
  64. package/build/modern/chunk-2VX52EEJ.js.map +1 -0
  65. package/build/modern/{chunk-A6CLBPFE.js → chunk-3O6UTN3J.js} +1 -1
  66. package/build/modern/chunk-3O6UTN3J.js.map +1 -0
  67. package/build/modern/{chunk-UN3OAW56.js → chunk-477G5ZEL.js} +2 -2
  68. package/build/modern/chunk-477G5ZEL.js.map +1 -0
  69. package/build/modern/{chunk-PMCYXRAH.js → chunk-5V5MBSM3.js} +3 -3
  70. package/build/modern/chunk-5V5MBSM3.js.map +1 -0
  71. package/build/modern/{chunk-3GXISGPS.js → chunk-7K6PZBHN.js} +2 -2
  72. package/build/modern/chunk-7K6PZBHN.js.map +1 -0
  73. package/build/modern/{chunk-IXOJLCNO.js → chunk-7SYJFI5E.js} +1 -1
  74. package/build/modern/chunk-7SYJFI5E.js.map +1 -0
  75. package/build/modern/{chunk-GABTVDSB.js → chunk-AUAPBPGW.js} +3 -3
  76. package/build/modern/chunk-AUAPBPGW.js.map +1 -0
  77. package/build/modern/{chunk-A5WYZVUR.js → chunk-B4CVET74.js} +1 -1
  78. package/build/modern/chunk-B4CVET74.js.map +1 -0
  79. package/build/modern/{chunk-2UFNQM55.js → chunk-BE4EOU2P.js} +1 -1
  80. package/build/modern/{chunk-2UFNQM55.js.map → chunk-BE4EOU2P.js.map} +1 -1
  81. package/build/modern/{chunk-VULPMZUW.js → chunk-BIDE4IJG.js} +3 -3
  82. package/build/modern/chunk-BIDE4IJG.js.map +1 -0
  83. package/build/modern/{chunk-4O4QFF4S.js → chunk-BUVVRQLZ.js} +1 -1
  84. package/build/modern/chunk-BUVVRQLZ.js.map +1 -0
  85. package/build/modern/{chunk-4M3EUP57.js → chunk-CJFW36DZ.js} +1 -1
  86. package/build/modern/chunk-CJFW36DZ.js.map +1 -0
  87. package/build/modern/{chunk-ZBEHDXFT.js → chunk-E6QFLLXH.js} +13 -13
  88. package/build/modern/chunk-E6QFLLXH.js.map +1 -0
  89. package/build/modern/{chunk-S3MTABYX.js → chunk-EB37HRCN.js} +2 -2
  90. package/build/modern/chunk-EB37HRCN.js.map +1 -0
  91. package/build/modern/{chunk-JXJ6VFZO.js → chunk-EJOXOICK.js} +1 -1
  92. package/build/modern/chunk-EJOXOICK.js.map +1 -0
  93. package/build/modern/{chunk-6F34A7NZ.js → chunk-EXGKZGML.js} +1 -1
  94. package/build/modern/chunk-EXGKZGML.js.map +1 -0
  95. package/build/modern/{chunk-ISPTI4GC.js → chunk-EZYCKM7R.js} +2 -2
  96. package/build/modern/chunk-EZYCKM7R.js.map +1 -0
  97. package/build/modern/{chunk-4YJOK7JJ.js → chunk-GMG3B34U.js} +2 -2
  98. package/build/modern/chunk-GMG3B34U.js.map +1 -0
  99. package/build/modern/{chunk-U72VPIZA.js → chunk-HHVQ6LCA.js} +3 -3
  100. package/build/modern/chunk-HHVQ6LCA.js.map +1 -0
  101. package/build/modern/{chunk-XREC5IJE.js → chunk-HPM2XRWT.js} +1 -1
  102. package/build/modern/chunk-HPM2XRWT.js.map +1 -0
  103. package/build/modern/{chunk-RQPDRHRP.js → chunk-I35HMGJQ.js} +3 -3
  104. package/build/modern/chunk-I35HMGJQ.js.map +1 -0
  105. package/build/modern/{chunk-CMKBUSGN.js → chunk-ILZKQP6R.js} +10 -10
  106. package/build/modern/chunk-ILZKQP6R.js.map +1 -0
  107. package/build/modern/{chunk-GKUDLVOV.js → chunk-ITOIXNJS.js} +2 -2
  108. package/build/modern/{chunk-BTEEBIVN.js → chunk-JCGWTIR4.js} +3 -3
  109. package/build/modern/chunk-JCGWTIR4.js.map +1 -0
  110. package/build/modern/{chunk-TCO46FK7.js → chunk-JIJM6JFJ.js} +2 -2
  111. package/build/modern/chunk-JIJM6JFJ.js.map +1 -0
  112. package/build/modern/{chunk-VGHVH2T3.js → chunk-JWIJHSI6.js} +5 -3
  113. package/build/modern/chunk-JWIJHSI6.js.map +1 -0
  114. package/build/modern/{chunk-6DIGPXAD.js → chunk-KBBASJIY.js} +2 -2
  115. package/build/modern/chunk-KBBASJIY.js.map +1 -0
  116. package/build/modern/{chunk-SONHHNYQ.js → chunk-LFWAJ5DX.js} +3 -3
  117. package/build/modern/chunk-LFWAJ5DX.js.map +1 -0
  118. package/build/modern/{chunk-PH64POOB.js → chunk-LJYCFFX7.js} +2 -2
  119. package/build/modern/chunk-LJYCFFX7.js.map +1 -0
  120. package/build/modern/{chunk-AEDGCR25.js → chunk-NUGDTZCL.js} +7 -7
  121. package/build/modern/chunk-NUGDTZCL.js.map +1 -0
  122. package/build/modern/{chunk-XPVDT4VF.js → chunk-O6JYYVO7.js} +3 -3
  123. package/build/modern/chunk-O6JYYVO7.js.map +1 -0
  124. package/build/modern/{chunk-KJUCHZHV.js → chunk-O75QAT4Z.js} +1 -1
  125. package/build/modern/chunk-O75QAT4Z.js.map +1 -0
  126. package/build/modern/{chunk-C5HLLGME.js → chunk-OW62FLJ6.js} +1 -1
  127. package/build/modern/chunk-OW62FLJ6.js.map +1 -0
  128. package/build/modern/{chunk-RPZAPUCF.js → chunk-OWKN5IV7.js} +3 -3
  129. package/build/modern/chunk-OWKN5IV7.js.map +1 -0
  130. package/build/modern/{chunk-PJ3744I6.js → chunk-PKQTTFWA.js} +1 -1
  131. package/build/modern/chunk-PKQTTFWA.js.map +1 -0
  132. package/build/modern/{chunk-N3FUF4TB.js → chunk-PKY46RRA.js} +1 -1
  133. package/build/modern/chunk-PKY46RRA.js.map +1 -0
  134. package/build/modern/{chunk-4M4LCQ43.js → chunk-Q7BRMIBR.js} +1 -1
  135. package/build/modern/{chunk-4M4LCQ43.js.map → chunk-Q7BRMIBR.js.map} +1 -1
  136. package/build/modern/{chunk-QEA6N6TN.js → chunk-REO5GUNC.js} +1 -1
  137. package/build/modern/chunk-REO5GUNC.js.map +1 -0
  138. package/build/modern/{chunk-KF24CS4S.js → chunk-RIFQSCHT.js} +1 -1
  139. package/build/modern/chunk-RIFQSCHT.js.map +1 -0
  140. package/build/modern/{chunk-RBZAEOKN.js → chunk-S7XGIQY6.js} +6 -3
  141. package/build/modern/chunk-S7XGIQY6.js.map +1 -0
  142. package/build/modern/{chunk-3C2DJSEE.js → chunk-SXIXDXG3.js} +1 -1
  143. package/build/modern/chunk-SXIXDXG3.js.map +1 -0
  144. package/build/modern/{chunk-7VJOPJVX.js → chunk-TKI2CKHH.js} +1 -1
  145. package/build/modern/chunk-TKI2CKHH.js.map +1 -0
  146. package/build/modern/{chunk-SLHX5K6I.js → chunk-UBJBMOG7.js} +4 -2
  147. package/build/modern/chunk-UBJBMOG7.js.map +1 -0
  148. package/build/modern/{chunk-ZAU4JVLL.js → chunk-UZDVOIW5.js} +1 -1
  149. package/build/modern/chunk-UZDVOIW5.js.map +1 -0
  150. package/build/modern/{chunk-QZ6NS6VN.js → chunk-VG46RHBJ.js} +1 -1
  151. package/build/modern/chunk-VG46RHBJ.js.map +1 -0
  152. package/build/modern/{chunk-QU7UV5DB.js → chunk-WLEX22KS.js} +1 -1
  153. package/build/modern/chunk-WLEX22KS.js.map +1 -0
  154. package/build/modern/{chunk-SSY3KX3F.js → chunk-WZOYPFUU.js} +3 -3
  155. package/build/modern/chunk-WZOYPFUU.js.map +1 -0
  156. package/build/modern/{chunk-HW76XVA3.js → chunk-XEW6TJJ4.js} +1 -1
  157. package/build/modern/chunk-XEW6TJJ4.js.map +1 -0
  158. package/build/modern/{chunk-G6O7KRQ6.js → chunk-ZFK33MVD.js} +1 -1
  159. package/build/modern/chunk-ZFK33MVD.js.map +1 -0
  160. package/build/modern/components/Avatar.js +2 -2
  161. package/build/modern/components/Button.js +1 -1
  162. package/build/modern/components/Checkbox.js +3 -3
  163. package/build/modern/components/CircularProgress.js +1 -1
  164. package/build/modern/components/Droppable.js +1 -1
  165. package/build/modern/components/FeatureFlag.js +3 -3
  166. package/build/modern/components/FieldMessage.js +2 -2
  167. package/build/modern/components/FileStatus.js +7 -7
  168. package/build/modern/components/FileUploader.js +3 -3
  169. package/build/modern/components/IconButton.js +1 -1
  170. package/build/modern/components/Input.js +3 -3
  171. package/build/modern/components/Label.js +3 -3
  172. package/build/modern/components/Modal.js +1 -1
  173. package/build/modern/components/ModalDescription.js +1 -1
  174. package/build/modern/components/ModalHeader.js +1 -1
  175. package/build/modern/components/ModalHeading.js +1 -1
  176. package/build/modern/components/NavMenuLink.js +2 -2
  177. package/build/modern/components/NavMenuList.js +3 -3
  178. package/build/modern/components/NavMenuTrigger.js +3 -3
  179. package/build/modern/components/Notification.js +1 -1
  180. package/build/modern/components/NotificationDescription.js +1 -1
  181. package/build/modern/components/NotificationHeading.js +1 -1
  182. package/build/modern/components/Portal.js +1 -1
  183. package/build/modern/components/ProgressBar.js +1 -1
  184. package/build/modern/components/Radio.js +2 -2
  185. package/build/modern/components/Select.js +3 -3
  186. package/build/modern/components/Show.js +1 -1
  187. package/build/modern/components/Spinner.js +1 -1
  188. package/build/modern/components/Tab.js +3 -3
  189. package/build/modern/components/TabList.js +2 -2
  190. package/build/modern/components/TabPanel.js +3 -3
  191. package/build/modern/components/Table.js +1 -1
  192. package/build/modern/components/Tag.js +5 -2
  193. package/build/modern/components/Tbody.js +1 -1
  194. package/build/modern/components/Td.js +1 -1
  195. package/build/modern/components/Textarea.js +2 -2
  196. package/build/modern/components/Th.js +2 -2
  197. package/build/modern/components/Thead.js +1 -1
  198. package/build/modern/components/Toggle.js +2 -2
  199. package/build/modern/context/confirm-modal.js +10 -10
  200. package/build/modern/context/feature-flags.js +1 -1
  201. package/build/modern/context/field.js +1 -1
  202. package/build/modern/context/navMenu.js +1 -1
  203. package/build/modern/context/notification-center.js +7 -7
  204. package/build/modern/context/prompt-modal.js +13 -13
  205. package/build/modern/context/tabs.js +1 -1
  206. package/build/modern/context/theme.js +2 -2
  207. package/build/modern/hooks/useModal.js +1 -1
  208. package/build/modern/hooks/useTheme.js +1 -1
  209. package/build/modern/hooks/useToggle.js +1 -1
  210. package/build/modern/index.js +51 -51
  211. package/package.json +2 -2
  212. package/src/components/Avatar.tsx +28 -1
  213. package/src/components/Button.tsx +1 -1
  214. package/src/components/Checkbox.tsx +11 -1
  215. package/src/components/CircularProgress.tsx +1 -1
  216. package/src/components/Droppable.tsx +13 -0
  217. package/src/components/FeatureFlag.tsx +7 -0
  218. package/src/components/FieldMessage.tsx +13 -6
  219. package/src/components/FileStatus.tsx +38 -11
  220. package/src/components/FileUploader.tsx +10 -0
  221. package/src/components/IconButton.tsx +15 -5
  222. package/src/components/Input.tsx +21 -4
  223. package/src/components/Label.tsx +13 -8
  224. package/src/components/Modal.tsx +8 -3
  225. package/src/components/ModalDescription.tsx +1 -0
  226. package/src/components/ModalHeader.tsx +1 -0
  227. package/src/components/ModalHeading.tsx +1 -0
  228. package/src/components/NavMenuLink.tsx +22 -0
  229. package/src/components/NavMenuList.tsx +37 -5
  230. package/src/components/NavMenuTrigger.tsx +13 -0
  231. package/src/components/Notification.tsx +13 -6
  232. package/src/components/NotificationDescription.tsx +8 -6
  233. package/src/components/NotificationHeading.tsx +8 -6
  234. package/src/components/Portal.tsx +9 -2
  235. package/src/components/ProgressBar.tsx +14 -4
  236. package/src/components/Radio.tsx +29 -0
  237. package/src/components/Select.tsx +17 -8
  238. package/src/components/Show.tsx +16 -5
  239. package/src/components/Spinner.tsx +12 -5
  240. package/src/components/Tab.tsx +13 -5
  241. package/src/components/TabList.tsx +5 -1
  242. package/src/components/TabPanel.tsx +7 -2
  243. package/src/components/Table.tsx +6 -3
  244. package/src/components/Tag.tsx +28 -2
  245. package/src/components/Tbody.tsx +7 -1
  246. package/src/components/Td.tsx +2 -1
  247. package/src/components/Textarea.tsx +9 -4
  248. package/src/components/Th.tsx +13 -1
  249. package/src/components/Thead.tsx +2 -1
  250. package/src/components/Toggle.tsx +35 -0
  251. package/src/context/confirm-modal.tsx +17 -0
  252. package/src/context/feature-flags.tsx +4 -1
  253. package/src/context/field.tsx +26 -0
  254. package/src/context/navMenu.tsx +25 -0
  255. package/src/context/notification-center.tsx +17 -0
  256. package/src/context/prompt-modal.tsx +39 -1
  257. package/src/context/tabs.tsx +31 -4
  258. package/src/context/theme.tsx +29 -1
  259. package/src/hooks/useModal.ts +14 -0
  260. package/src/hooks/useTheme.ts +21 -0
  261. package/src/hooks/useToggle.ts +22 -0
  262. package/build/modern/chunk-3C2DJSEE.js.map +0 -1
  263. package/build/modern/chunk-3GXISGPS.js.map +0 -1
  264. package/build/modern/chunk-4CAT3FHV.js.map +0 -1
  265. package/build/modern/chunk-4M3EUP57.js.map +0 -1
  266. package/build/modern/chunk-4O4QFF4S.js.map +0 -1
  267. package/build/modern/chunk-4YJOK7JJ.js.map +0 -1
  268. package/build/modern/chunk-6DIGPXAD.js.map +0 -1
  269. package/build/modern/chunk-6F34A7NZ.js.map +0 -1
  270. package/build/modern/chunk-7VJOPJVX.js.map +0 -1
  271. package/build/modern/chunk-A5WYZVUR.js.map +0 -1
  272. package/build/modern/chunk-A6CLBPFE.js.map +0 -1
  273. package/build/modern/chunk-AEDGCR25.js.map +0 -1
  274. package/build/modern/chunk-BTEEBIVN.js.map +0 -1
  275. package/build/modern/chunk-C5HLLGME.js.map +0 -1
  276. package/build/modern/chunk-CMKBUSGN.js.map +0 -1
  277. package/build/modern/chunk-G6O7KRQ6.js.map +0 -1
  278. package/build/modern/chunk-GABTVDSB.js.map +0 -1
  279. package/build/modern/chunk-HW76XVA3.js.map +0 -1
  280. package/build/modern/chunk-ISPTI4GC.js.map +0 -1
  281. package/build/modern/chunk-IXOJLCNO.js.map +0 -1
  282. package/build/modern/chunk-JB7IQ2BM.js.map +0 -1
  283. package/build/modern/chunk-JXJ6VFZO.js.map +0 -1
  284. package/build/modern/chunk-KF24CS4S.js.map +0 -1
  285. package/build/modern/chunk-KJUCHZHV.js.map +0 -1
  286. package/build/modern/chunk-LAOQSNMN.js.map +0 -1
  287. package/build/modern/chunk-N3FUF4TB.js.map +0 -1
  288. package/build/modern/chunk-PH64POOB.js.map +0 -1
  289. package/build/modern/chunk-PJ3744I6.js.map +0 -1
  290. package/build/modern/chunk-PMCYXRAH.js.map +0 -1
  291. package/build/modern/chunk-QEA6N6TN.js.map +0 -1
  292. package/build/modern/chunk-QU7UV5DB.js.map +0 -1
  293. package/build/modern/chunk-QZ6NS6VN.js.map +0 -1
  294. package/build/modern/chunk-RBZAEOKN.js.map +0 -1
  295. package/build/modern/chunk-RPZAPUCF.js.map +0 -1
  296. package/build/modern/chunk-RQPDRHRP.js.map +0 -1
  297. package/build/modern/chunk-S3MTABYX.js.map +0 -1
  298. package/build/modern/chunk-SLHX5K6I.js.map +0 -1
  299. package/build/modern/chunk-SONHHNYQ.js.map +0 -1
  300. package/build/modern/chunk-SSY3KX3F.js.map +0 -1
  301. package/build/modern/chunk-TCO46FK7.js.map +0 -1
  302. package/build/modern/chunk-U72VPIZA.js.map +0 -1
  303. package/build/modern/chunk-UN3OAW56.js.map +0 -1
  304. package/build/modern/chunk-VGHVH2T3.js.map +0 -1
  305. package/build/modern/chunk-VULPMZUW.js.map +0 -1
  306. package/build/modern/chunk-XPVDT4VF.js.map +0 -1
  307. package/build/modern/chunk-XREC5IJE.js.map +0 -1
  308. package/build/modern/chunk-ZAU4JVLL.js.map +0 -1
  309. package/build/modern/chunk-ZBEHDXFT.js.map +0 -1
  310. /package/build/modern/{chunk-GKUDLVOV.js.map → chunk-ITOIXNJS.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Label.tsx"],"sourcesContent":["'use client'\n\nimport type { HTMLAttributes, PropsWithChildren } from 'react'\nimport { label, type LabelVariantProps } from '@cerberus/styled-system/recipes'\nimport { css, cx } from '@cerberus/styled-system/css'\nimport { hstack } from '@cerberus/styled-system/patterns'\nimport { useFieldContext } from '../context/field'\nimport { Show } from './Show'\n\n/**\n * This module contains the Label component.\n * @module\n */\nexport interface LabelBaseProps extends HTMLAttributes<HTMLLabelElement> {\n /**\n * The unique identifier for the input element. Required for accessibility.\n */\n htmlFor: string\n /**\n * Used to hide the label from the UI while keeping it accessible to screen readers. Typically used for global search inputs that have no visible label.\n */\n hidden?: boolean\n}\nexport type LabelProps = LabelBaseProps & LabelVariantProps\n\n/**\n * A a11y compliant label component.\n * @definition [ARIA Forms](https://www.a11yproject.com/checklist/#forms)\n * @see https://cerberus.digitalu.design/react/label\n * @example\n * ```tsx\n * <Field required>\n * <Label htmlFor=\"search\" hidden>Search everything</Label>\n * <Input id=\"search\" startIcon={Search} type=\"text\" />\n * </Field>\n * ```\n */\nexport function Label(props: PropsWithChildren<LabelProps>) {\n const { hidden, size, ...nativeProps } = props\n const { required, disabled } = useFieldContext()\n const usage = hidden ? 'hidden' : 'visible'\n\n return (\n <label\n {...nativeProps}\n {...(disabled && { 'data-disabled': true })}\n className={cx(\n nativeProps.className,\n label({ size, usage }),\n hstack({\n justify: 'space-between',\n w: 'full',\n }),\n )}\n >\n {props.children}\n <Show when={required}>\n <span\n className={css({\n color: 'inherit',\n fontSize: 'inherit',\n })}\n >\n (required)\n </span>\n </Show>\n </label>\n )\n}\n"],"mappings":";;;;;;;;AAGA,SAAS,aAAqC;AAC9C,SAAS,KAAK,UAAU;AACxB,SAAS,cAAc;AAsCnB,SAcI,KAdJ;AANG,SAAS,MAAM,OAAsC;AAC1D,QAAM,EAAE,QAAQ,MAAM,GAAG,YAAY,IAAI;AACzC,QAAM,EAAE,UAAU,SAAS,IAAI,gBAAgB;AAC/C,QAAM,QAAQ,SAAS,WAAW;AAElC,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACH,GAAI,YAAY,EAAE,iBAAiB,KAAK;AAAA,MACzC,WAAW;AAAA,QACT,YAAY;AAAA,QACZ,MAAM,EAAE,MAAM,MAAM,CAAC;AAAA,QACrB,OAAO;AAAA,UACL,SAAS;AAAA,UACT,GAAG;AAAA,QACL,CAAC;AAAA,MACH;AAAA,MAEC;AAAA,cAAM;AAAA,QACP,oBAAC,QAAK,MAAM,UACV;AAAA,UAAC;AAAA;AAAA,YACC,WAAW,IAAI;AAAA,cACb,OAAO;AAAA,cACP,UAAU;AAAA,YACZ,CAAC;AAAA,YACF;AAAA;AAAA,QAED,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1,27 +1,27 @@
1
1
  import {
2
2
  Portal
3
- } from "./chunk-4CAT3FHV.js";
3
+ } from "./chunk-2VX52EEJ.js";
4
4
  import {
5
5
  ModalHeader
6
- } from "./chunk-QU7UV5DB.js";
6
+ } from "./chunk-WLEX22KS.js";
7
7
  import {
8
8
  ModalHeading
9
- } from "./chunk-JB7IQ2BM.js";
9
+ } from "./chunk-2UXE5PDG.js";
10
10
  import {
11
11
  Modal
12
- } from "./chunk-2UFNQM55.js";
12
+ } from "./chunk-BE4EOU2P.js";
13
13
  import {
14
14
  ModalDescription
15
- } from "./chunk-4M4LCQ43.js";
15
+ } from "./chunk-Q7BRMIBR.js";
16
16
  import {
17
17
  Avatar
18
- } from "./chunk-UN3OAW56.js";
18
+ } from "./chunk-477G5ZEL.js";
19
19
  import {
20
20
  Button
21
- } from "./chunk-6F34A7NZ.js";
21
+ } from "./chunk-EXGKZGML.js";
22
22
  import {
23
23
  Show
24
- } from "./chunk-4O4QFF4S.js";
24
+ } from "./chunk-BUVVRQLZ.js";
25
25
  import {
26
26
  trapFocus
27
27
  } from "./chunk-JIZQFTW6.js";
@@ -30,7 +30,7 @@ import {
30
30
  } from "./chunk-NBG2OSYI.js";
31
31
  import {
32
32
  useModal
33
- } from "./chunk-C5HLLGME.js";
33
+ } from "./chunk-OW62FLJ6.js";
34
34
 
35
35
  // src/context/confirm-modal.tsx
36
36
  import {
@@ -176,4 +176,4 @@ export {
176
176
  ConfirmModal,
177
177
  useConfirmModal
178
178
  };
179
- //# sourceMappingURL=chunk-CMKBUSGN.js.map
179
+ //# sourceMappingURL=chunk-ILZKQP6R.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/context/confirm-modal.tsx"],"sourcesContent":["'use client'\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n type MouseEvent,\n type PropsWithChildren,\n} from 'react'\nimport { Portal } from '../components/Portal'\nimport { Button } from '../components/Button'\nimport { css } from '@cerberus/styled-system/css'\nimport { hstack } from '@cerberus/styled-system/patterns'\nimport { $cerberusIcons } from '../config/defineIcons'\nimport { trapFocus } from '../aria-helpers/trap-focus.aria'\nimport { Show } from '../components/Show'\nimport { Modal } from '../components/Modal'\nimport { useModal } from '../hooks/useModal'\nimport { ModalHeader } from '../components/ModalHeader'\nimport { ModalHeading } from '../components/ModalHeading'\nimport { ModalDescription } from '../components/ModalDescription'\nimport { Avatar } from '../components/Avatar'\n\n/**\n * This module provides a context and hook for the confirm modal.\n * @module\n */\n\nexport interface ShowConfirmModalOptions {\n /**\n * The kind of confirm modal to show.\n * @default 'non-destructive'\n */\n kind?: 'destructive' | 'non-destructive'\n /**\n * The heading of the confirm modal.\n */\n heading: string\n /**\n * The description of the confirm modal.\n */\n description?: string\n /**\n * The text for the action button.\n */\n actionText: string\n /**\n * The text for the cancel button.\n */\n cancelText: string\n}\nexport type ShowResult =\n | ((value: boolean | PromiseLike<boolean>) => void)\n | null\n\nexport interface ConfirmModalValue {\n show: (options: ShowConfirmModalOptions) => Promise<boolean>\n}\n\nconst ConfirmModalContext = createContext<ConfirmModalValue | null>(null)\n\nexport interface ConfirmModalProviderProps {}\n\n/**\n * Provides a confirm modal to the app.\n * @see https://cerberus.digitalu.design/react/confirm-modal\n * @example\n * ```tsx\n * // Wrap the Provider around the root of the feature.\n * <ConfirmModal>\n * <SomeFeatureSection />\n * </ConfirmModal>\n *\n * // Use the hook to show the confirm modal.\n * const confirm = useConfirmModal()\n *\n * const handleClick = useCallback(async () => {\n * const userConsent = await confirm.show({\n * heading: 'Add new payment method?',\n * description:\n * 'This will add a new payment method to your account to be billed for future purchases.',\n * actionText: 'Yes, add payment method',\n * cancelText: 'No, cancel',\n * })\n * setConsent(userConsent)\n * }, [confirm])\n * ```\n */\nexport function ConfirmModal(\n props: PropsWithChildren<ConfirmModalProviderProps>,\n) {\n const { modalRef, show, close } = useModal()\n const resolveRef = useRef<ShowResult>(null)\n const [content, setContent] = useState<ShowConfirmModalOptions | null>(null)\n const focusTrap = trapFocus(modalRef)\n const ConfirmIcon = $cerberusIcons.confirmModal\n\n const palette = useMemo(\n () => (content?.kind === 'destructive' ? 'danger' : 'action'),\n [content],\n )\n\n const handleChoice = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n const target = e.currentTarget as HTMLButtonElement\n if (target.value === 'true') {\n resolveRef.current?.(true)\n }\n resolveRef.current?.(false)\n close()\n },\n [close],\n )\n\n const handleShow = useCallback(\n (options: ShowConfirmModalOptions) => {\n return new Promise<boolean>((resolve) => {\n setContent({ ...options, kind: options.kind || 'non-destructive' })\n show()\n resolveRef.current = resolve\n })\n },\n [show],\n )\n\n const value = useMemo(\n () => ({\n show: handleShow,\n }),\n [handleShow],\n )\n\n return (\n <ConfirmModalContext.Provider value={value}>\n {props.children}\n\n <Portal>\n <Modal onKeyDown={focusTrap} ref={modalRef}>\n <ModalHeader>\n <div\n className={hstack({\n justify: 'center',\n w: 'full',\n })}\n >\n <Show\n when={palette === 'danger'}\n fallback={\n <Avatar\n ariaLabel=\"\"\n gradient=\"charon-light\"\n icon={<ConfirmIcon size={24} />}\n src=\"\"\n />\n }\n >\n <Avatar\n ariaLabel=\"\"\n gradient=\"hades-dark\"\n icon={<ConfirmIcon size={24} />}\n src=\"\"\n />\n </Show>\n </div>\n <ModalHeading>{content?.heading}</ModalHeading>\n <ModalDescription>{content?.description}</ModalDescription>\n </ModalHeader>\n\n <div\n className={hstack({\n gap: '4',\n })}\n >\n <Button\n autoFocus\n className={css({\n w: '1/2',\n })}\n name=\"confirm\"\n onClick={handleChoice}\n palette={palette}\n value=\"true\"\n >\n {content?.actionText}\n </Button>\n <Button\n className={css({\n w: '1/2',\n })}\n name=\"cancel\"\n onClick={handleChoice}\n usage=\"outlined\"\n value=\"false\"\n >\n {content?.cancelText}\n </Button>\n </div>\n </Modal>\n </Portal>\n </ConfirmModalContext.Provider>\n )\n}\n\nexport function useConfirmModal(): ConfirmModalValue {\n const context = useContext(ConfirmModalContext)\n if (context === null) {\n throw new Error(\n 'useConfirmModal must be used within a ConfirmModal Provider',\n )\n }\n return context\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useTabsContext
3
- } from "./chunk-KF24CS4S.js";
3
+ } from "./chunk-RIFQSCHT.js";
4
4
 
5
5
  // src/aria-helpers/tabs.aria.ts
6
6
  import { useEffect, useState } from "react";
@@ -61,4 +61,4 @@ function useTabsKeyboardNavigation() {
61
61
  export {
62
62
  useTabsKeyboardNavigation
63
63
  };
64
- //# sourceMappingURL=chunk-GKUDLVOV.js.map
64
+ //# sourceMappingURL=chunk-ITOIXNJS.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Avatar
3
- } from "./chunk-UN3OAW56.js";
3
+ } from "./chunk-477G5ZEL.js";
4
4
  import {
5
5
  Show
6
- } from "./chunk-4O4QFF4S.js";
6
+ } from "./chunk-BUVVRQLZ.js";
7
7
  import {
8
8
  $cerberusIcons
9
9
  } from "./chunk-NBG2OSYI.js";
@@ -71,4 +71,4 @@ function FileUploader(props) {
71
71
  export {
72
72
  FileUploader
73
73
  };
74
- //# sourceMappingURL=chunk-BTEEBIVN.js.map
74
+ //# sourceMappingURL=chunk-JCGWTIR4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/FileUploader.tsx"],"sourcesContent":["'use client'\n\nimport { cx } from '@cerberus/styled-system/css'\nimport { vstack } from '@cerberus/styled-system/patterns'\nimport { type InputHTMLAttributes } from 'react'\nimport { Show } from './Show'\nimport { fileUploader } from '@cerberus/styled-system/recipes'\nimport { $cerberusIcons } from '../config/defineIcons'\nimport { Avatar } from './Avatar'\n\nexport interface FileUploaderProps\n extends InputHTMLAttributes<HTMLInputElement> {\n /**\n * The optional heading to display in the FileUploader component.\n */\n heading?: string\n /**\n * The name of the file input element.\n */\n name: string\n}\n\n/**\n * A component that allows the user to upload files.\n * @see https://cerberus.digitalu.design/react/file-uploader\n */\nexport function FileUploader(props: FileUploaderProps) {\n const styles = fileUploader()\n const Icon = $cerberusIcons.fileUploader\n\n return (\n <div\n className={cx(\n vstack({\n justify: 'center',\n }),\n styles.container,\n )}\n >\n <div className={styles.icon}>\n <Avatar\n gradient=\"charon-light\"\n ariaLabel=\"\"\n icon={<Icon />}\n size=\"md\"\n src=\"\"\n />\n </div>\n\n <label\n className={cx(\n vstack({\n justify: 'center',\n }),\n styles.label,\n )}\n htmlFor={props.name}\n >\n <Show when={Boolean(props.heading)}>\n <p className={styles.heading}>{props.heading}</p>\n </Show>\n Import {props.accept?.replace(',', ', ')} files\n <p className={styles.description}>Click to select files</p>\n <input\n {...props}\n className={cx(props.className, styles.input)}\n type=\"file\"\n />\n </label>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;AAEA,SAAS,UAAU;AACnB,SAAS,cAAc;AAGvB,SAAS,oBAAoB;AAqCb,cAMV,YANU;AAjBT,SAAS,aAAa,OAA0B;AACrD,QAAM,SAAS,aAAa;AAC5B,QAAM,OAAO,eAAe;AAE5B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,OAAO;AAAA,UACL,SAAS;AAAA,QACX,CAAC;AAAA,QACD,OAAO;AAAA,MACT;AAAA,MAEA;AAAA,4BAAC,SAAI,WAAW,OAAO,MACrB;AAAA,UAAC;AAAA;AAAA,YACC,UAAS;AAAA,YACT,WAAU;AAAA,YACV,MAAM,oBAAC,QAAK;AAAA,YACZ,MAAK;AAAA,YACL,KAAI;AAAA;AAAA,QACN,GACF;AAAA,QAEA;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT,OAAO;AAAA,gBACL,SAAS;AAAA,cACX,CAAC;AAAA,cACD,OAAO;AAAA,YACT;AAAA,YACA,SAAS,MAAM;AAAA,YAEf;AAAA,kCAAC,QAAK,MAAM,QAAQ,MAAM,OAAO,GAC/B,8BAAC,OAAE,WAAW,OAAO,SAAU,gBAAM,SAAQ,GAC/C;AAAA,cAAO;AAAA,cACC,MAAM,QAAQ,QAAQ,KAAK,IAAI;AAAA,cAAE;AAAA,cACzC,oBAAC,OAAE,WAAW,OAAO,aAAa,mCAAqB;AAAA,cACvD;AAAA,gBAAC;AAAA;AAAA,kBACE,GAAG;AAAA,kBACJ,WAAW,GAAG,MAAM,WAAW,OAAO,KAAK;AAAA,kBAC3C,MAAK;AAAA;AAAA,cACP;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useFieldContext
3
- } from "./chunk-ZAU4JVLL.js";
3
+ } from "./chunk-UZDVOIW5.js";
4
4
 
5
5
  // src/components/Textarea.tsx
6
6
  import { css, cx } from "@cerberus/styled-system/css";
@@ -33,4 +33,4 @@ function Textarea(props) {
33
33
  export {
34
34
  Textarea
35
35
  };
36
- //# sourceMappingURL=chunk-TCO46FK7.js.map
36
+ //# sourceMappingURL=chunk-JIJM6JFJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Textarea.tsx"],"sourcesContent":["'use client'\n\nimport type { TextareaHTMLAttributes } from 'react'\nimport { css, cx } from '@cerberus/styled-system/css'\nimport { input, type InputVariantProps } from '@cerberus/styled-system/recipes'\nimport { useFieldContext } from '../context/field'\n\n/**\n * This module contains the Textarea component.\n * @module\n */\n\nexport interface TextareaBaseProps\n extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'id'> {\n /**\n * The ID of the FieldMessage that describes the textarea.\n */\n describedBy?: string\n /**\n * The unique id of the textarea.\n */\n id: string\n}\nexport type TextareaProps = InputVariantProps & TextareaBaseProps\n\n/**\n * A component that allows the user to input large blocks of text.\n * @see https://cerberus.digitalu.design/react/textarea\n */\nexport function Textarea(props: TextareaProps): JSX.Element {\n const { describedBy, ...nativeProps } = props\n const { invalid, ...fieldState } = useFieldContext()\n\n return (\n <textarea\n {...nativeProps}\n {...fieldState}\n {...(describedBy && { 'aria-describedby': describedBy })}\n {...(invalid && { 'aria-invalid': true })}\n className={cx(\n props.className,\n input().input,\n css({\n pxi: '2',\n py: '2',\n resize: 'vertical',\n }),\n )}\n rows={4}\n />\n )\n}\n"],"mappings":";;;;;AAGA,SAAS,KAAK,UAAU;AACxB,SAAS,aAAqC;AA8B1C;AALG,SAAS,SAAS,OAAmC;AAC1D,QAAM,EAAE,aAAa,GAAG,YAAY,IAAI;AACxC,QAAM,EAAE,SAAS,GAAG,WAAW,IAAI,gBAAgB;AAEnD,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAI,eAAe,EAAE,oBAAoB,YAAY;AAAA,MACrD,GAAI,WAAW,EAAE,gBAAgB,KAAK;AAAA,MACvC,WAAW;AAAA,QACT,MAAM;AAAA,QACN,MAAM,EAAE;AAAA,QACR,IAAI;AAAA,UACF,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAAA,MACA,MAAM;AAAA;AAAA,EACR;AAEJ;","names":[]}
@@ -1,10 +1,12 @@
1
1
  import {
2
2
  useFieldContext
3
- } from "./chunk-ZAU4JVLL.js";
3
+ } from "./chunk-UZDVOIW5.js";
4
4
 
5
5
  // src/components/FieldMessage.tsx
6
6
  import { cx } from "@cerberus/styled-system/css";
7
- import { fieldMessage } from "@cerberus/styled-system/recipes";
7
+ import {
8
+ fieldMessage
9
+ } from "@cerberus/styled-system/recipes";
8
10
  import { jsx } from "react/jsx-runtime";
9
11
  function FieldMessage(props) {
10
12
  const { invalid } = useFieldContext();
@@ -21,4 +23,4 @@ function FieldMessage(props) {
21
23
  export {
22
24
  FieldMessage
23
25
  };
24
- //# sourceMappingURL=chunk-VGHVH2T3.js.map
26
+ //# sourceMappingURL=chunk-JWIJHSI6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/FieldMessage.tsx"],"sourcesContent":["'use client'\n\nimport type { HTMLAttributes } from 'react'\nimport { cx } from '@cerberus/styled-system/css'\nimport {\n fieldMessage,\n type FieldMessageVariantProps,\n} from '@cerberus/styled-system/recipes'\nimport { useFieldContext } from '../context/field'\n\n/**\n * This module contains the FieldMessage component.\n * @module\n */\nexport interface FieldMessageBaseProps\n extends HTMLAttributes<HTMLParagraphElement> {\n /**\n * The id of the FieldMessage element describing the field. Required for accessibility. It is considered best practice to use the `help` or `error` prefix to help screen readers identify the type of message.\n *\n * @example For help messages: `help:field_id`\n * @example For error messages: `error:field_id`\n */\n id: string\n}\nexport type FieldMessageProps = FieldMessageBaseProps & FieldMessageVariantProps\n\n/**\n * A component that provides feedback about the field.\n * @see https://cerberus.digitalu.design/react/field-message\n * @example\n * ```tsx\n * <Field>\n * <Label htmlFor=\"first_name\">First Name</Label>\n * <Input aria-describedBy=\"help:first_name\" id=\"first_name\" type=\"text\" />\n * <FieldMessage id=\"help:first_name\">\n * This will only be used in your account information.\n * </FieldMessage>\n * </Field>\n * ```\n */\nexport function FieldMessage(props: FieldMessageProps) {\n const { invalid } = useFieldContext()\n return (\n <small\n {...props}\n {...(invalid && { 'aria-invalid': true })}\n className={cx(props.className, fieldMessage())}\n />\n )\n}\n"],"mappings":";;;;;AAGA,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,OAEK;AAoCH;AAHG,SAAS,aAAa,OAA0B;AACrD,QAAM,EAAE,QAAQ,IAAI,gBAAgB;AACpC,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACH,GAAI,WAAW,EAAE,gBAAgB,KAAK;AAAA,MACvC,WAAW,GAAG,MAAM,WAAW,aAAa,CAAC;AAAA;AAAA,EAC/C;AAEJ;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Show
3
- } from "./chunk-4O4QFF4S.js";
3
+ } from "./chunk-BUVVRQLZ.js";
4
4
 
5
5
  // src/components/NavMenuLink.tsx
6
6
  import { css, cx } from "@cerberus/styled-system/css";
@@ -45,4 +45,4 @@ function NavMenuLink(props) {
45
45
  export {
46
46
  NavMenuLink
47
47
  };
48
- //# sourceMappingURL=chunk-6DIGPXAD.js.map
48
+ //# sourceMappingURL=chunk-KBBASJIY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/NavMenuLink.tsx"],"sourcesContent":["import type { AnchorHTMLAttributes, ElementType } from 'react'\nimport { css, cx } from '@cerberus/styled-system/css'\nimport { Show } from './Show'\n\n/**\n * This module contains the NavMenuLink component.\n * @module\n */\n\nexport interface NavMenuLinkProps\n extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * The element type to render as. Recommended to use for Next apps with the\n * `Link` component.\n */\n as?: ElementType\n}\n\n/**\n * The NavMenuLink component is a link element that is used within the NavMenu.\n * @see https://cerberus.digitalu.design/react/nav-menu\n * @example\n * ```tsx\n * <NavMenu>\n * <NavMenuList id=\"nav-menu-list\" position=\"bottom\">\n * <NavMenuLink href=\"/home\">Home</NavMenuLink>\n * <NavMenuLink href=\"/about\">About</NavMenuLink>\n * </NavMenuList>\n * </NavMenu>\n * ```\n */\nexport function NavMenuLink(props: NavMenuLinkProps): JSX.Element {\n const { as, ...nativeProps } = props\n const hasAs = Boolean(as)\n const AsSub: ElementType = as!\n\n return (\n <li\n className={css({\n w: 'full',\n })}\n >\n <Show\n when={hasAs}\n fallback={\n <a\n {...nativeProps}\n className={cx(\n nativeProps.className,\n css({\n color: 'action.navigation.initial',\n textStyle: 'link',\n _hover: {\n color: 'action.navigation.hover',\n },\n }),\n )}\n />\n }\n >\n {hasAs && <AsSub {...nativeProps} />}\n </Show>\n </li>\n )\n}\n"],"mappings":";;;;;AACA,SAAS,KAAK,UAAU;AA4Cd;AAdH,SAAS,YAAY,OAAsC;AAChE,QAAM,EAAE,IAAI,GAAG,YAAY,IAAI;AAC/B,QAAM,QAAQ,QAAQ,EAAE;AACxB,QAAM,QAAqB;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,IAAI;AAAA,QACb,GAAG;AAAA,MACL,CAAC;AAAA,MAED;AAAA,QAAC;AAAA;AAAA,UACC,MAAM;AAAA,UACN,UACE;AAAA,YAAC;AAAA;AAAA,cACE,GAAG;AAAA,cACJ,WAAW;AAAA,gBACT,YAAY;AAAA,gBACZ,IAAI;AAAA,kBACF,OAAO;AAAA,kBACP,WAAW;AAAA,kBACX,QAAQ;AAAA,oBACN,OAAO;AAAA,kBACT;AAAA,gBACF,CAAC;AAAA,cACH;AAAA;AAAA,UACF;AAAA,UAGD,mBAAS,oBAAC,SAAO,GAAG,aAAa;AAAA;AAAA,MACpC;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useTabsKeyboardNavigation
3
- } from "./chunk-GKUDLVOV.js";
3
+ } from "./chunk-ITOIXNJS.js";
4
4
  import {
5
5
  useTabsContext
6
- } from "./chunk-KF24CS4S.js";
6
+ } from "./chunk-RIFQSCHT.js";
7
7
 
8
8
  // src/components/Tab.tsx
9
9
  import {
@@ -43,4 +43,4 @@ function Tab(props) {
43
43
  export {
44
44
  Tab
45
45
  };
46
- //# sourceMappingURL=chunk-SONHHNYQ.js.map
46
+ //# sourceMappingURL=chunk-LFWAJ5DX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Tab.tsx"],"sourcesContent":["'use client'\n\nimport {\n useMemo,\n useTransition,\n type ButtonHTMLAttributes,\n type MouseEvent,\n} from 'react'\nimport { useTabsContext } from '../context/tabs'\nimport { cx } from '@cerberus/styled-system/css'\nimport { useTabsKeyboardNavigation } from '../aria-helpers/tabs.aria'\n\n/**\n * This module provides a Tab component.\n * @module\n */\n\nexport interface TabProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * The id of the tab that will be tracked as the active tab and used for aria\n * attributes.\n */\n value: string\n}\n\n/**\n * The Tab component provides a tab element to be used in a TabList.\n * @definition [ARIA Target Size](https://www.w3.org/WAI/WCAG21/Understanding/target-size.html#:~:text=Understanding%20SC%202.5.,%3ATarget%20Size%20(Level%20AAA)&text=The%20size%20of%20the%20target,Equivalent)\n * @see https://cerberus.digitalu.design/react/tabs\n * @memberof module:Tabs\n * @example\n * ```tsx\n * <Tabs>\n * <TabList description=\"Profile settings\">\n * <Tab value=\"overview\">Overview</Tab>\n * </TabList>\n * <TabPanel tab=\"overview\">...</TabPanel>\n * </Tabs>\n * ```\n */\nexport function Tab(props: TabProps) {\n const { value, ...nativeProps } = props\n const { active, onTabUpdate, styles } = useTabsContext()\n const [isPending, startTransition] = useTransition()\n const { ref } = useTabsKeyboardNavigation()\n const isActive = useMemo(() => active === value, [active, value])\n\n function handleClick(e: MouseEvent<HTMLButtonElement>) {\n props.onClick?.(e)\n startTransition(() => onTabUpdate(e.currentTarget.value))\n }\n\n return (\n <button\n {...nativeProps}\n {...(!isActive && { tabIndex: -1 })}\n aria-controls={`panel:${value}`}\n aria-busy={isPending}\n aria-selected={isActive}\n id={value}\n className={cx(nativeProps.className, styles.tab)}\n onClick={handleClick}\n role=\"tab\"\n ref={ref}\n value={value}\n />\n )\n}\n"],"mappings":";;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAEP,SAAS,UAAU;AA4Cf;AAbG,SAAS,IAAI,OAAiB;AACnC,QAAM,EAAE,OAAO,GAAG,YAAY,IAAI;AAClC,QAAM,EAAE,QAAQ,aAAa,OAAO,IAAI,eAAe;AACvD,QAAM,CAAC,WAAW,eAAe,IAAI,cAAc;AACnD,QAAM,EAAE,IAAI,IAAI,0BAA0B;AAC1C,QAAM,WAAW,QAAQ,MAAM,WAAW,OAAO,CAAC,QAAQ,KAAK,CAAC;AAEhE,WAAS,YAAY,GAAkC;AACrD,UAAM,UAAU,CAAC;AACjB,oBAAgB,MAAM,YAAY,EAAE,cAAc,KAAK,CAAC;AAAA,EAC1D;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACH,GAAI,CAAC,YAAY,EAAE,UAAU,GAAG;AAAA,MACjC,iBAAe,SAAS,KAAK;AAAA,MAC7B,aAAW;AAAA,MACX,iBAAe;AAAA,MACf,IAAI;AAAA,MACJ,WAAW,GAAG,YAAY,WAAW,OAAO,GAAG;AAAA,MAC/C,SAAS;AAAA,MACT,MAAK;AAAA,MACL;AAAA,MACA;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useFieldContext
3
- } from "./chunk-ZAU4JVLL.js";
3
+ } from "./chunk-UZDVOIW5.js";
4
4
 
5
5
  // src/components/Radio.tsx
6
6
  import { cx } from "@cerberus/styled-system/css";
@@ -30,4 +30,4 @@ function Radio(props) {
30
30
  export {
31
31
  Radio
32
32
  };
33
- //# sourceMappingURL=chunk-PH64POOB.js.map
33
+ //# sourceMappingURL=chunk-LJYCFFX7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Radio.tsx"],"sourcesContent":["'use client'\n\nimport { cx } from '@cerberus/styled-system/css'\nimport { hstack } from '@cerberus/styled-system/patterns'\nimport { radio } from '@cerberus/styled-system/recipes'\nimport type { RecipeVariantProps } from '@cerberus/styled-system/types'\nimport type { InputHTMLAttributes, PropsWithChildren } from 'react'\nimport { useFieldContext } from '../context/field'\n\n/**\n * This module contains the Radio component.\n * @module\n */\n\nexport type RadioRecipe = RecipeVariantProps<typeof radio>\nexport interface RadioBaseProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /**\n * A unique identifier for the radio button. Required for accessibility.\n */\n id: string\n}\nexport type RadioProps = RadioBaseProps & RadioRecipe\n\n/**\n * The Radio component is used to allow users to select a single option from a list of options.\n * @see https://cerberus.digitalu.design/react/radio\n * @memberof module:Field\n * @example\n * ```tsx\n * <Field>\n * <fieldset name=\"fruit\">\n * <Radio id=\"radio-1\" name=\"fruit\" value=\"1\">\n * Option 1\n * </Radio>\n * <Radio id=\"radio-2\" name=\"fruit\" value=\"2\">\n * Option 2\n * </Radio>\n * <Radio id=\"radio-3\" name=\"fruit\" value=\"3\">\n * Option 3\n * </Radio>\n * </fieldset>\n * </Field>\n * ```\n */\nexport function Radio(props: PropsWithChildren<RadioProps>) {\n const { children, size, ...nativeProps } = props\n const { invalid, ...state } = useFieldContext()\n const styles = radio({ size })\n\n return (\n <div className={cx('group', hstack(), styles.root)} tabIndex={0}>\n <input\n {...nativeProps}\n {...state}\n {...(invalid && { 'aria-invalid': true })}\n className={cx(nativeProps.className, styles.input)}\n tabIndex={-1}\n type=\"radio\"\n />\n {children}\n </div>\n )\n}\n"],"mappings":";;;;;AAEA,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB,SAAS,aAAa;AA+ClB,SACE,KADF;AANG,SAAS,MAAM,OAAsC;AAC1D,QAAM,EAAE,UAAU,MAAM,GAAG,YAAY,IAAI;AAC3C,QAAM,EAAE,SAAS,GAAG,MAAM,IAAI,gBAAgB;AAC9C,QAAM,SAAS,MAAM,EAAE,KAAK,CAAC;AAE7B,SACE,qBAAC,SAAI,WAAW,GAAG,SAAS,OAAO,GAAG,OAAO,IAAI,GAAG,UAAU,GAC5D;AAAA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAI,WAAW,EAAE,gBAAgB,KAAK;AAAA,QACvC,WAAW,GAAG,YAAY,WAAW,OAAO,KAAK;AAAA,QACjD,UAAU;AAAA,QACV,MAAK;AAAA;AAAA,IACP;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  Portal
3
- } from "./chunk-4CAT3FHV.js";
3
+ } from "./chunk-2VX52EEJ.js";
4
4
  import {
5
5
  Notification
6
- } from "./chunk-QZ6NS6VN.js";
6
+ } from "./chunk-VG46RHBJ.js";
7
7
  import {
8
8
  NotificationDescription
9
- } from "./chunk-HW76XVA3.js";
9
+ } from "./chunk-XEW6TJJ4.js";
10
10
  import {
11
11
  NotificationHeading
12
- } from "./chunk-3C2DJSEE.js";
12
+ } from "./chunk-SXIXDXG3.js";
13
13
  import {
14
14
  Button
15
- } from "./chunk-6F34A7NZ.js";
15
+ } from "./chunk-EXGKZGML.js";
16
16
  import {
17
17
  Show
18
- } from "./chunk-4O4QFF4S.js";
18
+ } from "./chunk-BUVVRQLZ.js";
19
19
 
20
20
  // src/context/notification-center.tsx
21
21
  import {
@@ -159,4 +159,4 @@ export {
159
159
  NotificationCenter,
160
160
  useNotificationCenter
161
161
  };
162
- //# sourceMappingURL=chunk-AEDGCR25.js.map
162
+ //# sourceMappingURL=chunk-NUGDTZCL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/context/notification-center.tsx"],"sourcesContent":["'use client'\n\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n type MouseEvent,\n type PropsWithChildren,\n type ReactNode,\n} from 'react'\nimport { Show } from '../components/Show'\nimport { NotificationHeading } from '../components/NotificationHeading'\nimport { NotificationDescription } from '../components/NotificationDescription'\nimport { Notification } from '../components/Notification'\nimport { animateIn, vstack } from '@cerberus/styled-system/patterns'\nimport { Portal, type PortalProps } from '../components/Portal'\nimport { notification } from '@cerberus/styled-system/recipes'\nimport { Button } from '../components/Button'\nimport { cx } from '@cerberus/styled-system/css'\n\n/**\n * This module provides a context and hook for notifications.\n * @module\n */\n\nexport interface NotifyOptions {\n /**\n * The palette of the notification.\n * @default 'info'\n */\n palette: 'info' | 'success' | 'warning' | 'danger'\n /**\n * The heading of the notification.\n */\n heading: string\n /**\n * The unique id of the notification.\n */\n id?: string\n /**\n * The description of the notification.\n */\n description?: ReactNode\n /**\n * The action to take when the notification is closed\n */\n onClose?: () => void\n}\n\nexport interface NotificationsValue {\n notify: (options: NotifyOptions) => void\n}\n\nconst NotificationsContext = createContext<NotificationsValue | null>(null)\n\nexport interface NotificationsProviderProps extends PortalProps {}\n\n/**\n * Provides a notification center to the app.\n * @see https://cerberus.digitalu.design/react/notification\n * @example\n * ```tsx\n * // Wrap the Provider around the root of the feature.\n * <Notifications>\n * <SomeFeatureSection />\n * </Notifications>\n *\n * // Use the hook to show a notification.\n * const notify = useNotifications()\n *\n * const handleClick = useCallback(() => {\n * notify({\n * palette: 'info',\n * heading: 'New feature!',\n * description: 'We have added a new feature to the app.',\n * })\n * }, [notify])\n * ```\n */\nexport function NotificationCenter(\n props: PropsWithChildren<NotificationsProviderProps>,\n) {\n const [activeNotifications, setActiveNotifications] = useState<\n NotifyOptions[]\n >([])\n const styles = notification()\n\n const handleNotify = useCallback((options: NotifyOptions) => {\n setActiveNotifications((prev) => {\n const id = `${options.palette}:${prev.length + 1}`\n return [...prev, { ...options, id }]\n })\n }, [])\n\n const handleClose = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n const target = e.currentTarget as HTMLButtonElement\n setActiveNotifications((prev) => {\n const item = prev.find((option) => option.id === target.value)\n if (item?.onClose) item.onClose()\n return prev.filter((option) => option.id !== target.value)\n })\n }, [])\n\n const handleCloseAll = useCallback(() => {\n setActiveNotifications((prev) => {\n prev.forEach((item) => {\n if (item.onClose) item.onClose()\n })\n return []\n })\n }, [])\n\n const value = useMemo(\n () => ({\n notify: handleNotify,\n }),\n [handleNotify],\n )\n\n // For some reason, the vstack pattern alignItems is not registering here.\n // So we are forcing it with the style prop.\n\n return (\n <NotificationsContext.Provider value={value}>\n {props.children}\n\n <Show when={activeNotifications.length > 0}>\n <Portal container={props.container}>\n <div className={styles.center}>\n <Show when={activeNotifications.length >= 4}>\n <Button\n className={cx(styles.closeAll, animateIn())}\n onClick={handleCloseAll}\n palette=\"action\"\n shape=\"rounded\"\n size=\"sm\"\n usage=\"text\"\n >\n Close all\n </Button>\n </Show>\n <div\n className={vstack({\n alignItems: 'flex-end',\n gap: '4',\n })}\n style={{\n alignItems: 'flex-end',\n }}\n >\n {activeNotifications.map((option) => (\n <MatchNotification\n key={option.id}\n {...option}\n onClose={handleClose}\n />\n ))}\n </div>\n </div>\n </Portal>\n </Show>\n </NotificationsContext.Provider>\n )\n}\n\ninterface MatchNotificationProps extends Omit<NotifyOptions, 'onClose'> {\n onClose: (e: MouseEvent<HTMLButtonElement>) => void\n key: string | undefined\n}\n\nfunction MatchNotification(props: MatchNotificationProps) {\n const { palette, id, onClose, heading, description } = props\n\n switch (palette) {\n case 'success':\n return (\n <Notification\n id={id!}\n key={id}\n onClose={onClose}\n open\n palette=\"success\"\n >\n <NotificationHeading palette=\"success\">{heading}</NotificationHeading>\n <NotificationDescription palette=\"success\">\n {description}\n </NotificationDescription>\n </Notification>\n )\n\n case 'warning':\n return (\n <Notification\n id={id!}\n key={id}\n onClose={onClose}\n open\n palette=\"warning\"\n >\n <NotificationHeading palette=\"warning\">{heading}</NotificationHeading>\n <NotificationDescription palette=\"warning\">\n {description}\n </NotificationDescription>\n </Notification>\n )\n\n case 'danger':\n return (\n <Notification id={id!} key={id} onClose={onClose} open palette=\"danger\">\n <NotificationHeading palette=\"danger\">{heading}</NotificationHeading>\n <NotificationDescription palette=\"danger\">\n {description}\n </NotificationDescription>\n </Notification>\n )\n\n case 'info':\n default:\n return (\n <Notification id={id!} key={id} onClose={onClose} open palette=\"info\">\n <NotificationHeading palette=\"info\">{heading}</NotificationHeading>\n <NotificationDescription palette=\"info\">\n {description}\n </NotificationDescription>\n </Notification>\n )\n }\n}\n\n/**\n * The hook to use the NotificationCenter.\n * @returns The notify method to trigger a notification.\n * @example\n * ```tsx\n * const {notify} = useNotificationCenter()\n * notify({\n * palette: 'info',\n * heading: 'New feature',\n * description: 'We have added a new feature to the app.',\n * })\n * ```\n */\nexport function useNotificationCenter(): NotificationsValue {\n const context = useContext(NotificationsContext)\n if (!context) {\n throw new Error(\n 'useNotificationCenter must be used within a NotificationsProvider',\n )\n }\n return context\n}\n"],"mappings":"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","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useFieldContext
3
- } from "./chunk-ZAU4JVLL.js";
3
+ } from "./chunk-UZDVOIW5.js";
4
4
  import {
5
5
  Show
6
- } from "./chunk-4O4QFF4S.js";
6
+ } from "./chunk-BUVVRQLZ.js";
7
7
  import {
8
8
  $cerberusIcons
9
9
  } from "./chunk-NBG2OSYI.js";
@@ -65,4 +65,4 @@ export {
65
65
  Select,
66
66
  Option
67
67
  };
68
- //# sourceMappingURL=chunk-XPVDT4VF.js.map
68
+ //# sourceMappingURL=chunk-O6JYYVO7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Select.tsx"],"sourcesContent":["'use client'\n\nimport { cx } from '@cerberus/styled-system/css'\nimport { hstack } from '@cerberus/styled-system/patterns'\nimport {\n select,\n type SelectVariantProps,\n} from '@cerberus/styled-system/recipes'\nimport type { OptionHTMLAttributes, SelectHTMLAttributes } from 'react'\nimport { $cerberusIcons } from '../config/defineIcons'\nimport { useFieldContext } from '../context/field'\nimport { Show } from './Show'\n\n/**\n * This module contains the select components.\n * @module\n */\n\nexport type SelectProps = Omit<\n SelectHTMLAttributes<HTMLSelectElement>,\n 'size'\n> &\n SelectVariantProps & {\n /**\n * The unique id of the select element. Required for accessibility.\n */\n id: string\n /**\n * The id of the FieldMessage that describes the select element.\n */\n describedBy?: string\n }\n\n/**\n * Used to allow users to select a single option from a list of options.\n * @see https://cerberus.digitalu.design/react/select\n * @memberof module:Field\n * @example\n * ```tsx\n * <Field>\n * <Select describedby=\"help:fruit\" id=\"fruit\">\n * <Option value=\"\">Choose option</Option>\n * <Option value=\"one\">Option 1</Option>\n * <Option value=\"two\">Option 2</Option>\n * <Option value=\"three\">Option 3</Option>\n * </Select>\n * </Field>\n * ```\n */\nexport function Select(props: SelectProps) {\n const { describedBy, size, ...nativeProps } = props\n const { invalid, ...fieldStates } = useFieldContext()\n const { invalid: InvalidIcon, selectArrow: SelectArrow } = $cerberusIcons\n const styles = select({\n size,\n })\n\n return (\n <div className={styles.root}>\n <select\n {...nativeProps}\n {...fieldStates}\n {...(describedBy && { 'aria-describedby': describedBy })}\n {...(invalid && { 'aria-invalid': true })}\n className={styles.input}\n />\n <span\n className={cx(\n styles.iconStack,\n hstack({\n gap: '2',\n }),\n )}\n >\n <Show when={invalid}>\n <span\n {...(invalid && { 'data-invalid': true })}\n className={styles.stateIcon}\n >\n <InvalidIcon />\n </span>\n </Show>\n <span className={styles.arrowIcon}>\n <SelectArrow />\n </span>\n </span>\n </div>\n )\n}\n\n// We only export this component for consistency with the other components\n\nexport type OptionProps = OptionHTMLAttributes<HTMLOptionElement>\n\n/**\n * Option component\n * props: OptionHTMLAttributes<HTMLOptionElement>\n * @example\n * ```tsx\n * <Option value=\"one\">Option 1</Option>\n * ```\n */\nexport function Option(props: OptionProps) {\n return <option {...props} />\n}\n"],"mappings":";;;;;;;;;;;AAEA,SAAS,UAAU;AACnB,SAAS,cAAc;AACvB;AAAA,EACE;AAAA,OAEK;AAoDD,cAOA,YAPA;AAVC,SAAS,OAAO,OAAoB;AACzC,QAAM,EAAE,aAAa,MAAM,GAAG,YAAY,IAAI;AAC9C,QAAM,EAAE,SAAS,GAAG,YAAY,IAAI,gBAAgB;AACpD,QAAM,EAAE,SAAS,aAAa,aAAa,YAAY,IAAI;AAC3D,QAAM,SAAS,OAAO;AAAA,IACpB;AAAA,EACF,CAAC;AAED,SACE,qBAAC,SAAI,WAAW,OAAO,MACrB;AAAA;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACH,GAAG;AAAA,QACH,GAAI,eAAe,EAAE,oBAAoB,YAAY;AAAA,QACrD,GAAI,WAAW,EAAE,gBAAgB,KAAK;AAAA,QACvC,WAAW,OAAO;AAAA;AAAA,IACpB;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT,OAAO;AAAA,UACP,OAAO;AAAA,YACL,KAAK;AAAA,UACP,CAAC;AAAA,QACH;AAAA,QAEA;AAAA,8BAAC,QAAK,MAAM,SACV;AAAA,YAAC;AAAA;AAAA,cACE,GAAI,WAAW,EAAE,gBAAgB,KAAK;AAAA,cACvC,WAAW,OAAO;AAAA,cAElB,8BAAC,eAAY;AAAA;AAAA,UACf,GACF;AAAA,UACA,oBAAC,UAAK,WAAW,OAAO,WACtB,8BAAC,eAAY,GACf;AAAA;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAcO,SAAS,OAAO,OAAoB;AACzC,SAAO,oBAAC,YAAQ,GAAG,OAAO;AAC5B;","names":[]}
@@ -48,4 +48,4 @@ export {
48
48
  NavMenu,
49
49
  useNavMenuContext
50
50
  };
51
- //# sourceMappingURL=chunk-KJUCHZHV.js.map
51
+ //# sourceMappingURL=chunk-O75QAT4Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/context/navMenu.tsx"],"sourcesContent":["'use client'\n\nimport { css } from '@cerberus/styled-system/css'\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n type PropsWithChildren,\n type RefObject,\n} from 'react'\n\n/**\n * This module provides a context and hook for the nav menu.\n * @module NavMenu\n */\n\nexport type NavTriggerRef = RefObject<HTMLButtonElement>\nexport type NavMenuRef = RefObject<HTMLUListElement>\n\nexport interface NavMenuContextValue {\n /**\n * The ref for the trigger button.\n */\n triggerRef: NavTriggerRef | null\n /**\n * The ref for the menu.\n */\n menuRef: NavMenuRef | null\n /**\n * Whether the menu is expanded.\n */\n expanded: boolean\n /**\n * Called when the menu button is clicked.\n */\n onToggle: () => void\n}\n\nconst NavMenuContext = createContext<NavMenuContextValue | null>(null)\n\n/**\n * Provides the nav menu state for all the NavMenu family components.\n * @see https://cerberus.digitalu.design/react/nav-menu\n */\nexport function NavMenu(props: PropsWithChildren): JSX.Element {\n const triggerRef = useRef<HTMLButtonElement>(null)\n const menuRef = useRef<HTMLUListElement>(null)\n const [expanded, setExpanded] = useState<boolean>(false)\n\n const handleToggle = useCallback(() => {\n setExpanded((prev) => !prev)\n }, [])\n\n const value = useMemo(\n () => ({\n triggerRef,\n menuRef,\n expanded,\n onToggle: handleToggle,\n }),\n [expanded, handleToggle],\n )\n\n return (\n <NavMenuContext.Provider value={value}>\n <nav\n className={css({\n position: 'relative',\n })}\n >\n {props.children}\n </nav>\n </NavMenuContext.Provider>\n )\n}\n\n/**\n * Used to access the nav menu context.\n * @returns The nav menu context.\n */\nexport function useNavMenuContext(): NavMenuContextValue {\n const context = useContext(NavMenuContext)\n if (!context) {\n throw new Error('useNavMenuContext must be used within a NavMenu.')\n }\n return context\n}\n"],"mappings":";AAEA,SAAS,WAAW;AACpB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAwDD;AA3BN,IAAM,iBAAiB,cAA0C,IAAI;AAM9D,SAAS,QAAQ,OAAuC;AAC7D,QAAM,aAAa,OAA0B,IAAI;AACjD,QAAM,UAAU,OAAyB,IAAI;AAC7C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAkB,KAAK;AAEvD,QAAM,eAAe,YAAY,MAAM;AACrC,gBAAY,CAAC,SAAS,CAAC,IAAI;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,IACA,CAAC,UAAU,YAAY;AAAA,EACzB;AAEA,SACE,oBAAC,eAAe,UAAf,EAAwB,OACvB;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,IAAI;AAAA,QACb,UAAU;AAAA,MACZ,CAAC;AAAA,MAEA,gBAAM;AAAA;AAAA,EACT,GACF;AAEJ;AAMO,SAAS,oBAAyC;AACvD,QAAM,UAAU,WAAW,cAAc;AACzC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AACA,SAAO;AACT;","names":[]}
@@ -20,4 +20,4 @@ function useModal() {
20
20
  export {
21
21
  useModal
22
22
  };
23
- //# sourceMappingURL=chunk-C5HLLGME.js.map
23
+ //# sourceMappingURL=chunk-OW62FLJ6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useModal.ts"],"sourcesContent":["'use client'\n\nimport { useCallback, useMemo, useRef, type RefObject } from 'react'\n\n/**\n * This module provides a hook for using a custom modal.\n * @module\n */\n\ninterface UseModalReturnValue {\n /**\n * The ref for the modal.\n */\n modalRef: RefObject<HTMLDialogElement>\n /**\n * Shows the modal.\n */\n show: () => void\n /**\n * Closes the modal.\n */\n close: () => void\n}\n\n/**\n * Provides a hook for using a custom modal.\n * @memberof module:Modal\n * @returns The modal hook.\n */\nexport function useModal(): UseModalReturnValue {\n const modalRef = useRef<HTMLDialogElement | null>(null)\n\n const show = useCallback(() => {\n modalRef.current?.showModal()\n }, [])\n\n const close = useCallback(() => {\n modalRef.current?.close()\n }, [])\n\n return useMemo(() => {\n return {\n modalRef,\n show,\n close,\n }\n }, [modalRef, show, close])\n}\n"],"mappings":";AAEA,SAAS,aAAa,SAAS,cAA8B;AA2BtD,SAAS,WAAgC;AAC9C,QAAM,WAAW,OAAiC,IAAI;AAEtD,QAAM,OAAO,YAAY,MAAM;AAC7B,aAAS,SAAS,UAAU;AAAA,EAC9B,GAAG,CAAC,CAAC;AAEL,QAAM,QAAQ,YAAY,MAAM;AAC9B,aAAS,SAAS,MAAM;AAAA,EAC1B,GAAG,CAAC,CAAC;AAEL,SAAO,QAAQ,MAAM;AACnB,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,UAAU,MAAM,KAAK,CAAC;AAC5B;","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useNavMenuContext
3
- } from "./chunk-KJUCHZHV.js";
3
+ } from "./chunk-O75QAT4Z.js";
4
4
  import {
5
5
  Show
6
- } from "./chunk-4O4QFF4S.js";
6
+ } from "./chunk-BUVVRQLZ.js";
7
7
  import {
8
8
  createNavTriggerProps
9
9
  } from "./chunk-JF76VIL3.js";
@@ -78,4 +78,4 @@ function NavMenuTrigger(props) {
78
78
  export {
79
79
  NavMenuTrigger
80
80
  };
81
- //# sourceMappingURL=chunk-RPZAPUCF.js.map
81
+ //# sourceMappingURL=chunk-OWKN5IV7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/NavMenuTrigger.tsx"],"sourcesContent":["'use client'\n\nimport {\n useCallback,\n type ButtonHTMLAttributes,\n type ElementType,\n type MouseEvent,\n} from 'react'\nimport { cx } from '@cerberus/styled-system/css'\nimport { button } from '@cerberus/styled-system/recipes'\nimport {\n createNavTriggerProps,\n type NavTriggerAriaValues,\n} from '../aria-helpers/nav-menu.aria'\nimport { useNavMenuContext } from '../context/navMenu'\nimport type { ButtonProps } from './Button'\nimport { Show } from './Show'\n\n/**\n * This module contains the NavMenuTrigger component.\n * @module\n */\n\nexport interface NavMenuTriggerProps\n extends ButtonHTMLAttributes<HTMLButtonElement>,\n ButtonProps,\n NavTriggerAriaValues {\n /**\n * The element type to render as. Recommended to use for an IconButton trigger vs a standard Button.\n * @default 'button'\n * @example\n * ```tsx\n * <NavMenuTrigger as={IconButton} href=\"/home\" />\n * ```\n */\n as?: ElementType\n}\n\n/**\n * A component that allows the user to trigger a navigation menu.\n * @definition [NavMenu Docs](https://cerberus.digitalu.design/react/nav-menu)\n * @example\n * ```tsx\n * <NavMenu>\n * <NavMenuTrigger controls=\"nav-menu-list\">\n * Menu\n * </NavMenuTrigger>\n * </NavMenu>\n * ```\n */\nexport function NavMenuTrigger(props: NavMenuTriggerProps): JSX.Element {\n const {\n as,\n palette,\n usage,\n shape,\n controls,\n expanded: propsExpanded,\n onClick,\n ...nativeProps\n } = props\n const { triggerRef, onToggle, expanded } = useNavMenuContext()\n const ariaProps = createNavTriggerProps({\n controls,\n expanded: propsExpanded ?? expanded,\n })\n const hasAs = Boolean(as)\n const AsSub: ElementType = as!\n\n const handleClick = useCallback(\n (e: MouseEvent<HTMLButtonElement>) => {\n if (onClick) return onClick(e)\n onToggle()\n },\n [onClick, onToggle],\n )\n\n return (\n <Show\n when={hasAs}\n fallback={\n <button\n {...nativeProps}\n {...ariaProps}\n className={cx(\n nativeProps.className,\n button({\n palette,\n usage,\n shape,\n }),\n )}\n onClick={handleClick}\n ref={triggerRef}\n >\n {props.children}\n </button>\n }\n >\n {hasAs && (\n <AsSub\n {...nativeProps}\n {...ariaProps}\n onClick={handleClick}\n ref={triggerRef}\n />\n )}\n </Show>\n )\n}\n"],"mappings":";;;;;;;;;;;AAEA;AAAA,EACE;AAAA,OAIK;AACP,SAAS,UAAU;AACnB,SAAS,cAAc;AAwEf;AA/BD,SAAS,eAAe,OAAyC;AACtE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,EAAE,YAAY,UAAU,SAAS,IAAI,kBAAkB;AAC7D,QAAM,YAAY,sBAAsB;AAAA,IACtC;AAAA,IACA,UAAU,iBAAiB;AAAA,EAC7B,CAAC;AACD,QAAM,QAAQ,QAAQ,EAAE;AACxB,QAAM,QAAqB;AAE3B,QAAM,cAAc;AAAA,IAClB,CAAC,MAAqC;AACpC,UAAI,QAAS,QAAO,QAAQ,CAAC;AAC7B,eAAS;AAAA,IACX;AAAA,IACA,CAAC,SAAS,QAAQ;AAAA,EACpB;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,MACN,UACE;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACH,GAAG;AAAA,UACJ,WAAW;AAAA,YACT,YAAY;AAAA,YACZ,OAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH;AAAA,UACA,SAAS;AAAA,UACT,KAAK;AAAA,UAEJ,gBAAM;AAAA;AAAA,MACT;AAAA,MAGD,mBACC;AAAA,QAAC;AAAA;AAAA,UACE,GAAG;AAAA,UACH,GAAG;AAAA,UACJ,SAAS;AAAA,UACT,KAAK;AAAA;AAAA,MACP;AAAA;AAAA,EAEJ;AAEJ;","names":[]}
@@ -21,4 +21,4 @@ function Tbody(props) {
21
21
  export {
22
22
  Tbody
23
23
  };
24
- //# sourceMappingURL=chunk-PJ3744I6.js.map
24
+ //# sourceMappingURL=chunk-PKQTTFWA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Tbody.tsx"],"sourcesContent":["import { tbody, type TbodyVariantProps } from '@cerberus/styled-system/recipes'\nimport { cx } from '@cerberus/styled-system/css'\nimport type { TableHTMLAttributes } from 'react'\n\n/**\n * This module provides a TBody component.\n * @module\n */\n\nexport type TbodyBaseProps = TableHTMLAttributes<HTMLTableSectionElement>\nexport type TbodyProps = TbodyBaseProps & TbodyVariantProps\n\n/**\n * The TBody component is used to render a table body.\n * @see https://cerberus.digitalu.design/react/table\n * @memberof module:Table\n * @example\n * ```tsx\n * <TBody>\n * {children}\n * </TBody>\n * ```\n */\nexport function Tbody(props: TbodyProps) {\n const { decoration, ...nativeProps } = props\n return (\n <tbody\n {...nativeProps}\n className={cx(\n nativeProps.className,\n tbody({\n decoration,\n }),\n )}\n />\n )\n}\n"],"mappings":";AAAA,SAAS,aAAqC;AAC9C,SAAS,UAAU;AAyBf;AAHG,SAAS,MAAM,OAAmB;AACvC,QAAM,EAAE,YAAY,GAAG,YAAY,IAAI;AACvC,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW;AAAA,QACT,YAAY;AAAA,QACZ,MAAM;AAAA,UACJ;AAAA,QACF,CAAC;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -9,4 +9,4 @@ function Thead(props) {
9
9
  export {
10
10
  Thead
11
11
  };
12
- //# sourceMappingURL=chunk-N3FUF4TB.js.map
12
+ //# sourceMappingURL=chunk-PKY46RRA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Thead.tsx"],"sourcesContent":["import { cx } from '@cerberus/styled-system/css'\nimport { thead } from '@cerberus/styled-system/recipes'\nimport type { TableHTMLAttributes } from 'react'\n\n/**\n * This module contains the Thead component.\n * @module\n */\n\nexport type TheadProps = TableHTMLAttributes<HTMLTableSectionElement>\n\n/**\n * The Thead component is used to render a table header.\n * @see https://cerberus.digitalu.design/react/table\n * @memberof module:Table\n * @example\n * ```tsx\n * <Thead>\n * {children}\n * </Thead>\n * ```\n */\nexport function Thead(props: TheadProps) {\n return <thead {...props} className={cx(props.className, thead())} />\n}\n"],"mappings":";AAAA,SAAS,UAAU;AACnB,SAAS,aAAa;AAsBb;AADF,SAAS,MAAM,OAAmB;AACvC,SAAO,oBAAC,WAAO,GAAG,OAAO,WAAW,GAAG,MAAM,WAAW,MAAM,CAAC,GAAG;AACpE;","names":[]}
@@ -9,4 +9,4 @@ function ModalDescription(props) {
9
9
  export {
10
10
  ModalDescription
11
11
  };
12
- //# sourceMappingURL=chunk-4M4LCQ43.js.map
12
+ //# sourceMappingURL=chunk-Q7BRMIBR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/ModalDescription.tsx"],"sourcesContent":["import { cx } from '@cerberus/styled-system/css'\nimport { modal } from '@cerberus/styled-system/recipes'\nimport type { HTMLAttributes } from 'react'\n\n/**\n * This module contains the ModalDescription component for a customizable modal.\n * @module\n */\n\nexport type ModalDescriptionProps = HTMLAttributes<HTMLParagraphElement>\n\n/**\n * The ModalDescription component is a heading element for a customizable modal.\n * @example\n * ```tsx\n * <Modal>\n * <ModalDescription>Modal Heading</ModalDescription>\n * </Modal>\n * ```\n */\nexport function ModalDescription(props: ModalDescriptionProps) {\n return <p {...props} className={cx(props.className, modal().description)} />\n}\n"],"mappings":";AAAA,SAAS,UAAU;AACnB,SAAS,aAAa;AAoBb;AADF,SAAS,iBAAiB,OAA8B;AAC7D,SAAO,oBAAC,OAAG,GAAG,OAAO,WAAW,GAAG,MAAM,WAAW,MAAM,EAAE,WAAW,GAAG;AAC5E;","names":[]}
1
+ {"version":3,"sources":["../../src/components/ModalDescription.tsx"],"sourcesContent":["import { cx } from '@cerberus/styled-system/css'\nimport { modal } from '@cerberus/styled-system/recipes'\nimport type { HTMLAttributes } from 'react'\n\n/**\n * This module contains the ModalDescription component for a customizable modal.\n * @module\n */\n\nexport type ModalDescriptionProps = HTMLAttributes<HTMLParagraphElement>\n\n/**\n * The ModalDescription component is a heading element for a customizable modal.\n * @see https://cerberus.digitalu.design/react/modal\n * @example\n * ```tsx\n * <Modal>\n * <ModalDescription>Modal Heading</ModalDescription>\n * </Modal>\n * ```\n */\nexport function ModalDescription(props: ModalDescriptionProps) {\n return <p {...props} className={cx(props.className, modal().description)} />\n}\n"],"mappings":";AAAA,SAAS,UAAU;AACnB,SAAS,aAAa;AAqBb;AADF,SAAS,iBAAiB,OAA8B;AAC7D,SAAO,oBAAC,OAAG,GAAG,OAAO,WAAW,GAAG,MAAM,WAAW,MAAM,EAAE,WAAW,GAAG;AAC5E;","names":[]}
@@ -19,4 +19,4 @@ function useToggle(options) {
19
19
  export {
20
20
  useToggle
21
21
  };
22
- //# sourceMappingURL=chunk-QEA6N6TN.js.map
22
+ //# sourceMappingURL=chunk-REO5GUNC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/useToggle.ts"],"sourcesContent":["'use client'\n\nimport { useCallback, useMemo, useState, type ChangeEvent } from 'react'\n\n/**\n * This module provides a hook for using a toggle.\n * @module useToggle\n */\n\nexport interface UseToggleOptions {\n /**\n * The initial checked state.\n */\n checked?: string\n /**\n * Called when the checked state changes.\n */\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n}\nexport interface ToggleHookReturn {\n /**\n * The checked state.\n */\n checked: string\n /**\n * A custom handler to be called when the checked state changes.\n */\n handleChange: (e: ChangeEvent<HTMLInputElement>) => void\n}\n\n/**\n * Provides a hook for using a toggle.\n * @see https://cerberus.digitalu.design/react/use-toggle\n * @memberof module:Toggle\n */\nexport function useToggle(options?: UseToggleOptions): ToggleHookReturn {\n const [checked, setChecked] = useState<string>(options?.checked ?? '')\n const onChange = options?.onChange\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const target = e.currentTarget as HTMLInputElement\n setChecked((prev) => {\n return prev === target.value ? '' : target.value\n })\n onChange?.(e)\n },\n [onChange],\n )\n\n return useMemo(() => ({ checked, handleChange }), [checked, handleChange])\n}\n"],"mappings":";AAEA,SAAS,aAAa,SAAS,gBAAkC;AAiC1D,SAAS,UAAU,SAA8C;AACtE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAiB,SAAS,WAAW,EAAE;AACrE,QAAM,WAAW,SAAS;AAE1B,QAAM,eAAe;AAAA,IACnB,CAAC,MAAqC;AACpC,YAAM,SAAS,EAAE;AACjB,iBAAW,CAAC,SAAS;AACnB,eAAO,SAAS,OAAO,QAAQ,KAAK,OAAO;AAAA,MAC7C,CAAC;AACD,iBAAW,CAAC;AAAA,IACd;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,SAAO,QAAQ,OAAO,EAAE,SAAS,aAAa,IAAI,CAAC,SAAS,YAAY,CAAC;AAC3E;","names":[]}
@@ -55,4 +55,4 @@ export {
55
55
  Tabs,
56
56
  useTabsContext
57
57
  };
58
- //# sourceMappingURL=chunk-KF24CS4S.js.map
58
+ //# sourceMappingURL=chunk-RIFQSCHT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/context/tabs.tsx"],"sourcesContent":["'use client'\n\nimport { tabs, type TabsVariantProps } from '@cerberus/styled-system/recipes'\nimport type { Pretty } from '@cerberus/styled-system/types'\nimport {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type MutableRefObject,\n type PropsWithChildren,\n} from 'react'\n\n/**\n * This module provides a Tabs component and a hook to access its context.\n * @module Tabs\n */\n\nexport interface TabsContextValue {\n /**\n * The ref for the tabs.\n */\n tabs: MutableRefObject<HTMLButtonElement[]>\n /**\n * The id of the tabs component.\n */\n id: string\n /**\n * The active tab id.\n */\n active: string\n /**\n * The styles for the tabs.\n */\n styles: Pretty<Record<'tabList' | 'tab' | 'tabPanel', string>>\n /**\n * Called when the active tab is updated.\n */\n onTabUpdate: (active: string) => void\n}\n\nexport const TabsContext = createContext<TabsContextValue | null>(null)\n\nexport interface TabsProps {\n /**\n * A unique identifier for the Tabs component. Typically used when there are\n * multiple Tabs components on the same page.\n */\n id?: string\n /**\n * The default active tab id.\n */\n active?: string\n /**\n * Whether to cache the active tab state in local storage.\n */\n cache?: boolean\n}\n\n/**\n * The Tabs component provides a context to manage tab state.\n * @see https://cerberus.digitalu.design/react/tabs\n * @example\n * ```tsx\n * <Tabs cache>\n * <TabList description=\"Button details\">\n * <Tab id=\"overview\">Overview</Tab>\n * <Tab id=\"guidelines\">Guidelines</Tab>\n * </TabList>\n * <TabPanels>\n * <TabPanel id=\"overview\">Overview content</TabPanel>\n * <TabPanel id=\"guidelines\">Guidelines content</TabPanel>\n * </TabPanels>\n * </Tabs>\n * ```\n */\nexport function Tabs(\n props: PropsWithChildren<TabsProps & TabsVariantProps>,\n): JSX.Element {\n const { cache, active, id, palette } = props\n const [activeTab, setActiveTab] = useState(() => (cache ? '' : active ?? ''))\n const tabsList = useRef<HTMLButtonElement[]>([])\n const uuid = useMemo(() => {\n return id ? `cerberus-tabs-${id}` : 'cerberus-tabs'\n }, [id])\n\n const value = useMemo(\n () => ({\n tabs: tabsList,\n id: uuid,\n active: activeTab,\n styles: tabs({ palette }),\n onTabUpdate: setActiveTab,\n }),\n [activeTab, setActiveTab, palette, uuid, tabsList],\n )\n\n // Get the active tab from local storage\n useEffect(() => {\n if (cache) {\n const cachedTab = window.localStorage.getItem(uuid)\n setActiveTab(\n cache ? cachedTab || (props.active ?? '') : props.active ?? '',\n )\n }\n }, [cache, active, uuid])\n\n // Update the active tab in local storage\n useEffect(() => {\n if (cache && activeTab) {\n window.localStorage.setItem(uuid, activeTab)\n }\n }, [activeTab, cache])\n\n return (\n <TabsContext.Provider value={value}>{props.children}</TabsContext.Provider>\n )\n}\n\n/**\n * Used to access the tabs context.\n * @returns The tabs context.\n */\nexport function useTabsContext(): TabsContextValue {\n const context = useContext(TabsContext)\n if (!context) {\n throw new Error('useTabsContext must be used within a Tabs Provider.')\n }\n return context\n}\n"],"mappings":";AAEA,SAAS,YAAmC;AAE5C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAwGH;AA1EG,IAAM,cAAc,cAAuC,IAAI;AAmC/D,SAAS,KACd,OACa;AACb,QAAM,EAAE,OAAO,QAAQ,IAAI,QAAQ,IAAI;AACvC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,MAAO,QAAQ,KAAK,UAAU,EAAG;AAC5E,QAAM,WAAW,OAA4B,CAAC,CAAC;AAC/C,QAAM,OAAO,QAAQ,MAAM;AACzB,WAAO,KAAK,iBAAiB,EAAE,KAAK;AAAA,EACtC,GAAG,CAAC,EAAE,CAAC;AAEP,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR,QAAQ,KAAK,EAAE,QAAQ,CAAC;AAAA,MACxB,aAAa;AAAA,IACf;AAAA,IACA,CAAC,WAAW,cAAc,SAAS,MAAM,QAAQ;AAAA,EACnD;AAGA,YAAU,MAAM;AACd,QAAI,OAAO;AACT,YAAM,YAAY,OAAO,aAAa,QAAQ,IAAI;AAClD;AAAA,QACE,QAAQ,cAAc,MAAM,UAAU,MAAM,MAAM,UAAU;AAAA,MAC9D;AAAA,IACF;AAAA,EACF,GAAG,CAAC,OAAO,QAAQ,IAAI,CAAC;AAGxB,YAAU,MAAM;AACd,QAAI,SAAS,WAAW;AACtB,aAAO,aAAa,QAAQ,MAAM,SAAS;AAAA,IAC7C;AAAA,EACF,GAAG,CAAC,WAAW,KAAK,CAAC;AAErB,SACE,oBAAC,YAAY,UAAZ,EAAqB,OAAe,gBAAM,UAAS;AAExD;AAMO,SAAS,iBAAmC;AACjD,QAAM,UAAU,WAAW,WAAW;AACtC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AACA,SAAO;AACT;","names":[]}
@@ -1,9 +1,11 @@
1
1
  import {
2
2
  Show
3
- } from "./chunk-4O4QFF4S.js";
3
+ } from "./chunk-BUVVRQLZ.js";
4
+ import {
5
+ $cerberusIcons
6
+ } from "./chunk-NBG2OSYI.js";
4
7
 
5
8
  // src/components/Tag.tsx
6
- import { Close } from "@cerberus/icons";
7
9
  import { css, cx } from "@cerberus/styled-system/css";
8
10
  import {
9
11
  iconButton,
@@ -16,6 +18,7 @@ function Tag(props) {
16
18
  const isClosable = Boolean(onClick);
17
19
  const shape = isClosable ? "pill" : initShape;
18
20
  const closableStyles = isClosable ? closableCss : "";
21
+ const { close: Close } = $cerberusIcons;
19
22
  return /* @__PURE__ */ jsxs(
20
23
  "span",
21
24
  {
@@ -58,4 +61,4 @@ var closableCss = css({
58
61
  export {
59
62
  Tag
60
63
  };
61
- //# sourceMappingURL=chunk-RBZAEOKN.js.map
64
+ //# sourceMappingURL=chunk-S7XGIQY6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Tag.tsx"],"sourcesContent":["import type { HTMLAttributes, PropsWithChildren } from 'react'\nimport { Show } from './Show'\nimport { css, cx } from '@cerberus/styled-system/css'\nimport {\n iconButton,\n tag,\n type TagVariantProps,\n} from '@cerberus/styled-system/recipes'\nimport { $cerberusIcons } from '../config/defineIcons'\n\n/**\n * This module contains the tag component.\n * @module\n */\n\nexport type StaticTagProps = HTMLAttributes<HTMLSpanElement> &\n TagVariantProps & {\n /**\n * The action to be performed when the tag is clicked. Not available when\n * the palette or gradient props are provided.\n */\n onClick?: never\n }\n\nexport type ClickableTagProps = HTMLAttributes<HTMLSpanElement> & {\n /**\n * The gradient to apply to the tag. Not available when the onClick prop is\n * provided.\n */\n gradient?: never\n /**\n * The palette to use for the tag. Not available when the onClick prop is\n * provided.\n */\n palette?: never\n /**\n * The action to be performed when the tag is clicked.\n */\n onClick: () => void\n /**\n * The shape of the tag. Not available when the onClick prop is provided.\n * @type 'pill' | 'rounded'\n * @default 'pill'\n */\n shape: 'pill'\n /**\n * The usage of the tag. Not available when the onClick prop is provided.\n * @type 'filled' | 'outlined'\n * @default 'filled'\n */\n usage: 'filled'\n}\n\nexport type TagProps = StaticTagProps | ClickableTagProps\n\n/**\n * The Tag component is used to display a meta descriptions.\n * @see https://cerberus.digitalu.design/react/tag\n * @example\n * ```tsx\n * <Tag>Tag</Tag>\n * ```\n */\nexport function Tag(props: PropsWithChildren<TagProps>): JSX.Element {\n const { shape: initShape, gradient, onClick, usage, ...nativeProps } = props\n const palette = props?.palette ?? 'page'\n const isClosable = Boolean(onClick)\n const shape = isClosable ? 'pill' : initShape\n const closableStyles = isClosable ? closableCss : ''\n const { close: Close } = $cerberusIcons\n\n return (\n <span\n {...nativeProps}\n className={cx(\n nativeProps.className,\n tag({\n gradient,\n palette,\n shape,\n usage,\n }),\n closableStyles,\n )}\n >\n {props.children}\n\n <Show when={isClosable}>\n <button\n aria-label=\"Close\"\n className={iconButton({\n palette: 'action',\n usage: 'filled',\n size: 'sm',\n })}\n onClick={onClick}\n >\n <Close />\n </button>\n </Show>\n </span>\n )\n}\n\nconst closableCss = css({\n bgColor: 'action.bg.active',\n color: 'action.text.initial',\n paddingInlineEnd: '0',\n})\n"],"mappings":";;;;;;;;AAEA,SAAS,KAAK,UAAU;AACxB;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAiEH,SAyBM,KAzBN;AATG,SAAS,IAAI,OAAiD;AACnE,QAAM,EAAE,OAAO,WAAW,UAAU,SAAS,OAAO,GAAG,YAAY,IAAI;AACvE,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,aAAa,QAAQ,OAAO;AAClC,QAAM,QAAQ,aAAa,SAAS;AACpC,QAAM,iBAAiB,aAAa,cAAc;AAClD,QAAM,EAAE,OAAO,MAAM,IAAI;AAEzB,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,WAAW;AAAA,QACT,YAAY;AAAA,QACZ,IAAI;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MAEC;AAAA,cAAM;AAAA,QAEP,oBAAC,QAAK,MAAM,YACV;AAAA,UAAC;AAAA;AAAA,YACC,cAAW;AAAA,YACX,WAAW,WAAW;AAAA,cACpB,SAAS;AAAA,cACT,OAAO;AAAA,cACP,MAAM;AAAA,YACR,CAAC;AAAA,YACD;AAAA,YAEA,8BAAC,SAAM;AAAA;AAAA,QACT,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,cAAc,IAAI;AAAA,EACtB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,kBAAkB;AACpB,CAAC;","names":[]}
@@ -13,4 +13,4 @@ function NotificationHeading(props) {
13
13
  export {
14
14
  NotificationHeading
15
15
  };
16
- //# sourceMappingURL=chunk-3C2DJSEE.js.map
16
+ //# sourceMappingURL=chunk-SXIXDXG3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/NotificationHeading.tsx"],"sourcesContent":["import { cx } from '@cerberus/styled-system/css'\nimport {\n notification,\n type NotificationVariantProps,\n} from '@cerberus/styled-system/recipes'\nimport type { HTMLAttributes } from 'react'\n\n/**\n * This module exports the NotificationHeading component.\n * @module\n */\n\nexport interface BaseNotificationHeadingProps\n extends HTMLAttributes<HTMLParagraphElement> {}\nexport type NotificationHeadingProps = BaseNotificationHeadingProps &\n NotificationVariantProps\n\n/**\n * Used to render the heading of a notification.\n * @see https://cerberus.digitalu.design/react/notification\n * @memberof module:NotificationCenter\n * @param props - The anything a HTMLParagraphElement can accept.\n */\nexport function NotificationHeading(props: NotificationHeadingProps) {\n const { palette, ...nativeProps } = props\n const styles = notification({ palette })\n return (\n <p className={cx(nativeProps.className, styles.heading)} {...nativeProps} />\n )\n}\n"],"mappings":";AAAA,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,OAEK;AAuBH;AAJG,SAAS,oBAAoB,OAAiC;AACnE,QAAM,EAAE,SAAS,GAAG,YAAY,IAAI;AACpC,QAAM,SAAS,aAAa,EAAE,QAAQ,CAAC;AACvC,SACE,oBAAC,OAAE,WAAW,GAAG,YAAY,WAAW,OAAO,OAAO,GAAI,GAAG,aAAa;AAE9E;","names":[]}
@@ -26,4 +26,4 @@ function Droppable(props) {
26
26
  export {
27
27
  Droppable
28
28
  };
29
- //# sourceMappingURL=chunk-7VJOPJVX.js.map
29
+ //# sourceMappingURL=chunk-TKI2CKHH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Droppable.tsx"],"sourcesContent":["'use client'\n\nimport { useDroppable, type UseDroppableArguments } from '@dnd-kit/core'\nimport { useId, type HtmlHTMLAttributes, type PropsWithChildren } from 'react'\n\nexport interface DroppableProps\n extends Omit<HtmlHTMLAttributes<HTMLDivElement>, 'id'>,\n UseDroppableArguments {\n /**\n * If the item has been dropped.\n */\n dropped?: boolean\n}\n\n/**\n * A Cerberus component is used to define a drop target for draggable elements.\n * @see https://dndkit.com/\n * @example\n * ```tsx\n * <Droppable id=\"dropzone\">\n * <Draggable id=\"draggable\">Drag me</Draggable>\n * </Droppable>\n * ```\n */\nexport function Droppable(props: PropsWithChildren<DroppableProps>) {\n const { dropped, id, disabled, data, resizeObserverConfig, ...nativeProps } =\n props\n const uuid = useId()\n const { isOver, setNodeRef } = useDroppable({\n data,\n disabled,\n id: id || uuid,\n resizeObserverConfig,\n })\n\n return (\n <div\n {...nativeProps}\n data-over={isOver}\n data-dropped={dropped}\n ref={setNodeRef}\n >\n {props.children}\n </div>\n )\n}\n"],"mappings":";AAEA,SAAS,oBAAgD;AACzD,SAAS,aAA8D;AAiCnE;AAZG,SAAS,UAAU,OAA0C;AAClE,QAAM,EAAE,SAAS,IAAI,UAAU,MAAM,sBAAsB,GAAG,YAAY,IACxE;AACF,QAAM,OAAO,MAAM;AACnB,QAAM,EAAE,QAAQ,WAAW,IAAI,aAAa;AAAA,IAC1C;AAAA,IACA;AAAA,IACA,IAAI,MAAM;AAAA,IACV;AAAA,EACF,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,aAAW;AAAA,MACX,gBAAc;AAAA,MACd,KAAK;AAAA,MAEJ,gBAAM;AAAA;AAAA,EACT;AAEJ;","names":[]}
@@ -1,6 +1,8 @@
1
1
  // src/components/IconButton.tsx
2
2
  import { cx } from "@cerberus/styled-system/css";
3
- import { iconButton } from "@cerberus/styled-system/recipes";
3
+ import {
4
+ iconButton
5
+ } from "@cerberus/styled-system/recipes";
4
6
  import { jsx } from "react/jsx-runtime";
5
7
  function IconButton(props) {
6
8
  const { ariaLabel, palette, usage, size, ...nativeProps } = props;
@@ -26,4 +28,4 @@ function IconButton(props) {
26
28
  export {
27
29
  IconButton
28
30
  };
29
- //# sourceMappingURL=chunk-SLHX5K6I.js.map
31
+ //# sourceMappingURL=chunk-UBJBMOG7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/IconButton.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes } from 'react'\nimport { cx } from '@cerberus/styled-system/css'\nimport {\n iconButton,\n type IconButtonVariantProps,\n} from '@cerberus/styled-system/recipes'\nimport type { Positions } from '../types'\n\n/**\n * This module contains the Icon Button component.\n * @module\n */\n\nexport interface IconButtonRawProps\n extends ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * The aria-label attribute for the icon button.\n */\n ariaLabel: string\n /**\n * The position of the tooltip relative to the icon button.\n * @example 'top' | 'right' | 'bottom' | 'left'\n * @default 'top'\n */\n tooltipPosition?: Positions\n}\nexport type IconButtonProps = IconButtonRawProps & IconButtonVariantProps\n\n/**\n * A component that allows the user to perform actions using an icon\n * @see https://cerberus.digitalu.design/react/icon-button\n */\nexport function IconButton(props: IconButtonProps): JSX.Element {\n const { ariaLabel, palette, usage, size, ...nativeProps } = props\n return (\n <button\n {...nativeProps}\n data-tooltip\n data-position={props.tooltipPosition ?? 'top'}\n aria-label={ariaLabel ?? 'Icon Button'}\n className={cx(\n nativeProps.className,\n iconButton({\n palette,\n usage,\n size,\n }),\n )}\n />\n )\n}\n"],"mappings":";AACA,SAAS,UAAU;AACnB;AAAA,EACE;AAAA,OAEK;AA8BH;AAHG,SAAS,WAAW,OAAqC;AAC9D,QAAM,EAAE,WAAW,SAAS,OAAO,MAAM,GAAG,YAAY,IAAI;AAC5D,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,gBAAY;AAAA,MACZ,iBAAe,MAAM,mBAAmB;AAAA,MACxC,cAAY,aAAa;AAAA,MACzB,WAAW;AAAA,QACT,YAAY;AAAA,QACZ,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;","names":[]}
@@ -30,4 +30,4 @@ export {
30
30
  Field,
31
31
  useFieldContext
32
32
  };
33
- //# sourceMappingURL=chunk-ZAU4JVLL.js.map
33
+ //# sourceMappingURL=chunk-UZDVOIW5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/context/field.tsx"],"sourcesContent":["'use client'\n\nimport {\n createContext,\n useContext,\n useMemo,\n type PropsWithChildren,\n} from 'react'\n\n/**\n * This module provides a context and hook for the field.\n * @module Field\n */\n\nexport interface FieldContextValue {\n /**\n * Whether the field is disabled.\n * @description [Moz Input Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attributes)\n */\n disabled?: boolean\n /**\n * Whether the field is read-only.\n */\n readOnly?: boolean\n /**\n * Whether the field is required.\n */\n required?: boolean\n /**\n * Whether the field is invalid.\n */\n invalid?: boolean\n}\n\nconst FieldContext = createContext<FieldContextValue | null>(null)\n\n/**\n * Provides the field state for a all related components used within a group.\n * @see https://cerberus.digitalu.design/react/input\n */\nexport function Field(\n props: PropsWithChildren<FieldContextValue>,\n): JSX.Element {\n const value = useMemo(\n () => ({\n disabled: props.disabled,\n readOnly: props.readOnly,\n required: props.required,\n invalid: props.invalid,\n }),\n [props.disabled, props.readOnly, props.required, props.invalid],\n )\n\n return (\n <FieldContext.Provider value={value}>\n {props.children}\n </FieldContext.Provider>\n )\n}\n\n/**\n * Used to access the field context.\n * @returns The field context.\n */\nexport function useFieldContext(): FieldContextValue {\n const context = useContext(FieldContext)\n if (!context) {\n throw new Error('useFieldContext must be used within a Field Provider.')\n }\n return context\n}\n"],"mappings":";AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AA+CH;AApBJ,IAAM,eAAe,cAAwC,IAAI;AAM1D,SAAS,MACd,OACa;AACb,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,MACL,UAAU,MAAM;AAAA,MAChB,UAAU,MAAM;AAAA,MAChB,UAAU,MAAM;AAAA,MAChB,SAAS,MAAM;AAAA,IACjB;AAAA,IACA,CAAC,MAAM,UAAU,MAAM,UAAU,MAAM,UAAU,MAAM,OAAO;AAAA,EAChE;AAEA,SACE,oBAAC,aAAa,UAAb,EAAsB,OACpB,gBAAM,UACT;AAEJ;AAMO,SAAS,kBAAqC;AACnD,QAAM,UAAU,WAAW,YAAY;AACvC,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AACA,SAAO;AACT;","names":[]}
@@ -73,4 +73,4 @@ function Notification(props) {
73
73
  export {
74
74
  Notification
75
75
  };
76
- //# sourceMappingURL=chunk-QZ6NS6VN.js.map
76
+ //# sourceMappingURL=chunk-VG46RHBJ.js.map