@cerberus-design/react 0.19.2 → 0.20.0

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 (615) hide show
  1. package/build/legacy/_tsup-dts-rollup.d.cts +242 -11
  2. package/build/legacy/components/accordion/index.cjs +23 -11
  3. package/build/legacy/components/accordion/index.cjs.map +1 -1
  4. package/build/legacy/components/accordion/item-group.cjs +23 -11
  5. package/build/legacy/components/accordion/item-group.cjs.map +1 -1
  6. package/build/legacy/components/accordion/item-indicator.cjs +23 -11
  7. package/build/legacy/components/accordion/item-indicator.cjs.map +1 -1
  8. package/build/legacy/components/accordion/parts.cjs +23 -11
  9. package/build/legacy/components/accordion/parts.cjs.map +1 -1
  10. package/build/legacy/components/accordion/primitives.cjs +23 -11
  11. package/build/legacy/components/accordion/primitives.cjs.map +1 -1
  12. package/build/legacy/components/admonition/admonition.cjs +23 -11
  13. package/build/legacy/components/admonition/admonition.cjs.map +1 -1
  14. package/build/legacy/components/admonition/index.cjs +23 -11
  15. package/build/legacy/components/admonition/index.cjs.map +1 -1
  16. package/build/legacy/components/admonition/match-avatar.cjs +23 -11
  17. package/build/legacy/components/admonition/match-avatar.cjs.map +1 -1
  18. package/build/legacy/components/admonition/parts.cjs +23 -11
  19. package/build/legacy/components/admonition/parts.cjs.map +1 -1
  20. package/build/legacy/components/admonition/primitives.cjs +23 -11
  21. package/build/legacy/components/admonition/primitives.cjs.map +1 -1
  22. package/build/legacy/components/avatar/avatar.cjs +23 -11
  23. package/build/legacy/components/avatar/avatar.cjs.map +1 -1
  24. package/build/legacy/components/avatar/index.cjs +23 -11
  25. package/build/legacy/components/avatar/index.cjs.map +1 -1
  26. package/build/legacy/components/avatar/parts.cjs +23 -11
  27. package/build/legacy/components/avatar/parts.cjs.map +1 -1
  28. package/build/legacy/components/avatar/primitives.cjs +23 -11
  29. package/build/legacy/components/avatar/primitives.cjs.map +1 -1
  30. package/build/legacy/components/button/button.cjs +23 -11
  31. package/build/legacy/components/button/button.cjs.map +1 -1
  32. package/build/legacy/components/button/index.cjs +23 -11
  33. package/build/legacy/components/button/index.cjs.map +1 -1
  34. package/build/legacy/components/button/parts.cjs +23 -11
  35. package/build/legacy/components/button/parts.cjs.map +1 -1
  36. package/build/legacy/components/button/primitives.cjs +23 -11
  37. package/build/legacy/components/button/primitives.cjs.map +1 -1
  38. package/build/legacy/components/carousel/carousel.cjs +239 -0
  39. package/build/legacy/components/carousel/carousel.cjs.map +1 -0
  40. package/build/legacy/components/carousel/carousel.d.cts +2 -0
  41. package/build/legacy/components/carousel/index.cjs +257 -0
  42. package/build/legacy/components/carousel/index.cjs.map +1 -0
  43. package/build/legacy/components/carousel/index.d.cts +19 -0
  44. package/build/legacy/components/carousel/parts.cjs +198 -0
  45. package/build/legacy/components/carousel/parts.cjs.map +1 -0
  46. package/build/legacy/components/carousel/parts.d.cts +1 -0
  47. package/build/legacy/components/carousel/primitives.cjs +198 -0
  48. package/build/legacy/components/carousel/primitives.cjs.map +1 -0
  49. package/build/legacy/components/carousel/primitives.d.cts +16 -0
  50. package/build/legacy/components/checkbox/checkbox-icon.cjs +23 -11
  51. package/build/legacy/components/checkbox/checkbox-icon.cjs.map +1 -1
  52. package/build/legacy/components/checkbox/checkbox.cjs +23 -11
  53. package/build/legacy/components/checkbox/checkbox.cjs.map +1 -1
  54. package/build/legacy/components/checkbox/index.cjs +23 -11
  55. package/build/legacy/components/checkbox/index.cjs.map +1 -1
  56. package/build/legacy/components/checkbox/parts.cjs +23 -11
  57. package/build/legacy/components/checkbox/parts.cjs.map +1 -1
  58. package/build/legacy/components/checkbox/primitives.cjs +23 -11
  59. package/build/legacy/components/checkbox/primitives.cjs.map +1 -1
  60. package/build/legacy/components/circular-progress/circular-progress.cjs +23 -11
  61. package/build/legacy/components/circular-progress/circular-progress.cjs.map +1 -1
  62. package/build/legacy/components/circular-progress/index.cjs +23 -11
  63. package/build/legacy/components/circular-progress/index.cjs.map +1 -1
  64. package/build/legacy/components/circular-progress/primitives.cjs +23 -11
  65. package/build/legacy/components/circular-progress/primitives.cjs.map +1 -1
  66. package/build/legacy/components/combobox/combobox.cjs +23 -11
  67. package/build/legacy/components/combobox/combobox.cjs.map +1 -1
  68. package/build/legacy/components/combobox/index.cjs +23 -11
  69. package/build/legacy/components/combobox/index.cjs.map +1 -1
  70. package/build/legacy/components/combobox/item-group.cjs +23 -11
  71. package/build/legacy/components/combobox/item-group.cjs.map +1 -1
  72. package/build/legacy/components/combobox/item.cjs +23 -11
  73. package/build/legacy/components/combobox/item.cjs.map +1 -1
  74. package/build/legacy/components/combobox/parts.cjs +23 -11
  75. package/build/legacy/components/combobox/parts.cjs.map +1 -1
  76. package/build/legacy/components/combobox/primitives.cjs +23 -11
  77. package/build/legacy/components/combobox/primitives.cjs.map +1 -1
  78. package/build/legacy/components/combobox/use-stateful-collection.cjs +23 -11
  79. package/build/legacy/components/combobox/use-stateful-collection.cjs.map +1 -1
  80. package/build/legacy/components/cta-dialog/index.cjs +23 -11
  81. package/build/legacy/components/cta-dialog/index.cjs.map +1 -1
  82. package/build/legacy/components/cta-dialog/provider.cjs +23 -11
  83. package/build/legacy/components/cta-dialog/provider.cjs.map +1 -1
  84. package/build/legacy/components/cta-dialog/trigger-item.cjs +23 -11
  85. package/build/legacy/components/cta-dialog/trigger-item.cjs.map +1 -1
  86. package/build/legacy/components/date-picker/calendar.cjs +23 -11
  87. package/build/legacy/components/date-picker/calendar.cjs.map +1 -1
  88. package/build/legacy/components/date-picker/content.cjs +23 -11
  89. package/build/legacy/components/date-picker/content.cjs.map +1 -1
  90. package/build/legacy/components/date-picker/date-picker.cjs +23 -11
  91. package/build/legacy/components/date-picker/date-picker.cjs.map +1 -1
  92. package/build/legacy/components/date-picker/day-view.cjs +23 -11
  93. package/build/legacy/components/date-picker/day-view.cjs.map +1 -1
  94. package/build/legacy/components/date-picker/index.cjs +23 -11
  95. package/build/legacy/components/date-picker/index.cjs.map +1 -1
  96. package/build/legacy/components/date-picker/input.cjs +23 -11
  97. package/build/legacy/components/date-picker/input.cjs.map +1 -1
  98. package/build/legacy/components/date-picker/month-view.cjs +23 -11
  99. package/build/legacy/components/date-picker/month-view.cjs.map +1 -1
  100. package/build/legacy/components/date-picker/parts.cjs +23 -11
  101. package/build/legacy/components/date-picker/parts.cjs.map +1 -1
  102. package/build/legacy/components/date-picker/primitives.cjs +23 -11
  103. package/build/legacy/components/date-picker/primitives.cjs.map +1 -1
  104. package/build/legacy/components/date-picker/range-input.cjs +23 -11
  105. package/build/legacy/components/date-picker/range-input.cjs.map +1 -1
  106. package/build/legacy/components/date-picker/trigger.cjs +23 -11
  107. package/build/legacy/components/date-picker/trigger.cjs.map +1 -1
  108. package/build/legacy/components/date-picker/view-control-group.cjs +23 -11
  109. package/build/legacy/components/date-picker/view-control-group.cjs.map +1 -1
  110. package/build/legacy/components/date-picker/year-view.cjs +23 -11
  111. package/build/legacy/components/date-picker/year-view.cjs.map +1 -1
  112. package/build/legacy/components/deprecated/Label.cjs +23 -11
  113. package/build/legacy/components/deprecated/Label.cjs.map +1 -1
  114. package/build/legacy/components/dialog/close-icon-trigger.cjs +23 -11
  115. package/build/legacy/components/dialog/close-icon-trigger.cjs.map +1 -1
  116. package/build/legacy/components/dialog/dialog.cjs +23 -11
  117. package/build/legacy/components/dialog/dialog.cjs.map +1 -1
  118. package/build/legacy/components/dialog/index.cjs +23 -11
  119. package/build/legacy/components/dialog/index.cjs.map +1 -1
  120. package/build/legacy/components/dialog/parts.cjs +23 -11
  121. package/build/legacy/components/dialog/parts.cjs.map +1 -1
  122. package/build/legacy/components/dialog/primitives.cjs +23 -11
  123. package/build/legacy/components/dialog/primitives.cjs.map +1 -1
  124. package/build/legacy/components/field/field.cjs +23 -11
  125. package/build/legacy/components/field/field.cjs.map +1 -1
  126. package/build/legacy/components/field/helper-text.cjs +23 -11
  127. package/build/legacy/components/field/helper-text.cjs.map +1 -1
  128. package/build/legacy/components/field/index.cjs +23 -11
  129. package/build/legacy/components/field/index.cjs.map +1 -1
  130. package/build/legacy/components/field/input.cjs +23 -11
  131. package/build/legacy/components/field/input.cjs.map +1 -1
  132. package/build/legacy/components/field/parts.cjs +23 -11
  133. package/build/legacy/components/field/parts.cjs.map +1 -1
  134. package/build/legacy/components/field/primitives.cjs +23 -11
  135. package/build/legacy/components/field/primitives.cjs.map +1 -1
  136. package/build/legacy/components/fieldset/fieldset.cjs +23 -11
  137. package/build/legacy/components/fieldset/fieldset.cjs.map +1 -1
  138. package/build/legacy/components/fieldset/index.cjs +23 -11
  139. package/build/legacy/components/fieldset/index.cjs.map +1 -1
  140. package/build/legacy/components/fieldset/parts.cjs +23 -11
  141. package/build/legacy/components/fieldset/parts.cjs.map +1 -1
  142. package/build/legacy/components/fieldset/primitives.cjs +23 -11
  143. package/build/legacy/components/fieldset/primitives.cjs.map +1 -1
  144. package/build/legacy/components/file-upload/file-status.cjs +23 -11
  145. package/build/legacy/components/file-upload/file-status.cjs.map +1 -1
  146. package/build/legacy/components/file-upload/file-uploader.cjs +23 -11
  147. package/build/legacy/components/file-upload/file-uploader.cjs.map +1 -1
  148. package/build/legacy/components/file-upload/index.cjs +23 -11
  149. package/build/legacy/components/file-upload/index.cjs.map +1 -1
  150. package/build/legacy/components/icon-button/button.cjs +23 -11
  151. package/build/legacy/components/icon-button/button.cjs.map +1 -1
  152. package/build/legacy/components/icon-button/index.cjs +23 -11
  153. package/build/legacy/components/icon-button/index.cjs.map +1 -1
  154. package/build/legacy/components/icon-button/primitives.cjs +23 -11
  155. package/build/legacy/components/icon-button/primitives.cjs.map +1 -1
  156. package/build/legacy/components/menu/index.cjs +23 -11
  157. package/build/legacy/components/menu/index.cjs.map +1 -1
  158. package/build/legacy/components/menu/menu.cjs +23 -11
  159. package/build/legacy/components/menu/menu.cjs.map +1 -1
  160. package/build/legacy/components/menu/primitives.cjs +23 -11
  161. package/build/legacy/components/menu/primitives.cjs.map +1 -1
  162. package/build/legacy/components/notifications/center.cjs +23 -11
  163. package/build/legacy/components/notifications/center.cjs.map +1 -1
  164. package/build/legacy/components/notifications/close-trigger.cjs +23 -11
  165. package/build/legacy/components/notifications/close-trigger.cjs.map +1 -1
  166. package/build/legacy/components/notifications/index.cjs +23 -11
  167. package/build/legacy/components/notifications/index.cjs.map +1 -1
  168. package/build/legacy/components/notifications/parts.cjs +23 -11
  169. package/build/legacy/components/notifications/parts.cjs.map +1 -1
  170. package/build/legacy/components/notifications/primitives.cjs +23 -11
  171. package/build/legacy/components/notifications/primitives.cjs.map +1 -1
  172. package/build/legacy/components/progress/index.cjs +23 -11
  173. package/build/legacy/components/progress/index.cjs.map +1 -1
  174. package/build/legacy/components/progress/primitives.cjs +23 -11
  175. package/build/legacy/components/progress/primitives.cjs.map +1 -1
  176. package/build/legacy/components/progress/progress-bar.cjs +23 -11
  177. package/build/legacy/components/progress/progress-bar.cjs.map +1 -1
  178. package/build/legacy/components/radio/index.cjs +23 -11
  179. package/build/legacy/components/radio/index.cjs.map +1 -1
  180. package/build/legacy/components/radio/parts.cjs +23 -11
  181. package/build/legacy/components/radio/parts.cjs.map +1 -1
  182. package/build/legacy/components/radio/primitives.cjs +23 -11
  183. package/build/legacy/components/radio/primitives.cjs.map +1 -1
  184. package/build/legacy/components/radio/radio.cjs +23 -11
  185. package/build/legacy/components/radio/radio.cjs.map +1 -1
  186. package/build/legacy/components/rating/index.cjs +23 -11
  187. package/build/legacy/components/rating/index.cjs.map +1 -1
  188. package/build/legacy/components/rating/parts.cjs +23 -11
  189. package/build/legacy/components/rating/parts.cjs.map +1 -1
  190. package/build/legacy/components/rating/primitives.cjs +23 -11
  191. package/build/legacy/components/rating/primitives.cjs.map +1 -1
  192. package/build/legacy/components/rating/rating.cjs +23 -11
  193. package/build/legacy/components/rating/rating.cjs.map +1 -1
  194. package/build/legacy/components/select/index.cjs +23 -11
  195. package/build/legacy/components/select/index.cjs.map +1 -1
  196. package/build/legacy/components/select/option-group.cjs +23 -11
  197. package/build/legacy/components/select/option-group.cjs.map +1 -1
  198. package/build/legacy/components/select/option.cjs +23 -11
  199. package/build/legacy/components/select/option.cjs.map +1 -1
  200. package/build/legacy/components/select/parts.cjs +23 -11
  201. package/build/legacy/components/select/parts.cjs.map +1 -1
  202. package/build/legacy/components/select/primitives.cjs +23 -11
  203. package/build/legacy/components/select/primitives.cjs.map +1 -1
  204. package/build/legacy/components/select/select.cjs +23 -11
  205. package/build/legacy/components/select/select.cjs.map +1 -1
  206. package/build/legacy/components/switch/index.cjs +23 -11
  207. package/build/legacy/components/switch/index.cjs.map +1 -1
  208. package/build/legacy/components/switch/parts.cjs +23 -11
  209. package/build/legacy/components/switch/parts.cjs.map +1 -1
  210. package/build/legacy/components/switch/primitives.cjs +23 -11
  211. package/build/legacy/components/switch/primitives.cjs.map +1 -1
  212. package/build/legacy/components/switch/switch.cjs +23 -11
  213. package/build/legacy/components/switch/switch.cjs.map +1 -1
  214. package/build/legacy/components/table/index.cjs +23 -11
  215. package/build/legacy/components/table/index.cjs.map +1 -1
  216. package/build/legacy/components/table/parts.cjs +23 -11
  217. package/build/legacy/components/table/parts.cjs.map +1 -1
  218. package/build/legacy/components/table/primitives.cjs +23 -11
  219. package/build/legacy/components/table/primitives.cjs.map +1 -1
  220. package/build/legacy/components/table/table.cjs +23 -11
  221. package/build/legacy/components/table/table.cjs.map +1 -1
  222. package/build/legacy/components/tabs/index.cjs +23 -11
  223. package/build/legacy/components/tabs/index.cjs.map +1 -1
  224. package/build/legacy/components/tabs/parts.cjs +23 -11
  225. package/build/legacy/components/tabs/parts.cjs.map +1 -1
  226. package/build/legacy/components/tabs/primitives.cjs +23 -11
  227. package/build/legacy/components/tabs/primitives.cjs.map +1 -1
  228. package/build/legacy/components/tabs/tabs.cjs +23 -11
  229. package/build/legacy/components/tabs/tabs.cjs.map +1 -1
  230. package/build/legacy/components/tag/index.cjs +23 -11
  231. package/build/legacy/components/tag/index.cjs.map +1 -1
  232. package/build/legacy/components/tag/tag.cjs +23 -11
  233. package/build/legacy/components/tag/tag.cjs.map +1 -1
  234. package/build/legacy/components/theme/index.cjs +23 -11
  235. package/build/legacy/components/theme/index.cjs.map +1 -1
  236. package/build/legacy/components/theme/theme.cjs +23 -11
  237. package/build/legacy/components/theme/theme.cjs.map +1 -1
  238. package/build/legacy/components/toggle/index.cjs +23 -11
  239. package/build/legacy/components/toggle/index.cjs.map +1 -1
  240. package/build/legacy/components/toggle/parts.cjs +23 -11
  241. package/build/legacy/components/toggle/parts.cjs.map +1 -1
  242. package/build/legacy/components/toggle/primitives.cjs +23 -11
  243. package/build/legacy/components/toggle/primitives.cjs.map +1 -1
  244. package/build/legacy/components/tooltip/index.cjs +23 -11
  245. package/build/legacy/components/tooltip/index.cjs.map +1 -1
  246. package/build/legacy/components/tooltip/parts.cjs +23 -11
  247. package/build/legacy/components/tooltip/parts.cjs.map +1 -1
  248. package/build/legacy/components/tooltip/primitives.cjs +23 -11
  249. package/build/legacy/components/tooltip/primitives.cjs.map +1 -1
  250. package/build/legacy/components/tooltip/tooltip.cjs +23 -11
  251. package/build/legacy/components/tooltip/tooltip.cjs.map +1 -1
  252. package/build/legacy/context/confirm-modal.cjs +23 -11
  253. package/build/legacy/context/confirm-modal.cjs.map +1 -1
  254. package/build/legacy/context/field.cjs +23 -11
  255. package/build/legacy/context/field.cjs.map +1 -1
  256. package/build/legacy/context/prompt-modal.cjs +23 -11
  257. package/build/legacy/context/prompt-modal.cjs.map +1 -1
  258. package/build/legacy/index.cjs +513 -429
  259. package/build/legacy/index.cjs.map +1 -1
  260. package/build/legacy/index.d.cts +19 -0
  261. package/build/legacy/system/factory.cjs +23 -11
  262. package/build/legacy/system/factory.cjs.map +1 -1
  263. package/build/legacy/system/index.cjs +23 -11
  264. package/build/legacy/system/index.cjs.map +1 -1
  265. package/build/legacy/system/primitive-factory.cjs +23 -11
  266. package/build/legacy/system/primitive-factory.cjs.map +1 -1
  267. package/build/modern/_tsup-dts-rollup.d.ts +242 -11
  268. package/build/modern/{chunk-KHU3YTLM.js → chunk-236F7MCH.js} +2 -2
  269. package/build/modern/{chunk-BS4V2YJV.js → chunk-2D6BHWPB.js} +3 -3
  270. package/build/modern/{chunk-IWJCQ4BM.js → chunk-2KVC3OJ3.js} +3 -3
  271. package/build/modern/{chunk-UHS2TNFC.js → chunk-2UQWJSA6.js} +2 -2
  272. package/build/modern/{chunk-2VVJATIW.js → chunk-2Z7IKMZC.js} +7 -7
  273. package/build/modern/{chunk-YAZIBTA2.js → chunk-3NPWHL5X.js} +2 -2
  274. package/build/modern/{chunk-S7HDNFJJ.js → chunk-3UIV3HMB.js} +2 -2
  275. package/build/modern/{chunk-WK7TUQIS.js → chunk-3X6VM5FS.js} +2 -2
  276. package/build/modern/{chunk-Y7UXAFII.js → chunk-3Z6W4ZFA.js} +2 -2
  277. package/build/modern/{chunk-YMFUEQ2A.js → chunk-45ZTZUCD.js} +3 -3
  278. package/build/modern/{chunk-7MWSOSOY.js → chunk-4O26WCRC.js} +2 -2
  279. package/build/modern/{chunk-ZGJDFQN2.js → chunk-4O64W4BA.js} +2 -2
  280. package/build/modern/{chunk-X6KB5LWU.js → chunk-4SOUI4NF.js} +2 -2
  281. package/build/modern/{chunk-77QDH2Q5.js → chunk-5B6LMHY2.js} +2 -2
  282. package/build/modern/{chunk-GLH23RDO.js → chunk-5L5PT37R.js} +2 -2
  283. package/build/modern/{chunk-ZFEGJR5E.js → chunk-5RLQNM73.js} +2 -2
  284. package/build/modern/{chunk-262PENBL.js → chunk-6LU43Z4K.js} +3 -3
  285. package/build/modern/{chunk-AHYFFHUW.js → chunk-76VTLS7X.js} +2 -2
  286. package/build/modern/{chunk-H6ZGH4VM.js → chunk-7B2ZHSH3.js} +2 -2
  287. package/build/modern/{chunk-X34MYQKI.js → chunk-7JNOY5MW.js} +2 -2
  288. package/build/modern/{chunk-FIVEPZ5F.js → chunk-7UKNQ4RD.js} +2 -2
  289. package/build/modern/{chunk-ABMK5P66.js → chunk-AOLWIMWV.js} +2 -2
  290. package/build/modern/{chunk-OG74JDYL.js → chunk-AQNXQVXP.js} +2 -2
  291. package/build/modern/{chunk-4ZQUC4DA.js → chunk-BHZN6P2K.js} +2 -2
  292. package/build/modern/{chunk-33OXE7IJ.js → chunk-BKPIKVU2.js} +24 -12
  293. package/build/modern/chunk-BKPIKVU2.js.map +1 -0
  294. package/build/modern/{chunk-ROWT3E5K.js → chunk-BSJM5VYB.js} +2 -2
  295. package/build/modern/{chunk-PI7MKQ62.js → chunk-BSZVMBX7.js} +2 -2
  296. package/build/modern/{chunk-HUKQPIDV.js → chunk-BXDQ5AXV.js} +2 -2
  297. package/build/modern/{chunk-W7WPVM34.js → chunk-C7XAB665.js} +3 -3
  298. package/build/modern/{chunk-H7N6M7VO.js → chunk-CHEYITRR.js} +2 -2
  299. package/build/modern/{chunk-CKCGLHLS.js → chunk-CONG7TGJ.js} +9 -9
  300. package/build/modern/{chunk-6KGRHE3J.js → chunk-D7BCQ2CQ.js} +2 -2
  301. package/build/modern/{chunk-7GT7UUCB.js → chunk-DH7SFE2R.js} +2 -2
  302. package/build/modern/{chunk-6KIXF4ES.js → chunk-EQ3X7KQ3.js} +2 -2
  303. package/build/modern/{chunk-BGJIAA5F.js → chunk-ET3UY6GV.js} +2 -2
  304. package/build/modern/{chunk-27RTYRM7.js → chunk-EZJMTWXK.js} +2 -2
  305. package/build/modern/{chunk-VB7T2YYD.js → chunk-FSX64HPK.js} +3 -3
  306. package/build/modern/{chunk-JBAE2B2H.js → chunk-FVADFCAE.js} +2 -2
  307. package/build/modern/{chunk-5W6HMI2G.js → chunk-GFFIJGQC.js} +2 -2
  308. package/build/modern/{chunk-LVA6QLLM.js → chunk-GTAIWUFQ.js} +2 -2
  309. package/build/modern/{chunk-7LNGA4BX.js → chunk-GZYLYTAG.js} +2 -2
  310. package/build/modern/{chunk-UZHBWTSE.js → chunk-HCH5I26B.js} +2 -2
  311. package/build/modern/{chunk-6XO2RTIJ.js → chunk-HMUQEMV2.js} +2 -2
  312. package/build/modern/{chunk-TJXWSSHO.js → chunk-HYEFRC5Z.js} +2 -2
  313. package/build/modern/{chunk-FL3J7LTC.js → chunk-INQZQMLL.js} +2 -2
  314. package/build/modern/{chunk-PGINYK2P.js → chunk-IOX43IGB.js} +2 -2
  315. package/build/modern/{chunk-KDIDKP2L.js → chunk-IRJITAGE.js} +2 -2
  316. package/build/modern/{chunk-RMLBOGDE.js → chunk-IVQCMXV6.js} +3 -3
  317. package/build/modern/{chunk-ZUC3X6GQ.js → chunk-IYF5FS6N.js} +2 -2
  318. package/build/modern/{chunk-TIKG6U4Y.js → chunk-JIEN2PM7.js} +2 -2
  319. package/build/modern/{chunk-T3U6K34Y.js → chunk-JUSH26RO.js} +2 -2
  320. package/build/modern/{chunk-VQIBX475.js → chunk-JVAGLLOA.js} +2 -2
  321. package/build/modern/{chunk-5UZUXCMO.js → chunk-K3NML67W.js} +2 -2
  322. package/build/modern/{chunk-MPVUVQCJ.js → chunk-K3YEOS6O.js} +2 -2
  323. package/build/modern/{chunk-KELIM5A3.js → chunk-KITDXURN.js} +2 -2
  324. package/build/modern/{chunk-NC7AHNAS.js → chunk-KJYNKQX4.js} +6 -6
  325. package/build/modern/{chunk-BFE2SHZO.js → chunk-KZVCQNZI.js} +3 -3
  326. package/build/modern/{chunk-KUF4UUC7.js → chunk-L4KBNOWP.js} +2 -2
  327. package/build/modern/{chunk-KF3WIC2Y.js → chunk-LO6YTNOP.js} +2 -2
  328. package/build/modern/{chunk-Q6FTLT7K.js → chunk-LOJBIVY4.js} +2 -2
  329. package/build/modern/{chunk-CBJ5A5BD.js → chunk-LY6ULD43.js} +6 -6
  330. package/build/modern/{chunk-Q3NDU44T.js → chunk-MMNUVODK.js} +2 -2
  331. package/build/modern/{chunk-NLZGGXMB.js → chunk-MVHFBVDA.js} +2 -2
  332. package/build/modern/{chunk-6P2JY52I.js → chunk-N5D6HNGL.js} +2 -2
  333. package/build/modern/{chunk-L4CKWLXL.js → chunk-NHM5IWBE.js} +2 -2
  334. package/build/modern/{chunk-EMLKVTGD.js → chunk-O4W2BVE7.js} +3 -3
  335. package/build/modern/{chunk-CI7JYXUR.js → chunk-OG644D7M.js} +3 -3
  336. package/build/modern/{chunk-P3J5P524.js → chunk-OX3NA6DQ.js} +2 -2
  337. package/build/modern/{chunk-HJYVIRNA.js → chunk-OYTEXDS6.js} +5 -5
  338. package/build/modern/{chunk-XZ2FNMMC.js → chunk-OZTYYWIX.js} +2 -2
  339. package/build/modern/{chunk-IX5QZCM4.js → chunk-P6JC32U3.js} +2 -2
  340. package/build/modern/chunk-PH3GZIQE.js +39 -0
  341. package/build/modern/chunk-PH3GZIQE.js.map +1 -0
  342. package/build/modern/{chunk-CYK3ZJIX.js → chunk-PZELEMIY.js} +2 -2
  343. package/build/modern/{chunk-BGZTC53N.js → chunk-RI3WN6XL.js} +2 -2
  344. package/build/modern/chunk-RJTFRZAL.js +32 -0
  345. package/build/modern/chunk-RJTFRZAL.js.map +1 -0
  346. package/build/modern/{chunk-ETYXG2J2.js → chunk-RS6DS6RS.js} +2 -2
  347. package/build/modern/{chunk-OSUFAZAK.js → chunk-RT4W6GBB.js} +2 -2
  348. package/build/modern/{chunk-XMFTL6KG.js → chunk-SFS5ILWG.js} +2 -2
  349. package/build/modern/{chunk-7GVDVLCR.js → chunk-SITE2UML.js} +2 -2
  350. package/build/modern/{chunk-XB4HMXOQ.js → chunk-SKOX5PJI.js} +3 -3
  351. package/build/modern/{chunk-A6NEZNGY.js → chunk-SP7TSFMZ.js} +2 -2
  352. package/build/modern/{chunk-J37VR33H.js → chunk-TIQO4VNE.js} +2 -2
  353. package/build/modern/{chunk-2UD72VLC.js → chunk-TJSHJF6G.js} +2 -2
  354. package/build/modern/{chunk-RKKI3J6R.js → chunk-TKHDOZWN.js} +2 -2
  355. package/build/modern/{chunk-46QXBKGK.js → chunk-UZZ26IWW.js} +6 -6
  356. package/build/modern/{chunk-U2ZT7UDW.js → chunk-V5TUC5AS.js} +2 -2
  357. package/build/modern/{chunk-QV5JHBHO.js → chunk-VQUJGCZW.js} +2 -2
  358. package/build/modern/chunk-VVZOWCNQ.js +27 -0
  359. package/build/modern/chunk-VVZOWCNQ.js.map +1 -0
  360. package/build/modern/{chunk-WC6SOU2F.js → chunk-VYJAPLLO.js} +2 -2
  361. package/build/modern/{chunk-RCXKKQQA.js → chunk-WGWEAB2Q.js} +2 -2
  362. package/build/modern/{chunk-GBV7MIBU.js → chunk-X24O5DTP.js} +4 -4
  363. package/build/modern/{chunk-5WT5BM3V.js → chunk-YJRAJNYI.js} +3 -3
  364. package/build/modern/{chunk-X6WOC4RF.js → chunk-YR6G66UT.js} +3 -3
  365. package/build/modern/chunk-YUAUGU3G.js +1 -0
  366. package/build/modern/chunk-YUAUGU3G.js.map +1 -0
  367. package/build/modern/{chunk-BT6FMOKM.js → chunk-YWPXLHUO.js} +2 -2
  368. package/build/modern/{chunk-QHPJ2C76.js → chunk-YZG7BNVB.js} +2 -2
  369. package/build/modern/{chunk-LMEGBPKK.js → chunk-Z5DHBMQF.js} +2 -2
  370. package/build/modern/{chunk-2SBNSYYC.js → chunk-ZFONE65Q.js} +2 -2
  371. package/build/modern/{chunk-ADOFKGU3.js → chunk-ZFVQQJIQ.js} +2 -2
  372. package/build/modern/{chunk-LNDQW46A.js → chunk-ZZ4JETME.js} +2 -2
  373. package/build/modern/components/accordion/index.js +7 -7
  374. package/build/modern/components/accordion/item-group.js +7 -7
  375. package/build/modern/components/accordion/item-indicator.js +6 -6
  376. package/build/modern/components/accordion/parts.js +5 -5
  377. package/build/modern/components/accordion/primitives.js +4 -4
  378. package/build/modern/components/admonition/admonition.js +10 -10
  379. package/build/modern/components/admonition/index.js +10 -10
  380. package/build/modern/components/admonition/match-avatar.js +7 -7
  381. package/build/modern/components/admonition/parts.js +5 -5
  382. package/build/modern/components/admonition/primitives.js +4 -4
  383. package/build/modern/components/avatar/avatar.js +6 -6
  384. package/build/modern/components/avatar/index.js +6 -6
  385. package/build/modern/components/avatar/parts.js +5 -5
  386. package/build/modern/components/avatar/primitives.js +4 -4
  387. package/build/modern/components/button/button.js +5 -5
  388. package/build/modern/components/button/index.js +6 -6
  389. package/build/modern/components/button/parts.js +6 -6
  390. package/build/modern/components/button/primitives.js +4 -4
  391. package/build/modern/components/carousel/carousel.d.ts +2 -0
  392. package/build/modern/components/carousel/carousel.js +15 -0
  393. package/build/modern/components/carousel/carousel.js.map +1 -0
  394. package/build/modern/components/carousel/index.d.ts +19 -0
  395. package/build/modern/components/carousel/index.js +36 -0
  396. package/build/modern/components/carousel/index.js.map +1 -0
  397. package/build/modern/components/carousel/parts.d.ts +1 -0
  398. package/build/modern/components/carousel/parts.js +12 -0
  399. package/build/modern/components/carousel/parts.js.map +1 -0
  400. package/build/modern/components/carousel/primitives.d.ts +16 -0
  401. package/build/modern/components/carousel/primitives.js +25 -0
  402. package/build/modern/components/carousel/primitives.js.map +1 -0
  403. package/build/modern/components/checkbox/checkbox-icon.js +6 -6
  404. package/build/modern/components/checkbox/checkbox.js +7 -7
  405. package/build/modern/components/checkbox/index.js +7 -7
  406. package/build/modern/components/checkbox/parts.js +5 -5
  407. package/build/modern/components/checkbox/primitives.js +4 -4
  408. package/build/modern/components/circular-progress/circular-progress.js +5 -5
  409. package/build/modern/components/circular-progress/index.js +5 -5
  410. package/build/modern/components/circular-progress/primitives.js +4 -4
  411. package/build/modern/components/combobox/combobox.js +6 -6
  412. package/build/modern/components/combobox/index.js +14 -14
  413. package/build/modern/components/combobox/item-group.js +6 -6
  414. package/build/modern/components/combobox/item.js +6 -6
  415. package/build/modern/components/combobox/parts.js +5 -5
  416. package/build/modern/components/combobox/primitives.js +4 -4
  417. package/build/modern/components/combobox/use-stateful-collection.js +5 -5
  418. package/build/modern/components/cta-dialog/index.js +18 -18
  419. package/build/modern/components/cta-dialog/provider.js +17 -17
  420. package/build/modern/components/cta-dialog/trigger-item.js +6 -6
  421. package/build/modern/components/date-picker/calendar.js +15 -15
  422. package/build/modern/components/date-picker/content.js +6 -6
  423. package/build/modern/components/date-picker/date-picker.js +6 -6
  424. package/build/modern/components/date-picker/day-view.js +11 -11
  425. package/build/modern/components/date-picker/index.js +23 -23
  426. package/build/modern/components/date-picker/input.js +9 -9
  427. package/build/modern/components/date-picker/month-view.js +11 -11
  428. package/build/modern/components/date-picker/parts.js +5 -5
  429. package/build/modern/components/date-picker/primitives.js +4 -4
  430. package/build/modern/components/date-picker/range-input.js +9 -9
  431. package/build/modern/components/date-picker/trigger.js +8 -8
  432. package/build/modern/components/date-picker/view-control-group.js +10 -10
  433. package/build/modern/components/date-picker/year-view.js +11 -11
  434. package/build/modern/components/deprecated/Label.js +8 -8
  435. package/build/modern/components/dialog/close-icon-trigger.js +7 -7
  436. package/build/modern/components/dialog/dialog.js +5 -5
  437. package/build/modern/components/dialog/index.js +11 -11
  438. package/build/modern/components/dialog/parts.js +5 -5
  439. package/build/modern/components/dialog/primitives.js +4 -4
  440. package/build/modern/components/field/field.js +6 -6
  441. package/build/modern/components/field/helper-text.js +5 -5
  442. package/build/modern/components/field/index.js +9 -9
  443. package/build/modern/components/field/input.js +4 -4
  444. package/build/modern/components/field/parts.js +5 -5
  445. package/build/modern/components/field/primitives.js +4 -4
  446. package/build/modern/components/fieldset/fieldset.js +6 -6
  447. package/build/modern/components/fieldset/index.js +6 -6
  448. package/build/modern/components/fieldset/parts.js +5 -5
  449. package/build/modern/components/fieldset/primitives.js +4 -4
  450. package/build/modern/components/file-upload/file-status.js +15 -15
  451. package/build/modern/components/file-upload/file-uploader.js +7 -7
  452. package/build/modern/components/file-upload/index.js +16 -16
  453. package/build/modern/components/icon-button/button.js +5 -5
  454. package/build/modern/components/icon-button/index.js +5 -5
  455. package/build/modern/components/icon-button/primitives.js +4 -4
  456. package/build/modern/components/menu/index.js +5 -5
  457. package/build/modern/components/menu/menu.js +5 -5
  458. package/build/modern/components/menu/primitives.js +4 -4
  459. package/build/modern/components/notifications/center.js +9 -9
  460. package/build/modern/components/notifications/close-trigger.js +6 -6
  461. package/build/modern/components/notifications/index.js +10 -10
  462. package/build/modern/components/notifications/parts.js +5 -5
  463. package/build/modern/components/notifications/primitives.js +4 -4
  464. package/build/modern/components/progress/index.js +5 -5
  465. package/build/modern/components/progress/primitives.js +4 -4
  466. package/build/modern/components/progress/progress-bar.js +5 -5
  467. package/build/modern/components/radio/index.js +8 -8
  468. package/build/modern/components/radio/parts.js +5 -5
  469. package/build/modern/components/radio/primitives.js +4 -4
  470. package/build/modern/components/radio/radio.js +5 -5
  471. package/build/modern/components/rating/index.js +6 -6
  472. package/build/modern/components/rating/parts.js +5 -5
  473. package/build/modern/components/rating/primitives.js +4 -4
  474. package/build/modern/components/rating/rating.js +6 -6
  475. package/build/modern/components/select/index.js +10 -10
  476. package/build/modern/components/select/option-group.js +5 -5
  477. package/build/modern/components/select/option.js +6 -6
  478. package/build/modern/components/select/parts.js +5 -5
  479. package/build/modern/components/select/primitives.js +4 -4
  480. package/build/modern/components/select/select.js +6 -6
  481. package/build/modern/components/switch/index.js +6 -6
  482. package/build/modern/components/switch/parts.js +5 -5
  483. package/build/modern/components/switch/primitives.js +4 -4
  484. package/build/modern/components/switch/switch.js +6 -6
  485. package/build/modern/components/table/index.js +6 -6
  486. package/build/modern/components/table/parts.js +5 -5
  487. package/build/modern/components/table/primitives.js +4 -4
  488. package/build/modern/components/table/table.js +5 -5
  489. package/build/modern/components/tabs/index.js +6 -6
  490. package/build/modern/components/tabs/parts.js +5 -5
  491. package/build/modern/components/tabs/primitives.js +4 -4
  492. package/build/modern/components/tabs/tabs.js +6 -6
  493. package/build/modern/components/tag/index.js +6 -6
  494. package/build/modern/components/tag/tag.js +6 -6
  495. package/build/modern/components/theme/index.js +4 -4
  496. package/build/modern/components/theme/theme.js +4 -4
  497. package/build/modern/components/toggle/index.js +5 -5
  498. package/build/modern/components/toggle/parts.js +5 -5
  499. package/build/modern/components/toggle/primitives.js +4 -4
  500. package/build/modern/components/tooltip/index.js +6 -6
  501. package/build/modern/components/tooltip/parts.js +5 -5
  502. package/build/modern/components/tooltip/primitives.js +4 -4
  503. package/build/modern/components/tooltip/tooltip.js +6 -6
  504. package/build/modern/context/confirm-modal.js +15 -15
  505. package/build/modern/context/field.js +4 -4
  506. package/build/modern/context/prompt-modal.js +19 -19
  507. package/build/modern/index.d.ts +19 -0
  508. package/build/modern/index.js +214 -187
  509. package/build/modern/index.js.map +1 -1
  510. package/build/modern/system/factory.js +2 -2
  511. package/build/modern/system/index.js +3 -3
  512. package/build/modern/system/primitive-factory.js +1 -1
  513. package/package.json +6 -6
  514. package/src/components/carousel/carousel.tsx +55 -0
  515. package/src/components/carousel/index.ts +3 -0
  516. package/src/components/carousel/parts.ts +71 -0
  517. package/src/components/carousel/primitives.ts +58 -0
  518. package/src/index.ts +1 -0
  519. package/src/system/primitive-factory.tsx +33 -18
  520. package/build/modern/chunk-33OXE7IJ.js.map +0 -1
  521. /package/build/modern/{chunk-KHU3YTLM.js.map → chunk-236F7MCH.js.map} +0 -0
  522. /package/build/modern/{chunk-BS4V2YJV.js.map → chunk-2D6BHWPB.js.map} +0 -0
  523. /package/build/modern/{chunk-IWJCQ4BM.js.map → chunk-2KVC3OJ3.js.map} +0 -0
  524. /package/build/modern/{chunk-UHS2TNFC.js.map → chunk-2UQWJSA6.js.map} +0 -0
  525. /package/build/modern/{chunk-2VVJATIW.js.map → chunk-2Z7IKMZC.js.map} +0 -0
  526. /package/build/modern/{chunk-YAZIBTA2.js.map → chunk-3NPWHL5X.js.map} +0 -0
  527. /package/build/modern/{chunk-S7HDNFJJ.js.map → chunk-3UIV3HMB.js.map} +0 -0
  528. /package/build/modern/{chunk-WK7TUQIS.js.map → chunk-3X6VM5FS.js.map} +0 -0
  529. /package/build/modern/{chunk-Y7UXAFII.js.map → chunk-3Z6W4ZFA.js.map} +0 -0
  530. /package/build/modern/{chunk-YMFUEQ2A.js.map → chunk-45ZTZUCD.js.map} +0 -0
  531. /package/build/modern/{chunk-7MWSOSOY.js.map → chunk-4O26WCRC.js.map} +0 -0
  532. /package/build/modern/{chunk-ZGJDFQN2.js.map → chunk-4O64W4BA.js.map} +0 -0
  533. /package/build/modern/{chunk-X6KB5LWU.js.map → chunk-4SOUI4NF.js.map} +0 -0
  534. /package/build/modern/{chunk-77QDH2Q5.js.map → chunk-5B6LMHY2.js.map} +0 -0
  535. /package/build/modern/{chunk-GLH23RDO.js.map → chunk-5L5PT37R.js.map} +0 -0
  536. /package/build/modern/{chunk-ZFEGJR5E.js.map → chunk-5RLQNM73.js.map} +0 -0
  537. /package/build/modern/{chunk-262PENBL.js.map → chunk-6LU43Z4K.js.map} +0 -0
  538. /package/build/modern/{chunk-AHYFFHUW.js.map → chunk-76VTLS7X.js.map} +0 -0
  539. /package/build/modern/{chunk-H6ZGH4VM.js.map → chunk-7B2ZHSH3.js.map} +0 -0
  540. /package/build/modern/{chunk-X34MYQKI.js.map → chunk-7JNOY5MW.js.map} +0 -0
  541. /package/build/modern/{chunk-FIVEPZ5F.js.map → chunk-7UKNQ4RD.js.map} +0 -0
  542. /package/build/modern/{chunk-ABMK5P66.js.map → chunk-AOLWIMWV.js.map} +0 -0
  543. /package/build/modern/{chunk-OG74JDYL.js.map → chunk-AQNXQVXP.js.map} +0 -0
  544. /package/build/modern/{chunk-4ZQUC4DA.js.map → chunk-BHZN6P2K.js.map} +0 -0
  545. /package/build/modern/{chunk-ROWT3E5K.js.map → chunk-BSJM5VYB.js.map} +0 -0
  546. /package/build/modern/{chunk-PI7MKQ62.js.map → chunk-BSZVMBX7.js.map} +0 -0
  547. /package/build/modern/{chunk-HUKQPIDV.js.map → chunk-BXDQ5AXV.js.map} +0 -0
  548. /package/build/modern/{chunk-W7WPVM34.js.map → chunk-C7XAB665.js.map} +0 -0
  549. /package/build/modern/{chunk-H7N6M7VO.js.map → chunk-CHEYITRR.js.map} +0 -0
  550. /package/build/modern/{chunk-CKCGLHLS.js.map → chunk-CONG7TGJ.js.map} +0 -0
  551. /package/build/modern/{chunk-6KGRHE3J.js.map → chunk-D7BCQ2CQ.js.map} +0 -0
  552. /package/build/modern/{chunk-7GT7UUCB.js.map → chunk-DH7SFE2R.js.map} +0 -0
  553. /package/build/modern/{chunk-6KIXF4ES.js.map → chunk-EQ3X7KQ3.js.map} +0 -0
  554. /package/build/modern/{chunk-BGJIAA5F.js.map → chunk-ET3UY6GV.js.map} +0 -0
  555. /package/build/modern/{chunk-27RTYRM7.js.map → chunk-EZJMTWXK.js.map} +0 -0
  556. /package/build/modern/{chunk-VB7T2YYD.js.map → chunk-FSX64HPK.js.map} +0 -0
  557. /package/build/modern/{chunk-JBAE2B2H.js.map → chunk-FVADFCAE.js.map} +0 -0
  558. /package/build/modern/{chunk-5W6HMI2G.js.map → chunk-GFFIJGQC.js.map} +0 -0
  559. /package/build/modern/{chunk-LVA6QLLM.js.map → chunk-GTAIWUFQ.js.map} +0 -0
  560. /package/build/modern/{chunk-7LNGA4BX.js.map → chunk-GZYLYTAG.js.map} +0 -0
  561. /package/build/modern/{chunk-UZHBWTSE.js.map → chunk-HCH5I26B.js.map} +0 -0
  562. /package/build/modern/{chunk-6XO2RTIJ.js.map → chunk-HMUQEMV2.js.map} +0 -0
  563. /package/build/modern/{chunk-TJXWSSHO.js.map → chunk-HYEFRC5Z.js.map} +0 -0
  564. /package/build/modern/{chunk-FL3J7LTC.js.map → chunk-INQZQMLL.js.map} +0 -0
  565. /package/build/modern/{chunk-PGINYK2P.js.map → chunk-IOX43IGB.js.map} +0 -0
  566. /package/build/modern/{chunk-KDIDKP2L.js.map → chunk-IRJITAGE.js.map} +0 -0
  567. /package/build/modern/{chunk-RMLBOGDE.js.map → chunk-IVQCMXV6.js.map} +0 -0
  568. /package/build/modern/{chunk-ZUC3X6GQ.js.map → chunk-IYF5FS6N.js.map} +0 -0
  569. /package/build/modern/{chunk-TIKG6U4Y.js.map → chunk-JIEN2PM7.js.map} +0 -0
  570. /package/build/modern/{chunk-T3U6K34Y.js.map → chunk-JUSH26RO.js.map} +0 -0
  571. /package/build/modern/{chunk-VQIBX475.js.map → chunk-JVAGLLOA.js.map} +0 -0
  572. /package/build/modern/{chunk-5UZUXCMO.js.map → chunk-K3NML67W.js.map} +0 -0
  573. /package/build/modern/{chunk-MPVUVQCJ.js.map → chunk-K3YEOS6O.js.map} +0 -0
  574. /package/build/modern/{chunk-KELIM5A3.js.map → chunk-KITDXURN.js.map} +0 -0
  575. /package/build/modern/{chunk-NC7AHNAS.js.map → chunk-KJYNKQX4.js.map} +0 -0
  576. /package/build/modern/{chunk-BFE2SHZO.js.map → chunk-KZVCQNZI.js.map} +0 -0
  577. /package/build/modern/{chunk-KUF4UUC7.js.map → chunk-L4KBNOWP.js.map} +0 -0
  578. /package/build/modern/{chunk-KF3WIC2Y.js.map → chunk-LO6YTNOP.js.map} +0 -0
  579. /package/build/modern/{chunk-Q6FTLT7K.js.map → chunk-LOJBIVY4.js.map} +0 -0
  580. /package/build/modern/{chunk-CBJ5A5BD.js.map → chunk-LY6ULD43.js.map} +0 -0
  581. /package/build/modern/{chunk-Q3NDU44T.js.map → chunk-MMNUVODK.js.map} +0 -0
  582. /package/build/modern/{chunk-NLZGGXMB.js.map → chunk-MVHFBVDA.js.map} +0 -0
  583. /package/build/modern/{chunk-6P2JY52I.js.map → chunk-N5D6HNGL.js.map} +0 -0
  584. /package/build/modern/{chunk-L4CKWLXL.js.map → chunk-NHM5IWBE.js.map} +0 -0
  585. /package/build/modern/{chunk-EMLKVTGD.js.map → chunk-O4W2BVE7.js.map} +0 -0
  586. /package/build/modern/{chunk-CI7JYXUR.js.map → chunk-OG644D7M.js.map} +0 -0
  587. /package/build/modern/{chunk-P3J5P524.js.map → chunk-OX3NA6DQ.js.map} +0 -0
  588. /package/build/modern/{chunk-HJYVIRNA.js.map → chunk-OYTEXDS6.js.map} +0 -0
  589. /package/build/modern/{chunk-XZ2FNMMC.js.map → chunk-OZTYYWIX.js.map} +0 -0
  590. /package/build/modern/{chunk-IX5QZCM4.js.map → chunk-P6JC32U3.js.map} +0 -0
  591. /package/build/modern/{chunk-CYK3ZJIX.js.map → chunk-PZELEMIY.js.map} +0 -0
  592. /package/build/modern/{chunk-BGZTC53N.js.map → chunk-RI3WN6XL.js.map} +0 -0
  593. /package/build/modern/{chunk-ETYXG2J2.js.map → chunk-RS6DS6RS.js.map} +0 -0
  594. /package/build/modern/{chunk-OSUFAZAK.js.map → chunk-RT4W6GBB.js.map} +0 -0
  595. /package/build/modern/{chunk-XMFTL6KG.js.map → chunk-SFS5ILWG.js.map} +0 -0
  596. /package/build/modern/{chunk-7GVDVLCR.js.map → chunk-SITE2UML.js.map} +0 -0
  597. /package/build/modern/{chunk-XB4HMXOQ.js.map → chunk-SKOX5PJI.js.map} +0 -0
  598. /package/build/modern/{chunk-A6NEZNGY.js.map → chunk-SP7TSFMZ.js.map} +0 -0
  599. /package/build/modern/{chunk-J37VR33H.js.map → chunk-TIQO4VNE.js.map} +0 -0
  600. /package/build/modern/{chunk-2UD72VLC.js.map → chunk-TJSHJF6G.js.map} +0 -0
  601. /package/build/modern/{chunk-RKKI3J6R.js.map → chunk-TKHDOZWN.js.map} +0 -0
  602. /package/build/modern/{chunk-46QXBKGK.js.map → chunk-UZZ26IWW.js.map} +0 -0
  603. /package/build/modern/{chunk-U2ZT7UDW.js.map → chunk-V5TUC5AS.js.map} +0 -0
  604. /package/build/modern/{chunk-QV5JHBHO.js.map → chunk-VQUJGCZW.js.map} +0 -0
  605. /package/build/modern/{chunk-WC6SOU2F.js.map → chunk-VYJAPLLO.js.map} +0 -0
  606. /package/build/modern/{chunk-RCXKKQQA.js.map → chunk-WGWEAB2Q.js.map} +0 -0
  607. /package/build/modern/{chunk-GBV7MIBU.js.map → chunk-X24O5DTP.js.map} +0 -0
  608. /package/build/modern/{chunk-5WT5BM3V.js.map → chunk-YJRAJNYI.js.map} +0 -0
  609. /package/build/modern/{chunk-X6WOC4RF.js.map → chunk-YR6G66UT.js.map} +0 -0
  610. /package/build/modern/{chunk-BT6FMOKM.js.map → chunk-YWPXLHUO.js.map} +0 -0
  611. /package/build/modern/{chunk-QHPJ2C76.js.map → chunk-YZG7BNVB.js.map} +0 -0
  612. /package/build/modern/{chunk-LMEGBPKK.js.map → chunk-Z5DHBMQF.js.map} +0 -0
  613. /package/build/modern/{chunk-2SBNSYYC.js.map → chunk-ZFONE65Q.js.map} +0 -0
  614. /package/build/modern/{chunk-ADOFKGU3.js.map → chunk-ZFVQQJIQ.js.map} +0 -0
  615. /package/build/modern/{chunk-LNDQW46A.js.map → chunk-ZZ4JETME.js.map} +0 -0
@@ -52,23 +52,28 @@ var CerberusPrimitive = class {
52
52
  /**
53
53
  * Creates a Cerberus component with bare features and no recipe.
54
54
  * @param Component - The React component to enhance with Cerberus features.
55
+ * Can be a string or a component reference.
55
56
  * @returns A new React component that applies Cerberus features to the
56
57
  * original component.
58
+ *
57
59
  * @example
58
- * ```typescript
59
- * const { withNoRecipe } = createCerberusPrimitive(button)
60
- * const Button = withNoRecipe(RawButton)
60
+ * ```ts
61
+ * const { withNoRecipe } = createCerberusPrimitive(buttonRecipe)
62
+ * const Button = withNoRecipe('button')
61
63
  * ```
62
64
  */
63
65
  __publicField(this, "withNoRecipe", (Component, options) => {
64
66
  const { defaultProps } = options || {};
65
- this.validateComponent(Component);
67
+ const El = Component;
66
68
  const CerbComponent = (props) => {
67
69
  const { css: customCss, className, ...nativeProps } = props;
68
70
  const styles = this.hasStyles((0, import_css.cx)(className, (0, import_css.css)(customCss)));
69
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(Component, { ...defaultProps, ...styles, ...nativeProps });
71
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(El, { ...defaultProps, ...styles, ...nativeProps });
70
72
  };
71
- CerbComponent.displayName = Component.displayName || Component.name;
73
+ if (this.validateComponent(El)) {
74
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
75
+ CerbComponent.displayName = ElName;
76
+ }
72
77
  return CerbComponent;
73
78
  });
74
79
  /**
@@ -80,8 +85,8 @@ var CerberusPrimitive = class {
80
85
  */
81
86
  __publicField(this, "withRecipe", (Component, options) => {
82
87
  const { defaultProps } = options || {};
88
+ const El = Component;
83
89
  const recipe = this.recipe;
84
- this.validateComponent(Component);
85
90
  const CerbComponent = (internalProps) => {
86
91
  const {
87
92
  css: customCss,
@@ -99,7 +104,10 @@ var CerberusPrimitive = class {
99
104
  }
100
105
  );
101
106
  };
102
- CerbComponent.displayName = Component.displayName || Component.name;
107
+ if (this.validateComponent(El)) {
108
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
109
+ CerbComponent.displayName = ElName;
110
+ }
103
111
  return CerbComponent;
104
112
  });
105
113
  /**
@@ -116,8 +124,8 @@ var CerberusPrimitive = class {
116
124
  */
117
125
  __publicField(this, "withSlotRecipe", (Component, slot, options) => {
118
126
  const { defaultProps } = options || {};
127
+ const El = Component;
119
128
  const recipe = this.recipe;
120
- this.validateComponent(Component);
121
129
  const CerbComponent = (internalProps) => {
122
130
  const {
123
131
  css: customCss,
@@ -136,7 +144,10 @@ var CerberusPrimitive = class {
136
144
  }
137
145
  );
138
146
  };
139
- CerbComponent.displayName = Component.displayName || Component.name;
147
+ if (this.validateComponent(El)) {
148
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
149
+ CerbComponent.displayName = ElName;
150
+ }
140
151
  return CerbComponent;
141
152
  });
142
153
  this.recipe = recipe ?? null;
@@ -151,8 +162,9 @@ var CerberusPrimitive = class {
151
162
  }
152
163
  validateComponent(Component) {
153
164
  if (typeof Component !== "function" && typeof Component !== "object") {
154
- throw new Error("Expected a React component as the first argument.");
165
+ return false;
155
166
  }
167
+ return true;
156
168
  }
157
169
  };
158
170
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/dialog/close-icon-trigger.tsx","../../../../src/context/cerberus.tsx","../../../../src/components/icon-button/primitives.ts","../../../../src/system/primitive-factory.tsx","../../../../src/system/index.ts","../../../../src/components/icon-button/button.tsx","../../../../src/components/dialog/primitives.tsx"],"sourcesContent":["'use client'\n\nimport { useCerberusContext } from '../../context/cerberus'\nimport { IconButton } from '../icon-button/index'\nimport { DialogCloseTrigger, type DialogCloseTriggerProps } from './primitives'\nimport { dialog } from 'styled-system/recipes'\nimport { cx } from 'styled-system/css'\n\n/**\n * This module contains the close trigger for the dialog.\n * @module react/dialog\n */\n\nexport function DialogCloseIconTrigger(props: DialogCloseTriggerProps) {\n const styles = dialog()\n\n const { icons } = useCerberusContext()\n const { close: CloseIcon } = icons\n\n return (\n <DialogCloseTrigger\n {...props}\n className={cx(styles.closeTrigger, props.className)}\n asChild\n >\n <IconButton\n ariaLabel=\"Close dialog\"\n palette=\"action\"\n size=\"lg\"\n usage=\"ghost\"\n >\n <CloseIcon />\n </IconButton>\n </DialogCloseTrigger>\n )\n}\n","'use client'\n\nimport { createContext, useContext, type PropsWithChildren } from 'react'\nimport type { SystemConfig } from '../config'\n\n/**\n * This module contains the Cerberus configuration context and helpers.\n * @module context/cerberus\n */\n\ntype CerberusContextValue = SystemConfig\n\nconst CerberusContext = createContext<CerberusContextValue | null>(null)\n\ninterface CerberusProviderProps {\n config: SystemConfig\n}\n\n/**\n * Cerberus configuration provider.\n * @param props.config The Cerberus configuration created with\n * `makeSystemConfig` helper.\n */\nexport function CerberusProvider(\n props: PropsWithChildren<CerberusProviderProps>,\n) {\n return (\n <CerberusContext.Provider value={props.config}>\n {props.children}\n </CerberusContext.Provider>\n )\n}\n\n/**\n * Returns the Cerberus configuration context.\n * @returns The Cerberus configuration context.\n */\nexport function useCerberusContext() {\n const context = useContext(CerberusContext)\n if (!context) {\n throw new Error('useCerberus must be used within a CerberusProvider')\n }\n return context\n}\n","import { ark, type HTMLArkProps } from '@ark-ui/react/factory'\nimport { iconButton, type IconButtonVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the IconButton component primitives.\n * @module @cerberus-design/react/components/icon-button/primitives\n */\n\nconst { withRecipe } = createCerberusPrimitive(iconButton)\n\n/**\n * The root element of the Button component.\n */\nexport type IconButtonRootProps = CerberusPrimitiveProps<\n HTMLArkProps<'button'> & IconButtonVariantProps\n>\nexport const IconButtonRoot = withRecipe(ark.button)\n","import { css, cx } from 'styled-system/css'\nimport type { RecipeVariantRecord } from 'styled-system/types'\nimport {\n type ComponentType,\n type HTMLAttributes,\n type PropsWithChildren,\n} from 'react'\nimport type { WithCss } from '../types'\nimport type {\n CerberusPrimitiveEl,\n CerberusPrimitiveRecipe,\n CerberusRecipe,\n CerberusSlotRecipe,\n WithRecipeOptions,\n} from './types'\n\n/**\n * This module contains a factory for creating Cerberus primitives.\n * @module @cerberus/core/system/factory\n */\n\nexport class CerberusPrimitive {\n recipe: CerberusPrimitiveRecipe | null\n\n constructor(recipe?: CerberusPrimitiveRecipe) {\n this.recipe = recipe ?? null\n }\n\n private hasStyles(styles: string | undefined): Record<string, unknown> {\n if (styles) {\n return {\n className: styles,\n }\n }\n return {}\n }\n\n private validateComponent<P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n ) {\n if (typeof Component !== 'function' && typeof Component !== 'object') {\n throw new Error('Expected a React component as the first argument.')\n }\n }\n\n /**\n * Creates a Cerberus component with bare features and no recipe.\n * @param Component - The React component to enhance with Cerberus features.\n * @returns A new React component that applies Cerberus features to the\n * original component.\n * @example\n * ```typescript\n * const { withNoRecipe } = createCerberusPrimitive(button)\n * const Button = withNoRecipe(RawButton)\n * ```\n */\n withNoRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P> => {\n const { defaultProps } = options || {}\n\n this.validateComponent(Component)\n\n const CerbComponent = (props: PropsWithChildren<P> & WithCss) => {\n const { css: customCss, className, ...nativeProps } = props\n const styles = this.hasStyles(cx(className, css(customCss)))\n return <Component {...defaultProps} {...styles} {...(nativeProps as P)} />\n }\n\n CerbComponent.displayName = Component.displayName || Component.name\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with the given recipe.\n * @param Component - The React component to enhance with the recipe.\n * @param options - Options for the recipe.\n * @returns A new React component that applies the recipe to the original\n * component.\n */\n withRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P & WithRecipeOptions['defaultProps']> => {\n const { defaultProps } = options || {}\n const recipe = this.recipe as CerberusRecipe\n\n this.validateComponent(Component)\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const recipeStyles = recipe(variantOptions)\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, recipeStyles, css(customCss))}\n />\n )\n }\n\n CerbComponent.displayName = Component.displayName || Component.name\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with a slot recipe applied.\n * @param Component - The React component to enhance with Cerberus features.\n * @param recipe - The slot recipe to apply to the component.\n * @returns A new React component that applies Cerberus features and the\n * specified slot recipe to the original component.\n * @example\n * ```typescript\n * const { withSlotRecipe } = createCerberusPrimitive(field)\n * const Field = withSlotRecipe(RawField, field)\n * ```\n */\n withSlotRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n slot: keyof RecipeVariantRecord,\n options?: WithRecipeOptions,\n ) => {\n const { defaultProps } = options || {}\n const recipe = this.recipe as CerberusSlotRecipe<typeof slot>\n\n this.validateComponent(Component)\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const styles = recipe(variantOptions)\n const slotStyles = styles[slot as keyof typeof styles]\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, slotStyles, css(customCss))}\n />\n )\n }\n\n CerbComponent.displayName = Component.displayName || Component.name\n return CerbComponent\n }\n}\n","import { CerberusPrimitive } from './primitive-factory'\nimport type { CerberusFactory, CerberusPrimitiveRecipe } from './types'\nimport { cerberusFactoryProxy } from './factory'\n\n/**\n * This module contains the user interface for creating Cerberus primitives.\n * @module @cerberus/core/system/create-cerb-primitive\n */\n\n/**\n * A factory function that creates a Cerberus primitive instance with the given\n * recipe.\n * @param recipe\n * @returns An object with three methods: `withNoRecipe`, `withRecipe`, and `withSlotRecipe` that\n * apply the recipes and special Cerberus helpers like `css`.\n *\n * @example\n * ```tsx\n * const { withRecipe } = createCerberusPrimitive(myCustomRecipe);\n * export const Button = withRecipe(MyCustomButton)\n * ```\n */\nexport function createCerberusPrimitive<T extends CerberusPrimitiveRecipe>(\n recipe?: T,\n) {\n return new CerberusPrimitive(recipe)\n}\n\n/**\n * A utility function to access Cerberus components by their name.\n * @param component - The name of the Cerberus component to access.\n * @returns The Cerberus component corresponding to the provided name.\n * @throws An error if the component name is not valid.\n *\n * @example\n * ```tsx\n * import { cerberus } from '@cerberus/react'\n * const Button = cerberus('button')\n *\n * <Button css={{ color: 'blue' }} asChild>\n * <Link href=\"/some-page\">Click me</Link>\n * </Button>\n * ```\n */\nexport const cerberus = cerberusFactoryProxy as CerberusFactory\n\nexport * from './types'\n","import { IconButtonRoot, type IconButtonRootProps } from './primitives'\n\n/**\n * This module contains the Icon Button component.\n * @module\n */\n\nexport interface IconButtonProps extends IconButtonRootProps {\n /**\n * The aria-label attribute for the icon button.\n */\n ariaLabel: string\n}\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) {\n const { ariaLabel, ...rootProps } = props\n return (\n <IconButtonRoot {...rootProps} aria-label={ariaLabel ?? 'Icon Button'} />\n )\n}\n","import {\n Dialog,\n type DialogBackdropProps as ArkDialogBackdropProps,\n type DialogContentProps as ArkDialogContentProps,\n type DialogDescriptionProps as ArkDialogDescriptionProps,\n type DialogPositionerProps as ArkDialogPositionerProps,\n type DialogRootProps as ArkDialogRootProps,\n type DialogTitleProps as ArkDialogTitleProps,\n type DialogTriggerProps as ArkDialogTriggerProps,\n} from '@ark-ui/react/dialog'\nimport { dialog, type DialogVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the primitives of the Dialog component.\n * @module 'dialog/primitives'\n */\n\nconst { withSlotRecipe, withNoRecipe } = createCerberusPrimitive(dialog)\n\n/**\n * The provider that controls the dialog components.\n */\nexport type DialogRootProps = CerberusPrimitiveProps<ArkDialogRootProps>\nexport const DialogRoot = withNoRecipe(Dialog.Root)\n\n/**\n * An abstraction of the DialogRoot component for naming consistency.\n */\nexport const DialogProvider = DialogRoot\n\n/**\n * The trigger that opens the dialog.\n */\nexport type DialogTriggerProps = CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogTrigger = withSlotRecipe(Dialog.Trigger, 'trigger')\n\n/**\n * The overlay of the dialog.\n */\nexport type DialogBackdropProps = CerberusPrimitiveProps<ArkDialogBackdropProps>\nexport const DialogBackdrop = withSlotRecipe(Dialog.Backdrop, 'backdrop')\n\n/**\n * The container that positions the dialog.\n */\nexport type DialogPositionerProps =\n CerberusPrimitiveProps<ArkDialogPositionerProps>\nexport const DialogPositioner = withSlotRecipe(Dialog.Positioner, 'positioner')\n\n/**\n * The visible content of the dialog.\n */\nexport type DialogContentProps = CerberusPrimitiveProps<\n ArkDialogContentProps & DialogVariantProps\n>\nexport const DialogContent = withSlotRecipe(Dialog.Content, 'content')\n\n/**\n * The heading of the dialog.\n */\nexport type DialogHeadingProps = CerberusPrimitiveProps<ArkDialogTitleProps>\nexport const DialogHeading = withSlotRecipe(Dialog.Title, 'title')\n\n/**\n * The description of the dialog.\n */\nexport type DialogDescriptionProps =\n CerberusPrimitiveProps<ArkDialogDescriptionProps>\nexport const DialogDescription = withSlotRecipe(\n Dialog.Description,\n 'description',\n)\n\n/**\n * The trigger that closes the dialog.\n */\nexport type DialogCloseTriggerProps =\n CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogCloseTrigger = withNoRecipe(Dialog.CloseTrigger)\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime","import_recipes","import_recipes","import_css","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../../../src/components/dialog/close-icon-trigger.tsx","../../../../src/context/cerberus.tsx","../../../../src/components/icon-button/primitives.ts","../../../../src/system/primitive-factory.tsx","../../../../src/system/index.ts","../../../../src/components/icon-button/button.tsx","../../../../src/components/dialog/primitives.tsx"],"sourcesContent":["'use client'\n\nimport { useCerberusContext } from '../../context/cerberus'\nimport { IconButton } from '../icon-button/index'\nimport { DialogCloseTrigger, type DialogCloseTriggerProps } from './primitives'\nimport { dialog } from 'styled-system/recipes'\nimport { cx } from 'styled-system/css'\n\n/**\n * This module contains the close trigger for the dialog.\n * @module react/dialog\n */\n\nexport function DialogCloseIconTrigger(props: DialogCloseTriggerProps) {\n const styles = dialog()\n\n const { icons } = useCerberusContext()\n const { close: CloseIcon } = icons\n\n return (\n <DialogCloseTrigger\n {...props}\n className={cx(styles.closeTrigger, props.className)}\n asChild\n >\n <IconButton\n ariaLabel=\"Close dialog\"\n palette=\"action\"\n size=\"lg\"\n usage=\"ghost\"\n >\n <CloseIcon />\n </IconButton>\n </DialogCloseTrigger>\n )\n}\n","'use client'\n\nimport { createContext, useContext, type PropsWithChildren } from 'react'\nimport type { SystemConfig } from '../config'\n\n/**\n * This module contains the Cerberus configuration context and helpers.\n * @module context/cerberus\n */\n\ntype CerberusContextValue = SystemConfig\n\nconst CerberusContext = createContext<CerberusContextValue | null>(null)\n\ninterface CerberusProviderProps {\n config: SystemConfig\n}\n\n/**\n * Cerberus configuration provider.\n * @param props.config The Cerberus configuration created with\n * `makeSystemConfig` helper.\n */\nexport function CerberusProvider(\n props: PropsWithChildren<CerberusProviderProps>,\n) {\n return (\n <CerberusContext.Provider value={props.config}>\n {props.children}\n </CerberusContext.Provider>\n )\n}\n\n/**\n * Returns the Cerberus configuration context.\n * @returns The Cerberus configuration context.\n */\nexport function useCerberusContext() {\n const context = useContext(CerberusContext)\n if (!context) {\n throw new Error('useCerberus must be used within a CerberusProvider')\n }\n return context\n}\n","import { ark, type HTMLArkProps } from '@ark-ui/react/factory'\nimport { iconButton, type IconButtonVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the IconButton component primitives.\n * @module @cerberus-design/react/components/icon-button/primitives\n */\n\nconst { withRecipe } = createCerberusPrimitive(iconButton)\n\n/**\n * The root element of the Button component.\n */\nexport type IconButtonRootProps = CerberusPrimitiveProps<\n HTMLArkProps<'button'> & IconButtonVariantProps\n>\nexport const IconButtonRoot = withRecipe(ark.button)\n","import { css, cx } from 'styled-system/css'\nimport type { RecipeVariantRecord } from 'styled-system/types'\nimport {\n type ComponentType,\n type ElementType,\n type HTMLAttributes,\n type PropsWithChildren,\n} from 'react'\nimport type { WithCss } from '../types'\nimport type {\n CerberusPrimitiveEl,\n CerberusPrimitiveRecipe,\n CerberusRecipe,\n CerberusSlotRecipe,\n WithRecipeOptions,\n} from './types'\n\n/**\n * This module contains a factory for creating Cerberus primitives.\n * @module @cerberus/core/system/factory\n */\n\nexport class CerberusPrimitive {\n recipe: CerberusPrimitiveRecipe | null\n\n constructor(recipe?: CerberusPrimitiveRecipe) {\n this.recipe = recipe ?? null\n }\n\n private hasStyles(styles: string | undefined): Record<string, unknown> {\n if (styles) {\n return {\n className: styles,\n }\n }\n return {}\n }\n\n private validateComponent<P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n ) {\n if (typeof Component !== 'function' && typeof Component !== 'object') {\n return false\n }\n return true\n }\n\n /**\n * Creates a Cerberus component with bare features and no recipe.\n * @param Component - The React component to enhance with Cerberus features.\n * Can be a string or a component reference.\n * @returns A new React component that applies Cerberus features to the\n * original component.\n *\n * @example\n * ```ts\n * const { withNoRecipe } = createCerberusPrimitive(buttonRecipe)\n * const Button = withNoRecipe('button')\n * ```\n */\n withNoRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P> => {\n const { defaultProps } = options || {}\n const El = Component as ComponentType<P> | ElementType\n\n const CerbComponent = (props: PropsWithChildren<P> & WithCss) => {\n const { css: customCss, className, ...nativeProps } = props\n const styles = this.hasStyles(cx(className, css(customCss)))\n return <El {...defaultProps} {...styles} {...(nativeProps as P)} />\n }\n\n if (this.validateComponent(El)) {\n const ElName = typeof El === 'string' ? El : El.displayName || El.name\n CerbComponent.displayName = ElName\n }\n\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with the given recipe.\n * @param Component - The React component to enhance with the recipe.\n * @param options - Options for the recipe.\n * @returns A new React component that applies the recipe to the original\n * component.\n */\n withRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P & WithRecipeOptions['defaultProps']> => {\n const { defaultProps } = options || {}\n const El = Component as ComponentType<P> | ElementType\n\n const recipe = this.recipe as CerberusRecipe\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const recipeStyles = recipe(variantOptions)\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, recipeStyles, css(customCss))}\n />\n )\n }\n\n if (this.validateComponent(El)) {\n const ElName = typeof El === 'string' ? El : El.displayName || El.name\n CerbComponent.displayName = ElName\n }\n\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with a slot recipe applied.\n * @param Component - The React component to enhance with Cerberus features.\n * @param recipe - The slot recipe to apply to the component.\n * @returns A new React component that applies Cerberus features and the\n * specified slot recipe to the original component.\n * @example\n * ```typescript\n * const { withSlotRecipe } = createCerberusPrimitive(field)\n * const Field = withSlotRecipe(RawField, field)\n * ```\n */\n withSlotRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n slot: keyof RecipeVariantRecord,\n options?: WithRecipeOptions,\n ) => {\n const { defaultProps } = options || {}\n const El = Component as ComponentType<P> | ElementType\n\n const recipe = this.recipe as CerberusSlotRecipe<typeof slot>\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const styles = recipe(variantOptions)\n const slotStyles = styles[slot as keyof typeof styles]\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, slotStyles, css(customCss))}\n />\n )\n }\n\n if (this.validateComponent(El)) {\n const ElName = typeof El === 'string' ? El : El.displayName || El.name\n CerbComponent.displayName = ElName\n }\n\n return CerbComponent\n }\n}\n","import { CerberusPrimitive } from './primitive-factory'\nimport type { CerberusFactory, CerberusPrimitiveRecipe } from './types'\nimport { cerberusFactoryProxy } from './factory'\n\n/**\n * This module contains the user interface for creating Cerberus primitives.\n * @module @cerberus/core/system/create-cerb-primitive\n */\n\n/**\n * A factory function that creates a Cerberus primitive instance with the given\n * recipe.\n * @param recipe\n * @returns An object with three methods: `withNoRecipe`, `withRecipe`, and `withSlotRecipe` that\n * apply the recipes and special Cerberus helpers like `css`.\n *\n * @example\n * ```tsx\n * const { withRecipe } = createCerberusPrimitive(myCustomRecipe);\n * export const Button = withRecipe(MyCustomButton)\n * ```\n */\nexport function createCerberusPrimitive<T extends CerberusPrimitiveRecipe>(\n recipe?: T,\n) {\n return new CerberusPrimitive(recipe)\n}\n\n/**\n * A utility function to access Cerberus components by their name.\n * @param component - The name of the Cerberus component to access.\n * @returns The Cerberus component corresponding to the provided name.\n * @throws An error if the component name is not valid.\n *\n * @example\n * ```tsx\n * import { cerberus } from '@cerberus/react'\n * const Button = cerberus('button')\n *\n * <Button css={{ color: 'blue' }} asChild>\n * <Link href=\"/some-page\">Click me</Link>\n * </Button>\n * ```\n */\nexport const cerberus = cerberusFactoryProxy as CerberusFactory\n\nexport * from './types'\n","import { IconButtonRoot, type IconButtonRootProps } from './primitives'\n\n/**\n * This module contains the Icon Button component.\n * @module\n */\n\nexport interface IconButtonProps extends IconButtonRootProps {\n /**\n * The aria-label attribute for the icon button.\n */\n ariaLabel: string\n}\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) {\n const { ariaLabel, ...rootProps } = props\n return (\n <IconButtonRoot {...rootProps} aria-label={ariaLabel ?? 'Icon Button'} />\n )\n}\n","import {\n Dialog,\n type DialogBackdropProps as ArkDialogBackdropProps,\n type DialogContentProps as ArkDialogContentProps,\n type DialogDescriptionProps as ArkDialogDescriptionProps,\n type DialogPositionerProps as ArkDialogPositionerProps,\n type DialogRootProps as ArkDialogRootProps,\n type DialogTitleProps as ArkDialogTitleProps,\n type DialogTriggerProps as ArkDialogTriggerProps,\n} from '@ark-ui/react/dialog'\nimport { dialog, type DialogVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the primitives of the Dialog component.\n * @module 'dialog/primitives'\n */\n\nconst { withSlotRecipe, withNoRecipe } = createCerberusPrimitive(dialog)\n\n/**\n * The provider that controls the dialog components.\n */\nexport type DialogRootProps = CerberusPrimitiveProps<ArkDialogRootProps>\nexport const DialogRoot = withNoRecipe(Dialog.Root)\n\n/**\n * An abstraction of the DialogRoot component for naming consistency.\n */\nexport const DialogProvider = DialogRoot\n\n/**\n * The trigger that opens the dialog.\n */\nexport type DialogTriggerProps = CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogTrigger = withSlotRecipe(Dialog.Trigger, 'trigger')\n\n/**\n * The overlay of the dialog.\n */\nexport type DialogBackdropProps = CerberusPrimitiveProps<ArkDialogBackdropProps>\nexport const DialogBackdrop = withSlotRecipe(Dialog.Backdrop, 'backdrop')\n\n/**\n * The container that positions the dialog.\n */\nexport type DialogPositionerProps =\n CerberusPrimitiveProps<ArkDialogPositionerProps>\nexport const DialogPositioner = withSlotRecipe(Dialog.Positioner, 'positioner')\n\n/**\n * The visible content of the dialog.\n */\nexport type DialogContentProps = CerberusPrimitiveProps<\n ArkDialogContentProps & DialogVariantProps\n>\nexport const DialogContent = withSlotRecipe(Dialog.Content, 'content')\n\n/**\n * The heading of the dialog.\n */\nexport type DialogHeadingProps = CerberusPrimitiveProps<ArkDialogTitleProps>\nexport const DialogHeading = withSlotRecipe(Dialog.Title, 'title')\n\n/**\n * The description of the dialog.\n */\nexport type DialogDescriptionProps =\n CerberusPrimitiveProps<ArkDialogDescriptionProps>\nexport const DialogDescription = withSlotRecipe(\n Dialog.Description,\n 'description',\n)\n\n/**\n * The trigger that closes the dialog.\n */\nexport type DialogCloseTriggerProps =\n CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogCloseTrigger = withNoRecipe(Dialog.CloseTrigger)\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime","import_recipes","import_recipes","import_css","import_jsx_runtime"]}
@@ -43,23 +43,28 @@ var CerberusPrimitive = class {
43
43
  /**
44
44
  * Creates a Cerberus component with bare features and no recipe.
45
45
  * @param Component - The React component to enhance with Cerberus features.
46
+ * Can be a string or a component reference.
46
47
  * @returns A new React component that applies Cerberus features to the
47
48
  * original component.
49
+ *
48
50
  * @example
49
- * ```typescript
50
- * const { withNoRecipe } = createCerberusPrimitive(button)
51
- * const Button = withNoRecipe(RawButton)
51
+ * ```ts
52
+ * const { withNoRecipe } = createCerberusPrimitive(buttonRecipe)
53
+ * const Button = withNoRecipe('button')
52
54
  * ```
53
55
  */
54
56
  __publicField(this, "withNoRecipe", (Component, options) => {
55
57
  const { defaultProps } = options || {};
56
- this.validateComponent(Component);
58
+ const El = Component;
57
59
  const CerbComponent = (props) => {
58
60
  const { css: customCss, className, ...nativeProps } = props;
59
61
  const styles = this.hasStyles((0, import_css.cx)(className, (0, import_css.css)(customCss)));
60
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...defaultProps, ...styles, ...nativeProps });
62
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(El, { ...defaultProps, ...styles, ...nativeProps });
61
63
  };
62
- CerbComponent.displayName = Component.displayName || Component.name;
64
+ if (this.validateComponent(El)) {
65
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
66
+ CerbComponent.displayName = ElName;
67
+ }
63
68
  return CerbComponent;
64
69
  });
65
70
  /**
@@ -71,8 +76,8 @@ var CerberusPrimitive = class {
71
76
  */
72
77
  __publicField(this, "withRecipe", (Component, options) => {
73
78
  const { defaultProps } = options || {};
79
+ const El = Component;
74
80
  const recipe = this.recipe;
75
- this.validateComponent(Component);
76
81
  const CerbComponent = (internalProps) => {
77
82
  const {
78
83
  css: customCss,
@@ -90,7 +95,10 @@ var CerberusPrimitive = class {
90
95
  }
91
96
  );
92
97
  };
93
- CerbComponent.displayName = Component.displayName || Component.name;
98
+ if (this.validateComponent(El)) {
99
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
100
+ CerbComponent.displayName = ElName;
101
+ }
94
102
  return CerbComponent;
95
103
  });
96
104
  /**
@@ -107,8 +115,8 @@ var CerberusPrimitive = class {
107
115
  */
108
116
  __publicField(this, "withSlotRecipe", (Component, slot, options) => {
109
117
  const { defaultProps } = options || {};
118
+ const El = Component;
110
119
  const recipe = this.recipe;
111
- this.validateComponent(Component);
112
120
  const CerbComponent = (internalProps) => {
113
121
  const {
114
122
  css: customCss,
@@ -127,7 +135,10 @@ var CerberusPrimitive = class {
127
135
  }
128
136
  );
129
137
  };
130
- CerbComponent.displayName = Component.displayName || Component.name;
138
+ if (this.validateComponent(El)) {
139
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
140
+ CerbComponent.displayName = ElName;
141
+ }
131
142
  return CerbComponent;
132
143
  });
133
144
  this.recipe = recipe ?? null;
@@ -142,8 +153,9 @@ var CerberusPrimitive = class {
142
153
  }
143
154
  validateComponent(Component) {
144
155
  if (typeof Component !== "function" && typeof Component !== "object") {
145
- throw new Error("Expected a React component as the first argument.");
156
+ return false;
146
157
  }
158
+ return true;
147
159
  }
148
160
  };
149
161
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/dialog/dialog.tsx","../../../../src/components/portal/portal.tsx","../../../../src/components/dialog/primitives.tsx","../../../../src/system/primitive-factory.tsx","../../../../src/system/index.ts"],"sourcesContent":["import type { DialogVariantProps } from 'styled-system/recipes'\nimport type { WithCss } from '../../types'\nimport { Portal } from '../portal/index'\nimport {\n DialogBackdrop,\n DialogContent,\n DialogPositioner,\n type DialogContentProps,\n} from './primitives'\n\n/**\n * This module contains and abstraction of the Dialog primitives.\n * @module 'dialog'\n */\n\nexport interface DialogProps\n extends Omit<DialogContentProps, 'size' | 'style'>,\n DialogVariantProps,\n WithCss {}\n\n/**\n * An abstraction of the Dialog primitives that controls the content of the\n * dialog. Must be used within the `DialogProvider` component.\n * @definition [Dialog docs](https://cerberus.digitalu.design/react/dialog)\n * @definition [Ark Dialog docs](https://ark-ui.com/react/docs/components/dialog)\n * @example\n * ```tsx\n * <DialogProvider>\n * <DialogTrigger asChild>\n * <Button>Open Dialog</Button>\n * </DialogTrigger>\n * <Dialog>\n * <Text>Dialog Content</Text>\n * </Dialog>\n * </DialogProvider>\n * ```\n */\nexport function Dialog(props: DialogProps) {\n return (\n <Portal>\n <DialogBackdrop />\n <DialogPositioner>\n <DialogContent {...props} />\n </DialogPositioner>\n </Portal>\n )\n}\n","import { Portal as ArkPortal, type PortalProps } from '@ark-ui/react'\n\n/**\n * This module is the Portal component.\n * @module\n */\n\nexport type { PortalProps }\n\n/**\n * The Portal component is used to render children into a DOM node that exists outside the DOM hierarchy of the parent component.\n * @see https://cerberus.digitalu.design/react/portal\n * @definition [React Portal Docs](https://react.dev/reference/react-dom/createPortal)\n * @example\n * ```tsx\n * 'use client'\n *\n * import { Portal } from '@cerberus/react'\n *\n * function SomeFeatureWithinSSRPage() {\n * return (\n * <Portal>\n * <div>Portal Content outside of the React VDom tree</div>\n * </Portal>\n * )\n * }\n */\nexport const Portal = ArkPortal\n","import {\n Dialog,\n type DialogBackdropProps as ArkDialogBackdropProps,\n type DialogContentProps as ArkDialogContentProps,\n type DialogDescriptionProps as ArkDialogDescriptionProps,\n type DialogPositionerProps as ArkDialogPositionerProps,\n type DialogRootProps as ArkDialogRootProps,\n type DialogTitleProps as ArkDialogTitleProps,\n type DialogTriggerProps as ArkDialogTriggerProps,\n} from '@ark-ui/react/dialog'\nimport { dialog, type DialogVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the primitives of the Dialog component.\n * @module 'dialog/primitives'\n */\n\nconst { withSlotRecipe, withNoRecipe } = createCerberusPrimitive(dialog)\n\n/**\n * The provider that controls the dialog components.\n */\nexport type DialogRootProps = CerberusPrimitiveProps<ArkDialogRootProps>\nexport const DialogRoot = withNoRecipe(Dialog.Root)\n\n/**\n * An abstraction of the DialogRoot component for naming consistency.\n */\nexport const DialogProvider = DialogRoot\n\n/**\n * The trigger that opens the dialog.\n */\nexport type DialogTriggerProps = CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogTrigger = withSlotRecipe(Dialog.Trigger, 'trigger')\n\n/**\n * The overlay of the dialog.\n */\nexport type DialogBackdropProps = CerberusPrimitiveProps<ArkDialogBackdropProps>\nexport const DialogBackdrop = withSlotRecipe(Dialog.Backdrop, 'backdrop')\n\n/**\n * The container that positions the dialog.\n */\nexport type DialogPositionerProps =\n CerberusPrimitiveProps<ArkDialogPositionerProps>\nexport const DialogPositioner = withSlotRecipe(Dialog.Positioner, 'positioner')\n\n/**\n * The visible content of the dialog.\n */\nexport type DialogContentProps = CerberusPrimitiveProps<\n ArkDialogContentProps & DialogVariantProps\n>\nexport const DialogContent = withSlotRecipe(Dialog.Content, 'content')\n\n/**\n * The heading of the dialog.\n */\nexport type DialogHeadingProps = CerberusPrimitiveProps<ArkDialogTitleProps>\nexport const DialogHeading = withSlotRecipe(Dialog.Title, 'title')\n\n/**\n * The description of the dialog.\n */\nexport type DialogDescriptionProps =\n CerberusPrimitiveProps<ArkDialogDescriptionProps>\nexport const DialogDescription = withSlotRecipe(\n Dialog.Description,\n 'description',\n)\n\n/**\n * The trigger that closes the dialog.\n */\nexport type DialogCloseTriggerProps =\n CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogCloseTrigger = withNoRecipe(Dialog.CloseTrigger)\n","import { css, cx } from 'styled-system/css'\nimport type { RecipeVariantRecord } from 'styled-system/types'\nimport {\n type ComponentType,\n type HTMLAttributes,\n type PropsWithChildren,\n} from 'react'\nimport type { WithCss } from '../types'\nimport type {\n CerberusPrimitiveEl,\n CerberusPrimitiveRecipe,\n CerberusRecipe,\n CerberusSlotRecipe,\n WithRecipeOptions,\n} from './types'\n\n/**\n * This module contains a factory for creating Cerberus primitives.\n * @module @cerberus/core/system/factory\n */\n\nexport class CerberusPrimitive {\n recipe: CerberusPrimitiveRecipe | null\n\n constructor(recipe?: CerberusPrimitiveRecipe) {\n this.recipe = recipe ?? null\n }\n\n private hasStyles(styles: string | undefined): Record<string, unknown> {\n if (styles) {\n return {\n className: styles,\n }\n }\n return {}\n }\n\n private validateComponent<P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n ) {\n if (typeof Component !== 'function' && typeof Component !== 'object') {\n throw new Error('Expected a React component as the first argument.')\n }\n }\n\n /**\n * Creates a Cerberus component with bare features and no recipe.\n * @param Component - The React component to enhance with Cerberus features.\n * @returns A new React component that applies Cerberus features to the\n * original component.\n * @example\n * ```typescript\n * const { withNoRecipe } = createCerberusPrimitive(button)\n * const Button = withNoRecipe(RawButton)\n * ```\n */\n withNoRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P> => {\n const { defaultProps } = options || {}\n\n this.validateComponent(Component)\n\n const CerbComponent = (props: PropsWithChildren<P> & WithCss) => {\n const { css: customCss, className, ...nativeProps } = props\n const styles = this.hasStyles(cx(className, css(customCss)))\n return <Component {...defaultProps} {...styles} {...(nativeProps as P)} />\n }\n\n CerbComponent.displayName = Component.displayName || Component.name\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with the given recipe.\n * @param Component - The React component to enhance with the recipe.\n * @param options - Options for the recipe.\n * @returns A new React component that applies the recipe to the original\n * component.\n */\n withRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P & WithRecipeOptions['defaultProps']> => {\n const { defaultProps } = options || {}\n const recipe = this.recipe as CerberusRecipe\n\n this.validateComponent(Component)\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const recipeStyles = recipe(variantOptions)\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, recipeStyles, css(customCss))}\n />\n )\n }\n\n CerbComponent.displayName = Component.displayName || Component.name\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with a slot recipe applied.\n * @param Component - The React component to enhance with Cerberus features.\n * @param recipe - The slot recipe to apply to the component.\n * @returns A new React component that applies Cerberus features and the\n * specified slot recipe to the original component.\n * @example\n * ```typescript\n * const { withSlotRecipe } = createCerberusPrimitive(field)\n * const Field = withSlotRecipe(RawField, field)\n * ```\n */\n withSlotRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n slot: keyof RecipeVariantRecord,\n options?: WithRecipeOptions,\n ) => {\n const { defaultProps } = options || {}\n const recipe = this.recipe as CerberusSlotRecipe<typeof slot>\n\n this.validateComponent(Component)\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const styles = recipe(variantOptions)\n const slotStyles = styles[slot as keyof typeof styles]\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, slotStyles, css(customCss))}\n />\n )\n }\n\n CerbComponent.displayName = Component.displayName || Component.name\n return CerbComponent\n }\n}\n","import { CerberusPrimitive } from './primitive-factory'\nimport type { CerberusFactory, CerberusPrimitiveRecipe } from './types'\nimport { cerberusFactoryProxy } from './factory'\n\n/**\n * This module contains the user interface for creating Cerberus primitives.\n * @module @cerberus/core/system/create-cerb-primitive\n */\n\n/**\n * A factory function that creates a Cerberus primitive instance with the given\n * recipe.\n * @param recipe\n * @returns An object with three methods: `withNoRecipe`, `withRecipe`, and `withSlotRecipe` that\n * apply the recipes and special Cerberus helpers like `css`.\n *\n * @example\n * ```tsx\n * const { withRecipe } = createCerberusPrimitive(myCustomRecipe);\n * export const Button = withRecipe(MyCustomButton)\n * ```\n */\nexport function createCerberusPrimitive<T extends CerberusPrimitiveRecipe>(\n recipe?: T,\n) {\n return new CerberusPrimitive(recipe)\n}\n\n/**\n * A utility function to access Cerberus components by their name.\n * @param component - The name of the Cerberus component to access.\n * @returns The Cerberus component corresponding to the provided name.\n * @throws An error if the component name is not valid.\n *\n * @example\n * ```tsx\n * import { cerberus } from '@cerberus/react'\n * const Button = cerberus('button')\n *\n * <Button css={{ color: 'blue' }} asChild>\n * <Link href=\"/some-page\">Click me</Link>\n * </Button>\n * ```\n */\nexport const cerberus = cerberusFactoryProxy as CerberusFactory\n\nexport * from './types'\n"],"mappings":"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","names":["Dialog","ArkPortal","import_jsx_runtime","Dialog"]}
1
+ {"version":3,"sources":["../../../../src/components/dialog/dialog.tsx","../../../../src/components/portal/portal.tsx","../../../../src/components/dialog/primitives.tsx","../../../../src/system/primitive-factory.tsx","../../../../src/system/index.ts"],"sourcesContent":["import type { DialogVariantProps } from 'styled-system/recipes'\nimport type { WithCss } from '../../types'\nimport { Portal } from '../portal/index'\nimport {\n DialogBackdrop,\n DialogContent,\n DialogPositioner,\n type DialogContentProps,\n} from './primitives'\n\n/**\n * This module contains and abstraction of the Dialog primitives.\n * @module 'dialog'\n */\n\nexport interface DialogProps\n extends Omit<DialogContentProps, 'size' | 'style'>,\n DialogVariantProps,\n WithCss {}\n\n/**\n * An abstraction of the Dialog primitives that controls the content of the\n * dialog. Must be used within the `DialogProvider` component.\n * @definition [Dialog docs](https://cerberus.digitalu.design/react/dialog)\n * @definition [Ark Dialog docs](https://ark-ui.com/react/docs/components/dialog)\n * @example\n * ```tsx\n * <DialogProvider>\n * <DialogTrigger asChild>\n * <Button>Open Dialog</Button>\n * </DialogTrigger>\n * <Dialog>\n * <Text>Dialog Content</Text>\n * </Dialog>\n * </DialogProvider>\n * ```\n */\nexport function Dialog(props: DialogProps) {\n return (\n <Portal>\n <DialogBackdrop />\n <DialogPositioner>\n <DialogContent {...props} />\n </DialogPositioner>\n </Portal>\n )\n}\n","import { Portal as ArkPortal, type PortalProps } from '@ark-ui/react'\n\n/**\n * This module is the Portal component.\n * @module\n */\n\nexport type { PortalProps }\n\n/**\n * The Portal component is used to render children into a DOM node that exists outside the DOM hierarchy of the parent component.\n * @see https://cerberus.digitalu.design/react/portal\n * @definition [React Portal Docs](https://react.dev/reference/react-dom/createPortal)\n * @example\n * ```tsx\n * 'use client'\n *\n * import { Portal } from '@cerberus/react'\n *\n * function SomeFeatureWithinSSRPage() {\n * return (\n * <Portal>\n * <div>Portal Content outside of the React VDom tree</div>\n * </Portal>\n * )\n * }\n */\nexport const Portal = ArkPortal\n","import {\n Dialog,\n type DialogBackdropProps as ArkDialogBackdropProps,\n type DialogContentProps as ArkDialogContentProps,\n type DialogDescriptionProps as ArkDialogDescriptionProps,\n type DialogPositionerProps as ArkDialogPositionerProps,\n type DialogRootProps as ArkDialogRootProps,\n type DialogTitleProps as ArkDialogTitleProps,\n type DialogTriggerProps as ArkDialogTriggerProps,\n} from '@ark-ui/react/dialog'\nimport { dialog, type DialogVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the primitives of the Dialog component.\n * @module 'dialog/primitives'\n */\n\nconst { withSlotRecipe, withNoRecipe } = createCerberusPrimitive(dialog)\n\n/**\n * The provider that controls the dialog components.\n */\nexport type DialogRootProps = CerberusPrimitiveProps<ArkDialogRootProps>\nexport const DialogRoot = withNoRecipe(Dialog.Root)\n\n/**\n * An abstraction of the DialogRoot component for naming consistency.\n */\nexport const DialogProvider = DialogRoot\n\n/**\n * The trigger that opens the dialog.\n */\nexport type DialogTriggerProps = CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogTrigger = withSlotRecipe(Dialog.Trigger, 'trigger')\n\n/**\n * The overlay of the dialog.\n */\nexport type DialogBackdropProps = CerberusPrimitiveProps<ArkDialogBackdropProps>\nexport const DialogBackdrop = withSlotRecipe(Dialog.Backdrop, 'backdrop')\n\n/**\n * The container that positions the dialog.\n */\nexport type DialogPositionerProps =\n CerberusPrimitiveProps<ArkDialogPositionerProps>\nexport const DialogPositioner = withSlotRecipe(Dialog.Positioner, 'positioner')\n\n/**\n * The visible content of the dialog.\n */\nexport type DialogContentProps = CerberusPrimitiveProps<\n ArkDialogContentProps & DialogVariantProps\n>\nexport const DialogContent = withSlotRecipe(Dialog.Content, 'content')\n\n/**\n * The heading of the dialog.\n */\nexport type DialogHeadingProps = CerberusPrimitiveProps<ArkDialogTitleProps>\nexport const DialogHeading = withSlotRecipe(Dialog.Title, 'title')\n\n/**\n * The description of the dialog.\n */\nexport type DialogDescriptionProps =\n CerberusPrimitiveProps<ArkDialogDescriptionProps>\nexport const DialogDescription = withSlotRecipe(\n Dialog.Description,\n 'description',\n)\n\n/**\n * The trigger that closes the dialog.\n */\nexport type DialogCloseTriggerProps =\n CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogCloseTrigger = withNoRecipe(Dialog.CloseTrigger)\n","import { css, cx } from 'styled-system/css'\nimport type { RecipeVariantRecord } from 'styled-system/types'\nimport {\n type ComponentType,\n type ElementType,\n type HTMLAttributes,\n type PropsWithChildren,\n} from 'react'\nimport type { WithCss } from '../types'\nimport type {\n CerberusPrimitiveEl,\n CerberusPrimitiveRecipe,\n CerberusRecipe,\n CerberusSlotRecipe,\n WithRecipeOptions,\n} from './types'\n\n/**\n * This module contains a factory for creating Cerberus primitives.\n * @module @cerberus/core/system/factory\n */\n\nexport class CerberusPrimitive {\n recipe: CerberusPrimitiveRecipe | null\n\n constructor(recipe?: CerberusPrimitiveRecipe) {\n this.recipe = recipe ?? null\n }\n\n private hasStyles(styles: string | undefined): Record<string, unknown> {\n if (styles) {\n return {\n className: styles,\n }\n }\n return {}\n }\n\n private validateComponent<P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n ) {\n if (typeof Component !== 'function' && typeof Component !== 'object') {\n return false\n }\n return true\n }\n\n /**\n * Creates a Cerberus component with bare features and no recipe.\n * @param Component - The React component to enhance with Cerberus features.\n * Can be a string or a component reference.\n * @returns A new React component that applies Cerberus features to the\n * original component.\n *\n * @example\n * ```ts\n * const { withNoRecipe } = createCerberusPrimitive(buttonRecipe)\n * const Button = withNoRecipe('button')\n * ```\n */\n withNoRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P> => {\n const { defaultProps } = options || {}\n const El = Component as ComponentType<P> | ElementType\n\n const CerbComponent = (props: PropsWithChildren<P> & WithCss) => {\n const { css: customCss, className, ...nativeProps } = props\n const styles = this.hasStyles(cx(className, css(customCss)))\n return <El {...defaultProps} {...styles} {...(nativeProps as P)} />\n }\n\n if (this.validateComponent(El)) {\n const ElName = typeof El === 'string' ? El : El.displayName || El.name\n CerbComponent.displayName = ElName\n }\n\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with the given recipe.\n * @param Component - The React component to enhance with the recipe.\n * @param options - Options for the recipe.\n * @returns A new React component that applies the recipe to the original\n * component.\n */\n withRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P & WithRecipeOptions['defaultProps']> => {\n const { defaultProps } = options || {}\n const El = Component as ComponentType<P> | ElementType\n\n const recipe = this.recipe as CerberusRecipe\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const recipeStyles = recipe(variantOptions)\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, recipeStyles, css(customCss))}\n />\n )\n }\n\n if (this.validateComponent(El)) {\n const ElName = typeof El === 'string' ? El : El.displayName || El.name\n CerbComponent.displayName = ElName\n }\n\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with a slot recipe applied.\n * @param Component - The React component to enhance with Cerberus features.\n * @param recipe - The slot recipe to apply to the component.\n * @returns A new React component that applies Cerberus features and the\n * specified slot recipe to the original component.\n * @example\n * ```typescript\n * const { withSlotRecipe } = createCerberusPrimitive(field)\n * const Field = withSlotRecipe(RawField, field)\n * ```\n */\n withSlotRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n slot: keyof RecipeVariantRecord,\n options?: WithRecipeOptions,\n ) => {\n const { defaultProps } = options || {}\n const El = Component as ComponentType<P> | ElementType\n\n const recipe = this.recipe as CerberusSlotRecipe<typeof slot>\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const styles = recipe(variantOptions)\n const slotStyles = styles[slot as keyof typeof styles]\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, slotStyles, css(customCss))}\n />\n )\n }\n\n if (this.validateComponent(El)) {\n const ElName = typeof El === 'string' ? El : El.displayName || El.name\n CerbComponent.displayName = ElName\n }\n\n return CerbComponent\n }\n}\n","import { CerberusPrimitive } from './primitive-factory'\nimport type { CerberusFactory, CerberusPrimitiveRecipe } from './types'\nimport { cerberusFactoryProxy } from './factory'\n\n/**\n * This module contains the user interface for creating Cerberus primitives.\n * @module @cerberus/core/system/create-cerb-primitive\n */\n\n/**\n * A factory function that creates a Cerberus primitive instance with the given\n * recipe.\n * @param recipe\n * @returns An object with three methods: `withNoRecipe`, `withRecipe`, and `withSlotRecipe` that\n * apply the recipes and special Cerberus helpers like `css`.\n *\n * @example\n * ```tsx\n * const { withRecipe } = createCerberusPrimitive(myCustomRecipe);\n * export const Button = withRecipe(MyCustomButton)\n * ```\n */\nexport function createCerberusPrimitive<T extends CerberusPrimitiveRecipe>(\n recipe?: T,\n) {\n return new CerberusPrimitive(recipe)\n}\n\n/**\n * A utility function to access Cerberus components by their name.\n * @param component - The name of the Cerberus component to access.\n * @returns The Cerberus component corresponding to the provided name.\n * @throws An error if the component name is not valid.\n *\n * @example\n * ```tsx\n * import { cerberus } from '@cerberus/react'\n * const Button = cerberus('button')\n *\n * <Button css={{ color: 'blue' }} asChild>\n * <Link href=\"/some-page\">Click me</Link>\n * </Button>\n * ```\n */\nexport const cerberus = cerberusFactoryProxy as CerberusFactory\n\nexport * from './types'\n"],"mappings":"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","names":["Dialog","ArkPortal","import_jsx_runtime","Dialog"]}
@@ -50,23 +50,28 @@ var CerberusPrimitive = class {
50
50
  /**
51
51
  * Creates a Cerberus component with bare features and no recipe.
52
52
  * @param Component - The React component to enhance with Cerberus features.
53
+ * Can be a string or a component reference.
53
54
  * @returns A new React component that applies Cerberus features to the
54
55
  * original component.
56
+ *
55
57
  * @example
56
- * ```typescript
57
- * const { withNoRecipe } = createCerberusPrimitive(button)
58
- * const Button = withNoRecipe(RawButton)
58
+ * ```ts
59
+ * const { withNoRecipe } = createCerberusPrimitive(buttonRecipe)
60
+ * const Button = withNoRecipe('button')
59
61
  * ```
60
62
  */
61
63
  __publicField(this, "withNoRecipe", (Component, options) => {
62
64
  const { defaultProps } = options || {};
63
- this.validateComponent(Component);
65
+ const El = Component;
64
66
  const CerbComponent = (props) => {
65
67
  const { css: customCss, className, ...nativeProps } = props;
66
68
  const styles = this.hasStyles((0, import_css.cx)(className, (0, import_css.css)(customCss)));
67
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...defaultProps, ...styles, ...nativeProps });
69
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(El, { ...defaultProps, ...styles, ...nativeProps });
68
70
  };
69
- CerbComponent.displayName = Component.displayName || Component.name;
71
+ if (this.validateComponent(El)) {
72
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
73
+ CerbComponent.displayName = ElName;
74
+ }
70
75
  return CerbComponent;
71
76
  });
72
77
  /**
@@ -78,8 +83,8 @@ var CerberusPrimitive = class {
78
83
  */
79
84
  __publicField(this, "withRecipe", (Component, options) => {
80
85
  const { defaultProps } = options || {};
86
+ const El = Component;
81
87
  const recipe = this.recipe;
82
- this.validateComponent(Component);
83
88
  const CerbComponent = (internalProps) => {
84
89
  const {
85
90
  css: customCss,
@@ -97,7 +102,10 @@ var CerberusPrimitive = class {
97
102
  }
98
103
  );
99
104
  };
100
- CerbComponent.displayName = Component.displayName || Component.name;
105
+ if (this.validateComponent(El)) {
106
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
107
+ CerbComponent.displayName = ElName;
108
+ }
101
109
  return CerbComponent;
102
110
  });
103
111
  /**
@@ -114,8 +122,8 @@ var CerberusPrimitive = class {
114
122
  */
115
123
  __publicField(this, "withSlotRecipe", (Component, slot, options) => {
116
124
  const { defaultProps } = options || {};
125
+ const El = Component;
117
126
  const recipe = this.recipe;
118
- this.validateComponent(Component);
119
127
  const CerbComponent = (internalProps) => {
120
128
  const {
121
129
  css: customCss,
@@ -134,7 +142,10 @@ var CerberusPrimitive = class {
134
142
  }
135
143
  );
136
144
  };
137
- CerbComponent.displayName = Component.displayName || Component.name;
145
+ if (this.validateComponent(El)) {
146
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
147
+ CerbComponent.displayName = ElName;
148
+ }
138
149
  return CerbComponent;
139
150
  });
140
151
  this.recipe = recipe ?? null;
@@ -149,8 +160,9 @@ var CerberusPrimitive = class {
149
160
  }
150
161
  validateComponent(Component) {
151
162
  if (typeof Component !== "function" && typeof Component !== "object") {
152
- throw new Error("Expected a React component as the first argument.");
163
+ return false;
153
164
  }
165
+ return true;
154
166
  }
155
167
  };
156
168
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/dialog/index.ts","../../../../src/components/dialog/primitives.tsx","../../../../src/system/primitive-factory.tsx","../../../../src/system/index.ts","../../../../src/components/dialog/parts.ts","../../../../src/context/cerberus.tsx","../../../../src/components/icon-button/primitives.ts","../../../../src/components/icon-button/button.tsx","../../../../src/components/dialog/close-icon-trigger.tsx","../../../../src/components/portal/portal.tsx","../../../../src/components/dialog/dialog.tsx"],"sourcesContent":["export * from './parts'\nexport * from './primitives'\nexport * from './close-icon-trigger'\nexport * from './dialog'\n\nexport interface OpenChangeDetails {\n open: boolean\n}\n","import {\n Dialog,\n type DialogBackdropProps as ArkDialogBackdropProps,\n type DialogContentProps as ArkDialogContentProps,\n type DialogDescriptionProps as ArkDialogDescriptionProps,\n type DialogPositionerProps as ArkDialogPositionerProps,\n type DialogRootProps as ArkDialogRootProps,\n type DialogTitleProps as ArkDialogTitleProps,\n type DialogTriggerProps as ArkDialogTriggerProps,\n} from '@ark-ui/react/dialog'\nimport { dialog, type DialogVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the primitives of the Dialog component.\n * @module 'dialog/primitives'\n */\n\nconst { withSlotRecipe, withNoRecipe } = createCerberusPrimitive(dialog)\n\n/**\n * The provider that controls the dialog components.\n */\nexport type DialogRootProps = CerberusPrimitiveProps<ArkDialogRootProps>\nexport const DialogRoot = withNoRecipe(Dialog.Root)\n\n/**\n * An abstraction of the DialogRoot component for naming consistency.\n */\nexport const DialogProvider = DialogRoot\n\n/**\n * The trigger that opens the dialog.\n */\nexport type DialogTriggerProps = CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogTrigger = withSlotRecipe(Dialog.Trigger, 'trigger')\n\n/**\n * The overlay of the dialog.\n */\nexport type DialogBackdropProps = CerberusPrimitiveProps<ArkDialogBackdropProps>\nexport const DialogBackdrop = withSlotRecipe(Dialog.Backdrop, 'backdrop')\n\n/**\n * The container that positions the dialog.\n */\nexport type DialogPositionerProps =\n CerberusPrimitiveProps<ArkDialogPositionerProps>\nexport const DialogPositioner = withSlotRecipe(Dialog.Positioner, 'positioner')\n\n/**\n * The visible content of the dialog.\n */\nexport type DialogContentProps = CerberusPrimitiveProps<\n ArkDialogContentProps & DialogVariantProps\n>\nexport const DialogContent = withSlotRecipe(Dialog.Content, 'content')\n\n/**\n * The heading of the dialog.\n */\nexport type DialogHeadingProps = CerberusPrimitiveProps<ArkDialogTitleProps>\nexport const DialogHeading = withSlotRecipe(Dialog.Title, 'title')\n\n/**\n * The description of the dialog.\n */\nexport type DialogDescriptionProps =\n CerberusPrimitiveProps<ArkDialogDescriptionProps>\nexport const DialogDescription = withSlotRecipe(\n Dialog.Description,\n 'description',\n)\n\n/**\n * The trigger that closes the dialog.\n */\nexport type DialogCloseTriggerProps =\n CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogCloseTrigger = withNoRecipe(Dialog.CloseTrigger)\n","import { css, cx } from 'styled-system/css'\nimport type { RecipeVariantRecord } from 'styled-system/types'\nimport {\n type ComponentType,\n type HTMLAttributes,\n type PropsWithChildren,\n} from 'react'\nimport type { WithCss } from '../types'\nimport type {\n CerberusPrimitiveEl,\n CerberusPrimitiveRecipe,\n CerberusRecipe,\n CerberusSlotRecipe,\n WithRecipeOptions,\n} from './types'\n\n/**\n * This module contains a factory for creating Cerberus primitives.\n * @module @cerberus/core/system/factory\n */\n\nexport class CerberusPrimitive {\n recipe: CerberusPrimitiveRecipe | null\n\n constructor(recipe?: CerberusPrimitiveRecipe) {\n this.recipe = recipe ?? null\n }\n\n private hasStyles(styles: string | undefined): Record<string, unknown> {\n if (styles) {\n return {\n className: styles,\n }\n }\n return {}\n }\n\n private validateComponent<P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n ) {\n if (typeof Component !== 'function' && typeof Component !== 'object') {\n throw new Error('Expected a React component as the first argument.')\n }\n }\n\n /**\n * Creates a Cerberus component with bare features and no recipe.\n * @param Component - The React component to enhance with Cerberus features.\n * @returns A new React component that applies Cerberus features to the\n * original component.\n * @example\n * ```typescript\n * const { withNoRecipe } = createCerberusPrimitive(button)\n * const Button = withNoRecipe(RawButton)\n * ```\n */\n withNoRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P> => {\n const { defaultProps } = options || {}\n\n this.validateComponent(Component)\n\n const CerbComponent = (props: PropsWithChildren<P> & WithCss) => {\n const { css: customCss, className, ...nativeProps } = props\n const styles = this.hasStyles(cx(className, css(customCss)))\n return <Component {...defaultProps} {...styles} {...(nativeProps as P)} />\n }\n\n CerbComponent.displayName = Component.displayName || Component.name\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with the given recipe.\n * @param Component - The React component to enhance with the recipe.\n * @param options - Options for the recipe.\n * @returns A new React component that applies the recipe to the original\n * component.\n */\n withRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P & WithRecipeOptions['defaultProps']> => {\n const { defaultProps } = options || {}\n const recipe = this.recipe as CerberusRecipe\n\n this.validateComponent(Component)\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const recipeStyles = recipe(variantOptions)\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, recipeStyles, css(customCss))}\n />\n )\n }\n\n CerbComponent.displayName = Component.displayName || Component.name\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with a slot recipe applied.\n * @param Component - The React component to enhance with Cerberus features.\n * @param recipe - The slot recipe to apply to the component.\n * @returns A new React component that applies Cerberus features and the\n * specified slot recipe to the original component.\n * @example\n * ```typescript\n * const { withSlotRecipe } = createCerberusPrimitive(field)\n * const Field = withSlotRecipe(RawField, field)\n * ```\n */\n withSlotRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P>,\n slot: keyof RecipeVariantRecord,\n options?: WithRecipeOptions,\n ) => {\n const { defaultProps } = options || {}\n const recipe = this.recipe as CerberusSlotRecipe<typeof slot>\n\n this.validateComponent(Component)\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const styles = recipe(variantOptions)\n const slotStyles = styles[slot as keyof typeof styles]\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, slotStyles, css(customCss))}\n />\n )\n }\n\n CerbComponent.displayName = Component.displayName || Component.name\n return CerbComponent\n }\n}\n","import { CerberusPrimitive } from './primitive-factory'\nimport type { CerberusFactory, CerberusPrimitiveRecipe } from './types'\nimport { cerberusFactoryProxy } from './factory'\n\n/**\n * This module contains the user interface for creating Cerberus primitives.\n * @module @cerberus/core/system/create-cerb-primitive\n */\n\n/**\n * A factory function that creates a Cerberus primitive instance with the given\n * recipe.\n * @param recipe\n * @returns An object with three methods: `withNoRecipe`, `withRecipe`, and `withSlotRecipe` that\n * apply the recipes and special Cerberus helpers like `css`.\n *\n * @example\n * ```tsx\n * const { withRecipe } = createCerberusPrimitive(myCustomRecipe);\n * export const Button = withRecipe(MyCustomButton)\n * ```\n */\nexport function createCerberusPrimitive<T extends CerberusPrimitiveRecipe>(\n recipe?: T,\n) {\n return new CerberusPrimitive(recipe)\n}\n\n/**\n * A utility function to access Cerberus components by their name.\n * @param component - The name of the Cerberus component to access.\n * @returns The Cerberus component corresponding to the provided name.\n * @throws An error if the component name is not valid.\n *\n * @example\n * ```tsx\n * import { cerberus } from '@cerberus/react'\n * const Button = cerberus('button')\n *\n * <Button css={{ color: 'blue' }} asChild>\n * <Link href=\"/some-page\">Click me</Link>\n * </Button>\n * ```\n */\nexport const cerberus = cerberusFactoryProxy as CerberusFactory\n\nexport * from './types'\n","import type { ElementType } from 'react'\nimport {\n DialogBackdrop,\n DialogCloseTrigger,\n DialogContent,\n DialogDescription,\n DialogHeading,\n DialogPositioner,\n DialogRoot,\n DialogTrigger,\n} from './primitives'\n\n/**\n * This module contains the parts of the Dialog component.\n * @module 'dialog/parts'\n */\n\ninterface DialogPartsValue {\n /**\n * The context provider of the dialog.\n */\n Root: ElementType\n /**\n * The trigger that opens the dialog.\n */\n Trigger: ElementType\n /**\n * The overlay of the dialog.\n */\n Backdrop: ElementType\n /**\n * The container that positions the dialog.\n */\n Positioner: ElementType\n /**\n * The visible content of the dialog.\n */\n Content: ElementType\n /**\n * The heading of the dialog.\n */\n Heading: ElementType\n /**\n * The description of the dialog.\n */\n Description: ElementType\n /**\n * The trigger that closes the dialog.\n */\n CloseTrigger: ElementType\n}\n\n/**\n * An Object containing the parts of the dialog component. For users that\n * prefer Object component syntax.\n *\n * @remarks\n *\n * When using object component syntax, you import the DialogParts object and\n * the entire family of components vs. only what you use.\n */\nexport const DialogParts: DialogPartsValue = {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Backdrop: DialogBackdrop,\n Positioner: DialogPositioner,\n Content: DialogContent,\n Heading: DialogHeading,\n Description: DialogDescription,\n CloseTrigger: DialogCloseTrigger,\n}\n","'use client'\n\nimport { createContext, useContext, type PropsWithChildren } from 'react'\nimport type { SystemConfig } from '../config'\n\n/**\n * This module contains the Cerberus configuration context and helpers.\n * @module context/cerberus\n */\n\ntype CerberusContextValue = SystemConfig\n\nconst CerberusContext = createContext<CerberusContextValue | null>(null)\n\ninterface CerberusProviderProps {\n config: SystemConfig\n}\n\n/**\n * Cerberus configuration provider.\n * @param props.config The Cerberus configuration created with\n * `makeSystemConfig` helper.\n */\nexport function CerberusProvider(\n props: PropsWithChildren<CerberusProviderProps>,\n) {\n return (\n <CerberusContext.Provider value={props.config}>\n {props.children}\n </CerberusContext.Provider>\n )\n}\n\n/**\n * Returns the Cerberus configuration context.\n * @returns The Cerberus configuration context.\n */\nexport function useCerberusContext() {\n const context = useContext(CerberusContext)\n if (!context) {\n throw new Error('useCerberus must be used within a CerberusProvider')\n }\n return context\n}\n","import { ark, type HTMLArkProps } from '@ark-ui/react/factory'\nimport { iconButton, type IconButtonVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the IconButton component primitives.\n * @module @cerberus-design/react/components/icon-button/primitives\n */\n\nconst { withRecipe } = createCerberusPrimitive(iconButton)\n\n/**\n * The root element of the Button component.\n */\nexport type IconButtonRootProps = CerberusPrimitiveProps<\n HTMLArkProps<'button'> & IconButtonVariantProps\n>\nexport const IconButtonRoot = withRecipe(ark.button)\n","import { IconButtonRoot, type IconButtonRootProps } from './primitives'\n\n/**\n * This module contains the Icon Button component.\n * @module\n */\n\nexport interface IconButtonProps extends IconButtonRootProps {\n /**\n * The aria-label attribute for the icon button.\n */\n ariaLabel: string\n}\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) {\n const { ariaLabel, ...rootProps } = props\n return (\n <IconButtonRoot {...rootProps} aria-label={ariaLabel ?? 'Icon Button'} />\n )\n}\n","'use client'\n\nimport { useCerberusContext } from '../../context/cerberus'\nimport { IconButton } from '../icon-button/index'\nimport { DialogCloseTrigger, type DialogCloseTriggerProps } from './primitives'\nimport { dialog } from 'styled-system/recipes'\nimport { cx } from 'styled-system/css'\n\n/**\n * This module contains the close trigger for the dialog.\n * @module react/dialog\n */\n\nexport function DialogCloseIconTrigger(props: DialogCloseTriggerProps) {\n const styles = dialog()\n\n const { icons } = useCerberusContext()\n const { close: CloseIcon } = icons\n\n return (\n <DialogCloseTrigger\n {...props}\n className={cx(styles.closeTrigger, props.className)}\n asChild\n >\n <IconButton\n ariaLabel=\"Close dialog\"\n palette=\"action\"\n size=\"lg\"\n usage=\"ghost\"\n >\n <CloseIcon />\n </IconButton>\n </DialogCloseTrigger>\n )\n}\n","import { Portal as ArkPortal, type PortalProps } from '@ark-ui/react'\n\n/**\n * This module is the Portal component.\n * @module\n */\n\nexport type { PortalProps }\n\n/**\n * The Portal component is used to render children into a DOM node that exists outside the DOM hierarchy of the parent component.\n * @see https://cerberus.digitalu.design/react/portal\n * @definition [React Portal Docs](https://react.dev/reference/react-dom/createPortal)\n * @example\n * ```tsx\n * 'use client'\n *\n * import { Portal } from '@cerberus/react'\n *\n * function SomeFeatureWithinSSRPage() {\n * return (\n * <Portal>\n * <div>Portal Content outside of the React VDom tree</div>\n * </Portal>\n * )\n * }\n */\nexport const Portal = ArkPortal\n","import type { DialogVariantProps } from 'styled-system/recipes'\nimport type { WithCss } from '../../types'\nimport { Portal } from '../portal/index'\nimport {\n DialogBackdrop,\n DialogContent,\n DialogPositioner,\n type DialogContentProps,\n} from './primitives'\n\n/**\n * This module contains and abstraction of the Dialog primitives.\n * @module 'dialog'\n */\n\nexport interface DialogProps\n extends Omit<DialogContentProps, 'size' | 'style'>,\n DialogVariantProps,\n WithCss {}\n\n/**\n * An abstraction of the Dialog primitives that controls the content of the\n * dialog. Must be used within the `DialogProvider` component.\n * @definition [Dialog docs](https://cerberus.digitalu.design/react/dialog)\n * @definition [Ark Dialog docs](https://ark-ui.com/react/docs/components/dialog)\n * @example\n * ```tsx\n * <DialogProvider>\n * <DialogTrigger asChild>\n * <Button>Open Dialog</Button>\n * </DialogTrigger>\n * <Dialog>\n * <Text>Dialog Content</Text>\n * </Dialog>\n * </DialogProvider>\n * ```\n */\nexport function Dialog(props: DialogProps) {\n return (\n <Portal>\n <DialogBackdrop />\n <DialogPositioner>\n <DialogContent {...props} />\n </DialogPositioner>\n </Portal>\n )\n}\n"],"mappings":"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","names":["Dialog","import_jsx_runtime","import_recipes","import_jsx_runtime","import_recipes","import_css","import_jsx_runtime","import_react","ArkPortal","import_jsx_runtime","Dialog"]}
1
+ {"version":3,"sources":["../../../../src/components/dialog/index.ts","../../../../src/components/dialog/primitives.tsx","../../../../src/system/primitive-factory.tsx","../../../../src/system/index.ts","../../../../src/components/dialog/parts.ts","../../../../src/context/cerberus.tsx","../../../../src/components/icon-button/primitives.ts","../../../../src/components/icon-button/button.tsx","../../../../src/components/dialog/close-icon-trigger.tsx","../../../../src/components/portal/portal.tsx","../../../../src/components/dialog/dialog.tsx"],"sourcesContent":["export * from './parts'\nexport * from './primitives'\nexport * from './close-icon-trigger'\nexport * from './dialog'\n\nexport interface OpenChangeDetails {\n open: boolean\n}\n","import {\n Dialog,\n type DialogBackdropProps as ArkDialogBackdropProps,\n type DialogContentProps as ArkDialogContentProps,\n type DialogDescriptionProps as ArkDialogDescriptionProps,\n type DialogPositionerProps as ArkDialogPositionerProps,\n type DialogRootProps as ArkDialogRootProps,\n type DialogTitleProps as ArkDialogTitleProps,\n type DialogTriggerProps as ArkDialogTriggerProps,\n} from '@ark-ui/react/dialog'\nimport { dialog, type DialogVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the primitives of the Dialog component.\n * @module 'dialog/primitives'\n */\n\nconst { withSlotRecipe, withNoRecipe } = createCerberusPrimitive(dialog)\n\n/**\n * The provider that controls the dialog components.\n */\nexport type DialogRootProps = CerberusPrimitiveProps<ArkDialogRootProps>\nexport const DialogRoot = withNoRecipe(Dialog.Root)\n\n/**\n * An abstraction of the DialogRoot component for naming consistency.\n */\nexport const DialogProvider = DialogRoot\n\n/**\n * The trigger that opens the dialog.\n */\nexport type DialogTriggerProps = CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogTrigger = withSlotRecipe(Dialog.Trigger, 'trigger')\n\n/**\n * The overlay of the dialog.\n */\nexport type DialogBackdropProps = CerberusPrimitiveProps<ArkDialogBackdropProps>\nexport const DialogBackdrop = withSlotRecipe(Dialog.Backdrop, 'backdrop')\n\n/**\n * The container that positions the dialog.\n */\nexport type DialogPositionerProps =\n CerberusPrimitiveProps<ArkDialogPositionerProps>\nexport const DialogPositioner = withSlotRecipe(Dialog.Positioner, 'positioner')\n\n/**\n * The visible content of the dialog.\n */\nexport type DialogContentProps = CerberusPrimitiveProps<\n ArkDialogContentProps & DialogVariantProps\n>\nexport const DialogContent = withSlotRecipe(Dialog.Content, 'content')\n\n/**\n * The heading of the dialog.\n */\nexport type DialogHeadingProps = CerberusPrimitiveProps<ArkDialogTitleProps>\nexport const DialogHeading = withSlotRecipe(Dialog.Title, 'title')\n\n/**\n * The description of the dialog.\n */\nexport type DialogDescriptionProps =\n CerberusPrimitiveProps<ArkDialogDescriptionProps>\nexport const DialogDescription = withSlotRecipe(\n Dialog.Description,\n 'description',\n)\n\n/**\n * The trigger that closes the dialog.\n */\nexport type DialogCloseTriggerProps =\n CerberusPrimitiveProps<ArkDialogTriggerProps>\nexport const DialogCloseTrigger = withNoRecipe(Dialog.CloseTrigger)\n","import { css, cx } from 'styled-system/css'\nimport type { RecipeVariantRecord } from 'styled-system/types'\nimport {\n type ComponentType,\n type ElementType,\n type HTMLAttributes,\n type PropsWithChildren,\n} from 'react'\nimport type { WithCss } from '../types'\nimport type {\n CerberusPrimitiveEl,\n CerberusPrimitiveRecipe,\n CerberusRecipe,\n CerberusSlotRecipe,\n WithRecipeOptions,\n} from './types'\n\n/**\n * This module contains a factory for creating Cerberus primitives.\n * @module @cerberus/core/system/factory\n */\n\nexport class CerberusPrimitive {\n recipe: CerberusPrimitiveRecipe | null\n\n constructor(recipe?: CerberusPrimitiveRecipe) {\n this.recipe = recipe ?? null\n }\n\n private hasStyles(styles: string | undefined): Record<string, unknown> {\n if (styles) {\n return {\n className: styles,\n }\n }\n return {}\n }\n\n private validateComponent<P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n ) {\n if (typeof Component !== 'function' && typeof Component !== 'object') {\n return false\n }\n return true\n }\n\n /**\n * Creates a Cerberus component with bare features and no recipe.\n * @param Component - The React component to enhance with Cerberus features.\n * Can be a string or a component reference.\n * @returns A new React component that applies Cerberus features to the\n * original component.\n *\n * @example\n * ```ts\n * const { withNoRecipe } = createCerberusPrimitive(buttonRecipe)\n * const Button = withNoRecipe('button')\n * ```\n */\n withNoRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P> => {\n const { defaultProps } = options || {}\n const El = Component as ComponentType<P> | ElementType\n\n const CerbComponent = (props: PropsWithChildren<P> & WithCss) => {\n const { css: customCss, className, ...nativeProps } = props\n const styles = this.hasStyles(cx(className, css(customCss)))\n return <El {...defaultProps} {...styles} {...(nativeProps as P)} />\n }\n\n if (this.validateComponent(El)) {\n const ElName = typeof El === 'string' ? El : El.displayName || El.name\n CerbComponent.displayName = ElName\n }\n\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with the given recipe.\n * @param Component - The React component to enhance with the recipe.\n * @param options - Options for the recipe.\n * @returns A new React component that applies the recipe to the original\n * component.\n */\n withRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n options?: WithRecipeOptions,\n ): CerberusPrimitiveEl<P & WithRecipeOptions['defaultProps']> => {\n const { defaultProps } = options || {}\n const El = Component as ComponentType<P> | ElementType\n\n const recipe = this.recipe as CerberusRecipe\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const recipeStyles = recipe(variantOptions)\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, recipeStyles, css(customCss))}\n />\n )\n }\n\n if (this.validateComponent(El)) {\n const ElName = typeof El === 'string' ? El : El.displayName || El.name\n CerbComponent.displayName = ElName\n }\n\n return CerbComponent\n }\n\n /**\n * Creates a Cerberus component with a slot recipe applied.\n * @param Component - The React component to enhance with Cerberus features.\n * @param recipe - The slot recipe to apply to the component.\n * @returns A new React component that applies Cerberus features and the\n * specified slot recipe to the original component.\n * @example\n * ```typescript\n * const { withSlotRecipe } = createCerberusPrimitive(field)\n * const Field = withSlotRecipe(RawField, field)\n * ```\n */\n withSlotRecipe = <P extends HTMLAttributes<unknown>>(\n Component: ComponentType<P> | string,\n slot: keyof RecipeVariantRecord,\n options?: WithRecipeOptions,\n ) => {\n const { defaultProps } = options || {}\n const El = Component as ComponentType<P> | ElementType\n\n const recipe = this.recipe as CerberusSlotRecipe<typeof slot>\n\n const CerbComponent = (internalProps: PropsWithChildren<P> & WithCss) => {\n const {\n css: customCss,\n className,\n ...restOfInternalProps\n } = internalProps\n\n const [variantOptions, nativeProps] =\n recipe.splitVariantProps(restOfInternalProps)\n const styles = recipe(variantOptions)\n const slotStyles = styles[slot as keyof typeof styles]\n\n return (\n <Component\n {...defaultProps}\n {...(nativeProps as P)}\n className={cx(className, slotStyles, css(customCss))}\n />\n )\n }\n\n if (this.validateComponent(El)) {\n const ElName = typeof El === 'string' ? El : El.displayName || El.name\n CerbComponent.displayName = ElName\n }\n\n return CerbComponent\n }\n}\n","import { CerberusPrimitive } from './primitive-factory'\nimport type { CerberusFactory, CerberusPrimitiveRecipe } from './types'\nimport { cerberusFactoryProxy } from './factory'\n\n/**\n * This module contains the user interface for creating Cerberus primitives.\n * @module @cerberus/core/system/create-cerb-primitive\n */\n\n/**\n * A factory function that creates a Cerberus primitive instance with the given\n * recipe.\n * @param recipe\n * @returns An object with three methods: `withNoRecipe`, `withRecipe`, and `withSlotRecipe` that\n * apply the recipes and special Cerberus helpers like `css`.\n *\n * @example\n * ```tsx\n * const { withRecipe } = createCerberusPrimitive(myCustomRecipe);\n * export const Button = withRecipe(MyCustomButton)\n * ```\n */\nexport function createCerberusPrimitive<T extends CerberusPrimitiveRecipe>(\n recipe?: T,\n) {\n return new CerberusPrimitive(recipe)\n}\n\n/**\n * A utility function to access Cerberus components by their name.\n * @param component - The name of the Cerberus component to access.\n * @returns The Cerberus component corresponding to the provided name.\n * @throws An error if the component name is not valid.\n *\n * @example\n * ```tsx\n * import { cerberus } from '@cerberus/react'\n * const Button = cerberus('button')\n *\n * <Button css={{ color: 'blue' }} asChild>\n * <Link href=\"/some-page\">Click me</Link>\n * </Button>\n * ```\n */\nexport const cerberus = cerberusFactoryProxy as CerberusFactory\n\nexport * from './types'\n","import type { ElementType } from 'react'\nimport {\n DialogBackdrop,\n DialogCloseTrigger,\n DialogContent,\n DialogDescription,\n DialogHeading,\n DialogPositioner,\n DialogRoot,\n DialogTrigger,\n} from './primitives'\n\n/**\n * This module contains the parts of the Dialog component.\n * @module 'dialog/parts'\n */\n\ninterface DialogPartsValue {\n /**\n * The context provider of the dialog.\n */\n Root: ElementType\n /**\n * The trigger that opens the dialog.\n */\n Trigger: ElementType\n /**\n * The overlay of the dialog.\n */\n Backdrop: ElementType\n /**\n * The container that positions the dialog.\n */\n Positioner: ElementType\n /**\n * The visible content of the dialog.\n */\n Content: ElementType\n /**\n * The heading of the dialog.\n */\n Heading: ElementType\n /**\n * The description of the dialog.\n */\n Description: ElementType\n /**\n * The trigger that closes the dialog.\n */\n CloseTrigger: ElementType\n}\n\n/**\n * An Object containing the parts of the dialog component. For users that\n * prefer Object component syntax.\n *\n * @remarks\n *\n * When using object component syntax, you import the DialogParts object and\n * the entire family of components vs. only what you use.\n */\nexport const DialogParts: DialogPartsValue = {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Backdrop: DialogBackdrop,\n Positioner: DialogPositioner,\n Content: DialogContent,\n Heading: DialogHeading,\n Description: DialogDescription,\n CloseTrigger: DialogCloseTrigger,\n}\n","'use client'\n\nimport { createContext, useContext, type PropsWithChildren } from 'react'\nimport type { SystemConfig } from '../config'\n\n/**\n * This module contains the Cerberus configuration context and helpers.\n * @module context/cerberus\n */\n\ntype CerberusContextValue = SystemConfig\n\nconst CerberusContext = createContext<CerberusContextValue | null>(null)\n\ninterface CerberusProviderProps {\n config: SystemConfig\n}\n\n/**\n * Cerberus configuration provider.\n * @param props.config The Cerberus configuration created with\n * `makeSystemConfig` helper.\n */\nexport function CerberusProvider(\n props: PropsWithChildren<CerberusProviderProps>,\n) {\n return (\n <CerberusContext.Provider value={props.config}>\n {props.children}\n </CerberusContext.Provider>\n )\n}\n\n/**\n * Returns the Cerberus configuration context.\n * @returns The Cerberus configuration context.\n */\nexport function useCerberusContext() {\n const context = useContext(CerberusContext)\n if (!context) {\n throw new Error('useCerberus must be used within a CerberusProvider')\n }\n return context\n}\n","import { ark, type HTMLArkProps } from '@ark-ui/react/factory'\nimport { iconButton, type IconButtonVariantProps } from 'styled-system/recipes'\nimport {\n createCerberusPrimitive,\n type CerberusPrimitiveProps,\n} from '../../system/index'\n\n/**\n * This module contains the IconButton component primitives.\n * @module @cerberus-design/react/components/icon-button/primitives\n */\n\nconst { withRecipe } = createCerberusPrimitive(iconButton)\n\n/**\n * The root element of the Button component.\n */\nexport type IconButtonRootProps = CerberusPrimitiveProps<\n HTMLArkProps<'button'> & IconButtonVariantProps\n>\nexport const IconButtonRoot = withRecipe(ark.button)\n","import { IconButtonRoot, type IconButtonRootProps } from './primitives'\n\n/**\n * This module contains the Icon Button component.\n * @module\n */\n\nexport interface IconButtonProps extends IconButtonRootProps {\n /**\n * The aria-label attribute for the icon button.\n */\n ariaLabel: string\n}\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) {\n const { ariaLabel, ...rootProps } = props\n return (\n <IconButtonRoot {...rootProps} aria-label={ariaLabel ?? 'Icon Button'} />\n )\n}\n","'use client'\n\nimport { useCerberusContext } from '../../context/cerberus'\nimport { IconButton } from '../icon-button/index'\nimport { DialogCloseTrigger, type DialogCloseTriggerProps } from './primitives'\nimport { dialog } from 'styled-system/recipes'\nimport { cx } from 'styled-system/css'\n\n/**\n * This module contains the close trigger for the dialog.\n * @module react/dialog\n */\n\nexport function DialogCloseIconTrigger(props: DialogCloseTriggerProps) {\n const styles = dialog()\n\n const { icons } = useCerberusContext()\n const { close: CloseIcon } = icons\n\n return (\n <DialogCloseTrigger\n {...props}\n className={cx(styles.closeTrigger, props.className)}\n asChild\n >\n <IconButton\n ariaLabel=\"Close dialog\"\n palette=\"action\"\n size=\"lg\"\n usage=\"ghost\"\n >\n <CloseIcon />\n </IconButton>\n </DialogCloseTrigger>\n )\n}\n","import { Portal as ArkPortal, type PortalProps } from '@ark-ui/react'\n\n/**\n * This module is the Portal component.\n * @module\n */\n\nexport type { PortalProps }\n\n/**\n * The Portal component is used to render children into a DOM node that exists outside the DOM hierarchy of the parent component.\n * @see https://cerberus.digitalu.design/react/portal\n * @definition [React Portal Docs](https://react.dev/reference/react-dom/createPortal)\n * @example\n * ```tsx\n * 'use client'\n *\n * import { Portal } from '@cerberus/react'\n *\n * function SomeFeatureWithinSSRPage() {\n * return (\n * <Portal>\n * <div>Portal Content outside of the React VDom tree</div>\n * </Portal>\n * )\n * }\n */\nexport const Portal = ArkPortal\n","import type { DialogVariantProps } from 'styled-system/recipes'\nimport type { WithCss } from '../../types'\nimport { Portal } from '../portal/index'\nimport {\n DialogBackdrop,\n DialogContent,\n DialogPositioner,\n type DialogContentProps,\n} from './primitives'\n\n/**\n * This module contains and abstraction of the Dialog primitives.\n * @module 'dialog'\n */\n\nexport interface DialogProps\n extends Omit<DialogContentProps, 'size' | 'style'>,\n DialogVariantProps,\n WithCss {}\n\n/**\n * An abstraction of the Dialog primitives that controls the content of the\n * dialog. Must be used within the `DialogProvider` component.\n * @definition [Dialog docs](https://cerberus.digitalu.design/react/dialog)\n * @definition [Ark Dialog docs](https://ark-ui.com/react/docs/components/dialog)\n * @example\n * ```tsx\n * <DialogProvider>\n * <DialogTrigger asChild>\n * <Button>Open Dialog</Button>\n * </DialogTrigger>\n * <Dialog>\n * <Text>Dialog Content</Text>\n * </Dialog>\n * </DialogProvider>\n * ```\n */\nexport function Dialog(props: DialogProps) {\n return (\n <Portal>\n <DialogBackdrop />\n <DialogPositioner>\n <DialogContent {...props} />\n </DialogPositioner>\n </Portal>\n )\n}\n"],"mappings":"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","names":["Dialog","import_jsx_runtime","import_recipes","import_jsx_runtime","import_recipes","import_css","import_jsx_runtime","import_react","ArkPortal","import_jsx_runtime","Dialog"]}
@@ -39,23 +39,28 @@ var CerberusPrimitive = class {
39
39
  /**
40
40
  * Creates a Cerberus component with bare features and no recipe.
41
41
  * @param Component - The React component to enhance with Cerberus features.
42
+ * Can be a string or a component reference.
42
43
  * @returns A new React component that applies Cerberus features to the
43
44
  * original component.
45
+ *
44
46
  * @example
45
- * ```typescript
46
- * const { withNoRecipe } = createCerberusPrimitive(button)
47
- * const Button = withNoRecipe(RawButton)
47
+ * ```ts
48
+ * const { withNoRecipe } = createCerberusPrimitive(buttonRecipe)
49
+ * const Button = withNoRecipe('button')
48
50
  * ```
49
51
  */
50
52
  __publicField(this, "withNoRecipe", (Component, options) => {
51
53
  const { defaultProps } = options || {};
52
- this.validateComponent(Component);
54
+ const El = Component;
53
55
  const CerbComponent = (props) => {
54
56
  const { css: customCss, className, ...nativeProps } = props;
55
57
  const styles = this.hasStyles((0, import_css.cx)(className, (0, import_css.css)(customCss)));
56
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Component, { ...defaultProps, ...styles, ...nativeProps });
58
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(El, { ...defaultProps, ...styles, ...nativeProps });
57
59
  };
58
- CerbComponent.displayName = Component.displayName || Component.name;
60
+ if (this.validateComponent(El)) {
61
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
62
+ CerbComponent.displayName = ElName;
63
+ }
59
64
  return CerbComponent;
60
65
  });
61
66
  /**
@@ -67,8 +72,8 @@ var CerberusPrimitive = class {
67
72
  */
68
73
  __publicField(this, "withRecipe", (Component, options) => {
69
74
  const { defaultProps } = options || {};
75
+ const El = Component;
70
76
  const recipe = this.recipe;
71
- this.validateComponent(Component);
72
77
  const CerbComponent = (internalProps) => {
73
78
  const {
74
79
  css: customCss,
@@ -86,7 +91,10 @@ var CerberusPrimitive = class {
86
91
  }
87
92
  );
88
93
  };
89
- CerbComponent.displayName = Component.displayName || Component.name;
94
+ if (this.validateComponent(El)) {
95
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
96
+ CerbComponent.displayName = ElName;
97
+ }
90
98
  return CerbComponent;
91
99
  });
92
100
  /**
@@ -103,8 +111,8 @@ var CerberusPrimitive = class {
103
111
  */
104
112
  __publicField(this, "withSlotRecipe", (Component, slot, options) => {
105
113
  const { defaultProps } = options || {};
114
+ const El = Component;
106
115
  const recipe = this.recipe;
107
- this.validateComponent(Component);
108
116
  const CerbComponent = (internalProps) => {
109
117
  const {
110
118
  css: customCss,
@@ -123,7 +131,10 @@ var CerberusPrimitive = class {
123
131
  }
124
132
  );
125
133
  };
126
- CerbComponent.displayName = Component.displayName || Component.name;
134
+ if (this.validateComponent(El)) {
135
+ const ElName = typeof El === "string" ? El : El.displayName || El.name;
136
+ CerbComponent.displayName = ElName;
137
+ }
127
138
  return CerbComponent;
128
139
  });
129
140
  this.recipe = recipe ?? null;
@@ -138,8 +149,9 @@ var CerberusPrimitive = class {
138
149
  }
139
150
  validateComponent(Component) {
140
151
  if (typeof Component !== "function" && typeof Component !== "object") {
141
- throw new Error("Expected a React component as the first argument.");
152
+ return false;
142
153
  }
154
+ return true;
143
155
  }
144
156
  };
145
157