@fpkit/acss 0.5.11 → 0.5.13

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 (312) hide show
  1. package/README.md +514 -18
  2. package/libs/chunk-23ANBDCR.js +8 -0
  3. package/libs/chunk-23ANBDCR.js.map +1 -0
  4. package/libs/chunk-2LTJ7HHX.cjs +18 -0
  5. package/libs/chunk-2LTJ7HHX.cjs.map +1 -0
  6. package/libs/chunk-2Y7W75TT.js +9 -0
  7. package/libs/chunk-2Y7W75TT.js.map +1 -0
  8. package/libs/chunk-3MKLDCKQ.cjs +31 -0
  9. package/libs/chunk-3MKLDCKQ.cjs.map +1 -0
  10. package/libs/chunk-5M57K4SW.js +8 -0
  11. package/libs/chunk-5M57K4SW.js.map +1 -0
  12. package/libs/chunk-5S4ORA4C.cjs +15 -0
  13. package/libs/chunk-5S4ORA4C.cjs.map +1 -0
  14. package/libs/chunk-772NRB75.js +9 -0
  15. package/libs/chunk-772NRB75.js.map +1 -0
  16. package/libs/chunk-AHDJGCG5.cjs +15 -0
  17. package/libs/chunk-AHDJGCG5.cjs.map +1 -0
  18. package/libs/chunk-B7F5FS6D.cjs +16 -0
  19. package/libs/chunk-B7F5FS6D.cjs.map +1 -0
  20. package/libs/chunk-BHRQBJRY.js +8 -0
  21. package/libs/chunk-BHRQBJRY.js.map +1 -0
  22. package/libs/chunk-D4YLRWAO.cjs +18 -0
  23. package/libs/chunk-D4YLRWAO.cjs.map +1 -0
  24. package/libs/chunk-ETFLFC2S.js +10 -0
  25. package/libs/chunk-ETFLFC2S.js.map +1 -0
  26. package/libs/chunk-G55UJ53G.cjs +16 -0
  27. package/libs/chunk-G55UJ53G.cjs.map +1 -0
  28. package/libs/chunk-GZ4QFPRY.js +9 -0
  29. package/libs/chunk-GZ4QFPRY.js.map +1 -0
  30. package/libs/chunk-IYUN2EW3.cjs +15 -0
  31. package/libs/chunk-IYUN2EW3.cjs.map +1 -0
  32. package/libs/chunk-J32EZPYD.cjs +15 -0
  33. package/libs/chunk-J32EZPYD.cjs.map +1 -0
  34. package/libs/chunk-JJ43O4Y5.js +8 -0
  35. package/libs/chunk-JJ43O4Y5.js.map +1 -0
  36. package/libs/chunk-KUKIVRC2.js +7 -0
  37. package/libs/chunk-KUKIVRC2.js.map +1 -0
  38. package/libs/chunk-L75OQKEI.cjs +13 -0
  39. package/libs/chunk-L75OQKEI.cjs.map +1 -0
  40. package/libs/chunk-LT5KZ2QW.cjs +22 -0
  41. package/libs/chunk-LT5KZ2QW.cjs.map +1 -0
  42. package/libs/chunk-M5RRNTVX.cjs +15 -0
  43. package/libs/chunk-M5RRNTVX.cjs.map +1 -0
  44. package/libs/chunk-NGTJDDFO.js +8 -0
  45. package/libs/chunk-NGTJDDFO.js.map +1 -0
  46. package/libs/chunk-OK5QEIMD.cjs +17 -0
  47. package/libs/chunk-OK5QEIMD.cjs.map +1 -0
  48. package/libs/chunk-P2DC76ZZ.cjs +18 -0
  49. package/libs/chunk-P2DC76ZZ.cjs.map +1 -0
  50. package/libs/chunk-P7TTEYCD.js +7 -0
  51. package/libs/chunk-P7TTEYCD.js.map +1 -0
  52. package/libs/chunk-PQ2K3BM6.cjs +17 -0
  53. package/libs/chunk-PQ2K3BM6.cjs.map +1 -0
  54. package/libs/chunk-QLZWHAMK.js +8 -0
  55. package/libs/chunk-QLZWHAMK.js.map +1 -0
  56. package/libs/chunk-RIVUMPOG.js +8 -0
  57. package/libs/chunk-RIVUMPOG.js.map +1 -0
  58. package/libs/chunk-ROZI23GS.cjs +15 -0
  59. package/libs/chunk-ROZI23GS.cjs.map +1 -0
  60. package/libs/chunk-S7BABR7Z.cjs +13 -0
  61. package/libs/chunk-S7BABR7Z.cjs.map +1 -0
  62. package/libs/chunk-SMYRLO3E.js +8 -0
  63. package/libs/chunk-SMYRLO3E.js.map +1 -0
  64. package/libs/chunk-TYRCEX2L.js +8 -0
  65. package/libs/chunk-TYRCEX2L.js.map +1 -0
  66. package/libs/chunk-VUH3FXGJ.js +11 -0
  67. package/libs/chunk-VUH3FXGJ.js.map +1 -0
  68. package/libs/chunk-XBA562WW.js +8 -0
  69. package/libs/chunk-XBA562WW.js.map +1 -0
  70. package/libs/chunk-XTQKWY7W.cjs +32 -0
  71. package/libs/chunk-XTQKWY7W.cjs.map +1 -0
  72. package/libs/chunk-ZANSFMTD.js +9 -0
  73. package/libs/chunk-ZANSFMTD.js.map +1 -0
  74. package/libs/component-props-a8a2f97e.d.ts +38 -0
  75. package/libs/components/alert/alert.css +1 -1
  76. package/libs/components/alert/alert.css.map +1 -1
  77. package/libs/components/alert/alert.min.css +2 -2
  78. package/libs/components/badge/badge.css +1 -1
  79. package/libs/components/badge/badge.css.map +1 -1
  80. package/libs/components/badge/badge.min.css +2 -2
  81. package/libs/components/breadcrumbs/breadcrumb.cjs +24 -0
  82. package/libs/components/breadcrumbs/breadcrumb.cjs.map +1 -0
  83. package/libs/components/breadcrumbs/breadcrumb.d.cts +290 -0
  84. package/libs/components/breadcrumbs/breadcrumb.d.ts +290 -0
  85. package/libs/components/breadcrumbs/breadcrumb.js +5 -0
  86. package/libs/components/breadcrumbs/breadcrumb.js.map +1 -0
  87. package/libs/components/button.cjs +19 -0
  88. package/libs/components/button.cjs.map +1 -0
  89. package/libs/components/button.d.cts +16 -0
  90. package/libs/components/button.d.ts +16 -0
  91. package/libs/components/button.js +4 -0
  92. package/libs/components/button.js.map +1 -0
  93. package/libs/components/buttons/button.css +1 -1
  94. package/libs/components/buttons/button.css.map +1 -1
  95. package/libs/components/buttons/button.min.css +2 -2
  96. package/libs/components/card.cjs +31 -0
  97. package/libs/components/card.cjs.map +1 -0
  98. package/libs/components/card.d.cts +302 -0
  99. package/libs/components/card.d.ts +302 -0
  100. package/libs/components/card.js +4 -0
  101. package/libs/components/card.js.map +1 -0
  102. package/libs/components/cards/card.css +1 -1
  103. package/libs/components/cards/card.css.map +1 -1
  104. package/libs/components/cards/card.min.css +2 -2
  105. package/libs/components/details/details.css +1 -1
  106. package/libs/components/details/details.css.map +1 -1
  107. package/libs/components/details/details.min.css +2 -2
  108. package/libs/components/dialog/dialog.cjs +22 -0
  109. package/libs/components/dialog/dialog.cjs.map +1 -0
  110. package/libs/components/dialog/dialog.css +1 -1
  111. package/libs/components/dialog/dialog.css.map +1 -1
  112. package/libs/components/dialog/dialog.d.cts +105 -0
  113. package/libs/components/dialog/dialog.d.ts +105 -0
  114. package/libs/components/dialog/dialog.js +7 -0
  115. package/libs/components/dialog/dialog.js.map +1 -0
  116. package/libs/components/dialog/dialog.min.css +2 -2
  117. package/libs/components/form/fields.cjs +19 -0
  118. package/libs/components/form/fields.cjs.map +1 -0
  119. package/libs/components/form/fields.d.cts +24 -0
  120. package/libs/components/form/fields.d.ts +24 -0
  121. package/libs/components/form/fields.js +4 -0
  122. package/libs/components/form/fields.js.map +1 -0
  123. package/libs/components/form/inputs.cjs +19 -0
  124. package/libs/components/form/inputs.cjs.map +1 -0
  125. package/libs/components/form/inputs.d.cts +2 -0
  126. package/libs/components/form/inputs.d.ts +2 -0
  127. package/libs/components/form/inputs.js +4 -0
  128. package/libs/components/form/inputs.js.map +1 -0
  129. package/libs/components/form/textarea.cjs +19 -0
  130. package/libs/components/form/textarea.cjs.map +1 -0
  131. package/libs/components/form/textarea.d.cts +29 -0
  132. package/libs/components/form/textarea.d.ts +29 -0
  133. package/libs/components/form/textarea.js +4 -0
  134. package/libs/components/form/textarea.js.map +1 -0
  135. package/libs/components/heading/heading.cjs +10 -0
  136. package/libs/components/heading/heading.cjs.map +1 -0
  137. package/libs/components/heading/heading.d.cts +3 -0
  138. package/libs/components/heading/heading.d.ts +3 -0
  139. package/libs/components/heading/heading.js +4 -0
  140. package/libs/components/heading/heading.js.map +1 -0
  141. package/libs/components/icons/icon.cjs +19 -0
  142. package/libs/components/icons/icon.cjs.map +1 -0
  143. package/libs/{icons-31ace3de.d.ts → components/icons/icon.d.cts} +151 -61
  144. package/libs/components/icons/icon.d.ts +445 -0
  145. package/libs/components/icons/icon.js +4 -0
  146. package/libs/components/icons/icon.js.map +1 -0
  147. package/libs/components/images/img.css +1 -1
  148. package/libs/components/images/img.css.map +1 -1
  149. package/libs/components/images/img.min.css +2 -2
  150. package/libs/components/link/link.cjs +19 -0
  151. package/libs/components/link/link.cjs.map +1 -0
  152. package/libs/components/link/link.d.cts +19 -0
  153. package/libs/components/link/link.d.ts +19 -0
  154. package/libs/components/link/link.js +4 -0
  155. package/libs/components/link/link.js.map +1 -0
  156. package/libs/components/list/list.cjs +23 -0
  157. package/libs/components/list/list.cjs.map +1 -0
  158. package/libs/components/list/list.d.cts +39 -0
  159. package/libs/components/list/list.d.ts +39 -0
  160. package/libs/components/list/list.js +4 -0
  161. package/libs/components/list/list.js.map +1 -0
  162. package/libs/components/modal.cjs +14 -0
  163. package/libs/components/modal.cjs.map +1 -0
  164. package/libs/components/modal.d.cts +35 -0
  165. package/libs/components/modal.d.ts +35 -0
  166. package/libs/components/modal.js +5 -0
  167. package/libs/components/modal.js.map +1 -0
  168. package/libs/components/nav/nav.cjs +28 -0
  169. package/libs/components/nav/nav.cjs.map +1 -0
  170. package/libs/components/nav/nav.d.cts +44 -0
  171. package/libs/components/nav/nav.d.ts +44 -0
  172. package/libs/components/nav/nav.js +5 -0
  173. package/libs/components/nav/nav.js.map +1 -0
  174. package/libs/components/popover/popover.cjs +23 -0
  175. package/libs/components/popover/popover.cjs.map +1 -0
  176. package/libs/components/popover/popover.d.cts +40 -0
  177. package/libs/components/popover/popover.d.ts +40 -0
  178. package/libs/components/popover/popover.js +4 -0
  179. package/libs/components/popover/popover.js.map +1 -0
  180. package/libs/components/tables/table.cjs +21 -0
  181. package/libs/components/tables/table.cjs.map +1 -0
  182. package/libs/components/tables/table.d.cts +36 -0
  183. package/libs/components/tables/table.d.ts +36 -0
  184. package/libs/components/tables/table.js +4 -0
  185. package/libs/components/tables/table.js.map +1 -0
  186. package/libs/components/text/text.cjs +23 -0
  187. package/libs/components/text/text.cjs.map +1 -0
  188. package/libs/components/text/text.d.cts +30 -0
  189. package/libs/components/text/text.d.ts +30 -0
  190. package/libs/components/text/text.js +4 -0
  191. package/libs/components/text/text.js.map +1 -0
  192. package/libs/heading-3648c538.d.ts +250 -0
  193. package/libs/hooks.cjs +7 -0
  194. package/libs/hooks.d.cts +5 -0
  195. package/libs/hooks.d.ts +5 -0
  196. package/libs/hooks.js +3 -0
  197. package/libs/icons.cjs +3 -2
  198. package/libs/icons.d.cts +3 -1
  199. package/libs/icons.d.ts +3 -1
  200. package/libs/icons.js +2 -1
  201. package/libs/index.cjs +174 -62
  202. package/libs/index.cjs.map +1 -1
  203. package/libs/index.css +1 -1
  204. package/libs/index.css.map +1 -1
  205. package/libs/index.d.cts +529 -446
  206. package/libs/index.d.ts +529 -446
  207. package/libs/index.js +36 -7
  208. package/libs/index.js.map +1 -1
  209. package/libs/inputs-f3a216db.d.ts +45 -0
  210. package/libs/ui-645f95b5.d.ts +285 -0
  211. package/package.json +2 -2
  212. package/src/components/README-UI.mdx +416 -0
  213. package/src/components/alert/ACCESSIBILITY.md +319 -0
  214. package/src/components/alert/README.mdx +475 -19
  215. package/src/components/alert/alert.scss +113 -6
  216. package/src/components/alert/alert.stories.tsx +372 -0
  217. package/src/components/alert/alert.test.tsx +762 -0
  218. package/src/components/alert/alert.tsx +331 -66
  219. package/src/components/alert/views/alert-actions.tsx +13 -0
  220. package/src/components/alert/views/alert-content.tsx +17 -0
  221. package/src/components/alert/views/alert-icon.tsx +53 -0
  222. package/src/components/alert/views/alert-screen-reader-text.tsx +30 -0
  223. package/src/components/alert/views/alert-title.tsx +23 -0
  224. package/src/components/alert/views/alert-view.tsx +158 -0
  225. package/src/components/alert/views/index.ts +12 -0
  226. package/src/components/badge/badge.mdx +186 -49
  227. package/src/components/badge/badge.scss +20 -2
  228. package/src/components/badge/badge.stories.tsx +160 -14
  229. package/src/components/badge/badge.test.tsx +179 -0
  230. package/src/components/badge/badge.tsx +97 -4
  231. package/src/components/breadcrumbs/README.mdx +364 -45
  232. package/src/components/breadcrumbs/__snapshots__/breadcrumb.test.tsx.snap +152 -0
  233. package/src/components/breadcrumbs/breadcrumb.stories.tsx +7 -3
  234. package/src/components/breadcrumbs/breadcrumb.test.tsx +490 -0
  235. package/src/components/breadcrumbs/breadcrumb.tsx +427 -170
  236. package/src/components/button.ts +2 -0
  237. package/src/components/buttons/button.scss +34 -31
  238. package/src/components/buttons/button.stories.tsx +35 -0
  239. package/src/components/card.ts +2 -0
  240. package/src/components/cards/README.mdx +657 -0
  241. package/src/components/cards/card.scss +22 -0
  242. package/src/components/cards/card.stories.tsx +167 -5
  243. package/src/components/cards/card.test.tsx +360 -20
  244. package/src/components/cards/card.tsx +200 -79
  245. package/src/components/cards/card.types.ts +135 -0
  246. package/src/components/cards/card.utils.ts +79 -0
  247. package/src/components/details/ACCESSIBILITY-REVIEW-LIVE.md +1050 -0
  248. package/src/components/details/ACCESSIBILITY-REVIEW.md +502 -0
  249. package/src/components/details/README.mdx +437 -69
  250. package/src/components/details/details.scss +16 -0
  251. package/src/components/details/details.test.tsx +385 -0
  252. package/src/components/details/details.tsx +101 -69
  253. package/src/components/details/details.types.ts +76 -0
  254. package/src/components/dialog/README.mdx +513 -110
  255. package/src/components/dialog/dialog-modal.tsx +79 -56
  256. package/src/components/dialog/dialog.scss +53 -3
  257. package/src/components/dialog/dialog.stories.tsx +10 -7
  258. package/src/components/dialog/dialog.test.tsx +450 -0
  259. package/src/components/dialog/dialog.tsx +69 -59
  260. package/src/components/dialog/dialog.types.ts +133 -0
  261. package/src/components/dialog/views/dialog-footer.tsx +54 -11
  262. package/src/components/dialog/views/dialog-header.tsx +20 -15
  263. package/src/components/heading/heading.stories.tsx +44 -4
  264. package/src/components/heading/heading.tsx +89 -23
  265. package/src/components/icons/README.mdx +332 -0
  266. package/src/components/icons/icon.stories.tsx +74 -1
  267. package/src/components/icons/icon.tsx +89 -1
  268. package/src/components/icons/types.ts +47 -0
  269. package/src/components/images/README.mdx +340 -24
  270. package/src/components/images/img.scss +19 -3
  271. package/src/components/images/img.stories.tsx +424 -15
  272. package/src/components/images/img.test.tsx +354 -25
  273. package/src/components/images/img.tsx +186 -63
  274. package/src/components/images/img.types.ts +211 -0
  275. package/src/components/modal.ts +1 -0
  276. package/src/components/title/MIGRATION.md +199 -0
  277. package/src/components/title/README.md +326 -0
  278. package/src/components/title/README.mdx +452 -0
  279. package/src/components/title/title.stories.tsx +393 -0
  280. package/src/components/title/title.test.tsx +251 -0
  281. package/src/components/title/title.tsx +219 -0
  282. package/src/components/ui.stories.tsx +894 -0
  283. package/src/components/ui.test.tsx +559 -0
  284. package/src/components/ui.tsx +266 -15
  285. package/src/components/word-count/README.md +240 -0
  286. package/src/hooks.ts +1 -0
  287. package/src/index.ts +51 -19
  288. package/src/sass/_properties.scss +1 -0
  289. package/src/styles/alert/alert.css +94 -4
  290. package/src/styles/alert/alert.css.map +1 -1
  291. package/src/styles/badge/badge.css +20 -2
  292. package/src/styles/badge/badge.css.map +1 -1
  293. package/src/styles/buttons/button.css +31 -31
  294. package/src/styles/buttons/button.css.map +1 -1
  295. package/src/styles/cards/card.css +16 -0
  296. package/src/styles/cards/card.css.map +1 -1
  297. package/src/styles/details/details.css +19 -0
  298. package/src/styles/details/details.css.map +1 -1
  299. package/src/styles/dialog/dialog.css +43 -2
  300. package/src/styles/dialog/dialog.css.map +1 -1
  301. package/src/styles/images/img.css +15 -3
  302. package/src/styles/images/img.css.map +1 -1
  303. package/src/styles/index.css +240 -43
  304. package/src/styles/index.css.map +1 -1
  305. package/src/test/setup.d.ts +9 -0
  306. package/src/test/setup.ts +53 -1
  307. package/libs/chunk-PWVRDQ3R.js +0 -8
  308. package/libs/chunk-PWVRDQ3R.js.map +0 -1
  309. package/libs/chunk-SVS4MX3U.cjs +0 -31
  310. package/libs/chunk-SVS4MX3U.cjs.map +0 -1
  311. package/src/components/cards/README.md +0 -80
  312. package/src/components/dialog/hooks/useClickOutside.ts +0 -33
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/cards/card.tsx","../src/components/cards/card.utils.ts"],"names":["React","cn","classes","CARD_CLASSES","handleCardKeyDown","event","onClick","Title","children","className","style","as","props","ui_default","Content","Footer","Card","styles","id","interactive","tabIndex","role","ariaLabel","ariaLabelledBy","ariaDescribedBy","card_default"],"mappings":"yCAAA,OAAOA,MAAW,QCoBX,SAASC,KAAMC,EAAwD,CAC5E,OAAOA,EAAQ,OAAO,OAAO,EAAE,KAAK,GAAG,CACzC,CAMO,IAAMC,EAAe,CAC1B,KAAM,OACN,MAAO,aACP,QAAS,eACT,OAAQ,aACV,EAcO,SAASC,EACdC,EACAC,EACM,CACDA,IAGDD,EAAM,MAAQ,SAAWA,EAAM,MAAQ,OACzCA,EAAM,eAAe,EACrBC,EAAQD,CAAK,EAEjB,CDzBO,IAAME,EAAQ,CAAC,CACpB,SAAAC,EACA,UAAAC,EACA,MAAAC,EACA,GAAAC,EAAK,KACL,GAAGC,CACL,IAEIZ,EAAA,cAACa,EAAA,CACC,GAAIF,EACJ,UAAWV,EAAGE,EAAa,MAAOM,CAAS,EAC3C,OAAQC,EACP,GAAGE,GAEHJ,CACH,EAIJD,EAAM,YAAc,aA+Bb,IAAMO,EAAU,CAAC,CACtB,SAAAN,EACA,UAAAC,EACA,MAAAC,EACA,GAAAC,EAAK,UACL,GAAGC,CACL,IAEIZ,EAAA,cAACa,EAAA,CACC,GAAIF,EACJ,UAAWV,EAAGE,EAAa,QAASM,CAAS,EAC7C,OAAQC,EACP,GAAGE,GAEHJ,CACH,EAIJM,EAAQ,YAAc,eA4Bf,IAAMC,EAAS,CAAC,CACrB,SAAAP,EACA,UAAAC,EACA,MAAAC,EACA,GAAAC,EAAK,MACL,GAAGC,CACL,IAEIZ,EAAA,cAACa,EAAA,CACC,GAAIF,EACJ,UAAWV,EAAGE,EAAa,OAAQM,CAAS,EAC5C,OAAQC,EACP,GAAGE,GAEHJ,CACH,EAIJO,EAAO,YAAc,cAuEd,IAAMC,EAAO,CAAC,CACnB,GAAAL,EAAK,MACL,OAAAM,EACA,SAAAT,EACA,QAAAN,EAAU,SACV,GAAAgB,EACA,YAAAC,EAAc,GACd,QAAAb,EACA,SAAAc,EACA,KAAAC,EACA,aAAcC,EACd,kBAAmBC,EACnB,mBAAoBC,EACpB,GAAGZ,CACL,KAEEZ,EAAM,UAAU,IAAM,CAEtB,EAAG,CAACM,EAASa,CAAW,CAAC,EAsBvBnB,EAAA,cAACa,EAAA,CACC,GAAIF,EACJ,GAAIO,EACJ,OAAQD,EACR,UAAWf,EACX,aAAYoB,EACZ,kBAAiBC,EACjB,mBAAkBC,EAClB,YAAWL,EAAc,cAAgB,GACxC,GAtBoBA,EACrB,CACE,KAAME,GAAQ,SACd,SAAUD,GAAY,EACtB,QAAAd,EACA,UAXiBD,GAA+B,EAChDc,GAAeb,IACjBF,EAAkBC,EAAOC,CAAO,CAEpC,CAQI,EACA,CACE,KAAAe,EACA,QAAAf,CACF,EAaC,GAAGM,GAEHJ,CACH,GAIGiB,EAAQT,EACfA,EAAK,YAAc,OACnBA,EAAK,MAAQT,EACbS,EAAK,QAAUF,EACfE,EAAK,OAASD","sourcesContent":["import React from 'react'\nimport UI from '#components/ui'\nimport type {\n CardProps,\n CardTitleProps,\n CardContentProps,\n CardFooterProps,\n} from './card.types'\nimport { cn, CARD_CLASSES, handleCardKeyDown, warnInteractiveUsage } from './card.utils'\n\n/**\n * Card.Title - Title sub-component for Card\n *\n * Renders a heading element for the card title. Defaults to h3 for proper\n * document outline, but can be customized via the `as` prop.\n *\n * ## Accessibility\n * - Use appropriate heading level based on document structure\n * - Combine with `aria-labelledby` on parent Card for accessible names\n *\n * @example\n * ```tsx\n * <Card aria-labelledby=\"card-title-1\">\n * <Card.Title id=\"card-title-1\">Featured Product</Card.Title>\n * </Card>\n * ```\n *\n * @example\n * ```tsx\n * // Custom heading level\n * <Card.Title as=\"h2\">Section Title</Card.Title>\n * ```\n */\nexport const Title = ({\n children,\n className,\n style,\n as = 'h3',\n ...props\n}: CardTitleProps) => {\n return (\n <UI\n as={as}\n className={cn(CARD_CLASSES.TITLE, className)}\n styles={style}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nTitle.displayName = 'Card.Title'\n\n/**\n * Card.Content - Content sub-component for Card\n *\n * Renders the main content area of the card. Defaults to `<article>` for\n * standalone content, but can be changed to `div` or `section` via the `as` prop.\n *\n * ## Semantic HTML Guidelines\n * - Use `article` (default) for self-contained, syndicate-able content\n * - Use `div` for generic content containers\n * - Use `section` for thematic groupings with a heading\n *\n * @example\n * ```tsx\n * <Card>\n * <Card.Title>Article Title</Card.Title>\n * <Card.Content>\n * <p>This is standalone content...</p>\n * </Card.Content>\n * </Card>\n * ```\n *\n * @example\n * ```tsx\n * // Generic container (not standalone content)\n * <Card.Content as=\"div\">\n * <p>Generic content...</p>\n * </Card.Content>\n * ```\n */\nexport const Content = ({\n children,\n className,\n style,\n as = 'article',\n ...props\n}: CardContentProps) => {\n return (\n <UI\n as={as}\n className={cn(CARD_CLASSES.CONTENT, className)}\n styles={style}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nContent.displayName = 'Card.Content'\n\n/**\n * Card.Footer - Footer sub-component for Card\n *\n * Renders a footer section for the card. Use for actions, metadata, or\n * supplementary information.\n *\n * @example\n * ```tsx\n * <Card>\n * <Card.Title>Product</Card.Title>\n * <Card.Content>Description...</Card.Content>\n * <Card.Footer>\n * <button>Add to Cart</button>\n * <span>$29.99</span>\n * </Card.Footer>\n * </Card>\n * ```\n *\n * @example\n * ```tsx\n * // Semantic footer element\n * <Card.Footer as=\"footer\">\n * <p>Last updated: 2024-01-15</p>\n * </Card.Footer>\n * ```\n */\nexport const Footer = ({\n children,\n className,\n style,\n as = 'div',\n ...props\n}: CardFooterProps) => {\n return (\n <UI\n as={as}\n className={cn(CARD_CLASSES.FOOTER, className)}\n styles={style}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nFooter.displayName = 'Card.Footer'\n\n/**\n * Card - A flexible, accessible card component with compound component pattern\n *\n * The Card component provides a container for grouping related content and actions.\n * It follows the compound component pattern, exposing `Card.Title`, `Card.Content`,\n * and `Card.Footer` sub-components for structured layouts.\n *\n * ## Features\n * - **Polymorphic rendering**: Render as any HTML element via `as` prop\n * - **Compound components**: Structured sub-components for consistent layouts\n * - **Interactive variant**: Built-in keyboard navigation and ARIA support\n * - **Fully accessible**: WCAG 2.1 AA compliant with proper semantic HTML\n *\n * ## Accessibility\n *\n * ### Non-Interactive Cards\n * - Use semantic HTML: `article` for standalone content, `section` for groupings\n * - Provide accessible names with `aria-labelledby` referencing the title\n *\n * ### Interactive Cards (Clickable)\n * - Set `interactive={true}` to enable keyboard navigation (Enter/Space)\n * - Provide accessible name via `aria-label` or `aria-labelledby`\n * - Ensure adequate focus indicators (handled by CSS)\n *\n * @example\n * // Basic card with compound components\n * ```tsx\n * <Card>\n * <Card.Title>Product Name</Card.Title>\n * <Card.Content>\n * <p>Product description goes here...</p>\n * </Card.Content>\n * <Card.Footer>\n * <button>Buy Now</button>\n * </Card.Footer>\n * </Card>\n * ```\n *\n * @example\n * // Accessible interactive card\n * ```tsx\n * <Card\n * interactive\n * aria-label=\"View product details\"\n * onClick={() => navigate('/product/123')}\n * >\n * <Card.Title>Product Name</Card.Title>\n * <Card.Content>Click anywhere to view details</Card.Content>\n * </Card>\n * ```\n *\n * @example\n * // Semantic article card with accessible name\n * ```tsx\n * <Card as=\"article\" aria-labelledby=\"article-title\">\n * <Card.Title id=\"article-title\">Article Headline</Card.Title>\n * <Card.Content>Article body...</Card.Content>\n * </Card>\n * ```\n *\n * @example\n * // Card as a landmark region\n * ```tsx\n * <Card role=\"region\" aria-label=\"Featured products\">\n * <Card.Title>Featured</Card.Title>\n * <Card.Content>...</Card.Content>\n * </Card>\n * ```\n */\nexport const Card = ({\n as = 'div',\n styles,\n children,\n classes = 'shadow',\n id,\n interactive = false,\n onClick,\n tabIndex,\n role,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-describedby': ariaDescribedBy,\n ...props\n}: CardProps) => {\n // Development warnings for common accessibility issues\n React.useEffect(() => {\n warnInteractiveUsage(!!onClick, interactive)\n }, [onClick, interactive])\n\n // Interactive card handling\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (interactive || onClick) {\n handleCardKeyDown(event, onClick)\n }\n }\n\n const interactiveProps = interactive\n ? {\n role: role || 'button',\n tabIndex: tabIndex ?? 0,\n onClick,\n onKeyDown: handleKeyDown,\n }\n : {\n role,\n onClick,\n }\n\n return (\n <UI\n as={as}\n id={id}\n styles={styles}\n className={classes}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-describedby={ariaDescribedBy}\n data-card={interactive ? 'interactive' : true}\n {...interactiveProps}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nexport default Card\nCard.displayName = 'Card'\nCard.Title = Title\nCard.Content = Content\nCard.Footer = Footer\n\n// Export types for external consumption\nexport type { CardProps, CardTitleProps, CardContentProps, CardFooterProps } from './card.types'\n","/**\n * Utility functions for the Card component.\n */\n\n/**\n * Combines multiple className strings into a single string, filtering out falsy values.\n *\n * This utility provides a cleaner alternative to template literals for className composition,\n * avoiding unnecessary string allocation on every render.\n *\n * @param classes - Array of class names (can include undefined/null/empty strings)\n * @returns Combined className string\n *\n * @example\n * ```tsx\n * cn('card-title', className) // \"card-title custom-class\"\n * cn('card-title', undefined) // \"card-title\"\n * cn('card-title', '', 'extra') // \"card-title extra\"\n * ```\n */\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n\n/**\n * CSS class name constants for Card components.\n * Centralizing these prevents typos and enables easier refactoring.\n */\nexport const CARD_CLASSES = {\n CARD: 'card',\n TITLE: 'card-title',\n CONTENT: 'card-content',\n FOOTER: 'card-footer',\n} as const\n\n/**\n * Handles keyboard events for interactive cards.\n * Triggers click handler on Enter or Space key press.\n *\n * @param event - Keyboard event\n * @param onClick - Click handler to invoke\n *\n * @example\n * ```tsx\n * <div onKeyDown={(e) => handleCardKeyDown(e, handleClick)}>\n * ```\n */\nexport function handleCardKeyDown(\n event: React.KeyboardEvent,\n onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void\n): void {\n if (!onClick) return\n\n // Activate on Enter or Space (standard keyboard interaction pattern)\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault() // Prevent page scroll on Space\n onClick(event)\n }\n}\n\n/**\n * Development warning for interactive card usage.\n * Warns when onClick is provided without the interactive prop.\n *\n * This function is intentionally empty to comply with no-console linting rules.\n * In the future, consider using a proper logging/warning system.\n *\n * @param hasOnClick - Whether onClick handler is provided\n * @param isInteractive - Whether interactive prop is set\n */\nexport function warnInteractiveUsage(\n hasOnClick: boolean,\n isInteractive?: boolean\n): void {\n // Development warning removed to comply with ESLint no-console rule\n // TODO: Consider using a proper warning system if needed\n void hasOnClick\n void isInteractive\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import e from 'react';
2
+
3
+ var y=e.forwardRef(({as:o,styles:t,classes:p,children:r,defaultStyles:n,...s},P)=>{let m=o||"div",C={...n,...t};return e.createElement(m,{ref:P,style:C,className:p,...s},r)}),a=y;
4
+
5
+ export { a };
6
+ //# sourceMappingURL=out.js.map
7
+ //# sourceMappingURL=chunk-P7TTEYCD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/fp.tsx"],"names":["React","FP","as","styles","classes","children","defaultStyles","props","ref","Component","styleObj","fp_default"],"mappings":"AAAA,OAAOA,MAAW,QAyDlB,IAAMC,EAAkBD,EAAM,WAC5B,CACE,CAAE,GAAAE,EAAI,OAAAC,EAAQ,QAAAC,EAAS,SAAAC,EAAU,cAAAC,EAAe,GAAGC,CAAM,EACzDC,IACG,CACH,IAAMC,EAAYP,GAAM,MAElBQ,EAAW,CAAE,GAAGJ,EAAe,GAAGH,CAAO,EAE/C,OACEH,EAAA,cAACS,EAAA,CAAU,IAAKD,EAAK,MAAOE,EAAU,UAAWN,EAAU,GAAGG,GAC3DF,CACH,CAEJ,CACF,EAKOM,EAAQV","sourcesContent":["import React from 'react'\nimport { ComponentProps } from '../types'\n\ntype PolymorphicRef<C extends React.ElementType> =\n React.ComponentPropsWithRef<C>['ref']\n\ntype AsProp<C extends React.ElementType> = {\n as?: C\n}\n\ntype PropsToOmit<C extends React.ElementType, P> = keyof (AsProp<C> & P)\n\ntype PolymorphicComponentProp<\n C extends React.ElementType,\n Props = {},\n> = React.PropsWithChildren<Props & AsProp<C>> &\n Omit<React.ComponentPropsWithoutRef<C>, PropsToOmit<C, Props>>\n\ntype PolymorphicComponentPropWithRef<\n C extends React.ElementType,\n Props = {},\n> = PolymorphicComponentProp<C, Props> & {\n ref?: PolymorphicRef<C>\n}\n\ntype FPProps<C extends React.ElementType> = PolymorphicComponentPropWithRef<\n C,\n {\n renderStyles?: boolean\n styles?: React.CSSProperties\n classes?: string\n }\n>\n\n/*\n * FPComponent type definition\n *\n * Defines the component function signature for the FP component.\n *\n * @typeParam C - The HTML element type to render\n * @param props - The component props\n * @returns React component\n */\ntype FPComponent = <C extends React.ElementType = 'span'>(\n props: FPProps<C>,\n) => React.ReactElement | any\n\n/**\n * FP component is a polymorphic component that renders an HTML element with optional styles.\n * @param {Object} props - Component props\n * @param {React.ElementType} props.as - The HTML element to render. Defaults to 'div'.\n * @param {boolean} props.renderStyles - Whether to render styles or not. Defaults to true.\n * @param {Object} props.styles - The styles to apply to the component.\n * @param {Object} props.defaultStyles - The default styles to apply to the component.\n * @param {React.ReactNode} props.children - The children to render inside the component.\n * @returns {React.ReactElement} - A React component that renders an HTML element with optional styles.\n */\nconst FP: FPComponent = React.forwardRef(\n <C extends React.ElementType>(\n { as, styles, classes, children, defaultStyles, ...props }: FPProps<C>,\n ref?: PolymorphicRef<C>,\n ) => {\n const Component = as || 'div'\n\n const styleObj = { ...defaultStyles, ...styles } as React.CSSProperties\n\n return (\n <Component ref={ref} style={styleObj} className={classes} {...props}>\n {children}\n </Component>\n )\n },\n)\nexport interface BoxProps extends ComponentProps {\n renderStyles: true\n}\n\nexport default FP\n"]}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ var chunkL75OQKEI_cjs = require('./chunk-L75OQKEI.cjs');
4
+ var o = require('react');
5
+
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var o__default = /*#__PURE__*/_interopDefault(o);
9
+
10
+ var r=o__default.default.memo(o__default.default.forwardRef(({level:e="h2",id:t,styles:i,ui:s,children:d,className:m,...c},h)=>o__default.default.createElement(chunkL75OQKEI_cjs.a,{as:e,id:t,styles:i,"data-ui":s,className:m,ref:h,...c},d)));r.displayName="Title";var a=r;var p=o__default.default.forwardRef(({type:e="h3",...t},i)=>(process.env.NODE_ENV==="development"&&console.warn(`[@fpkit/acss] Heading component is deprecated and will be removed in v3.0.0. Please use the Title component instead.
11
+ Migration: <Heading type="${e}"> \u2192 <Title level="${e}">
12
+ See documentation: https://fpkit.dev/components/title`),o__default.default.createElement(a,{level:e,ref:i,...t})));p.displayName="Heading (Deprecated)";var H=p;
13
+
14
+ exports.a = a;
15
+ exports.b = H;
16
+ //# sourceMappingURL=out.js.map
17
+ //# sourceMappingURL=chunk-PQ2K3BM6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/heading/heading.tsx","../src/components/title/title.tsx"],"names":["React","Title","level","id","styles","ui","children","className","props","ref","ui_default","title_default","Heading","type","heading_default"],"mappings":"yCAAA,OAAOA,MAAW,QCAlB,OAAOA,MAAW,QAyLlB,IAAMC,EAAQD,EAAM,KAClBA,EAAM,WACJ,CACE,CACE,MAAAE,EAAQ,KACR,GAAAC,EACA,OAAAC,EACA,GAAAC,EACA,SAAAC,EACA,UAAAC,EACA,GAAGC,CACL,EACAC,IAGET,EAAA,cAACU,EAAA,CACC,GAAIR,EACJ,GAAIC,EACJ,OAAQC,EACR,UAASC,EACT,UAAWE,EACX,IAAKE,EACJ,GAAGD,GAEHF,CACH,CAGN,CACF,EAEAL,EAAM,YAAc,QAEpB,IAAOU,EAAQV,EDlJf,IAAMW,EAAUZ,EAAM,WACpB,CAAC,CAAE,KAAAa,EAAO,KAAM,GAAGL,CAAM,EAAGC,KAEtB,QAAQ,IAAI,WAAa,eAE3B,QAAQ,KACN;AAAA,4BAE6BI,CAAI,2BAAsBA,CAAI;AAAA,sDAE7D,EAIKb,EAAA,cAACW,EAAA,CAAM,MAAOE,EAAM,IAAKJ,EAAM,GAAGD,EAAO,EAEpD,EAEAI,EAAQ,YAAc,uBAEtB,IAAOE,EAAQF","sourcesContent":["import React from \"react\";\nimport Title from \"#components/title/title\";\n\n/**\n * @deprecated Use `Title` component instead. This component will be removed in v3.0.0.\n *\n * @remarks\n * The `Heading` component has been deprecated in favor of the new `Title` component\n * which offers improved API design and better accessibility features.\n *\n * **Migration Guide:**\n * - Rename `Heading` → `Title`\n * - Rename prop `type` → `level`\n * - Default level changed from `h3` → `h2` (update if you relied on the default)\n *\n * @example\n * // Before (deprecated):\n * <Heading type=\"h2\">Section Title</Heading>\n *\n * // After:\n * <Title level=\"h2\">Section Title</Title>\n *\n * @see {@link Title} for the new component\n */\nexport type TitleProps = {\n /**\n * @deprecated Use `level` prop on the `Title` component instead.\n */\n children: React.ReactNode;\n\n /**\n * @deprecated Use `level` prop on the `Title` component instead.\n */\n type?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n /**\n * @deprecated Use `ui` prop on the `Title` component.\n */\n ui?: string;\n} & Omit<React.ComponentPropsWithoutRef<typeof Title>, 'level'>;\n\n/**\n * Heading - Deprecated component wrapper for Title.\n *\n * @deprecated Use {@link Title} component instead. Will be removed in v3.0.0.\n *\n * This component provides backwards compatibility for existing code using\n * the old `Heading` component API. It forwards all props to the new `Title`\n * component with appropriate prop name mapping.\n *\n * **Breaking Changes in v3.0.0:**\n * - This component will be removed\n * - Migrate to `Title` component before upgrading\n *\n * **Migration Steps:**\n * 1. Replace all `<Heading>` imports with `<Title>`\n * 2. Rename `type` prop to `level`\n * 3. Review default behavior (default changed from h3 to h2)\n *\n * @example\n * // Old API (still works but deprecated):\n * import { Heading } from '@fpkit/acss';\n * <Heading type=\"h2\">Section</Heading>\n *\n * @example\n * // New API (recommended):\n * import { Title } from '@fpkit/acss';\n * <Title level=\"h2\">Section</Title>\n *\n * @param {TitleProps} props - Component props (maps old API to new)\n * @returns {React.ReactElement} The rendered Title component\n */\nconst Heading = React.forwardRef<HTMLHeadingElement, TitleProps>(\n ({ type = \"h3\", ...props }, ref) => {\n // Development warning for deprecated usage\n if (process.env.NODE_ENV === \"development\") {\n // eslint-disable-next-line no-console\n console.warn(\n `[@fpkit/acss] Heading component is deprecated and will be removed in v3.0.0. ` +\n `Please use the Title component instead.\\n` +\n `Migration: <Heading type=\"${type}\"> → <Title level=\"${type}\">\\n` +\n `See documentation: https://fpkit.dev/components/title`\n );\n }\n\n // Map old 'type' prop to new 'level' prop\n return <Title level={type} ref={ref} {...props} />;\n }\n);\n\nHeading.displayName = \"Heading (Deprecated)\";\n\nexport default Heading;\n","import React from \"react\";\nimport UI from \"#components/ui\";\n\n/**\n * Valid HTML heading levels for semantic document structure.\n *\n * @remarks\n * Heading levels establish the document outline and hierarchy for screen readers.\n * Always maintain proper heading order (don't skip levels) for WCAG 2.1 compliance.\n *\n * @example\n * // ✅ GOOD: Proper heading hierarchy\n * <Title level=\"h1\">Main Page Title</Title>\n * <Title level=\"h2\">Section Heading</Title>\n * <Title level=\"h3\">Subsection Heading</Title>\n *\n * @example\n * // ❌ BAD: Skipping heading levels\n * <Title level=\"h1\">Main Title</Title>\n * <Title level=\"h4\">Skipped h2 and h3</Title>\n */\nexport type HeadingLevel = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n/**\n * Props for the Title component.\n *\n * @typeParam TLevel - The heading level to render (h1-h6)\n *\n * @property {HeadingLevel} level - The semantic heading level (h1-h6). Defaults to \"h2\".\n * @property {React.ReactNode} children - The text or elements to render inside the heading.\n * @property {string} [id] - Unique identifier for the heading, useful for anchor links.\n * @property {React.CSSProperties} [styles] - Inline styles to apply to the heading.\n * @property {string} [ui] - Data attribute for UI framework styling hooks.\n * @property {string} [className] - CSS class names to apply.\n *\n * @remarks\n * This interface extends the polymorphic UI component props, providing full access\n * to native HTML heading attributes and ARIA properties for accessibility.\n *\n * For AI assistants: This component ensures semantic HTML structure for document\n * outlines, which is critical for screen reader navigation and SEO.\n */\nexport type TitleProps = {\n /**\n * The semantic heading level to render.\n *\n * @default \"h2\"\n *\n * @remarks\n * Choose the appropriate level based on your document structure:\n * - h1: Page title (typically one per page)\n * - h2: Major sections\n * - h3-h6: Subsections and nested content\n *\n * WCAG 2.1 requires proper heading hierarchy for screen reader users.\n */\n level?: HeadingLevel;\n\n /**\n * The content to display in the heading.\n *\n * @remarks\n * Can be text, elements, or a combination. Ensure text content is meaningful\n * and descriptive for users navigating with screen readers.\n */\n children: React.ReactNode;\n\n /**\n * Unique identifier for the heading element.\n *\n * @remarks\n * Useful for:\n * - Creating anchor links to sections\n * - ARIA relationships (aria-labelledby, aria-describedby)\n * - Testing and automation\n */\n id?: string;\n\n /**\n * Data attribute for UI framework styling hooks.\n *\n * @remarks\n * Used by fpkit's CSS system to apply component-specific styles.\n * Automatically prefixed with \"data-ui\" when rendered.\n */\n ui?: string;\n\n /**\n * CSS class names to apply to the heading.\n *\n * @remarks\n * Prefer using the `ui` prop for fpkit styling, and this for\n * utility classes or custom overrides.\n */\n className?: string;\n} & React.ComponentPropsWithoutRef<typeof UI>;\n\n/**\n * Title - A semantic heading component for document structure and hierarchy.\n *\n * The Title component renders semantic HTML headings (h1-h6) with proper\n * accessibility support. It ensures WCAG 2.1 AA compliance by maintaining\n * semantic document structure for screen readers and assistive technologies.\n *\n * ## Key Features\n *\n * - **Semantic HTML**: Renders actual heading elements (h1-h6) for proper document outline\n * - **Accessibility**: Full ARIA support and keyboard navigation\n * - **Flexible Styling**: Supports fpkit's UI system, custom classes, and inline styles\n * - **Type Safety**: Fully typed with TypeScript for developer experience\n * - **Performance**: Memoized to prevent unnecessary re-renders\n *\n * ## Accessibility Considerations\n *\n * ### WCAG 2.1 AA Compliance\n *\n * - **1.3.1 Info and Relationships (Level A)**: Semantic heading elements preserve\n * document structure for screen readers\n * - **2.4.6 Headings and Labels (Level AA)**: Headings should be descriptive and\n * properly ordered\n * - **2.4.10 Section Headings (Level AAA)**: Use headings to organize content\n *\n * ### Best Practices\n *\n * 1. **Maintain Heading Hierarchy**: Don't skip levels (e.g., h1 → h3)\n * 2. **One h1 Per Page**: Use h1 for the main page title only\n * 3. **Descriptive Text**: Headings should clearly describe the following content\n * 4. **Avoid Empty Headings**: Always provide meaningful text content\n *\n * ## Usage Examples\n *\n * @example\n * // Basic usage with default h2\n * <Title>Section Heading</Title>\n *\n * @example\n * // Page title with explicit h1\n * <Title level=\"h1\">Welcome to Our Application</Title>\n *\n * @example\n * // Subsection with custom styling\n * <Title\n * level=\"h3\"\n * id=\"getting-started\"\n * className=\"text-primary\"\n * >\n * Getting Started\n * </Title>\n *\n * @example\n * // With fpkit UI data attribute\n * <Title level=\"h2\" ui=\"section-title\">\n * Features Overview\n * </Title>\n *\n * @example\n * // Accessible heading with aria-label for context\n * <Title level=\"h2\" aria-label=\"User dashboard overview\">\n * Dashboard\n * </Title>\n *\n * @example\n * // Complex heading with mixed content\n * <Title level=\"h2\" id=\"stats\">\n * <Icon name=\"chart\" aria-hidden=\"true\" />\n * <span>Statistics</span>\n * </Title>\n *\n * @example\n * // ✅ GOOD: Proper heading hierarchy\n * <Title level=\"h1\">Page Title</Title>\n * <Title level=\"h2\">Main Section</Title>\n * <Title level=\"h3\">Subsection</Title>\n *\n * @example\n * // ❌ BAD: Skipping heading levels (accessibility violation)\n * <Title level=\"h1\">Page Title</Title>\n * <Title level=\"h4\">Skipped h2 and h3</Title>\n *\n * @param {TitleProps} props - Component props\n * @returns {React.ReactElement} A semantic heading element\n *\n * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html WCAG 1.3.1}\n * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/headings-and-labels.html WCAG 2.4.6}\n */\nconst Title = React.memo(\n React.forwardRef<HTMLHeadingElement, TitleProps>(\n (\n {\n level = \"h2\",\n id,\n styles,\n ui,\n children,\n className,\n ...props\n }: TitleProps,\n ref\n ) => {\n return (\n <UI\n as={level}\n id={id}\n styles={styles}\n data-ui={ui}\n className={className}\n ref={ref}\n {...props}\n >\n {children}\n </UI>\n );\n }\n )\n);\n\nTitle.displayName = \"Title\";\n\nexport default Title;\n"]}
@@ -0,0 +1,8 @@
1
+ import { a } from './chunk-KUKIVRC2.js';
2
+ import v from 'react';
3
+
4
+ var r=({type:a$1="button",children:i,styles:l,disabled:e,classes:u,onPointerDown:P,onPointerOver:c,onPointerLeave:p,onClick:s,...m})=>{let n=t=>{e||P?.(t);};return v.createElement(a,{as:"button",type:a$1,onPointerOver:t=>{e||c?.(t);},onPointerDown:n,onPointerLeave:t=>{e||p?.(t);},onKeyDown:n,style:l,className:u,"aria-disabled":e,onClick:t=>{e||s?.(t);},...m},i)},L=r;r.displayName="Button";
5
+
6
+ export { r as a, L as b };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=chunk-QLZWHAMK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/buttons/button.tsx"],"names":["React","Button","type","children","styles","disabled","classes","onPointerDown","onPointerOver","onPointerLeave","onClick","props","handlePointerDown","e","ui_default","button_default"],"mappings":"wCACA,OAAOA,MAAW,QAUX,IAAMC,EAAS,CAAC,CACrB,KAAAC,EAAO,SACP,SAAAC,EACA,OAAAC,EACA,SAAAC,EACA,QAAAC,EACA,cAAAC,EACA,cAAAC,EACA,eAAAC,EACA,QAAAC,EACA,GAAGC,CACL,IAAmB,CAMjB,IAAMC,EAAqBC,GAA6C,CACjER,GACHE,IAAgBM,CAAC,CAErB,EAqCA,OACEb,EAAA,cAACc,EAAA,CACC,GAAG,SACH,KAAMZ,EACN,cAlCuBW,GAA6C,CACjER,GACHG,IAAgBK,CAAC,CAErB,EA+BI,cAAeD,EACf,eAzBwBC,GAA6C,CAClER,GACHI,IAAiBI,CAAC,CAEtB,EAsBI,UAAWD,EACX,MAAOR,EACP,UAAWE,EACX,gBAAeD,EACf,QAnBmBQ,GAA2C,CAC3DR,GACFK,IAAUG,CAAC,CAEhB,EAgBK,GAAGF,GAEHR,CACH,CAGJ,EAEOY,EAAQd,EACfA,EAAO,YAAc","sourcesContent":["import UI from '../ui'\nimport React from 'react'\n\nexport type ButtonProps = Partial<React.ComponentProps<typeof UI>> & {\n /**\n * The button type\n * Required - 'button' | 'submit' | 'reset'\n */\n type: 'button' | 'submit' | 'reset'\n }\n\nexport const Button = ({\n type = 'button',\n children,\n styles,\n disabled,\n classes,\n onPointerDown,\n onPointerOver,\n onPointerLeave,\n onClick,\n ...props\n}: ButtonProps) => {\n /**\n * Handles the pointer down event on the button.\n * Only triggers the onPointerDown callback if the button is not disabled.\n * @param e The pointer event object from the button element\n */\n const handlePointerDown = (e: React.PointerEvent<HTMLButtonElement>) => {\n if (!disabled) {\n onPointerDown?.(e)\n }\n }\n\n /**\n * Handles the pointer over event on the button.\n * Only triggers the onPointerOver callback if the button is not disabled.\n * @param e The pointer event object from the button element\n */\n const handlePointerOver = (e: React.PointerEvent<HTMLButtonElement>) => {\n if (!disabled) {\n onPointerOver?.(e)\n }\n }\n\n /**\n * Handles the pointer leave event on the button.\n * Only triggers the onPointerLeave callback if the button is not disabled.\n * @param e The pointer event object from the button element\n */\n const handlePointerLeave = (e: React.PointerEvent<HTMLButtonElement>) => {\n if (!disabled) {\n onPointerLeave?.(e)\n }\n }\n\n /**\n * Handles the click event on the button.\n * Only triggers the onClick callback if the button is not disabled.\n * @param e The mouse event object from the button element\n */\n const handleOnClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n onClick?.(e)\n }\n }\n\n\n /* Returning a button element. */\n return (\n <UI\n as=\"button\"\n type={type}\n onPointerOver={handlePointerOver}\n onPointerDown={handlePointerDown}\n onPointerLeave={handlePointerLeave}\n onKeyDown={handlePointerDown}\n style={styles}\n className={classes}\n aria-disabled={disabled}\n onClick={handleOnClick}\n {...props}\n >\n {children}\n </UI>\n )\n //\n}\n\nexport default Button\nButton.displayName = 'Button'\n"]}
@@ -0,0 +1,8 @@
1
+ import { a } from './chunk-KUKIVRC2.js';
2
+ import t from 'react';
3
+
4
+ var l=({label:o,labelFor:a$1,id:r,styles:p,classes:d,children:s,...i})=>t.createElement(a,{as:"div",id:r,styles:p,className:d,"data-style":"fields",...i},t.createElement("label",{htmlFor:a$1},o),s),n=l;l.displayName="Field";
5
+
6
+ export { l as a, n as b };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=chunk-RIVUMPOG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form/fields.tsx"],"names":["React","Field","label","labelFor","id","styles","classes","children","props","ui_default","fields_default"],"mappings":"wCAAA,OAAOA,MAAW,QAmBX,IAAMC,EAAQ,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,GAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAC,EACA,GAAGC,CACL,IAEIR,EAAA,cAACS,EAAA,CACC,GAAG,MACH,GAAIL,EACJ,OAAQC,EACR,UAAWC,EACX,aAAW,SACV,GAAGE,GAEJR,EAAA,cAAC,SAAM,QAASG,GAAWD,CAAM,EAChCK,CACH,EAIGG,EAAQT,EACfA,EAAM,YAAc","sourcesContent":["import React from 'react'\nimport UI from '../ui'\n\nexport type FieldProps = {\n /**\n * The label content\n */\n label: React.ReactNode\n children: React.ReactNode\n} & React.ComponentProps<'label'> &\n Partial<React.ComponentProps<typeof UI>>\n/**\n * Field component that renders a label and children wrapped in a div element.\n * @param labelFor Defines the for attribute of the label element\n * @param styles Custom styles to be applied to the component\n * @param label The label content\n * @param children The children to be rendered inside the component\n * @param props Additional props to be spread to the component\n */\nexport const Field = ({\n label,\n labelFor,\n id,\n styles,\n classes,\n children,\n ...props\n}: FieldProps) => {\n return (\n <UI\n as=\"div\"\n id={id}\n styles={styles}\n className={classes}\n data-style=\"fields\"\n {...props}\n >\n <label htmlFor={labelFor}>{label}</label>\n {children}\n </UI>\n )\n}\n\nexport default Field\nField.displayName = 'Field'\n"]}
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var chunkJ32EZPYD_cjs = require('./chunk-J32EZPYD.cjs');
4
+ var chunkL75OQKEI_cjs = require('./chunk-L75OQKEI.cjs');
5
+ var e = require('react');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var e__default = /*#__PURE__*/_interopDefault(e);
10
+
11
+ var l=({id:n,children:a,classes:r,modalRef:d,openOnMount:i,...t})=>e__default.default.createElement(chunkL75OQKEI_cjs.a,{as:"dialog",id:n,classes:r,ref:d,open:i,onClick:o=>{o.currentTarget===o.target&&o.currentTarget.close();},...t},a);e__default.default.memo(l);l.displayName="Dialog";var u=({openChild:n,closeChild:a,modalHeader:r,modalFooter:d,children:i,showOpen:t=!1,...p})=>{let o=e__default.default.useRef(null),f=()=>{o.current&&(t?o.current.show():o.current.showModal());},M=()=>{o.current&&o.current.close();};return e__default.default.createElement(e__default.default.Fragment,null,e__default.default.createElement(l,{modalRef:o,openOnMount:t,...p},e__default.default.createElement("section",null,r,i,d??e__default.default.createElement("div",null,e__default.default.createElement(chunkJ32EZPYD_cjs.a,{type:"button",pointerDown:()=>{M();}},a||"Close")," "))),!t&&e__default.default.createElement(chunkJ32EZPYD_cjs.a,{type:"button",pointerDown:f},n||"Open Modal"))};u.displayName="Modal";
12
+
13
+ exports.a = u;
14
+ //# sourceMappingURL=out.js.map
15
+ //# sourceMappingURL=chunk-ROZI23GS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/modal/modal.tsx","../src/components/modal/dialog.tsx"],"names":["React","ModalDialog","id","children","classes","modalRef","openOnMount","props","ui_default","e","dialog_default","Modal","openChild","closeChild","modalHeader","modalFooter","showOpen","dialogRef","openModal","closeModal","Button"],"mappings":"kFAAA,OAAOA,MAAW,QCClB,OAAOA,MAAW,QAmBX,IAAMC,EAAc,CAAC,CAC1B,GAAAC,EACA,SAAAC,EACA,QAAAC,EACA,SAAAC,EACA,YAAAC,EACA,GAAGC,CACL,IAQIP,EAAA,cAACQ,EAAA,CACC,GAAG,SACH,GAAIN,EACJ,QAASE,EACT,IAAKC,EACL,KAAMC,EACN,QAbsBG,GAA+C,CACnEA,EAAE,gBAAkBA,EAAE,QACxBA,EAAE,cAAc,MAAM,CAE1B,EAUK,GAAGF,GAEHJ,CACH,EAIGO,EAAQV,EAAM,KAAKC,CAAW,EACrCA,EAAY,YAAc,SDnBnB,IAAMU,EAAQ,CAAC,CACpB,UAAAC,EACA,WAAAC,EACA,YAAAC,EACA,YAAAC,EACA,SAAAZ,EACA,SAAAa,EAAW,GACX,GAAGT,CACL,IAAkB,CAChB,IAAMU,EAAYjB,EAAM,OAA0B,IAAI,EAChDkB,EAAY,IAAY,CACxBD,EAAU,UACRD,EAAUC,EAAU,QAAQ,KAAK,EAChCA,EAAU,QAAQ,UAAU,EAErC,EACME,EAAa,IAAM,CACnBF,EAAU,SACZA,EAAU,QAAQ,MAAM,CAE5B,EAEA,OACEjB,EAAA,cAAAA,EAAA,cACEA,EAAA,cAACC,EAAA,CAAY,SAAUgB,EAAW,YAAaD,EAAW,GAAGT,GAC3DP,EAAA,cAAC,eACEc,EACAX,EACAY,GACCf,EAAA,cAAC,WACCA,EAAA,cAACoB,EAAA,CACC,KAAK,SACL,YAAa,IAAM,CACjBD,EAAW,CACb,GAECN,GAAc,OACjB,EAAU,GACZ,CAEJ,CACF,EACC,CAACG,GACAhB,EAAA,cAACoB,EAAA,CAAO,KAAK,SAAS,YAAaF,GAChCN,GAAa,YAChB,CAEJ,CAEJ,EAEAD,EAAM,YAAc","sourcesContent":["import React from \"react\";\nimport { ComponentProps } from \"../../types\";\nimport { Button } from \"../buttons/button\";\nimport { ModalDialog } from \"./dialog\";\n\nexport interface ModalProps extends ComponentProps {\n /**\n * The child component/content for open button\n */\n openChild?: React.ReactNode;\n /**\n * The child component/content for close button\n */\n closeChild?: React.ReactNode;\n /**\n * The child component/content for modal header\n */\n modalHeader?: React.ReactNode;\n /**\n * The child component/content for modal footer\n */\n modalFooter?: React.ReactNode;\n /**\n * The child component/content for modal body\n */\n children: React.ReactNode;\n /**\n * Open modal on mount when set to true\n */\n showOpen?: boolean;\n}\nexport const Modal = ({\n openChild,\n closeChild,\n modalHeader,\n modalFooter,\n children,\n showOpen = false,\n ...props\n}: ModalProps) => {\n const dialogRef = React.useRef<HTMLDialogElement>(null);\n const openModal = (): void => {\n if (dialogRef.current) {\n if (showOpen) dialogRef.current.show();\n else dialogRef.current.showModal();\n }\n };\n const closeModal = () => {\n if (dialogRef.current) {\n dialogRef.current.close();\n }\n };\n\n return (\n <>\n <ModalDialog modalRef={dialogRef} openOnMount={showOpen} {...props}>\n <section>\n {modalHeader}\n {children}\n {modalFooter ?? (\n <div>\n <Button\n type=\"button\"\n pointerDown={() => {\n closeModal();\n }}\n >\n {closeChild || \"Close\"}\n </Button>{\" \"}\n </div>\n )}\n </section>\n </ModalDialog>\n {!showOpen && (\n <Button type=\"button\" pointerDown={openModal}>\n {openChild || \"Open Modal\"}\n </Button>\n )}\n </>\n );\n};\n\nModal.displayName = \"Modal\";\n","import UI from \"../ui\";\nimport React from \"react\";\n\nexport type DialogProps = {\n /**\n * React ref for dialog element\n */\n modalRef: React.RefObject<HTMLDialogElement>;\n /**\n * Handle close modal event\n */\n closeModal?: (e: React.SyntheticEvent<HTMLDialogElement>) => void;\n /**\n * open modal on mount\n */\n openOnMount?: boolean;\n} & React.ComponentProps<typeof UI>;\n/**\n * Dialog component\n */\nexport const ModalDialog = ({\n id,\n children,\n classes,\n modalRef,\n openOnMount,\n ...props\n}: DialogProps) => {\n const handleCloseModal = (e: React.SyntheticEvent<HTMLDialogElement>) => {\n if (e.currentTarget === e.target) {\n e.currentTarget.close();\n }\n };\n\n return (\n <UI\n as=\"dialog\"\n id={id}\n classes={classes}\n ref={modalRef}\n open={openOnMount}\n onClick={handleCloseModal}\n {...props}\n >\n {children}\n </UI>\n );\n};\n\nexport default React.memo(ModalDialog);\nModalDialog.displayName = \"Dialog\";\n"]}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var e = require('react');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var e__default = /*#__PURE__*/_interopDefault(e);
8
+
9
+ var y=e__default.default.forwardRef(({as:o,styles:t,classes:p,children:r,defaultStyles:n,...s},P)=>{let m=o||"div",C={...n,...t};return e__default.default.createElement(m,{ref:P,style:C,className:p,...s},r)}),a=y;
10
+
11
+ exports.a = a;
12
+ //# sourceMappingURL=out.js.map
13
+ //# sourceMappingURL=chunk-S7BABR7Z.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/fp.tsx"],"names":["React","FP","as","styles","classes","children","defaultStyles","props","ref","Component","styleObj","fp_default"],"mappings":"AAAA,OAAOA,MAAW,QAyDlB,IAAMC,EAAkBD,EAAM,WAC5B,CACE,CAAE,GAAAE,EAAI,OAAAC,EAAQ,QAAAC,EAAS,SAAAC,EAAU,cAAAC,EAAe,GAAGC,CAAM,EACzDC,IACG,CACH,IAAMC,EAAYP,GAAM,MAElBQ,EAAW,CAAE,GAAGJ,EAAe,GAAGH,CAAO,EAE/C,OACEH,EAAA,cAACS,EAAA,CAAU,IAAKD,EAAK,MAAOE,EAAU,UAAWN,EAAU,GAAGG,GAC3DF,CACH,CAEJ,CACF,EAKOM,EAAQV","sourcesContent":["import React from 'react'\nimport { ComponentProps } from '../types'\n\ntype PolymorphicRef<C extends React.ElementType> =\n React.ComponentPropsWithRef<C>['ref']\n\ntype AsProp<C extends React.ElementType> = {\n as?: C\n}\n\ntype PropsToOmit<C extends React.ElementType, P> = keyof (AsProp<C> & P)\n\ntype PolymorphicComponentProp<\n C extends React.ElementType,\n Props = {},\n> = React.PropsWithChildren<Props & AsProp<C>> &\n Omit<React.ComponentPropsWithoutRef<C>, PropsToOmit<C, Props>>\n\ntype PolymorphicComponentPropWithRef<\n C extends React.ElementType,\n Props = {},\n> = PolymorphicComponentProp<C, Props> & {\n ref?: PolymorphicRef<C>\n}\n\ntype FPProps<C extends React.ElementType> = PolymorphicComponentPropWithRef<\n C,\n {\n renderStyles?: boolean\n styles?: React.CSSProperties\n classes?: string\n }\n>\n\n/*\n * FPComponent type definition\n *\n * Defines the component function signature for the FP component.\n *\n * @typeParam C - The HTML element type to render\n * @param props - The component props\n * @returns React component\n */\ntype FPComponent = <C extends React.ElementType = 'span'>(\n props: FPProps<C>,\n) => React.ReactElement | any\n\n/**\n * FP component is a polymorphic component that renders an HTML element with optional styles.\n * @param {Object} props - Component props\n * @param {React.ElementType} props.as - The HTML element to render. Defaults to 'div'.\n * @param {boolean} props.renderStyles - Whether to render styles or not. Defaults to true.\n * @param {Object} props.styles - The styles to apply to the component.\n * @param {Object} props.defaultStyles - The default styles to apply to the component.\n * @param {React.ReactNode} props.children - The children to render inside the component.\n * @returns {React.ReactElement} - A React component that renders an HTML element with optional styles.\n */\nconst FP: FPComponent = React.forwardRef(\n <C extends React.ElementType>(\n { as, styles, classes, children, defaultStyles, ...props }: FPProps<C>,\n ref?: PolymorphicRef<C>,\n ) => {\n const Component = as || 'div'\n\n const styleObj = { ...defaultStyles, ...styles } as React.CSSProperties\n\n return (\n <Component ref={ref} style={styleObj} className={classes} {...props}>\n {children}\n </Component>\n )\n },\n)\nexport interface BoxProps extends ComponentProps {\n renderStyles: true\n}\n\nexport default FP\n"]}
@@ -0,0 +1,8 @@
1
+ import { a } from './chunk-KUKIVRC2.js';
2
+ import * as i from 'react';
3
+
4
+ var n=({type:t="li",id:e,styles:s,children:o,classes:r,...p})=>i.createElement(a,{id:e,as:t,className:r,...p,style:s},o),l=({children:t,classes:e,type:s="ul",variant:o,styles:r,role:p,...m})=>i.createElement(a,{as:s,"data-variant":o,className:e,style:r,role:p,...m},t),I=l;l.displayName="List";l.ListItem=n;
5
+
6
+ export { n as a, l as b, I as c };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=chunk-SMYRLO3E.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/list/list.tsx"],"names":["React","ListItem","type","id","styles","children","classes","props","ui_default","List","variant","role","list_default"],"mappings":"mCAAA,UAAYA,MAAW,QAuBhB,IAAMC,EAAW,CAAC,CACvB,KAAAC,EAAO,KACP,GAAAC,EACA,OAAAC,EACA,SAAAC,EACA,QAAAC,EACA,GAAGC,CACL,IAEI,gBAACC,EAAA,CAAG,GAAIL,EAAI,GAAID,EAAM,UAAWI,EAAU,GAAGC,EAAO,MAAOH,GACzDC,CACH,EAcSI,EAAO,CAAC,CACnB,SAAAJ,EACA,QAAAC,EACA,KAAAJ,EAAO,KACP,QAAAQ,EACA,OAAAN,EACA,KAAAO,EACA,GAAGJ,CACL,IAEI,gBAACC,EAAA,CACC,GAAIN,EACJ,eAAcQ,EACd,UAAWJ,EACX,MAAOF,EACP,KAAMO,EACL,GAAGJ,GAEHF,CACH,EAIGO,EAAQH,EACfA,EAAK,YAAc,OACnBA,EAAK,SAAWR","sourcesContent":["import * as React from 'react'\nimport UI from '../ui'\n\ntype ListProps = {\n /** Type of list to render (default: 'ul') */\n type?: 'ul' | 'ol' | 'dl'\n /** variant of list to render (default: 'none') */\n variant?: string\n} & React.ComponentProps<typeof UI>\n\nexport type ListItemProps = {\n /** Type of list item to render (default: 'li') */\n type?: 'li' | 'dt' | 'dd'\n} & React.ComponentProps<typeof UI>\n\n/**\n * ListItem component\n * @param type - HTML tag type for the list item (default: 'li')\n * @param styles - CSS styles object\n * @param children - Child elements to be rendered inside the list item\n * @param props - Additional props to be passed to the underlying HTML element\n * @returns A React component that renders a list item\n */\nexport const ListItem = ({\n type = 'li',\n id,\n styles,\n children,\n classes,\n ...props\n}: ListItemProps) => {\n return (\n <UI id={id} as={type} className={classes} {...props} style={styles}>\n {children}\n </UI>\n )\n}\n\n/**\n * List component renders a list element with provided props\n * @param children - Child elements to render inside the list\n * @param classes - CSS classes to apply\n * @param type - Type of list element (default: 'ul')\n * @param variant - Variant for styling purposes\n * @param styles - Inline styles object\n * @param role - ARIA role\n * @param props - Additional props to pass to underlying element\n */\nexport const List = ({\n children,\n classes,\n type = 'ul',\n variant,\n styles,\n role,\n ...props\n}: ListProps) => {\n return (\n <UI\n as={type}\n data-variant={variant}\n className={classes}\n style={styles}\n role={role}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nexport default List\nList.displayName = 'List'\nList.ListItem = ListItem\n"]}
@@ -0,0 +1,8 @@
1
+ import { a as a$1 } from './chunk-KUKIVRC2.js';
2
+ import m from 'react';
3
+
4
+ var a=({href:i,target:e,rel:p,children:l,styles:s,prefetch:t,btnStyle:c,onPointerDown:n,...f})=>{let r=p;return e==="_blank"&&(r=`noopener noreferrer ${t?"prefetch":""}`),m.createElement(a$1,{as:"a",href:i,target:e,styles:s,rel:r,onPointerDown:h=>{n&&n?.(h);},"data-btn":c,prefetch:t,...f},l)},y=a;a.displayName="Link";
5
+
6
+ export { a, y as b };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=chunk-TYRCEX2L.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/link/link.tsx"],"names":["React","Link","href","target","rel","children","styles","prefetch","btnStyle","onPointerDown","props","relValue","ui_default","e","link_default"],"mappings":"wCACA,OAAOA,MAAW,QAqBX,IAAMC,EAAO,CAAC,CACnB,KAAAC,EACA,OAAAC,EACA,IAAAC,EACA,SAAAC,EACA,OAAAC,EACA,SAAAC,EACA,SAAAC,EACA,cAAAC,EACA,GAAGC,CACL,IAAiB,CACf,IAAIC,EAAWP,EAEf,OAAID,IAAW,WACbQ,EAAW,uBAAuBJ,EAAW,WAAa,EAAE,IAO5DP,EAAA,cAACY,EAAA,CACC,GAAG,IACH,KAAMV,EACN,OAAQC,EACR,OAAQG,EACR,IAAKK,EACL,cAXyBE,GAA6C,CACpEJ,GAAeA,IAAgBI,CAAC,CACtC,EAUI,WAAUL,EACV,SAAUD,EACT,GAAGG,GAEHL,CACH,CAEJ,EAEOS,EAAQb,EACfA,EAAK,YAAc","sourcesContent":["import UI from \"../ui\";\nimport React from \"react\";\n\nexport type LinkProps = {\n href?: string;\n\n target?: string;\n\n rel?: string;\n\n children: React.ReactNode;\n\n styles?: React.CSSProperties;\n\n prefetch?: boolean;\n\n btnStyle?: string;\n\n onPointerDown?: (event: React.PointerEvent<HTMLAnchorElement>) => void;\n} & React.ComponentProps<typeof UI> &\n React.ComponentProps<\"a\">;\n\nexport const Link = ({\n href,\n target,\n rel,\n children,\n styles,\n prefetch,\n btnStyle,\n onPointerDown,\n ...props\n}: LinkProps) => {\n let relValue = rel;\n\n if (target === \"_blank\")\n relValue = `noopener noreferrer ${prefetch ? \"prefetch\" : \"\"}`;\n\n const handleOnpointerDown = (e: React.PointerEvent<HTMLAnchorElement>) => {\n if (onPointerDown) onPointerDown?.(e);\n };\n\n return (\n <UI\n as=\"a\"\n href={href}\n target={target}\n styles={styles}\n rel={relValue}\n onPointerDown={handleOnpointerDown}\n data-btn={btnStyle}\n prefetch={prefetch}\n {...props}\n >\n {children}\n </UI>\n );\n};\n\nexport default Link;\nLink.displayName = \"Link\";\n"]}
@@ -0,0 +1,11 @@
1
+ import { b } from './chunk-ETFLFC2S.js';
2
+ import { b as b$2 } from './chunk-772NRB75.js';
3
+ import { b as b$1 } from './chunk-QLZWHAMK.js';
4
+ import { a } from './chunk-KUKIVRC2.js';
5
+ import s, { useCallback, useRef, useId, useEffect } from 'react';
6
+
7
+ var y=({dialogTitle:t,onClick:o,id:l,type:e="h3"})=>{let a$1=useCallback(()=>{o();},[o]);return s.createElement(a,{as:"div",classes:"dialog-header"},s.createElement(b,{type:e,className:"dialog-title",id:l},t||"Dialog"),s.createElement(b$1,{type:"button",onClick:a$1,className:"dialog-close","aria-label":"Close dialog","data-btn":"icon"},s.createElement(b$2,null,s.createElement(b$2.Remove,{size:16}))))},D=s.memo(y);y.displayName="DialogHeader";var H=({onClose:t,onConfirm:o,confirmLabel:l,cancelLabel:e})=>{let a$1=useCallback(()=>{t();},[t]),m=useCallback(()=>{o&&o();},[o]);return s.createElement(a,{as:"section",className:"dialog-footer"},e&&s.createElement(b$1,{type:"button",onClick:a$1,className:"dialog-button button-secondary","data-btn":"sm"},e),o&&s.createElement(b$1,{type:"button",onClick:m,className:"dialog-button button-primary","data-btn":"sm"},l))};H.displayName="DialogFooter";var I=s.memo(H);var h=(t,o)=>useCallback(e=>{let a=t.current?.getBoundingClientRect();a&&(e.clientY<a.top||e.clientY>a.bottom||e.clientX<a.left||e.clientX>a.right)&&o();},[t,o]);var F=({isOpen:t,onOpenChange:o,isAlertDialog:l=!1,onClose:e,dialogTitle:a$1,dialogLabel:m,children:P,onConfirm:U,confirmLabel:B="Confirm",cancelLabel:E="Cancel",className:M="",hideFooter:v=!1,styles:x})=>{let f=useRef(null),u=useId();useEffect(()=>{let r=f.current;r&&(t?l?r.show():r.showModal():r.close());},[t,l]);let c=useCallback(()=>{o(!1),e&&e();},[o,e]),L=h(f,c),b=useId();return s.createElement(a,{as:"dialog",role:l?"alertdialog":"dialog",ref:f,onClose:c,onClick:L,"aria-modal":t&&!l?"true":void 0,"aria-labelledby":u,"aria-describedby":b,"aria-label":m,className:`dialog-modal ${M}`.trim(),style:x},s.createElement(D,{dialogTitle:a$1,onClick:c,id:u}),s.createElement(a,{as:"section",id:b,className:"dialog-content",onClick:r=>r.stopPropagation()},P,!v&&s.createElement(I,{onClose:c,onConfirm:U,confirmLabel:B,cancelLabel:E})))};F.displayName="Dialog";var ao=s.memo(F);
8
+
9
+ export { F as a, ao as b };
10
+ //# sourceMappingURL=out.js.map
11
+ //# sourceMappingURL=chunk-VUH3FXGJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/dialog/dialog.tsx","../src/components/dialog/views/dialog-header.tsx","../src/components/dialog/views/dialog-footer.tsx","../src/hooks/useDialogClickHandler.ts"],"names":["React","useRef","useEffect","useCallback","useId","DialogHeader","dialogTitle","onClick","id","type","handleClose","ui_default","heading_default","button_default","icon_default","dialog_header_default","DialogFooter","onClose","onConfirm","confirmLabel","cancelLabel","handleCancel","handleConfirm","dialog_footer_default","useDialogClickHandler","dialogRef","dialogDimensions","Dialog","isOpen","onOpenChange","isAlertDialog","dialogLabel","children","className","hideFooter","styles","titleId","dialog","handleClickOutside","contentId","e","dialog_default"],"mappings":"gKAAA,OAAOA,GAAS,UAAAC,EAAQ,aAAAC,EAAW,eAAAC,EAAa,SAAAC,MAAa,QCA7D,OAAOJ,GAAS,eAAAG,MAAmB,QAkCnC,IAAME,EAA4C,CAAC,CACjD,YAAAC,EACA,QAAAC,EACA,GAAAC,EACA,KAAAC,EAAO,IACT,IAAM,CACJ,IAAMC,EAAcP,EAAY,IAAM,CACpCI,EAAQ,CACV,EAAG,CAACA,CAAO,CAAC,EAEZ,OACEP,EAAA,cAACW,EAAA,CAAG,GAAG,MAAM,QAAQ,iBACnBX,EAAA,cAACY,EAAA,CAAQ,KAAMH,EAAM,UAAU,eAAe,GAAID,GAC/CF,GAAe,QAClB,EACAN,EAAA,cAACa,EAAA,CACC,KAAK,SACL,QAASH,EACT,UAAU,eACV,aAAW,eACX,WAAS,QAETV,EAAA,cAACc,EAAA,KACCd,EAAA,cAACc,EAAK,OAAL,CAAY,KAAM,GAAI,CACzB,CACF,CACF,CAEJ,EAEOC,EAAQf,EAAM,KAAKK,CAAY,EACtCA,EAAa,YAAc,eCjE3B,OAAOL,GAAS,eAAAG,MAAmB,QAyCnC,IAAMa,EAA4C,CAAC,CACjD,QAAAC,EACA,UAAAC,EACA,aAAAC,EACA,YAAAC,CACF,IAAM,CAEJ,IAAMC,EAAelB,EAAY,IAAM,CACrCc,EAAQ,CACV,EAAG,CAACA,CAAO,CAAC,EAENK,EAAgBnB,EAAY,IAAM,CAClCe,GACFA,EAAU,CAEd,EAAG,CAACA,CAAS,CAAC,EAEd,OACElB,EAAA,cAACW,EAAA,CAAG,GAAG,UAAU,UAAU,iBACxBS,GACCpB,EAAA,cAACa,EAAA,CACC,KAAK,SACL,QAASQ,EACT,UAAU,iCACV,WAAS,MAERD,CACH,EAGDF,GACClB,EAAA,cAACa,EAAA,CACC,KAAK,SACL,QAASS,EACT,UAAU,+BACV,WAAS,MAERH,CACH,CAEJ,CAEJ,EAEAH,EAAa,YAAc,eAE3B,IAAOO,EAAQvB,EAAM,KAAKgB,CAAY,ECvFtC,OAAS,eAAAb,MAA8B,QAEhC,IAAMqB,EAAwB,CACnCC,EACAf,IAEoBP,EACjB,GAA2C,CAC1C,IAAMuB,EAAmBD,EAAU,SAAS,sBAAsB,EAC9DC,IAEA,EAAE,QAAUA,EAAiB,KAC7B,EAAE,QAAUA,EAAiB,QAC7B,EAAE,QAAUA,EAAiB,MAC7B,EAAE,QAAUA,EAAiB,QAG7BhB,EAAY,CAGlB,EACA,CAACe,EAAWf,CAAW,CACzB,EH8BK,IAAMiB,EAAgC,CAAC,CAC5C,OAAAC,EACA,aAAAC,EACA,cAAAC,EAAgB,GAChB,QAAAb,EACA,YAAAX,EACA,YAAAyB,EACA,SAAAC,EACA,UAAAd,EACA,aAAAC,EAAe,UACf,YAAAC,EAAc,SACd,UAAAa,EAAY,GACZ,WAAAC,EAAa,GACb,OAAAC,CACF,IAAM,CACJ,IAAMV,EAAYxB,EAA0B,IAAI,EAC1CmC,EAAUhC,EAAM,EAGtBF,EAAU,IAAM,CACd,IAAMmC,EAASZ,EAAU,QACpBY,IAEDT,EACEE,EAEFO,EAAO,KAAK,EAGZA,EAAO,UAAU,EAGnBA,EAAO,MAAM,EAEjB,EAAG,CAACT,EAAQE,CAAa,CAAC,EAG1B,IAAMpB,EAAcP,EAAY,IAAM,CACpC0B,EAAa,EAAK,EAEdZ,GAASA,EAAQ,CACvB,EAAG,CAACY,EAAcZ,CAAO,CAAC,EAGpBqB,EAAqBd,EAAsBC,EAAWf,CAAW,EAEjE6B,EAAYnC,EAAM,EAExB,OACEJ,EAAA,cAACW,EAAA,CACC,GAAG,SACH,KAAMmB,EAAgB,cAAgB,SACtC,IAAKL,EACL,QAASf,EACT,QAAS4B,EACT,aAAYV,GAAU,CAACE,EAAgB,OAAS,OAChD,kBAAiBM,EACjB,mBAAkBG,EAClB,aAAYR,EACZ,UAAW,gBAAgBE,CAAS,GAAG,KAAK,EAC5C,MAAOE,GAEPnC,EAAA,cAACe,EAAA,CAAa,YAAaT,EAAa,QAASI,EAAa,GAAI0B,EAAS,EAE3EpC,EAAA,cAACW,EAAA,CACC,GAAG,UACH,GAAI4B,EACJ,UAAU,iBACV,QAAUC,GAAwBA,EAAE,gBAAgB,GAEnDR,EACA,CAACE,GACAlC,EAAA,cAACuB,EAAA,CACC,QAASb,EACT,UAAWQ,EACX,aAAcC,EACd,YAAaC,EACf,CAEJ,CACF,CAEJ,EACAO,EAAO,YAAc,SAErB,IAAOc,GAAQzC,EAAM,KAAK2B,CAAM","sourcesContent":["import React, { useRef, useEffect, useCallback, useId } from \"react\";\nimport UI from \"#components/ui\";\nimport DialogHeader from \"#components/dialog/views/dialog-header\";\nimport DialogFooter from \"#components/dialog/views/dialog-footer\";\nimport { useDialogClickHandler } from \"#hooks/useDialogClickHandler.js\";\nimport type { DialogProps } from \"./dialog.types\";\n\n/**\n * A controlled dialog component that supports both modal and non-modal (inline alert) modes.\n *\n * **Modal Dialog** (default): Uses native `<dialog>` element with `.showModal()` which provides:\n * - Automatic focus trap (Tab cycles within dialog)\n * - Escape key closes dialog (native behavior)\n * - Backdrop overlay with click-to-close\n * - Inert background (page content becomes non-interactive)\n *\n * **Inline Alert Dialog** (`isAlertDialog={true}`): Uses `.show()` for non-modal inline alerts:\n * - No focus trap (page remains interactive)\n * - No escape key behavior\n * - Positioned inline in page flow\n * - User must explicitly close with button\n *\n * @component\n * @example\n * ```tsx\n * // Controlled usage\n * const [open, setOpen] = useState(false);\n * <Dialog\n * isOpen={open}\n * onOpenChange={setOpen}\n * dialogTitle=\"Confirm Delete\"\n * >\n * Are you sure you want to delete this item?\n * </Dialog>\n * ```\n *\n * @param {DialogProps} props - Component props\n * @param {boolean} props.isOpen - Controls whether the dialog is currently open\n * @param {(open: boolean) => void} props.onOpenChange - Callback fired when dialog open state changes\n * @param {string} props.dialogTitle - The title displayed in the dialog header\n * @param {boolean} [props.isAlertDialog=false] - If true, renders as non-modal inline alert\n * @param {() => void} [props.onClose] - Deprecated: Use onOpenChange. Called when dialog closes.\n * @param {ReactNode} props.children - Content to display inside the dialog body\n * @param {() => void | Promise<void>} [props.onConfirm] - Callback fired when confirm button is clicked\n * @param {string} [props.confirmLabel=\"Confirm\"] - Text label for confirm button\n * @param {string} [props.cancelLabel=\"Cancel\"] - Text label for cancel button\n * @param {boolean} [props.hideFooter=false] - If true, hides the footer with action buttons\n * @param {string} [props.className] - Additional CSS classes to apply\n * @param {string} [props.dialogLabel] - Optional aria-label for the dialog\n * @param {CSSProperties} [props.styles] - Inline styles to apply to dialog element\n * @returns {JSX.Element} A controlled dialog component\n */\nexport const Dialog: React.FC<DialogProps> = ({\n isOpen,\n onOpenChange,\n isAlertDialog = false,\n onClose,\n dialogTitle,\n dialogLabel,\n children,\n onConfirm,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n className = \"\",\n hideFooter = false,\n styles,\n}) => {\n const dialogRef = useRef<HTMLDialogElement>(null);\n const titleId = useId();\n\n // Handle native dialog open/close based on isOpen prop\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (isOpen) {\n if (isAlertDialog) {\n // Non-modal inline alert - no focus trap, no backdrop\n dialog.show();\n } else {\n // Modal dialog - native focus trap, escape key, backdrop\n dialog.showModal();\n }\n } else {\n dialog.close();\n }\n }, [isOpen, isAlertDialog]);\n\n // Handle close event - notify parent via onOpenChange\n const handleClose = useCallback(() => {\n onOpenChange(false);\n // Support deprecated onClose prop for backward compatibility\n if (onClose) onClose();\n }, [onOpenChange, onClose]);\n\n // Handle backdrop clicks (only for modal dialogs)\n const handleClickOutside = useDialogClickHandler(dialogRef, handleClose);\n\n const contentId = useId();\n\n return (\n <UI\n as=\"dialog\"\n role={isAlertDialog ? \"alertdialog\" : \"dialog\"}\n ref={dialogRef}\n onClose={handleClose}\n onClick={handleClickOutside}\n aria-modal={isOpen && !isAlertDialog ? \"true\" : undefined}\n aria-labelledby={titleId}\n aria-describedby={contentId}\n aria-label={dialogLabel}\n className={`dialog-modal ${className}`.trim()}\n style={styles}\n >\n <DialogHeader dialogTitle={dialogTitle} onClick={handleClose} id={titleId} />\n\n <UI\n as=\"section\"\n id={contentId}\n className=\"dialog-content\"\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n >\n {children}\n {!hideFooter && (\n <DialogFooter\n onClose={handleClose}\n onConfirm={onConfirm}\n confirmLabel={confirmLabel}\n cancelLabel={cancelLabel}\n />\n )}\n </UI>\n </UI>\n );\n};\nDialog.displayName = \"Dialog\";\n\nexport default React.memo(Dialog);\n","import React, { useCallback } from \"react\";\nimport UI from \"#components/ui\";\nimport Heading from \"#components/heading/heading\";\nimport Button from \"#components/buttons/button\";\nimport Icon from \"#components/icons/icon\";\nimport type { DialogHeaderProps } from \"../dialog.types\";\n\n/**\n * DialogHeader component displays the header section of a dialog with a title and close button.\n *\n * This component is optimized for accessibility with:\n * - Unique ID for `aria-labelledby` linking to parent dialog\n * - Semantic heading structure for screen readers\n * - Clear close button with accessible label\n * - Memoized to prevent unnecessary re-renders\n *\n * @component\n * @param {DialogHeaderProps} props - Component props\n * @param {string} props.dialogTitle - The title text to display in the dialog header\n * @param {() => void} props.onClick - Callback function triggered when close button is clicked\n * @param {string} [props.id] - Optional ID for aria-labelledby linking. Auto-generated if not provided.\n * @param {\"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\"} [props.type=\"h3\"] - Heading level for semantic structure\n * @returns {JSX.Element} A dialog header with title and close button\n *\n * @example\n * ```tsx\n * <DialogHeader\n * id=\"dialog-title-1\"\n * dialogTitle=\"Confirm Action\"\n * onClick={() => setIsOpen(false)}\n * type=\"h2\"\n * />\n * ```\n */\nconst DialogHeader: React.FC<DialogHeaderProps> = ({\n dialogTitle,\n onClick,\n id,\n type = \"h3\",\n}) => {\n const handleClose = useCallback(() => {\n onClick();\n }, [onClick]);\n\n return (\n <UI as=\"div\" classes=\"dialog-header\">\n <Heading type={type} className=\"dialog-title\" id={id}>\n {dialogTitle || \"Dialog\"}\n </Heading>\n <Button\n type=\"button\"\n onClick={handleClose}\n className=\"dialog-close\"\n aria-label=\"Close dialog\"\n data-btn=\"icon\"\n >\n <Icon>\n <Icon.Remove size={16} />\n </Icon>\n </Button>\n </UI>\n );\n};\n\nexport default React.memo(DialogHeader);\nDialogHeader.displayName = \"DialogHeader\";\n","import React, { useCallback } from \"react\";\nimport UI from \"#components/ui\";\nimport Button from \"#components/buttons/button\";\nimport type { DialogFooterProps } from \"../dialog.types\";\n\n/**\n * DialogFooter component renders action buttons for dialog confirmation/cancellation.\n *\n * This component provides a consistent footer layout with:\n * - Cancel button (secondary style) - Always shown if cancelLabel provided\n * - Confirm button (primary style) - Only shown if onConfirm callback provided\n * - Proper semantic button types\n * - Accessible button sizing and spacing\n * - Memoized to prevent unnecessary re-renders\n *\n * @component\n * @param {DialogFooterProps} props - Component props\n * @param {() => void} props.onClose - Callback fired when cancel button is clicked\n * @param {() => void | Promise<void>} [props.onConfirm] - Optional callback for confirm action. If omitted, confirm button is hidden.\n * @param {string} props.confirmLabel - Text label for the confirm button\n * @param {string} props.cancelLabel - Text label for the cancel button\n * @returns {JSX.Element} A footer section with action buttons\n *\n * @example\n * ```tsx\n * // Simple close-only footer\n * <DialogFooter\n * onClose={() => setOpen(false)}\n * cancelLabel=\"Close\"\n * confirmLabel=\"OK\"\n * />\n *\n * // Confirmation dialog with both actions\n * <DialogFooter\n * onClose={() => setOpen(false)}\n * onConfirm={async () => await deleteItem()}\n * confirmLabel=\"Delete\"\n * cancelLabel=\"Cancel\"\n * />\n * ```\n */\nconst DialogFooter: React.FC<DialogFooterProps> = ({\n onClose,\n onConfirm,\n confirmLabel,\n cancelLabel,\n}) => {\n // Memoize handlers to prevent unnecessary re-renders\n const handleCancel = useCallback(() => {\n onClose();\n }, [onClose]);\n\n const handleConfirm = useCallback(() => {\n if (onConfirm) {\n onConfirm();\n }\n }, [onConfirm]);\n\n return (\n <UI as=\"section\" className=\"dialog-footer\">\n {cancelLabel && (\n <Button\n type=\"button\"\n onClick={handleCancel}\n className=\"dialog-button button-secondary\"\n data-btn=\"sm\"\n >\n {cancelLabel}\n </Button>\n )}\n\n {onConfirm && (\n <Button\n type=\"button\"\n onClick={handleConfirm}\n className=\"dialog-button button-primary\"\n data-btn=\"sm\"\n >\n {confirmLabel}\n </Button>\n )}\n </UI>\n );\n};\n\nDialogFooter.displayName = \"DialogFooter\";\n\nexport default React.memo(DialogFooter);\n","import { useCallback, RefObject } from \"react\";\n\nexport const useDialogClickHandler = (\n dialogRef: RefObject<HTMLDialogElement>,\n handleClose: () => void\n) => {\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLDialogElement>) => {\n const dialogDimensions = dialogRef.current?.getBoundingClientRect();\n if (dialogDimensions) {\n const isClickOutside =\n e.clientY < dialogDimensions.top ||\n e.clientY > dialogDimensions.bottom ||\n e.clientX < dialogDimensions.left ||\n e.clientX > dialogDimensions.right;\n\n if (isClickOutside) {\n handleClose();\n }\n }\n },\n [dialogRef, handleClose]\n );\n\n return handleClick;\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { a } from './chunk-KUKIVRC2.js';
2
+ import y from 'react';
3
+
4
+ var s=({id:p,classes:c,value:x,rows:m=5,cols:h=25,name:T,required:a$1,disabled:t,readOnly:i,onBlur:r,onPointerDown:n,onChange:o,ref:d,styles:f,placeholder:P,...u})=>y.createElement(a,{as:"textarea",id:p,name:T,rows:m,cols:h,styles:f,className:c,"data-style":"textarea",required:a$1,value:x,"aria-disabled":t,readOnly:i,onChange:e=>{o&&!t&&o?.(e);},onBlur:e=>{r&&!t&&r?.(e);},onPointerDown:e=>{n&&!t&&n?.(e);},ref:d,placeholder:P||`${a$1?"*":""} Message`,...u}),M=s;s.displayName="Textarea";
5
+
6
+ export { s as a, M as b };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=chunk-XBA562WW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/form/textarea.tsx"],"names":["React","Textarea","id","classes","value","rows","cols","name","required","disabled","readOnly","onBlur","onPointerDown","onChange","ref","styles","placeholder","props","ui_default","textarea_default"],"mappings":"wCAAA,OAAOA,MAAW,QAyBX,IAAMC,EAAW,CAAC,CACvB,GAAAC,EACA,QAAAC,EACA,MAAAC,EACA,KAAAC,EAAO,EACP,KAAAC,EAAO,GACP,KAAAC,EACA,SAAAC,EACA,SAAAC,EACA,SAAAC,EACA,OAAAC,EACA,cAAAC,EACA,SAAAC,EACA,IAAAC,EACA,OAAAC,EACA,YAAAC,EACA,GAAGC,CACL,IAoBIjB,EAAA,cAACkB,EAAA,CACC,GAAG,WACH,GAAIhB,EACJ,KAAMK,EACN,KAAMF,EACN,KAAMC,EACN,OAAQS,EACR,UAAWZ,EACX,aAAW,WACX,SAAUK,EACV,MAAOJ,EACP,gBAAeK,EACf,SAAUC,EACV,SAhCkB,GAA8C,CAC9DG,GAAY,CAACJ,GACfI,IAAW,CAAC,CAEhB,EA6BI,OA3BgB,GAA6C,CAC3DF,GAAU,CAACF,GACbE,IAAS,CAAC,CAEd,EAwBI,cAtBuB,GAA+C,CACpEC,GAAiB,CAACH,GACpBG,IAAgB,CAAC,CAErB,EAmBI,IAAKE,EACL,YAAaE,GAAe,GAAGR,EAAW,IAAM,EAAE,WACjD,GAAGS,EACN,EAIGE,EAAQlB,EACfA,EAAS,YAAc","sourcesContent":["import React from 'react'\nimport UI from '../ui'\n\nexport type TextareaProps = React.ComponentProps<'textarea'> &\n React.ComponentProps<typeof UI>\n\n/**\n * Textarea component.\n *\n * @param value - The value of the textarea.\n * @param rows - The number of rows.\n * @param cols - The number of columns.\n * @param id - The id of the textarea.\n * @param name - The name of the textarea.\n * @param required - Whether the textarea is required.\n * @param disabled - Whether the textarea is disabled.\n * @param readOnly - Whether the textarea is read only.\n * @param onBlur - Blur event handler.\n * @param onPointerDown - Pointer down event handler.\n * @param onChange - Change event handler.\n * @param ref - Ref for the textarea.\n * @param styles - Styles object for the textarea.\n * @param textareaRef - Ref specifically for the textarea element.\n * @param props - Other props.\n */\nexport const Textarea = ({\n id,\n classes,\n value,\n rows = 5,\n cols = 25,\n name,\n required,\n disabled,\n readOnly,\n onBlur,\n onPointerDown,\n onChange,\n ref,\n styles,\n placeholder,\n ...props\n}: TextareaProps) => {\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange && !disabled) {\n onChange?.(e)\n }\n }\n\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n if (onBlur && !disabled) {\n onBlur?.(e)\n }\n }\n\n const handlePointerDown = (e: React.PointerEvent<HTMLTextAreaElement>) => {\n if (onPointerDown && !disabled) {\n onPointerDown?.(e)\n }\n }\n\n return (\n <UI\n as=\"textarea\"\n id={id}\n name={name}\n rows={rows}\n cols={cols}\n styles={styles}\n className={classes}\n data-style=\"textarea\"\n required={required}\n value={value}\n aria-disabled={disabled}\n readOnly={readOnly}\n onChange={handleChange}\n onBlur={handleBlur}\n onPointerDown={handlePointerDown}\n ref={ref}\n placeholder={placeholder || `${required ? '*' : ''} Message`}\n {...props}\n />\n )\n}\n\nexport default Textarea\nTextarea.displayName = 'Textarea'\n"]}
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var chunkL75OQKEI_cjs = require('./chunk-L75OQKEI.cjs');
4
+ var i = require('react');
5
+
6
+ function _interopNamespace(e) {
7
+ if (e && e.__esModule) return e;
8
+ var n = Object.create(null);
9
+ if (e) {
10
+ Object.keys(e).forEach(function (k) {
11
+ if (k !== 'default') {
12
+ var d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: function () { return e[k]; }
16
+ });
17
+ }
18
+ });
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+
24
+ var i__namespace = /*#__PURE__*/_interopNamespace(i);
25
+
26
+ var n=({type:t="li",id:e,styles:s,children:o,classes:r,...p})=>i__namespace.createElement(chunkL75OQKEI_cjs.a,{id:e,as:t,className:r,...p,style:s},o),l=({children:t,classes:e,type:s="ul",variant:o,styles:r,role:p,...m})=>i__namespace.createElement(chunkL75OQKEI_cjs.a,{as:s,"data-variant":o,className:e,style:r,role:p,...m},t),I=l;l.displayName="List";l.ListItem=n;
27
+
28
+ exports.a = n;
29
+ exports.b = l;
30
+ exports.c = I;
31
+ //# sourceMappingURL=out.js.map
32
+ //# sourceMappingURL=chunk-XTQKWY7W.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/list/list.tsx"],"names":["React","ListItem","type","id","styles","children","classes","props","ui_default","List","variant","role","list_default"],"mappings":"oCAAA,UAAYA,MAAW,QAuBhB,IAAMC,EAAW,CAAC,CACvB,KAAAC,EAAO,KACP,GAAAC,EACA,OAAAC,EACA,SAAAC,EACA,QAAAC,EACA,GAAGC,CACL,IAEI,gBAACC,EAAA,CAAG,GAAIL,EAAI,GAAID,EAAM,UAAWI,EAAU,GAAGC,EAAO,MAAOH,GACzDC,CACH,EAcSI,EAAO,CAAC,CACnB,SAAAJ,EACA,QAAAC,EACA,KAAAJ,EAAO,KACP,QAAAQ,EACA,OAAAN,EACA,KAAAO,EACA,GAAGJ,CACL,IAEI,gBAACC,EAAA,CACC,GAAIN,EACJ,eAAcQ,EACd,UAAWJ,EACX,MAAOF,EACP,KAAMO,EACL,GAAGJ,GAEHF,CACH,EAIGO,EAAQH,EACfA,EAAK,YAAc,OACnBA,EAAK,SAAWR","sourcesContent":["import * as React from 'react'\nimport UI from '../ui'\n\ntype ListProps = {\n /** Type of list to render (default: 'ul') */\n type?: 'ul' | 'ol' | 'dl'\n /** variant of list to render (default: 'none') */\n variant?: string\n} & React.ComponentProps<typeof UI>\n\nexport type ListItemProps = {\n /** Type of list item to render (default: 'li') */\n type?: 'li' | 'dt' | 'dd'\n} & React.ComponentProps<typeof UI>\n\n/**\n * ListItem component\n * @param type - HTML tag type for the list item (default: 'li')\n * @param styles - CSS styles object\n * @param children - Child elements to be rendered inside the list item\n * @param props - Additional props to be passed to the underlying HTML element\n * @returns A React component that renders a list item\n */\nexport const ListItem = ({\n type = 'li',\n id,\n styles,\n children,\n classes,\n ...props\n}: ListItemProps) => {\n return (\n <UI id={id} as={type} className={classes} {...props} style={styles}>\n {children}\n </UI>\n )\n}\n\n/**\n * List component renders a list element with provided props\n * @param children - Child elements to render inside the list\n * @param classes - CSS classes to apply\n * @param type - Type of list element (default: 'ul')\n * @param variant - Variant for styling purposes\n * @param styles - Inline styles object\n * @param role - ARIA role\n * @param props - Additional props to pass to underlying element\n */\nexport const List = ({\n children,\n classes,\n type = 'ul',\n variant,\n styles,\n role,\n ...props\n}: ListProps) => {\n return (\n <UI\n as={type}\n data-variant={variant}\n className={classes}\n style={styles}\n role={role}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nexport default List\nList.displayName = 'List'\nList.ListItem = ListItem\n"]}
@@ -0,0 +1,9 @@
1
+ import { a as a$1 } from './chunk-QLZWHAMK.js';
2
+ import { a } from './chunk-KUKIVRC2.js';
3
+ import e from 'react';
4
+
5
+ var l=({id:n,children:a$1,classes:r,modalRef:d,openOnMount:i,...t})=>e.createElement(a,{as:"dialog",id:n,classes:r,ref:d,open:i,onClick:o=>{o.currentTarget===o.target&&o.currentTarget.close();},...t},a$1);e.memo(l);l.displayName="Dialog";var u=({openChild:n,closeChild:a,modalHeader:r,modalFooter:d,children:i,showOpen:t=!1,...p})=>{let o=e.useRef(null),f=()=>{o.current&&(t?o.current.show():o.current.showModal());},M=()=>{o.current&&o.current.close();};return e.createElement(e.Fragment,null,e.createElement(l,{modalRef:o,openOnMount:t,...p},e.createElement("section",null,r,i,d??e.createElement("div",null,e.createElement(a$1,{type:"button",pointerDown:()=>{M();}},a||"Close")," "))),!t&&e.createElement(a$1,{type:"button",pointerDown:f},n||"Open Modal"))};u.displayName="Modal";
6
+
7
+ export { u as a };
8
+ //# sourceMappingURL=out.js.map
9
+ //# sourceMappingURL=chunk-ZANSFMTD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/modal/modal.tsx","../src/components/modal/dialog.tsx"],"names":["React","ModalDialog","id","children","classes","modalRef","openOnMount","props","ui_default","e","dialog_default","Modal","openChild","closeChild","modalHeader","modalFooter","showOpen","dialogRef","openModal","closeModal","Button"],"mappings":"gFAAA,OAAOA,MAAW,QCClB,OAAOA,MAAW,QAmBX,IAAMC,EAAc,CAAC,CAC1B,GAAAC,EACA,SAAAC,EACA,QAAAC,EACA,SAAAC,EACA,YAAAC,EACA,GAAGC,CACL,IAQIP,EAAA,cAACQ,EAAA,CACC,GAAG,SACH,GAAIN,EACJ,QAASE,EACT,IAAKC,EACL,KAAMC,EACN,QAbsBG,GAA+C,CACnEA,EAAE,gBAAkBA,EAAE,QACxBA,EAAE,cAAc,MAAM,CAE1B,EAUK,GAAGF,GAEHJ,CACH,EAIGO,EAAQV,EAAM,KAAKC,CAAW,EACrCA,EAAY,YAAc,SDnBnB,IAAMU,EAAQ,CAAC,CACpB,UAAAC,EACA,WAAAC,EACA,YAAAC,EACA,YAAAC,EACA,SAAAZ,EACA,SAAAa,EAAW,GACX,GAAGT,CACL,IAAkB,CAChB,IAAMU,EAAYjB,EAAM,OAA0B,IAAI,EAChDkB,EAAY,IAAY,CACxBD,EAAU,UACRD,EAAUC,EAAU,QAAQ,KAAK,EAChCA,EAAU,QAAQ,UAAU,EAErC,EACME,EAAa,IAAM,CACnBF,EAAU,SACZA,EAAU,QAAQ,MAAM,CAE5B,EAEA,OACEjB,EAAA,cAAAA,EAAA,cACEA,EAAA,cAACC,EAAA,CAAY,SAAUgB,EAAW,YAAaD,EAAW,GAAGT,GAC3DP,EAAA,cAAC,eACEc,EACAX,EACAY,GACCf,EAAA,cAAC,WACCA,EAAA,cAACoB,EAAA,CACC,KAAK,SACL,YAAa,IAAM,CACjBD,EAAW,CACb,GAECN,GAAc,OACjB,EAAU,GACZ,CAEJ,CACF,EACC,CAACG,GACAhB,EAAA,cAACoB,EAAA,CAAO,KAAK,SAAS,YAAaF,GAChCN,GAAa,YAChB,CAEJ,CAEJ,EAEAD,EAAM,YAAc","sourcesContent":["import React from \"react\";\nimport { ComponentProps } from \"../../types\";\nimport { Button } from \"../buttons/button\";\nimport { ModalDialog } from \"./dialog\";\n\nexport interface ModalProps extends ComponentProps {\n /**\n * The child component/content for open button\n */\n openChild?: React.ReactNode;\n /**\n * The child component/content for close button\n */\n closeChild?: React.ReactNode;\n /**\n * The child component/content for modal header\n */\n modalHeader?: React.ReactNode;\n /**\n * The child component/content for modal footer\n */\n modalFooter?: React.ReactNode;\n /**\n * The child component/content for modal body\n */\n children: React.ReactNode;\n /**\n * Open modal on mount when set to true\n */\n showOpen?: boolean;\n}\nexport const Modal = ({\n openChild,\n closeChild,\n modalHeader,\n modalFooter,\n children,\n showOpen = false,\n ...props\n}: ModalProps) => {\n const dialogRef = React.useRef<HTMLDialogElement>(null);\n const openModal = (): void => {\n if (dialogRef.current) {\n if (showOpen) dialogRef.current.show();\n else dialogRef.current.showModal();\n }\n };\n const closeModal = () => {\n if (dialogRef.current) {\n dialogRef.current.close();\n }\n };\n\n return (\n <>\n <ModalDialog modalRef={dialogRef} openOnMount={showOpen} {...props}>\n <section>\n {modalHeader}\n {children}\n {modalFooter ?? (\n <div>\n <Button\n type=\"button\"\n pointerDown={() => {\n closeModal();\n }}\n >\n {closeChild || \"Close\"}\n </Button>{\" \"}\n </div>\n )}\n </section>\n </ModalDialog>\n {!showOpen && (\n <Button type=\"button\" pointerDown={openModal}>\n {openChild || \"Open Modal\"}\n </Button>\n )}\n </>\n );\n};\n\nModal.displayName = \"Modal\";\n","import UI from \"../ui\";\nimport React from \"react\";\n\nexport type DialogProps = {\n /**\n * React ref for dialog element\n */\n modalRef: React.RefObject<HTMLDialogElement>;\n /**\n * Handle close modal event\n */\n closeModal?: (e: React.SyntheticEvent<HTMLDialogElement>) => void;\n /**\n * open modal on mount\n */\n openOnMount?: boolean;\n} & React.ComponentProps<typeof UI>;\n/**\n * Dialog component\n */\nexport const ModalDialog = ({\n id,\n children,\n classes,\n modalRef,\n openOnMount,\n ...props\n}: DialogProps) => {\n const handleCloseModal = (e: React.SyntheticEvent<HTMLDialogElement>) => {\n if (e.currentTarget === e.target) {\n e.currentTarget.close();\n }\n };\n\n return (\n <UI\n as=\"dialog\"\n id={id}\n classes={classes}\n ref={modalRef}\n open={openOnMount}\n onClick={handleCloseModal}\n {...props}\n >\n {children}\n </UI>\n );\n};\n\nexport default React.memo(ModalDialog);\nModalDialog.displayName = \"Dialog\";\n"]}
@@ -0,0 +1,38 @@
1
+ import React__default, { ReactNode } from 'react';
2
+
3
+ interface ComponentProps {
4
+ /**
5
+ * The default child content/component to render.
6
+ */
7
+ children?: ReactNode;
8
+ /**
9
+ * Use default component styles
10
+ */
11
+ renderStyles?: boolean;
12
+ /**
13
+ * Component id attribute
14
+ */
15
+ id?: string;
16
+ /**
17
+ * Styles object
18
+ */
19
+ styles?: React__default.CSSProperties;
20
+ /**
21
+ * Default styles object
22
+ */
23
+ defaultStyles?: React__default.CSSProperties;
24
+ /**
25
+ * Component class attribute
26
+ */
27
+ classes?: string;
28
+ /**
29
+ * Style value for [data-style] attribute
30
+ */
31
+ dataStyle?: string;
32
+ /**
33
+ * Component ref attribute
34
+ */
35
+ ref?: React__default.Ref<any>;
36
+ }
37
+
38
+ export { ComponentProps as C };
@@ -1 +1 @@
1
- [role=alert]{--alert-success-bg: #e6f4ea;--alert-success-border: #34a853;--alert-success-text: #1e4620;--alert-error-bg: #fdeded;--alert-error-border: #d32f2f;--alert-error-text: #5f2120;--alert-warning-bg: #fff4e5;--alert-warning-border: #ff9800;--alert-warning-text: #663c00;--alert-info-bg: #e5f6fd;--alert-info-border: #0288d1;--alert-info-text: #084154;--alert-border: thin solid currentColor;background-color:var(--alert-bg, whitesmoke);border:var(--alert-border, currentColor);color:var(--alert-color, currentColor);padding:var(--alert-padding, var(--spc-4));margin-block-end:var(--alert-margin-block-end);font-size:var(--fs-0);line-height:1.6;display:flex;flex-direction:row;border-radius:var(--alert-border-radius, var(--border-radius));border:var(--alert-border);gap:var(--alert-gap, var(--spc-4))}[role=alert] div{margin-block-start:0;align-items:center}[role=alert] .alert-message{flex:2;margin-block-start:0}[role=alert] .alert-message h3{margin-block-end:0}[role=alert][data-alert~=info]{--alert-bg: var(--alert-info-bg);--alert-color: var(--alert-info-text);border-color:var(--alert-info-border)}[role=alert][data-alert~=warning]{--alert-bg: var(--alert-warning-bg);--alert-color: var(--alert-warning-text);border-color:var(--alert-warning-border)}[role=alert][data-alert~=error]{--alert-bg: var(--alert-error-bg);--alert-color: var(--alert-error-text);border-color:var(--alert-error-border)}[role=alert][data-alert~=success]{--alert-bg: var(--alert-success-bg);--alert-color: var(--alert-success-text);border-color:var(--alert-success-border)}[role=alert] button[data-btn~=icon]{--btn-bg: transparent}/*# sourceMappingURL=alert.css.map */
1
+ .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}[role=alert]{--alert-success-bg: #e6f4ea;--alert-success-border: #34a853;--alert-success-text: #1e4620;--alert-error-bg: #fdeded;--alert-error-border: #d32f2f;--alert-error-text: #5f2120;--alert-warning-bg: #fff4e5;--alert-warning-border: #ff9800;--alert-warning-text: #663c00;--alert-info-bg: #e5f6fd;--alert-info-border: #0288d1;--alert-info-text: #084154;--alert-transition-duration: 0.3s;--alert-border: thin solid currentColor;background-color:var(--alert-bg, whitesmoke);border:var(--alert-border, currentColor);color:var(--alert-color, currentColor);padding:var(--alert-padding, var(--spc-4));margin-block-end:var(--alert-margin-block-end);font-size:var(--fs-0);line-height:1.6;display:flex;flex-direction:row;border-radius:var(--alert-border-radius, var(--border-radius));gap:var(--alert-gap, var(--spc-4));transition:opacity var(--alert-transition-duration) ease,transform var(--alert-transition-duration) ease;opacity:1;transform:translateY(0)}[role=alert]:not([data-visible=true]){opacity:0;transform:translateY(-0.5rem)}@media(prefers-reduced-motion: reduce){[role=alert]{transition-duration:.01ms}}[role=alert]:focus{outline:2px solid currentColor;outline-offset:2px}[role=alert]:focus:not(:focus-visible){outline:none}[role=alert] .alert-icon{margin-block-start:0;align-items:center}[role=alert] .alert-message{flex:2;margin-block-start:0}[role=alert] .alert-message .alert-title{margin-block-end:var(--spc-1, 0.25rem);margin-block-start:0;font-weight:var(--alert-title-weight, 600);font-size:var(--alert-title-size, inherit);line-height:1.4}[role=alert] .alert-message h2.alert-title,[role=alert] .alert-message h3.alert-title,[role=alert] .alert-message h4.alert-title,[role=alert] .alert-message h5.alert-title,[role=alert] .alert-message h6.alert-title{margin:0;margin-block-end:var(--spc-1, 0.25rem);font-size:inherit;font-weight:var(--alert-title-weight, 600)}[role=alert][data-alert~=info]{--alert-bg: var(--alert-info-bg);--alert-color: var(--alert-info-text);border-color:var(--alert-info-border)}[role=alert][data-alert~=warning]{--alert-bg: var(--alert-warning-bg);--alert-color: var(--alert-warning-text);border-color:var(--alert-warning-border)}[role=alert][data-alert~=error]{--alert-bg: var(--alert-error-bg);--alert-color: var(--alert-error-text);border-color:var(--alert-error-border)}[role=alert][data-alert~=success]{--alert-bg: var(--alert-success-bg);--alert-color: var(--alert-success-text);border-color:var(--alert-success-border)}[role=alert] button[data-btn~=icon]{--btn-bg: transparent}[role=alert] *+div{margin-block-start:var(--spc-1)}[role=alert][data-variant=filled]{border:none}[role=alert][data-variant=filled][data-alert~=info]{--alert-bg: var(--alert-info-border);--alert-color: white}[role=alert][data-variant=filled][data-alert~=warning]{--alert-bg: var(--alert-warning-border);--alert-color: white}[role=alert][data-variant=filled][data-alert~=error]{--alert-bg: var(--alert-error-border);--alert-color: white}[role=alert][data-variant=filled][data-alert~=success]{--alert-bg: var(--alert-success-border);--alert-color: white}[role=alert][data-variant=filled][data-alert~=default]{--alert-bg: #757575;--alert-color: white}[role=alert][data-variant=soft]{border:none}[role=alert] p{font-size:.875rem}/*# sourceMappingURL=alert.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/components/alert/alert.scss"],"names":[],"mappings":"AAAA,aAEE,4BACA,gCACA,8BAGA,0BACA,8BACA,4BAGA,4BACA,gCACA,8BAGA,yBACA,6BACA,2BAEA,wCAEA,6CACA,yCACA,uCACA,2CACA,+CACA,sBACA,gBACA,aACA,mBAEA,+DACA,2BACA,mCACA,iBACE,qBACA,mBAGF,4BACE,OACA,qBACA,+BACE,mBAIJ,+BACE,iCACA,sCACA,sCAGF,kCACE,oCACA,yCACA,yCAGF,gCACE,kCACA,uCACA,uCAGF,kCACE,oCACA,yCACA,yCAIA,oCACE","file":"alert.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/components/alert/alert.scss"],"names":[],"mappings":"AACA,SACE,kBACA,UACA,WACA,UACA,YACA,gBACA,sBACA,mBACA,eAGF,aAEE,4BACA,gCACA,8BAGA,0BACA,8BACA,4BAGA,4BACA,gCACA,8BAGA,yBACA,6BACA,2BAGA,kCAEA,wCAEA,6CACA,yCACA,uCACA,2CACA,+CACA,sBACA,gBACA,aACA,mBACA,+DACA,mCAGA,WACE,8FAEF,UACA,wBAEA,sCACE,UACA,8BAGF,uCAlDF,aAmDI,2BAIF,mBACE,+BACA,mBAIF,uCACE,aAGF,yBACE,qBACA,mBAGF,4BACE,OACA,qBAGA,yCACE,uCACA,qBACA,2CACA,2CACA,gBAIF,uNAKE,SACA,uCACA,kBACA,2CAIJ,+BACE,iCACA,sCACA,sCAGF,kCACE,oCACA,yCACA,yCAGF,gCACE,kCACA,uCACA,uCAGF,kCACE,oCACA,yCACA,yCAIA,oCACE,sBAIJ,mBACE,gCAIF,kCACE,YAEA,oDACE,qCACA,qBAGF,uDACE,wCACA,qBAGF,qDACE,sCACA,qBAGF,uDACE,wCACA,qBAGF,uDACE,oBACA,qBAKJ,gCACE,YAQF,eACE","file":"alert.css"}
@@ -1,3 +1,3 @@
1
- [role=alert]{--alert-success-bg: #e6f4ea;--alert-success-border: #34a853;--alert-success-text: #1e4620;--alert-error-bg: #fdeded;--alert-error-border: #d32f2f;--alert-error-text: #5f2120;--alert-warning-bg: #fff4e5;--alert-warning-border: #ff9800;--alert-warning-text: #663c00;--alert-info-bg: #e5f6fd;--alert-info-border: #0288d1;--alert-info-text: #084154;--alert-border: thin solid currentColor;background-color:var(--alert-bg, whitesmoke);border:var(--alert-border, currentColor);color:var(--alert-color, currentColor);padding:var(--alert-padding, var(--spc-4));margin-block-end:var(--alert-margin-block-end);font-size:var(--fs-0);line-height:1.6;display:flex;flex-direction:row;border-radius:var(--alert-border-radius, var(--border-radius));border:var(--alert-border);gap:var(--alert-gap, var(--spc-4))}[role=alert] div{margin-block-start:0;align-items:center}[role=alert] .alert-message{flex:2;margin-block-start:0}[role=alert] .alert-message h3{margin-block-end:0}[role=alert][data-alert~=info]{--alert-bg: var(--alert-info-bg);--alert-color: var(--alert-info-text);border-color:var(--alert-info-border)}[role=alert][data-alert~=warning]{--alert-bg: var(--alert-warning-bg);--alert-color: var(--alert-warning-text);border-color:var(--alert-warning-border)}[role=alert][data-alert~=error]{--alert-bg: var(--alert-error-bg);--alert-color: var(--alert-error-text);border-color:var(--alert-error-border)}[role=alert][data-alert~=success]{--alert-bg: var(--alert-success-bg);--alert-color: var(--alert-success-text);border-color:var(--alert-success-border)}[role=alert] button[data-btn~=icon]{--btn-bg: transparent}
1
+ .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}[role=alert]{--alert-success-bg: #e6f4ea;--alert-success-border: #34a853;--alert-success-text: #1e4620;--alert-error-bg: #fdeded;--alert-error-border: #d32f2f;--alert-error-text: #5f2120;--alert-warning-bg: #fff4e5;--alert-warning-border: #ff9800;--alert-warning-text: #663c00;--alert-info-bg: #e5f6fd;--alert-info-border: #0288d1;--alert-info-text: #084154;--alert-transition-duration: 0.3s;--alert-border: thin solid currentColor;background-color:var(--alert-bg, whitesmoke);border:var(--alert-border, currentColor);color:var(--alert-color, currentColor);padding:var(--alert-padding, var(--spc-4));margin-block-end:var(--alert-margin-block-end);font-size:var(--fs-0);line-height:1.6;display:flex;flex-direction:row;border-radius:var(--alert-border-radius, var(--border-radius));gap:var(--alert-gap, var(--spc-4));transition:opacity var(--alert-transition-duration) ease,transform var(--alert-transition-duration) ease;opacity:1;transform:translateY(0)}[role=alert]:not([data-visible=true]){opacity:0;transform:translateY(-0.5rem)}@media(prefers-reduced-motion: reduce){[role=alert]{transition-duration:.01ms}}[role=alert]:focus{outline:2px solid currentColor;outline-offset:2px}[role=alert]:focus:not(:focus-visible){outline:none}[role=alert] .alert-icon{margin-block-start:0;align-items:center}[role=alert] .alert-message{flex:2;margin-block-start:0}[role=alert] .alert-message .alert-title{margin-block-end:var(--spc-1, 0.25rem);margin-block-start:0;font-weight:var(--alert-title-weight, 600);font-size:var(--alert-title-size, inherit);line-height:1.4}[role=alert] .alert-message h2.alert-title,[role=alert] .alert-message h3.alert-title,[role=alert] .alert-message h4.alert-title,[role=alert] .alert-message h5.alert-title,[role=alert] .alert-message h6.alert-title{margin:0;margin-block-end:var(--spc-1, 0.25rem);font-size:inherit;font-weight:var(--alert-title-weight, 600)}[role=alert][data-alert~=info]{--alert-bg: var(--alert-info-bg);--alert-color: var(--alert-info-text);border-color:var(--alert-info-border)}[role=alert][data-alert~=warning]{--alert-bg: var(--alert-warning-bg);--alert-color: var(--alert-warning-text);border-color:var(--alert-warning-border)}[role=alert][data-alert~=error]{--alert-bg: var(--alert-error-bg);--alert-color: var(--alert-error-text);border-color:var(--alert-error-border)}[role=alert][data-alert~=success]{--alert-bg: var(--alert-success-bg);--alert-color: var(--alert-success-text);border-color:var(--alert-success-border)}[role=alert] button[data-btn~=icon]{--btn-bg: transparent}[role=alert] *+div{margin-block-start:var(--spc-1)}[role=alert][data-variant=filled]{border:none}[role=alert][data-variant=filled][data-alert~=info]{--alert-bg: var(--alert-info-border);--alert-color: white}[role=alert][data-variant=filled][data-alert~=warning]{--alert-bg: var(--alert-warning-border);--alert-color: white}[role=alert][data-variant=filled][data-alert~=error]{--alert-bg: var(--alert-error-border);--alert-color: white}[role=alert][data-variant=filled][data-alert~=success]{--alert-bg: var(--alert-success-border);--alert-color: white}[role=alert][data-variant=filled][data-alert~=default]{--alert-bg: #757575;--alert-color: white}[role=alert][data-variant=soft]{border:none}[role=alert] p{font-size:.875rem}
2
2
 
3
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFFRSwyQkFBQSxDQUNBLCtCQUFBLENBQ0EsNkJBQUEsQ0FHQSx5QkFBQSxDQUNBLDZCQUFBLENBQ0EsMkJBQUEsQ0FHQSwyQkFBQSxDQUNBLCtCQUFBLENBQ0EsNkJBQUEsQ0FHQSx3QkFBQSxDQUNBLDRCQUFBLENBQ0EsMEJBQUEsQ0FFQSx1Q0FBQSxDQUVBLDRDQUFBLENBQ0Esd0NBQUEsQ0FDQSxzQ0FBQSxDQUNBLDBDQUFBLENBQ0EsOENBQUEsQ0FDQSxxQkFBQSxDQUNBLGVBQUEsQ0FDQSxZQUFBLENBQ0Esa0JBQUEsQ0FFQSw4REFBQSxDQUNBLDBCQUFBLENBQ0Esa0NBQUEsQ0FDQSxpQkFDRSxvQkFBQSxDQUNBLGtCQUFBLENBR0YsNEJBQ0UsTUFBQSxDQUNBLG9CQUFBLENBQ0EsK0JBQ0Usa0JBQUEsQ0FJSiwrQkFDRSxnQ0FBQSxDQUNBLHFDQUFBLENBQ0EscUNBQUEsQ0FHRixrQ0FDRSxtQ0FBQSxDQUNBLHdDQUFBLENBQ0Esd0NBQUEsQ0FHRixnQ0FDRSxpQ0FBQSxDQUNBLHNDQUFBLENBQ0Esc0NBQUEsQ0FHRixrQ0FDRSxtQ0FBQSxDQUNBLHdDQUFBLENBQ0Esd0NBQUEsQ0FJQSxvQ0FDRSxxQkFBQSIsImZpbGUiOiJhbGVydC5taW4uY3NzIn0= */
3
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2FsZXJ0L2FsZXJ0LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsU0FDRSxpQkFBQSxDQUNBLFNBQUEsQ0FDQSxVQUFBLENBQ0EsU0FBQSxDQUNBLFdBQUEsQ0FDQSxlQUFBLENBQ0EscUJBQUEsQ0FDQSxrQkFBQSxDQUNBLGNBQUEsQ0FHRixhQUVFLDJCQUFBLENBQ0EsK0JBQUEsQ0FDQSw2QkFBQSxDQUdBLHlCQUFBLENBQ0EsNkJBQUEsQ0FDQSwyQkFBQSxDQUdBLDJCQUFBLENBQ0EsK0JBQUEsQ0FDQSw2QkFBQSxDQUdBLHdCQUFBLENBQ0EsNEJBQUEsQ0FDQSwwQkFBQSxDQUdBLGlDQUFBLENBRUEsdUNBQUEsQ0FFQSw0Q0FBQSxDQUNBLHdDQUFBLENBQ0Esc0NBQUEsQ0FDQSwwQ0FBQSxDQUNBLDhDQUFBLENBQ0EscUJBQUEsQ0FDQSxlQUFBLENBQ0EsWUFBQSxDQUNBLGtCQUFBLENBQ0EsOERBQUEsQ0FDQSxrQ0FBQSxDQUdBLHdHQUNFLENBRUYsU0FBQSxDQUNBLHVCQUFBLENBRUEsc0NBQ0UsU0FBQSxDQUNBLDZCQUFBLENBR0YsdUNBbERGLGFBbURJLHlCQUFBLENBQUEsQ0FJRixtQkFDRSw4QkFBQSxDQUNBLGtCQUFBLENBSUYsdUNBQ0UsWUFBQSxDQUdGLHlCQUNFLG9CQUFBLENBQ0Esa0JBQUEsQ0FHRiw0QkFDRSxNQUFBLENBQ0Esb0JBQUEsQ0FHQSx5Q0FDRSxzQ0FBQSxDQUNBLG9CQUFBLENBQ0EsMENBQUEsQ0FDQSwwQ0FBQSxDQUNBLGVBQUEsQ0FJRix1TkFLRSxRQUFBLENBQ0Esc0NBQUEsQ0FDQSxpQkFBQSxDQUNBLDBDQUFBLENBSUosK0JBQ0UsZ0NBQUEsQ0FDQSxxQ0FBQSxDQUNBLHFDQUFBLENBR0Ysa0NBQ0UsbUNBQUEsQ0FDQSx3Q0FBQSxDQUNBLHdDQUFBLENBR0YsZ0NBQ0UsaUNBQUEsQ0FDQSxzQ0FBQSxDQUNBLHNDQUFBLENBR0Ysa0NBQ0UsbUNBQUEsQ0FDQSx3Q0FBQSxDQUNBLHdDQUFBLENBSUEsb0NBQ0UscUJBQUEsQ0FJSixtQkFDRSwrQkFBQSxDQUlGLGtDQUNFLFdBQUEsQ0FFQSxvREFDRSxvQ0FBQSxDQUNBLG9CQUFBLENBR0YsdURBQ0UsdUNBQUEsQ0FDQSxvQkFBQSxDQUdGLHFEQUNFLHFDQUFBLENBQ0Esb0JBQUEsQ0FHRix1REFDRSx1Q0FBQSxDQUNBLG9CQUFBLENBR0YsdURBQ0UsbUJBQUEsQ0FDQSxvQkFBQSxDQUtKLGdDQUNFLFdBQUEsQ0FRRixlQUNFLGlCQUFBIiwiZmlsZSI6ImFsZXJ0Lm1pbi5jc3MifQ== */
@@ -1 +1 @@
1
- sup:has(>span){--badge-bg: lightgray;--badge-color: currentColor;--badge-radius: 0.5rem;--badge-padding: 0.3rem;--badge-v-align: 0.5rem;--badge-fs: var(--fs-1);background-color:var(--badge-bg);color:var(--badge-color);padding:var(--badge-padding);border-radius:var(--badge-radius);vertical-align:var(--badge-v-align);font-size:var(--badge-fs)}sup:has(>span) span{color:inherit}sup:has(>span)[data-badge~=rounded]{--badge-radius: 100%;--badge-padding: 0.2rem}/*# sourceMappingURL=badge.css.map */
1
+ sup:has(>span){--badge-bg: lightgray;--badge-color: currentColor;--badge-radius: 0.5rem;--badge-padding: 0.3rem;--badge-v-align: 0.5rem;--badge-fs: var(--fs-1);background-color:var(--badge-bg);color:var(--badge-color);padding:var(--badge-padding);border-radius:var(--badge-radius);vertical-align:var(--badge-v-align);font-size:var(--badge-fs)}sup:has(>span) span{color:inherit}sup:has(>span)[data-badge~=rounded]{--badge-radius: 50%;--badge-padding: 0;--badge-size: 1.5625rem;width:var(--badge-size);height:var(--badge-size);display:inline-flex;align-items:center;justify-content:center;line-height:1;font-size:.6875rem;font-weight:700;overflow:hidden;box-sizing:border-box}sup:has(>span)[data-badge~=rounded] span{max-width:100%;overflow:hidden;text-overflow:clip;white-space:nowrap;padding:0 .125rem}/*# sourceMappingURL=badge.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/components/badge/badge.scss"],"names":[],"mappings":"AAAA,eACE,sBACA,4BACA,uBACA,wBACA,wBACA,wBACA,iCACA,yBACA,6BACA,kCACA,oCACA,0BACA,oBACE,cAEF,oCACE,qBACA","file":"badge.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/components/badge/badge.scss"],"names":[],"mappings":"AAAA,eACE,sBACA,4BACA,uBACA,wBACA,wBACA,wBACA,iCACA,yBACA,6BACA,kCACA,oCACA,0BACA,oBACE,cAEF,oCACE,oBACA,mBACA,wBACA,wBACA,yBACA,oBACA,mBACA,uBACA,cACA,mBACA,gBACA,gBACA,sBACA,yCACE,eACA,gBACA,mBACA,mBACA","file":"badge.css"}
@@ -1,3 +1,3 @@
1
- sup:has(>span){--badge-bg: lightgray;--badge-color: currentColor;--badge-radius: 0.5rem;--badge-padding: 0.3rem;--badge-v-align: 0.5rem;--badge-fs: var(--fs-1);background-color:var(--badge-bg);color:var(--badge-color);padding:var(--badge-padding);border-radius:var(--badge-radius);vertical-align:var(--badge-v-align);font-size:var(--badge-fs)}sup:has(>span) span{color:inherit}sup:has(>span)[data-badge~=rounded]{--badge-radius: 100%;--badge-padding: 0.2rem}
1
+ sup:has(>span){--badge-bg: lightgray;--badge-color: currentColor;--badge-radius: 0.5rem;--badge-padding: 0.3rem;--badge-v-align: 0.5rem;--badge-fs: var(--fs-1);background-color:var(--badge-bg);color:var(--badge-color);padding:var(--badge-padding);border-radius:var(--badge-radius);vertical-align:var(--badge-v-align);font-size:var(--badge-fs)}sup:has(>span) span{color:inherit}sup:has(>span)[data-badge~=rounded]{--badge-radius: 50%;--badge-padding: 0;--badge-size: 1.5625rem;width:var(--badge-size);height:var(--badge-size);display:inline-flex;align-items:center;justify-content:center;line-height:1;font-size:.6875rem;font-weight:700;overflow:hidden;box-sizing:border-box}sup:has(>span)[data-badge~=rounded] span{max-width:100%;overflow:hidden;text-overflow:clip;white-space:nowrap;padding:0 .125rem}
2
2
 
3
- /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2JhZGdlL2JhZGdlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFDRSxxQkFBQSxDQUNBLDJCQUFBLENBQ0Esc0JBQUEsQ0FDQSx1QkFBQSxDQUNBLHVCQUFBLENBQ0EsdUJBQUEsQ0FDQSxnQ0FBQSxDQUNBLHdCQUFBLENBQ0EsNEJBQUEsQ0FDQSxpQ0FBQSxDQUNBLG1DQUFBLENBQ0EseUJBQUEsQ0FDQSxvQkFDRSxhQUFBLENBRUYsb0NBQ0Usb0JBQUEsQ0FDQSx1QkFBQSIsImZpbGUiOiJiYWRnZS5taW4uY3NzIn0= */
3
+ /*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2JhZGdlL2JhZGdlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFDRSxxQkFBQSxDQUNBLDJCQUFBLENBQ0Esc0JBQUEsQ0FDQSx1QkFBQSxDQUNBLHVCQUFBLENBQ0EsdUJBQUEsQ0FDQSxnQ0FBQSxDQUNBLHdCQUFBLENBQ0EsNEJBQUEsQ0FDQSxpQ0FBQSxDQUNBLG1DQUFBLENBQ0EseUJBQUEsQ0FDQSxvQkFDRSxhQUFBLENBRUYsb0NBQ0UsbUJBQUEsQ0FDQSxrQkFBQSxDQUNBLHVCQUFBLENBQ0EsdUJBQUEsQ0FDQSx3QkFBQSxDQUNBLG1CQUFBLENBQ0Esa0JBQUEsQ0FDQSxzQkFBQSxDQUNBLGFBQUEsQ0FDQSxrQkFBQSxDQUNBLGVBQUEsQ0FDQSxlQUFBLENBQ0EscUJBQUEsQ0FDQSx5Q0FDRSxjQUFBLENBQ0EsZUFBQSxDQUNBLGtCQUFBLENBQ0Esa0JBQUEsQ0FDQSxpQkFBQSIsImZpbGUiOiJiYWRnZS5taW4uY3NzIn0= */
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var chunkOK5QEIMD_cjs = require('../../chunk-OK5QEIMD.cjs');
6
+ require('../../chunk-5S4ORA4C.cjs');
7
+ require('../../chunk-L75OQKEI.cjs');
8
+
9
+
10
+
11
+ Object.defineProperty(exports, 'Breadcrumb', {
12
+ enumerable: true,
13
+ get: function () { return chunkOK5QEIMD_cjs.b; }
14
+ });
15
+ Object.defineProperty(exports, 'default', {
16
+ enumerable: true,
17
+ get: function () { return chunkOK5QEIMD_cjs.c; }
18
+ });
19
+ Object.defineProperty(exports, 'useBreadcrumbSegments', {
20
+ enumerable: true,
21
+ get: function () { return chunkOK5QEIMD_cjs.a; }
22
+ });
23
+ //# sourceMappingURL=out.js.map
24
+ //# sourceMappingURL=breadcrumb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}