boreal-ui 0.0.52 → 0.0.54

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 (228) hide show
  1. package/dist/core/{FileUpload-C0eHx1h8.js → FileUpload-9fIxslAo.js} +2 -2
  2. package/dist/core/{FileUpload-C0eHx1h8.js.map → FileUpload-9fIxslAo.js.map} +1 -1
  3. package/dist/core/{FileUpload-BJ3RJxT3.cjs → FileUpload-DbMxpH-U.cjs} +2 -2
  4. package/dist/core/{FileUpload-BJ3RJxT3.cjs.map → FileUpload-DbMxpH-U.cjs.map} +1 -1
  5. package/dist/core/FileUpload.cjs.js +1 -1
  6. package/dist/core/FileUpload.js +1 -1
  7. package/dist/core/{MessagePopup-B3lEfar7.js → MessagePopup-BMGIVKoJ.js} +4 -4
  8. package/dist/core/{MessagePopup-B3lEfar7.js.map → MessagePopup-BMGIVKoJ.js.map} +1 -1
  9. package/dist/core/{MessagePopup-CtdpuRFv.cjs → MessagePopup-DQQKRCGF.cjs} +4 -4
  10. package/dist/core/{MessagePopup-CtdpuRFv.cjs.map → MessagePopup-DQQKRCGF.cjs.map} +1 -1
  11. package/dist/core/MessagePopup.cjs.js +4 -0
  12. package/dist/core/MessagePopup.cjs.js.map +1 -0
  13. package/dist/core/MessagePopup.js +5 -0
  14. package/dist/core/MessagePopup.js.map +1 -0
  15. package/dist/core/{ProgressBar-DaA5vvnq.js → ProgressBar-BLcSyVgQ.js} +51 -21
  16. package/dist/core/ProgressBar-BLcSyVgQ.js.map +1 -0
  17. package/dist/core/{ProgressBar-BwjYOqoE.cjs → ProgressBar-BbIZLV1t.cjs} +50 -20
  18. package/dist/core/ProgressBar-BbIZLV1t.cjs.map +1 -0
  19. package/dist/core/ProgressBar.cjs.js +1 -1
  20. package/dist/core/ProgressBar.js +1 -1
  21. package/dist/core/{Taginput-BXCxdLf0.cjs → TagInput-BXCxdLf0.cjs} +1 -1
  22. package/dist/core/TagInput-BXCxdLf0.cjs.map +1 -0
  23. package/dist/core/{Taginput-CoxxwLXg.js → TagInput-CoxxwLXg.js} +1 -1
  24. package/dist/core/TagInput-CoxxwLXg.js.map +1 -0
  25. package/dist/core/TagInput.cjs.js +2 -2
  26. package/dist/core/TagInput.js +1 -1
  27. package/dist/core/boreal-ui.css +31 -0
  28. package/dist/core/index.cjs.js +6 -6
  29. package/dist/core/index.js +5 -5
  30. package/dist/next/{Avatar-B-Ws4Ueo.js → Avatar-B24bFFqY.js} +3 -3
  31. package/dist/next/{Avatar-B-Ws4Ueo.js.map → Avatar-B24bFFqY.js.map} +1 -1
  32. package/dist/next/{Avatar-B9sMyRWr.cjs → Avatar-CPaxiA0r.cjs} +3 -3
  33. package/dist/next/{Avatar-B9sMyRWr.cjs.map → Avatar-CPaxiA0r.cjs.map} +1 -1
  34. package/dist/next/Avatar.cjs.js +1 -1
  35. package/dist/next/Avatar.js +1 -1
  36. package/dist/next/{Breadcrumbs-CrKRsQf3.cjs → Breadcrumbs-BlFi63K8.cjs} +3 -3
  37. package/dist/next/{Breadcrumbs-CrKRsQf3.cjs.map → Breadcrumbs-BlFi63K8.cjs.map} +1 -1
  38. package/dist/next/{Breadcrumbs-ZK64MIGd.js → Breadcrumbs-D9BMYEZi.js} +3 -3
  39. package/dist/next/{Breadcrumbs-ZK64MIGd.js.map → Breadcrumbs-D9BMYEZi.js.map} +1 -1
  40. package/dist/next/Breadcrumbs.cjs.js +1 -1
  41. package/dist/next/Breadcrumbs.js +1 -1
  42. package/dist/next/{Button-BI0LErYM.cjs → Button-DPoX7ahh.cjs} +2 -2
  43. package/dist/next/{Button-BI0LErYM.cjs.map → Button-DPoX7ahh.cjs.map} +1 -1
  44. package/dist/next/{Button-qs4m4zx0.js → Button-DhH3Gy0J.js} +2 -2
  45. package/dist/next/{Button-qs4m4zx0.js.map → Button-DhH3Gy0J.js.map} +1 -1
  46. package/dist/next/Button.cjs.js +1 -1
  47. package/dist/next/Button.js +1 -1
  48. package/dist/next/{Card-Da7D02Sj.js → Card-4SKxHmOQ.js} +4 -4
  49. package/dist/next/{Card-Da7D02Sj.js.map → Card-4SKxHmOQ.js.map} +1 -1
  50. package/dist/next/{Card-C0SorjuI.cjs → Card-BdzmlYGf.cjs} +4 -4
  51. package/dist/next/{Card-C0SorjuI.cjs.map → Card-BdzmlYGf.cjs.map} +1 -1
  52. package/dist/next/Card.cjs.js +1 -1
  53. package/dist/next/Card.js +1 -1
  54. package/dist/next/{Chip-D2mvW5L7.js → Chip-BqMZEDW_.js} +2 -2
  55. package/dist/next/{Chip-D2mvW5L7.js.map → Chip-BqMZEDW_.js.map} +1 -1
  56. package/dist/next/{Chip-BWTBVAIE.cjs → Chip-CqvlZI-K.cjs} +2 -2
  57. package/dist/next/{Chip-BWTBVAIE.cjs.map → Chip-CqvlZI-K.cjs.map} +1 -1
  58. package/dist/next/Chip.cjs.js +1 -1
  59. package/dist/next/Chip.js +1 -1
  60. package/dist/next/{CommandPalette-BO6R9zQs.cjs → CommandPalette-C0NN-NWE.cjs} +2 -2
  61. package/dist/next/{CommandPalette-BO6R9zQs.cjs.map → CommandPalette-C0NN-NWE.cjs.map} +1 -1
  62. package/dist/next/{CommandPalette-CN0BiN0R.js → CommandPalette-vklqlRV0.js} +2 -2
  63. package/dist/next/{CommandPalette-CN0BiN0R.js.map → CommandPalette-vklqlRV0.js.map} +1 -1
  64. package/dist/next/CommandPalette.cjs.js +1 -1
  65. package/dist/next/CommandPalette.js +1 -1
  66. package/dist/next/{Dropdown-Czc7qKPn.js → Dropdown-BjxT8ivq.js} +2 -2
  67. package/dist/next/{Dropdown-Czc7qKPn.js.map → Dropdown-BjxT8ivq.js.map} +1 -1
  68. package/dist/next/{Dropdown-BnuZW883.cjs → Dropdown-IW2Ph6-e.cjs} +2 -2
  69. package/dist/next/{Dropdown-BnuZW883.cjs.map → Dropdown-IW2Ph6-e.cjs.map} +1 -1
  70. package/dist/next/Dropdown.cjs.js +1 -1
  71. package/dist/next/Dropdown.js +1 -1
  72. package/dist/next/{EmptyState-Bb90F-ej.cjs → EmptyState-BS6-CuHp.cjs} +2 -2
  73. package/dist/next/{EmptyState-Bb90F-ej.cjs.map → EmptyState-BS6-CuHp.cjs.map} +1 -1
  74. package/dist/next/{EmptyState-Brd4N36F.js → EmptyState-D_Gcrj_3.js} +2 -2
  75. package/dist/next/{EmptyState-Brd4N36F.js.map → EmptyState-D_Gcrj_3.js.map} +1 -1
  76. package/dist/next/EmptyState.cjs.js +1 -1
  77. package/dist/next/EmptyState.js +1 -1
  78. package/dist/next/{FileUpload-Drm5_xEx.cjs → FileUpload-Cj99fQhe.cjs} +4 -4
  79. package/dist/next/{FileUpload-Drm5_xEx.cjs.map → FileUpload-Cj99fQhe.cjs.map} +1 -1
  80. package/dist/next/{FileUpload-BMMpH1El.js → FileUpload-St2eEaTn.js} +4 -4
  81. package/dist/next/{FileUpload-BMMpH1El.js.map → FileUpload-St2eEaTn.js.map} +1 -1
  82. package/dist/next/FileUpload.cjs.js +1 -1
  83. package/dist/next/FileUpload.js +1 -1
  84. package/dist/next/{Footer-EF2-ryvY.cjs → Footer-B3KTDWBR.cjs} +4 -4
  85. package/dist/next/{Footer-EF2-ryvY.cjs.map → Footer-B3KTDWBR.cjs.map} +1 -1
  86. package/dist/next/{Footer-B6_LG958.js → Footer-dtGtOPyR.js} +4 -4
  87. package/dist/next/{Footer-B6_LG958.js.map → Footer-dtGtOPyR.js.map} +1 -1
  88. package/dist/next/Footer.cjs.js +1 -1
  89. package/dist/next/Footer.js +1 -1
  90. package/dist/next/{IconButton-BTUFKRZt.js → IconButton-Ct3YtlG9.js} +2 -2
  91. package/dist/next/{IconButton-BTUFKRZt.js.map → IconButton-Ct3YtlG9.js.map} +1 -1
  92. package/dist/next/{IconButton-2l-_HOMB.cjs → IconButton-aF7cTy19.cjs} +2 -2
  93. package/dist/next/{IconButton-2l-_HOMB.cjs.map → IconButton-aF7cTy19.cjs.map} +1 -1
  94. package/dist/next/IconButton.cjs.js +1 -1
  95. package/dist/next/IconButton.js +1 -1
  96. package/dist/next/{MessagePopup-WUBGyJ_F.js → MessagePopup-C4n0Qw7n.js} +6 -6
  97. package/dist/next/{MessagePopup-WUBGyJ_F.js.map → MessagePopup-C4n0Qw7n.js.map} +1 -1
  98. package/dist/next/{MessagePopup-DsquzWSn.cjs → MessagePopup-CwOeZAAM.cjs} +6 -6
  99. package/dist/next/{MessagePopup-DsquzWSn.cjs.map → MessagePopup-CwOeZAAM.cjs.map} +1 -1
  100. package/dist/next/MessagePopup.cjs.js +4 -0
  101. package/dist/next/MessagePopup.cjs.js.map +1 -0
  102. package/dist/next/MessagePopup.js +5 -0
  103. package/dist/next/MessagePopup.js.map +1 -0
  104. package/dist/next/{Modal-B2ilLCoi.js → Modal-CIzoBs9H.js} +2 -2
  105. package/dist/next/{Modal-B2ilLCoi.js.map → Modal-CIzoBs9H.js.map} +1 -1
  106. package/dist/next/{Modal-CVKVAEdd.cjs → Modal-DCNGQN70.cjs} +2 -2
  107. package/dist/next/{Modal-CVKVAEdd.cjs.map → Modal-DCNGQN70.cjs.map} +1 -1
  108. package/dist/next/Modal.cjs.js +1 -1
  109. package/dist/next/Modal.js +1 -1
  110. package/dist/next/{NavBar-DVEf0iJH.cjs → NavBar-DDu46bCF.cjs} +3 -3
  111. package/dist/next/{NavBar-DVEf0iJH.cjs.map → NavBar-DDu46bCF.cjs.map} +1 -1
  112. package/dist/next/{NavBar-CmvgkEZt.js → NavBar-DyI3rKSN.js} +3 -3
  113. package/dist/next/{NavBar-CmvgkEZt.js.map → NavBar-DyI3rKSN.js.map} +1 -1
  114. package/dist/next/NavBar.cjs.js +1 -1
  115. package/dist/next/NavBar.js +1 -1
  116. package/dist/next/{NotificationCenter-CtM10CVj.js → NotificationCenter-BIuKaeXk.js} +3 -3
  117. package/dist/next/{NotificationCenter-CtM10CVj.js.map → NotificationCenter-BIuKaeXk.js.map} +1 -1
  118. package/dist/next/{NotificationCenter-CtL6rozQ.cjs → NotificationCenter-CzdOOnWg.cjs} +3 -3
  119. package/dist/next/{NotificationCenter-CtL6rozQ.cjs.map → NotificationCenter-CzdOOnWg.cjs.map} +1 -1
  120. package/dist/next/NotificationCenter.cjs.js +1 -1
  121. package/dist/next/NotificationCenter.js +1 -1
  122. package/dist/next/{Pager-Bxxewb8I.cjs → Pager-C6vww_Lf.cjs} +3 -3
  123. package/dist/next/{Pager-Bxxewb8I.cjs.map → Pager-C6vww_Lf.cjs.map} +1 -1
  124. package/dist/next/{Pager-D0Mw7o7v.js → Pager-DkXLe3dd.js} +3 -3
  125. package/dist/next/{Pager-D0Mw7o7v.js.map → Pager-DkXLe3dd.js.map} +1 -1
  126. package/dist/next/Pager.cjs.js +1 -1
  127. package/dist/next/Pager.js +1 -1
  128. package/dist/next/ProgressBar-BM0Rp63R.js +188 -0
  129. package/dist/next/ProgressBar-BM0Rp63R.js.map +1 -0
  130. package/dist/next/ProgressBar-CDhjp_gn.cjs +187 -0
  131. package/dist/next/ProgressBar-CDhjp_gn.cjs.map +1 -0
  132. package/dist/next/ProgressBar.cjs.js +1 -1
  133. package/dist/next/ProgressBar.js +1 -1
  134. package/dist/next/{Sidebar-DajVSn82.cjs → Sidebar-CBC-Gu5d.cjs} +3 -3
  135. package/dist/next/{Sidebar-DajVSn82.cjs.map → Sidebar-CBC-Gu5d.cjs.map} +1 -1
  136. package/dist/next/{Sidebar-CJ4VrQIW.js → Sidebar-oJzZMxwu.js} +3 -3
  137. package/dist/next/{Sidebar-CJ4VrQIW.js.map → Sidebar-oJzZMxwu.js.map} +1 -1
  138. package/dist/next/Sidebar.cjs.js +1 -1
  139. package/dist/next/Sidebar.js +1 -1
  140. package/dist/next/{Stepper-BvA_ZAho.js → Stepper-DBwramgz.js} +2 -2
  141. package/dist/next/{Stepper-BvA_ZAho.js.map → Stepper-DBwramgz.js.map} +1 -1
  142. package/dist/next/{Stepper-D6X70Sr6.cjs → Stepper-YQqjSOG0.cjs} +2 -2
  143. package/dist/next/{Stepper-D6X70Sr6.cjs.map → Stepper-YQqjSOG0.cjs.map} +1 -1
  144. package/dist/next/Stepper.cjs.js +1 -1
  145. package/dist/next/Stepper.js +1 -1
  146. package/dist/next/{TagInput-DfNJiPKh.cjs → TagInput-B38cJqaG.cjs} +3 -3
  147. package/dist/next/TagInput-B38cJqaG.cjs.map +1 -0
  148. package/dist/next/{TagInput-DKzxPiwU.js → TagInput-BDbDZ1W8.js} +3 -3
  149. package/dist/next/TagInput-BDbDZ1W8.js.map +1 -0
  150. package/dist/next/TagInput.cjs.js +1 -1
  151. package/dist/next/TagInput.js +1 -1
  152. package/dist/next/{TextInput-C1TUvbWx.cjs → TextInput-C3cLfd6E.cjs} +2 -2
  153. package/dist/next/{TextInput-C1TUvbWx.cjs.map → TextInput-C3cLfd6E.cjs.map} +1 -1
  154. package/dist/next/{TextInput-CyGkgvS3.js → TextInput-D68lumzk.js} +2 -2
  155. package/dist/next/{TextInput-CyGkgvS3.js.map → TextInput-D68lumzk.js.map} +1 -1
  156. package/dist/next/TextInput.cjs.js +1 -1
  157. package/dist/next/TextInput.js +1 -1
  158. package/dist/next/{Toolbar-PwnuYGDR.cjs → Toolbar-B-APlNjI.cjs} +2 -2
  159. package/dist/next/{Toolbar-PwnuYGDR.cjs.map → Toolbar-B-APlNjI.cjs.map} +1 -1
  160. package/dist/next/{Toolbar-wbusnAUV.js → Toolbar-DHyc9uqa.js} +2 -2
  161. package/dist/next/{Toolbar-wbusnAUV.js.map → Toolbar-DHyc9uqa.js.map} +1 -1
  162. package/dist/next/Toolbar.cjs.js +1 -1
  163. package/dist/next/Toolbar.js +1 -1
  164. package/dist/next/boreal-ui.css +122 -72
  165. package/dist/next/{image-BBS8QO15.js → image-B9PuwflE.js} +47 -3
  166. package/dist/next/image-B9PuwflE.js.map +1 -0
  167. package/dist/next/{image-A4nTeRaX.cjs → image-Bo_vHlt1.cjs} +47 -3
  168. package/dist/next/image-Bo_vHlt1.cjs.map +1 -0
  169. package/dist/next/index.cjs.js +23 -23
  170. package/dist/next/index.js +23 -23
  171. package/dist/next/{link-lNk_lOdS.cjs → link-B1N-q38H.cjs} +276 -49
  172. package/dist/next/link-B1N-q38H.cjs.map +1 -0
  173. package/dist/next/{link-CxWP3aXr.js → link-CyxHztrS.js} +276 -49
  174. package/dist/next/link-CyxHztrS.js.map +1 -0
  175. package/dist/next/{navigation-DxXFNXZM.js → navigation-C2hD8Jlk.js} +157 -199
  176. package/dist/next/navigation-C2hD8Jlk.js.map +1 -0
  177. package/dist/next/{navigation-CZU71Pmb.cjs → navigation-C3npGZmO.cjs} +157 -199
  178. package/dist/next/navigation-C3npGZmO.cjs.map +1 -0
  179. package/dist/tsconfig.build.tsbuildinfo +1 -1
  180. package/dist/types/components/{MessagePopUp → MessagePopup}/MessagePopup.types.d.ts +2 -2
  181. package/dist/types/components/{MessagePopUp → MessagePopup}/MessagePopup.types.d.ts.map +1 -1
  182. package/dist/types/components/{MessagePopUp → MessagePopup}/MessagePopupBase.d.ts.map +1 -1
  183. package/dist/types/components/MessagePopup/core/MessagePopup.d.ts +6 -0
  184. package/dist/types/components/{MessagePopUp → MessagePopup}/core/MessagePopup.d.ts.map +1 -1
  185. package/dist/types/components/MessagePopup/next/MessagePopup.d.ts +5 -0
  186. package/dist/types/components/{MessagePopUp → MessagePopup}/next/MessagePopup.d.ts.map +1 -1
  187. package/dist/types/components/ProgressBar/ProgressBar.types.d.ts +10 -1
  188. package/dist/types/components/ProgressBar/ProgressBar.types.d.ts.map +1 -1
  189. package/dist/types/components/ProgressBar/ProgressBarBase.d.ts.map +1 -1
  190. package/dist/types/components/ProgressBar/core/ProgressBar.d.ts.map +1 -1
  191. package/dist/types/components/TagInput/{Taginput.types.d.ts → TagInput.types.d.ts} +1 -1
  192. package/dist/types/components/TagInput/{Taginput.types.d.ts.map → TagInput.types.d.ts.map} +1 -1
  193. package/dist/types/components/TagInput/TagInputBase.d.ts +1 -1
  194. package/dist/types/components/TagInput/core/TagInput.d.ts +6 -0
  195. package/dist/types/components/TagInput/core/{Taginput.d.ts.map → TagInput.d.ts.map} +1 -1
  196. package/dist/types/components/TagInput/next/TagInput.d.ts +1 -1
  197. package/dist/types/index.core.d.ts +2 -2
  198. package/dist/types/index.next.d.ts +1 -1
  199. package/dist/types/public.types.d.ts +2 -2
  200. package/package.json +8 -8
  201. package/dist/core/MessagePopUp.cjs.js +0 -4
  202. package/dist/core/MessagePopUp.cjs.js.map +0 -1
  203. package/dist/core/MessagePopUp.js +0 -5
  204. package/dist/core/MessagePopUp.js.map +0 -1
  205. package/dist/core/ProgressBar-BwjYOqoE.cjs.map +0 -1
  206. package/dist/core/ProgressBar-DaA5vvnq.js.map +0 -1
  207. package/dist/core/Taginput-BXCxdLf0.cjs.map +0 -1
  208. package/dist/core/Taginput-CoxxwLXg.js.map +0 -1
  209. package/dist/next/MessagePopUp.cjs.js +0 -4
  210. package/dist/next/MessagePopUp.cjs.js.map +0 -1
  211. package/dist/next/MessagePopUp.js +0 -5
  212. package/dist/next/MessagePopUp.js.map +0 -1
  213. package/dist/next/ProgressBar-BMuv0kis.cjs +0 -151
  214. package/dist/next/ProgressBar-BMuv0kis.cjs.map +0 -1
  215. package/dist/next/ProgressBar-DuaWQouO.js +0 -152
  216. package/dist/next/ProgressBar-DuaWQouO.js.map +0 -1
  217. package/dist/next/TagInput-DKzxPiwU.js.map +0 -1
  218. package/dist/next/TagInput-DfNJiPKh.cjs.map +0 -1
  219. package/dist/next/image-A4nTeRaX.cjs.map +0 -1
  220. package/dist/next/image-BBS8QO15.js.map +0 -1
  221. package/dist/next/link-CxWP3aXr.js.map +0 -1
  222. package/dist/next/link-lNk_lOdS.cjs.map +0 -1
  223. package/dist/next/navigation-CZU71Pmb.cjs.map +0 -1
  224. package/dist/next/navigation-DxXFNXZM.js.map +0 -1
  225. package/dist/types/components/MessagePopUp/core/MessagePopup.d.ts +0 -6
  226. package/dist/types/components/MessagePopUp/next/MessagePopup.d.ts +0 -5
  227. package/dist/types/components/TagInput/core/Taginput.d.ts +0 -6
  228. /package/dist/types/components/{MessagePopUp → MessagePopup}/MessagePopupBase.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs-CrKRsQf3.cjs","sources":["../../src/components/Breadcrumbs/Breadcrumbs.types.ts","../../src/components/Breadcrumbs/BreadcrumbsBase.tsx","../../src/components/Breadcrumbs/next/Breadcrumbs.tsx"],"sourcesContent":["import {\r\n RoundingType,\r\n ShadowType,\r\n SizeType,\r\n StateType,\r\n ThemeType,\r\n} from \"@/types/types\";\r\n\r\n/**\r\n * A breadcrumb item used to define a single step in the navigation path.\r\n */\r\nexport interface Breadcrumb {\r\n /**\r\n * The display label for the breadcrumb.\r\n */\r\n label: string;\r\n\r\n /**\r\n * Optional URL the breadcrumb should link to.\r\n * If not provided, it is rendered as plain text.\r\n */\r\n href?: string;\r\n}\r\n\r\n/**\r\n * Props for the Breadcrumbs component.\r\n */\r\nexport interface BreadcrumbsProps {\r\n /**\r\n * An array of breadcrumb items.\r\n */\r\n items: Breadcrumb[];\r\n\r\n /**\r\n * Disables interaction and styles as disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Optional custom separator node between breadcrumb items.\r\n * Defaults to a right chevron icon.\r\n */\r\n separator?: React.ReactNode;\r\n\r\n /**\r\n * Theme style to apply to the breadcrumbs\r\n * ('primary' | 'secondary' | 'tertiary' | 'quaternary' | 'clear').\r\n */\r\n theme?: ThemeType;\r\n\r\n /**\r\n * Rounding style to apply to the breadcrumbs\r\n * ('none' | 'small' | 'medium' | 'large' | 'full').\r\n */\r\n rounding?: RoundingType;\r\n\r\n /**\r\n * Shadow style to apply to the breadcrumbs\r\n * ('none' | 'light' | 'medium' | 'strong' | 'intense').\r\n */\r\n shadow?: ShadowType;\r\n\r\n /**\r\n * State of the breadcrumbs\r\n * ('success' | 'error' | 'warning' | 'disabled' | '').\r\n * Used for visual feedback.\r\n */\r\n state?: StateType;\r\n\r\n /**\r\n * Size of the breadcrumbs\r\n * ('xs' | 'small' | 'medium' | 'large' | 'xl').\r\n */\r\n size?: SizeType;\r\n\r\n /**\r\n * Additional class name for custom styling.\r\n */\r\n className?: string;\r\n\r\n /**\r\n * Whether to use the outline style.\r\n */\r\n outline?: boolean;\r\n\r\n /**\r\n * Maximum number of visible items before collapsing into an ellipsis.\r\n */\r\n maxVisible?: number;\r\n\r\n /**\r\n * Optional test ID for testing frameworks.\r\n */\r\n \"data-testid\"?: string;\r\n}\r\n\r\n/**\r\n * Label used to represent collapsed breadcrumb items.\r\n */\r\nexport const ELLIPSIS_LABEL = \"…\";\r\n\r\nexport interface BreadcrumbsBaseProps extends BreadcrumbsProps {\r\n classMap: Record<string, string>;\r\n LinkComponent?: React.ElementType;\r\n ButtonComponent: React.ElementType;\r\n}\r\n","import React, { useMemo, useState } from \"react\";\r\nimport {\r\n Breadcrumb,\r\n BreadcrumbsBaseProps,\r\n ELLIPSIS_LABEL,\r\n} from \"./Breadcrumbs.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { ArrowRightIcon } from \"../../Icons/index\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport const BreadcrumbsBase: React.FC<BreadcrumbsBaseProps> = ({\r\n items,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n separator,\r\n classMap,\r\n disabled = false,\r\n size = getDefaultSize(),\r\n outline = false,\r\n className = \"\",\r\n maxVisible,\r\n LinkComponent = \"a\",\r\n ButtonComponent = \"button\",\r\n \"data-testid\": testId = \"breadcrumbs\",\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const handleExpand = () => setIsExpanded(true);\r\n\r\n if (!items || items.length === 0) return null;\r\n\r\n const visibleItems: Breadcrumb[] = useMemo(() => {\r\n if (isExpanded || !maxVisible || items.length <= maxVisible) return items;\r\n const first = items[0];\r\n const lastItems = items.slice(items.length - (maxVisible - 2));\r\n return [first, { label: ELLIPSIS_LABEL }, ...lastItems];\r\n }, [items, isExpanded, maxVisible]);\r\n\r\n const breadcrumbsClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.breadcrumbs,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n disabled && classMap.disabled,\r\n outline && classMap.outline,\r\n className\r\n ),\r\n [\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n disabled,\r\n outline,\r\n className,\r\n classMap,\r\n ]\r\n );\r\n\r\n return (\r\n <nav\r\n aria-label=\"Breadcrumb\"\r\n data-testid={testId ? `${testId}-nav-container` : undefined}\r\n className={breadcrumbsClass}\r\n >\r\n <ol\r\n className={classMap.list}\r\n data-testid={testId ? `${testId}-nav-list` : undefined}\r\n itemScope\r\n itemType=\"https://schema.org/BreadcrumbList\"\r\n >\r\n {visibleItems.map((item, index) => {\r\n const isLast = index === visibleItems.length - 1;\r\n const isEllipsis = item.label === ELLIPSIS_LABEL;\r\n\r\n const itemClassName = combineClassNames(\r\n classMap.item,\r\n isExpanded && !isEllipsis && classMap.item_animate,\r\n isLast && classMap.item_active\r\n );\r\n\r\n return (\r\n <li\r\n data-testid={testId ? `${testId}-nav-item` : undefined}\r\n key={`${item.label}-${item.href ?? index}`}\r\n className={itemClassName}\r\n itemProp=\"itemListElement\"\r\n itemScope\r\n itemType=\"https://schema.org/ListItem\"\r\n >\r\n {isEllipsis ? (\r\n <ButtonComponent\r\n theme=\"clear\"\r\n size=\"xs\"\r\n className={classMap.ellipsis}\r\n aria-label=\"Show all breadcrumbs\"\r\n aria-expanded={isExpanded}\r\n onClick={disabled ? undefined : handleExpand}\r\n disabled={disabled}\r\n tabIndex={disabled ? -1 : 0}\r\n data-testid={testId ? `${testId}-ellipsis` : undefined}\r\n >\r\n {item.label}\r\n </ButtonComponent>\r\n ) : item.href && !isLast ? (\r\n disabled ? (\r\n // Disabled: render non-interactive label for links\r\n <span\r\n className={classMap.link_disabled}\r\n title={item.label}\r\n itemProp=\"name\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-label` : undefined\r\n }\r\n >\r\n {item.label}\r\n </span>\r\n ) : (\r\n <LinkComponent\r\n href={item.href}\r\n className={classMap.link}\r\n title={item.label}\r\n itemProp=\"item\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-label` : undefined\r\n }\r\n >\r\n <span itemProp=\"name\" className={classMap.link_label}>\r\n {item.label}\r\n </span>\r\n </LinkComponent>\r\n )\r\n ) : (\r\n <span\r\n className={classMap.current}\r\n itemProp=\"name\"\r\n aria-current=\"page\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-current` : undefined\r\n }\r\n >\r\n {item.label}\r\n </span>\r\n )}\r\n\r\n {!isLast && (\r\n <span className={classMap.separator} aria-hidden=\"true\">\r\n {separator ?? <ArrowRightIcon />}\r\n </span>\r\n )}\r\n <meta itemProp=\"position\" content={`${index + 1}`} />\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n </nav>\r\n );\r\n};\r\n\r\nBreadcrumbsBase.displayName = \"BreadcrumbsBase\";\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Link from \"next/link\";\r\nimport styles from \"./Breadcrumbs.module.scss\";\r\nimport { BreadcrumbsBase } from \"../BreadcrumbsBase\";\r\nimport { BreadcrumbsProps } from \"../Breadcrumbs.types\";\r\nimport { Button } from \"../../../index.next\";\r\n\r\nconst Breadcrumbs: React.FC<BreadcrumbsProps> = (props) => {\r\n return (\r\n <BreadcrumbsBase\r\n {...props}\r\n classMap={styles}\r\n LinkComponent={Link}\r\n ButtonComponent={Button}\r\n />\r\n );\r\n};\r\nBreadcrumbs.displayName = \"Breadcrumbs\";\r\nexport default Breadcrumbs;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","separator","disabled","getDefaultSize","outline","useState","useMemo","combineClassNames","capitalize","jsx","item","jsxs","ArrowRightIcon","Link","Button"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGO,MAAM,iBAAiB;ACnFvB,MAAM,kBAAkD,CAAC;AAAA,EAC9D;AAAA,EACA,QAAQA,kBAAAA,gBAAA;AAAA,EACR,WAAWC,kBAAAA,mBAAA;AAAA,EACX,SAASC,kBAAAA,iBAAA;AAAA,EACT,QAAQ;AAAA,EACR,WAAAC;AAAA,EACA;AAAA,EACA,UAAAC,YAAW;AAAA,EACX,OAAOC,kBAAAA,eAAA;AAAA,EACP,SAAAC,WAAU;AAAA,EACV,YAAY;AAAA,EACZ;AAAA,EACA,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,eAAe,SAAS;AAC1B,MAAM;AACJ,QAAM,CAAC,YAAY,aAAa,IAAIC,MAAAA,SAAS,KAAK;AAClD,QAAM,eAAe,MAAM,cAAc,IAAI;AAE7C,MAAI,CAAC,SAAS,MAAM,WAAW,EAAG,QAAO;AAEzC,QAAM,eAA6BC,MAAAA,QAAQ,MAAM;AAC/C,QAAI,cAAc,CAAC,cAAc,MAAM,UAAU,WAAY,QAAO;AACpE,UAAM,QAAQ,MAAM,CAAC;AACrB,UAAM,YAAY,MAAM,MAAM,MAAM,UAAU,aAAa,EAAE;AAC7D,WAAO,CAAC,OAAO,EAAE,OAAO,eAAA,GAAkB,GAAG,SAAS;AAAA,EACxD,GAAG,CAAC,OAAO,YAAY,UAAU,CAAC;AAElC,QAAM,mBAAmBA,MAAAA;AAAAA,IACvB,MACEC,WAAAA;AAAAA,MACE,SAAS;AAAA,MACT,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,SAAS,IAAI;AAAA,MACb,UAAU,SAAS,SAASC,WAAAA,WAAW,MAAM,CAAC,EAAE;AAAA,MAChD,YAAY,SAAS,QAAQA,WAAAA,WAAW,QAAQ,CAAC,EAAE;AAAA,MACnDN,aAAY,SAAS;AAAA,MACrBE,YAAW,SAAS;AAAA,MACpB;AAAA,IAAA;AAAA,IAEJ;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAF;AAAA,MACAE;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EACF;AAGF,SACEK,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,cAAW;AAAA,MACX,eAAa,SAAS,GAAG,MAAM,mBAAmB;AAAA,MAClD,WAAW;AAAA,MAEX,UAAAA,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,SAAS;AAAA,UACpB,eAAa,SAAS,GAAG,MAAM,cAAc;AAAA,UAC7C,WAAS;AAAA,UACT,UAAS;AAAA,UAER,UAAA,aAAa,IAAI,CAACC,OAAM,UAAU;AACjC,kBAAM,SAAS,UAAU,aAAa,SAAS;AAC/C,kBAAM,aAAaA,MAAK,UAAU;AAElC,kBAAM,gBAAgBH,WAAAA;AAAAA,cACpB,SAAS;AAAA,cACT,cAAc,CAAC,cAAc,SAAS;AAAA,cACtC,UAAU,SAAS;AAAA,YAAA;AAGrB,mBACEI,2BAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,eAAa,SAAS,GAAG,MAAM,cAAc;AAAA,gBAE7C,WAAW;AAAA,gBACX,UAAS;AAAA,gBACT,WAAS;AAAA,gBACT,UAAS;AAAA,gBAER,UAAA;AAAA,kBAAA,aACCF,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,OAAM;AAAA,sBACN,MAAK;AAAA,sBACL,WAAW,SAAS;AAAA,sBACpB,cAAW;AAAA,sBACX,iBAAe;AAAA,sBACf,SAASP,YAAW,SAAY;AAAA,sBAChC,UAAAA;AAAA,sBACA,UAAUA,YAAW,KAAK;AAAA,sBAC1B,eAAa,SAAS,GAAG,MAAM,cAAc;AAAA,sBAE5C,UAAAQ,MAAK;AAAA,oBAAA;AAAA,kBAAA,IAENA,MAAK,QAAQ,CAAC,SAChBR;AAAA;AAAA,oBAEEO,2BAAAA;AAAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,WAAW,SAAS;AAAA,wBACpB,OAAOC,MAAK;AAAA,wBACZ,UAAS;AAAA,wBACT,eACE,SAAS,GAAG,MAAM,oBAAoB;AAAA,wBAGvC,UAAAA,MAAK;AAAA,sBAAA;AAAA,oBAAA;AAAA,sBAGRD,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,MAAMC,MAAK;AAAA,sBACX,WAAW,SAAS;AAAA,sBACpB,OAAOA,MAAK;AAAA,sBACZ,UAAS;AAAA,sBACT,eACE,SAAS,GAAG,MAAM,oBAAoB;AAAA,sBAGxC,UAAAD,2BAAAA,IAAC,UAAK,UAAS,QAAO,WAAW,SAAS,YACvC,gBAAK,MAAA,CACR;AAAA,oBAAA;AAAA,kBAAA,IAIJA,2BAAAA;AAAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAW,SAAS;AAAA,sBACpB,UAAS;AAAA,sBACT,gBAAa;AAAA,sBACb,eACE,SAAS,GAAG,MAAM,sBAAsB;AAAA,sBAGzC,UAAAC,MAAK;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAIT,CAAC,UACAD,2BAAAA,IAAC,QAAA,EAAK,WAAW,SAAS,WAAW,eAAY,QAC9C,UAAAR,cAAaQ,2BAAAA,IAACG,eAAAA,gBAAA,CAAA,CAAe,GAChC;AAAA,kBAEFH,+BAAC,UAAK,UAAS,YAAW,SAAS,GAAG,QAAQ,CAAC,GAAA,CAAI;AAAA,gBAAA;AAAA,cAAA;AAAA,cAlE9C,GAAGC,MAAK,KAAK,IAAIA,MAAK,QAAQ,KAAK;AAAA,YAAA;AAAA,UAqE9C,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAGN;AAEA,gBAAgB,cAAc;AClK9B,MAAM,cAA0C,CAAC,UAAU;AACzD,SACED,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,UAAU;AAAA,MACV,eAAeI,OAAAA;AAAAA,MACf,iBAAiBC,OAAAA;AAAAA,IAAA;AAAA,EAAA;AAGvB;AACA,YAAY,cAAc;;;"}
1
+ {"version":3,"file":"Breadcrumbs-BlFi63K8.cjs","sources":["../../src/components/Breadcrumbs/Breadcrumbs.types.ts","../../src/components/Breadcrumbs/BreadcrumbsBase.tsx","../../src/components/Breadcrumbs/next/Breadcrumbs.tsx"],"sourcesContent":["import {\r\n RoundingType,\r\n ShadowType,\r\n SizeType,\r\n StateType,\r\n ThemeType,\r\n} from \"@/types/types\";\r\n\r\n/**\r\n * A breadcrumb item used to define a single step in the navigation path.\r\n */\r\nexport interface Breadcrumb {\r\n /**\r\n * The display label for the breadcrumb.\r\n */\r\n label: string;\r\n\r\n /**\r\n * Optional URL the breadcrumb should link to.\r\n * If not provided, it is rendered as plain text.\r\n */\r\n href?: string;\r\n}\r\n\r\n/**\r\n * Props for the Breadcrumbs component.\r\n */\r\nexport interface BreadcrumbsProps {\r\n /**\r\n * An array of breadcrumb items.\r\n */\r\n items: Breadcrumb[];\r\n\r\n /**\r\n * Disables interaction and styles as disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Optional custom separator node between breadcrumb items.\r\n * Defaults to a right chevron icon.\r\n */\r\n separator?: React.ReactNode;\r\n\r\n /**\r\n * Theme style to apply to the breadcrumbs\r\n * ('primary' | 'secondary' | 'tertiary' | 'quaternary' | 'clear').\r\n */\r\n theme?: ThemeType;\r\n\r\n /**\r\n * Rounding style to apply to the breadcrumbs\r\n * ('none' | 'small' | 'medium' | 'large' | 'full').\r\n */\r\n rounding?: RoundingType;\r\n\r\n /**\r\n * Shadow style to apply to the breadcrumbs\r\n * ('none' | 'light' | 'medium' | 'strong' | 'intense').\r\n */\r\n shadow?: ShadowType;\r\n\r\n /**\r\n * State of the breadcrumbs\r\n * ('success' | 'error' | 'warning' | 'disabled' | '').\r\n * Used for visual feedback.\r\n */\r\n state?: StateType;\r\n\r\n /**\r\n * Size of the breadcrumbs\r\n * ('xs' | 'small' | 'medium' | 'large' | 'xl').\r\n */\r\n size?: SizeType;\r\n\r\n /**\r\n * Additional class name for custom styling.\r\n */\r\n className?: string;\r\n\r\n /**\r\n * Whether to use the outline style.\r\n */\r\n outline?: boolean;\r\n\r\n /**\r\n * Maximum number of visible items before collapsing into an ellipsis.\r\n */\r\n maxVisible?: number;\r\n\r\n /**\r\n * Optional test ID for testing frameworks.\r\n */\r\n \"data-testid\"?: string;\r\n}\r\n\r\n/**\r\n * Label used to represent collapsed breadcrumb items.\r\n */\r\nexport const ELLIPSIS_LABEL = \"…\";\r\n\r\nexport interface BreadcrumbsBaseProps extends BreadcrumbsProps {\r\n classMap: Record<string, string>;\r\n LinkComponent?: React.ElementType;\r\n ButtonComponent: React.ElementType;\r\n}\r\n","import React, { useMemo, useState } from \"react\";\r\nimport {\r\n Breadcrumb,\r\n BreadcrumbsBaseProps,\r\n ELLIPSIS_LABEL,\r\n} from \"./Breadcrumbs.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { ArrowRightIcon } from \"../../Icons/index\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport const BreadcrumbsBase: React.FC<BreadcrumbsBaseProps> = ({\r\n items,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n separator,\r\n classMap,\r\n disabled = false,\r\n size = getDefaultSize(),\r\n outline = false,\r\n className = \"\",\r\n maxVisible,\r\n LinkComponent = \"a\",\r\n ButtonComponent = \"button\",\r\n \"data-testid\": testId = \"breadcrumbs\",\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const handleExpand = () => setIsExpanded(true);\r\n\r\n if (!items || items.length === 0) return null;\r\n\r\n const visibleItems: Breadcrumb[] = useMemo(() => {\r\n if (isExpanded || !maxVisible || items.length <= maxVisible) return items;\r\n const first = items[0];\r\n const lastItems = items.slice(items.length - (maxVisible - 2));\r\n return [first, { label: ELLIPSIS_LABEL }, ...lastItems];\r\n }, [items, isExpanded, maxVisible]);\r\n\r\n const breadcrumbsClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.breadcrumbs,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n disabled && classMap.disabled,\r\n outline && classMap.outline,\r\n className\r\n ),\r\n [\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n disabled,\r\n outline,\r\n className,\r\n classMap,\r\n ]\r\n );\r\n\r\n return (\r\n <nav\r\n aria-label=\"Breadcrumb\"\r\n data-testid={testId ? `${testId}-nav-container` : undefined}\r\n className={breadcrumbsClass}\r\n >\r\n <ol\r\n className={classMap.list}\r\n data-testid={testId ? `${testId}-nav-list` : undefined}\r\n itemScope\r\n itemType=\"https://schema.org/BreadcrumbList\"\r\n >\r\n {visibleItems.map((item, index) => {\r\n const isLast = index === visibleItems.length - 1;\r\n const isEllipsis = item.label === ELLIPSIS_LABEL;\r\n\r\n const itemClassName = combineClassNames(\r\n classMap.item,\r\n isExpanded && !isEllipsis && classMap.item_animate,\r\n isLast && classMap.item_active\r\n );\r\n\r\n return (\r\n <li\r\n data-testid={testId ? `${testId}-nav-item` : undefined}\r\n key={`${item.label}-${item.href ?? index}`}\r\n className={itemClassName}\r\n itemProp=\"itemListElement\"\r\n itemScope\r\n itemType=\"https://schema.org/ListItem\"\r\n >\r\n {isEllipsis ? (\r\n <ButtonComponent\r\n theme=\"clear\"\r\n size=\"xs\"\r\n className={classMap.ellipsis}\r\n aria-label=\"Show all breadcrumbs\"\r\n aria-expanded={isExpanded}\r\n onClick={disabled ? undefined : handleExpand}\r\n disabled={disabled}\r\n tabIndex={disabled ? -1 : 0}\r\n data-testid={testId ? `${testId}-ellipsis` : undefined}\r\n >\r\n {item.label}\r\n </ButtonComponent>\r\n ) : item.href && !isLast ? (\r\n disabled ? (\r\n // Disabled: render non-interactive label for links\r\n <span\r\n className={classMap.link_disabled}\r\n title={item.label}\r\n itemProp=\"name\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-label` : undefined\r\n }\r\n >\r\n {item.label}\r\n </span>\r\n ) : (\r\n <LinkComponent\r\n href={item.href}\r\n className={classMap.link}\r\n title={item.label}\r\n itemProp=\"item\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-label` : undefined\r\n }\r\n >\r\n <span itemProp=\"name\" className={classMap.link_label}>\r\n {item.label}\r\n </span>\r\n </LinkComponent>\r\n )\r\n ) : (\r\n <span\r\n className={classMap.current}\r\n itemProp=\"name\"\r\n aria-current=\"page\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-current` : undefined\r\n }\r\n >\r\n {item.label}\r\n </span>\r\n )}\r\n\r\n {!isLast && (\r\n <span className={classMap.separator} aria-hidden=\"true\">\r\n {separator ?? <ArrowRightIcon />}\r\n </span>\r\n )}\r\n <meta itemProp=\"position\" content={`${index + 1}`} />\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n </nav>\r\n );\r\n};\r\n\r\nBreadcrumbsBase.displayName = \"BreadcrumbsBase\";\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Link from \"next/link\";\r\nimport styles from \"./Breadcrumbs.module.scss\";\r\nimport { BreadcrumbsBase } from \"../BreadcrumbsBase\";\r\nimport { BreadcrumbsProps } from \"../Breadcrumbs.types\";\r\nimport { Button } from \"../../../index.next\";\r\n\r\nconst Breadcrumbs: React.FC<BreadcrumbsProps> = (props) => {\r\n return (\r\n <BreadcrumbsBase\r\n {...props}\r\n classMap={styles}\r\n LinkComponent={Link}\r\n ButtonComponent={Button}\r\n />\r\n );\r\n};\r\nBreadcrumbs.displayName = \"Breadcrumbs\";\r\nexport default Breadcrumbs;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","separator","disabled","getDefaultSize","outline","useState","useMemo","combineClassNames","capitalize","jsx","item","jsxs","ArrowRightIcon","Link","Button"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { L as Link } from "./link-CxWP3aXr.js";
2
+ import { L as Link } from "./link-CyxHztrS.js";
3
3
  import { useState, useMemo } from "react";
4
4
  import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
5
5
  import { A as ArrowRightIcon } from "./ArrowRightIcon-BYQv5XS8.js";
6
6
  import { c as capitalize } from "./capitalize-C0TSQSPh.js";
7
7
  import { a as getDefaultRounding, b as getDefaultShadow, c as getDefaultSize, d as getDefaultTheme } from "./boreal-style-config-BILmxkZG.js";
8
8
  /* empty css */
9
- import { B as Button } from "./Button-qs4m4zx0.js";
9
+ import { B as Button } from "./Button-DhH3Gy0J.js";
10
10
  const breadcrumbs = "_breadcrumbs_1c6om_85";
11
11
  const ellipsis = "_ellipsis_1c6om_111";
12
12
  const roundNone = "_roundNone_1c6om_115";
@@ -236,4 +236,4 @@ export {
236
236
  Breadcrumbs as B,
237
237
  ELLIPSIS_LABEL as E
238
238
  };
239
- //# sourceMappingURL=Breadcrumbs-ZK64MIGd.js.map
239
+ //# sourceMappingURL=Breadcrumbs-D9BMYEZi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs-ZK64MIGd.js","sources":["../../src/components/Breadcrumbs/Breadcrumbs.types.ts","../../src/components/Breadcrumbs/BreadcrumbsBase.tsx","../../src/components/Breadcrumbs/next/Breadcrumbs.tsx"],"sourcesContent":["import {\r\n RoundingType,\r\n ShadowType,\r\n SizeType,\r\n StateType,\r\n ThemeType,\r\n} from \"@/types/types\";\r\n\r\n/**\r\n * A breadcrumb item used to define a single step in the navigation path.\r\n */\r\nexport interface Breadcrumb {\r\n /**\r\n * The display label for the breadcrumb.\r\n */\r\n label: string;\r\n\r\n /**\r\n * Optional URL the breadcrumb should link to.\r\n * If not provided, it is rendered as plain text.\r\n */\r\n href?: string;\r\n}\r\n\r\n/**\r\n * Props for the Breadcrumbs component.\r\n */\r\nexport interface BreadcrumbsProps {\r\n /**\r\n * An array of breadcrumb items.\r\n */\r\n items: Breadcrumb[];\r\n\r\n /**\r\n * Disables interaction and styles as disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Optional custom separator node between breadcrumb items.\r\n * Defaults to a right chevron icon.\r\n */\r\n separator?: React.ReactNode;\r\n\r\n /**\r\n * Theme style to apply to the breadcrumbs\r\n * ('primary' | 'secondary' | 'tertiary' | 'quaternary' | 'clear').\r\n */\r\n theme?: ThemeType;\r\n\r\n /**\r\n * Rounding style to apply to the breadcrumbs\r\n * ('none' | 'small' | 'medium' | 'large' | 'full').\r\n */\r\n rounding?: RoundingType;\r\n\r\n /**\r\n * Shadow style to apply to the breadcrumbs\r\n * ('none' | 'light' | 'medium' | 'strong' | 'intense').\r\n */\r\n shadow?: ShadowType;\r\n\r\n /**\r\n * State of the breadcrumbs\r\n * ('success' | 'error' | 'warning' | 'disabled' | '').\r\n * Used for visual feedback.\r\n */\r\n state?: StateType;\r\n\r\n /**\r\n * Size of the breadcrumbs\r\n * ('xs' | 'small' | 'medium' | 'large' | 'xl').\r\n */\r\n size?: SizeType;\r\n\r\n /**\r\n * Additional class name for custom styling.\r\n */\r\n className?: string;\r\n\r\n /**\r\n * Whether to use the outline style.\r\n */\r\n outline?: boolean;\r\n\r\n /**\r\n * Maximum number of visible items before collapsing into an ellipsis.\r\n */\r\n maxVisible?: number;\r\n\r\n /**\r\n * Optional test ID for testing frameworks.\r\n */\r\n \"data-testid\"?: string;\r\n}\r\n\r\n/**\r\n * Label used to represent collapsed breadcrumb items.\r\n */\r\nexport const ELLIPSIS_LABEL = \"…\";\r\n\r\nexport interface BreadcrumbsBaseProps extends BreadcrumbsProps {\r\n classMap: Record<string, string>;\r\n LinkComponent?: React.ElementType;\r\n ButtonComponent: React.ElementType;\r\n}\r\n","import React, { useMemo, useState } from \"react\";\r\nimport {\r\n Breadcrumb,\r\n BreadcrumbsBaseProps,\r\n ELLIPSIS_LABEL,\r\n} from \"./Breadcrumbs.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { ArrowRightIcon } from \"../../Icons/index\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport const BreadcrumbsBase: React.FC<BreadcrumbsBaseProps> = ({\r\n items,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n separator,\r\n classMap,\r\n disabled = false,\r\n size = getDefaultSize(),\r\n outline = false,\r\n className = \"\",\r\n maxVisible,\r\n LinkComponent = \"a\",\r\n ButtonComponent = \"button\",\r\n \"data-testid\": testId = \"breadcrumbs\",\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const handleExpand = () => setIsExpanded(true);\r\n\r\n if (!items || items.length === 0) return null;\r\n\r\n const visibleItems: Breadcrumb[] = useMemo(() => {\r\n if (isExpanded || !maxVisible || items.length <= maxVisible) return items;\r\n const first = items[0];\r\n const lastItems = items.slice(items.length - (maxVisible - 2));\r\n return [first, { label: ELLIPSIS_LABEL }, ...lastItems];\r\n }, [items, isExpanded, maxVisible]);\r\n\r\n const breadcrumbsClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.breadcrumbs,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n disabled && classMap.disabled,\r\n outline && classMap.outline,\r\n className\r\n ),\r\n [\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n disabled,\r\n outline,\r\n className,\r\n classMap,\r\n ]\r\n );\r\n\r\n return (\r\n <nav\r\n aria-label=\"Breadcrumb\"\r\n data-testid={testId ? `${testId}-nav-container` : undefined}\r\n className={breadcrumbsClass}\r\n >\r\n <ol\r\n className={classMap.list}\r\n data-testid={testId ? `${testId}-nav-list` : undefined}\r\n itemScope\r\n itemType=\"https://schema.org/BreadcrumbList\"\r\n >\r\n {visibleItems.map((item, index) => {\r\n const isLast = index === visibleItems.length - 1;\r\n const isEllipsis = item.label === ELLIPSIS_LABEL;\r\n\r\n const itemClassName = combineClassNames(\r\n classMap.item,\r\n isExpanded && !isEllipsis && classMap.item_animate,\r\n isLast && classMap.item_active\r\n );\r\n\r\n return (\r\n <li\r\n data-testid={testId ? `${testId}-nav-item` : undefined}\r\n key={`${item.label}-${item.href ?? index}`}\r\n className={itemClassName}\r\n itemProp=\"itemListElement\"\r\n itemScope\r\n itemType=\"https://schema.org/ListItem\"\r\n >\r\n {isEllipsis ? (\r\n <ButtonComponent\r\n theme=\"clear\"\r\n size=\"xs\"\r\n className={classMap.ellipsis}\r\n aria-label=\"Show all breadcrumbs\"\r\n aria-expanded={isExpanded}\r\n onClick={disabled ? undefined : handleExpand}\r\n disabled={disabled}\r\n tabIndex={disabled ? -1 : 0}\r\n data-testid={testId ? `${testId}-ellipsis` : undefined}\r\n >\r\n {item.label}\r\n </ButtonComponent>\r\n ) : item.href && !isLast ? (\r\n disabled ? (\r\n // Disabled: render non-interactive label for links\r\n <span\r\n className={classMap.link_disabled}\r\n title={item.label}\r\n itemProp=\"name\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-label` : undefined\r\n }\r\n >\r\n {item.label}\r\n </span>\r\n ) : (\r\n <LinkComponent\r\n href={item.href}\r\n className={classMap.link}\r\n title={item.label}\r\n itemProp=\"item\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-label` : undefined\r\n }\r\n >\r\n <span itemProp=\"name\" className={classMap.link_label}>\r\n {item.label}\r\n </span>\r\n </LinkComponent>\r\n )\r\n ) : (\r\n <span\r\n className={classMap.current}\r\n itemProp=\"name\"\r\n aria-current=\"page\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-current` : undefined\r\n }\r\n >\r\n {item.label}\r\n </span>\r\n )}\r\n\r\n {!isLast && (\r\n <span className={classMap.separator} aria-hidden=\"true\">\r\n {separator ?? <ArrowRightIcon />}\r\n </span>\r\n )}\r\n <meta itemProp=\"position\" content={`${index + 1}`} />\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n </nav>\r\n );\r\n};\r\n\r\nBreadcrumbsBase.displayName = \"BreadcrumbsBase\";\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Link from \"next/link\";\r\nimport styles from \"./Breadcrumbs.module.scss\";\r\nimport { BreadcrumbsBase } from \"../BreadcrumbsBase\";\r\nimport { BreadcrumbsProps } from \"../Breadcrumbs.types\";\r\nimport { Button } from \"../../../index.next\";\r\n\r\nconst Breadcrumbs: React.FC<BreadcrumbsProps> = (props) => {\r\n return (\r\n <BreadcrumbsBase\r\n {...props}\r\n classMap={styles}\r\n LinkComponent={Link}\r\n ButtonComponent={Button}\r\n />\r\n );\r\n};\r\nBreadcrumbs.displayName = \"Breadcrumbs\";\r\nexport default Breadcrumbs;\r\n"],"names":["separator","disabled","outline","item"],"mappings":"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"}
1
+ {"version":3,"file":"Breadcrumbs-D9BMYEZi.js","sources":["../../src/components/Breadcrumbs/Breadcrumbs.types.ts","../../src/components/Breadcrumbs/BreadcrumbsBase.tsx","../../src/components/Breadcrumbs/next/Breadcrumbs.tsx"],"sourcesContent":["import {\r\n RoundingType,\r\n ShadowType,\r\n SizeType,\r\n StateType,\r\n ThemeType,\r\n} from \"@/types/types\";\r\n\r\n/**\r\n * A breadcrumb item used to define a single step in the navigation path.\r\n */\r\nexport interface Breadcrumb {\r\n /**\r\n * The display label for the breadcrumb.\r\n */\r\n label: string;\r\n\r\n /**\r\n * Optional URL the breadcrumb should link to.\r\n * If not provided, it is rendered as plain text.\r\n */\r\n href?: string;\r\n}\r\n\r\n/**\r\n * Props for the Breadcrumbs component.\r\n */\r\nexport interface BreadcrumbsProps {\r\n /**\r\n * An array of breadcrumb items.\r\n */\r\n items: Breadcrumb[];\r\n\r\n /**\r\n * Disables interaction and styles as disabled.\r\n */\r\n disabled?: boolean;\r\n\r\n /**\r\n * Optional custom separator node between breadcrumb items.\r\n * Defaults to a right chevron icon.\r\n */\r\n separator?: React.ReactNode;\r\n\r\n /**\r\n * Theme style to apply to the breadcrumbs\r\n * ('primary' | 'secondary' | 'tertiary' | 'quaternary' | 'clear').\r\n */\r\n theme?: ThemeType;\r\n\r\n /**\r\n * Rounding style to apply to the breadcrumbs\r\n * ('none' | 'small' | 'medium' | 'large' | 'full').\r\n */\r\n rounding?: RoundingType;\r\n\r\n /**\r\n * Shadow style to apply to the breadcrumbs\r\n * ('none' | 'light' | 'medium' | 'strong' | 'intense').\r\n */\r\n shadow?: ShadowType;\r\n\r\n /**\r\n * State of the breadcrumbs\r\n * ('success' | 'error' | 'warning' | 'disabled' | '').\r\n * Used for visual feedback.\r\n */\r\n state?: StateType;\r\n\r\n /**\r\n * Size of the breadcrumbs\r\n * ('xs' | 'small' | 'medium' | 'large' | 'xl').\r\n */\r\n size?: SizeType;\r\n\r\n /**\r\n * Additional class name for custom styling.\r\n */\r\n className?: string;\r\n\r\n /**\r\n * Whether to use the outline style.\r\n */\r\n outline?: boolean;\r\n\r\n /**\r\n * Maximum number of visible items before collapsing into an ellipsis.\r\n */\r\n maxVisible?: number;\r\n\r\n /**\r\n * Optional test ID for testing frameworks.\r\n */\r\n \"data-testid\"?: string;\r\n}\r\n\r\n/**\r\n * Label used to represent collapsed breadcrumb items.\r\n */\r\nexport const ELLIPSIS_LABEL = \"…\";\r\n\r\nexport interface BreadcrumbsBaseProps extends BreadcrumbsProps {\r\n classMap: Record<string, string>;\r\n LinkComponent?: React.ElementType;\r\n ButtonComponent: React.ElementType;\r\n}\r\n","import React, { useMemo, useState } from \"react\";\r\nimport {\r\n Breadcrumb,\r\n BreadcrumbsBaseProps,\r\n ELLIPSIS_LABEL,\r\n} from \"./Breadcrumbs.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { ArrowRightIcon } from \"../../Icons/index\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nexport const BreadcrumbsBase: React.FC<BreadcrumbsBaseProps> = ({\r\n items,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n separator,\r\n classMap,\r\n disabled = false,\r\n size = getDefaultSize(),\r\n outline = false,\r\n className = \"\",\r\n maxVisible,\r\n LinkComponent = \"a\",\r\n ButtonComponent = \"button\",\r\n \"data-testid\": testId = \"breadcrumbs\",\r\n}) => {\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const handleExpand = () => setIsExpanded(true);\r\n\r\n if (!items || items.length === 0) return null;\r\n\r\n const visibleItems: Breadcrumb[] = useMemo(() => {\r\n if (isExpanded || !maxVisible || items.length <= maxVisible) return items;\r\n const first = items[0];\r\n const lastItems = items.slice(items.length - (maxVisible - 2));\r\n return [first, { label: ELLIPSIS_LABEL }, ...lastItems];\r\n }, [items, isExpanded, maxVisible]);\r\n\r\n const breadcrumbsClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.breadcrumbs,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n disabled && classMap.disabled,\r\n outline && classMap.outline,\r\n className\r\n ),\r\n [\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n disabled,\r\n outline,\r\n className,\r\n classMap,\r\n ]\r\n );\r\n\r\n return (\r\n <nav\r\n aria-label=\"Breadcrumb\"\r\n data-testid={testId ? `${testId}-nav-container` : undefined}\r\n className={breadcrumbsClass}\r\n >\r\n <ol\r\n className={classMap.list}\r\n data-testid={testId ? `${testId}-nav-list` : undefined}\r\n itemScope\r\n itemType=\"https://schema.org/BreadcrumbList\"\r\n >\r\n {visibleItems.map((item, index) => {\r\n const isLast = index === visibleItems.length - 1;\r\n const isEllipsis = item.label === ELLIPSIS_LABEL;\r\n\r\n const itemClassName = combineClassNames(\r\n classMap.item,\r\n isExpanded && !isEllipsis && classMap.item_animate,\r\n isLast && classMap.item_active\r\n );\r\n\r\n return (\r\n <li\r\n data-testid={testId ? `${testId}-nav-item` : undefined}\r\n key={`${item.label}-${item.href ?? index}`}\r\n className={itemClassName}\r\n itemProp=\"itemListElement\"\r\n itemScope\r\n itemType=\"https://schema.org/ListItem\"\r\n >\r\n {isEllipsis ? (\r\n <ButtonComponent\r\n theme=\"clear\"\r\n size=\"xs\"\r\n className={classMap.ellipsis}\r\n aria-label=\"Show all breadcrumbs\"\r\n aria-expanded={isExpanded}\r\n onClick={disabled ? undefined : handleExpand}\r\n disabled={disabled}\r\n tabIndex={disabled ? -1 : 0}\r\n data-testid={testId ? `${testId}-ellipsis` : undefined}\r\n >\r\n {item.label}\r\n </ButtonComponent>\r\n ) : item.href && !isLast ? (\r\n disabled ? (\r\n // Disabled: render non-interactive label for links\r\n <span\r\n className={classMap.link_disabled}\r\n title={item.label}\r\n itemProp=\"name\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-label` : undefined\r\n }\r\n >\r\n {item.label}\r\n </span>\r\n ) : (\r\n <LinkComponent\r\n href={item.href}\r\n className={classMap.link}\r\n title={item.label}\r\n itemProp=\"item\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-label` : undefined\r\n }\r\n >\r\n <span itemProp=\"name\" className={classMap.link_label}>\r\n {item.label}\r\n </span>\r\n </LinkComponent>\r\n )\r\n ) : (\r\n <span\r\n className={classMap.current}\r\n itemProp=\"name\"\r\n aria-current=\"page\"\r\n data-testid={\r\n testId ? `${testId}-nav-item-current` : undefined\r\n }\r\n >\r\n {item.label}\r\n </span>\r\n )}\r\n\r\n {!isLast && (\r\n <span className={classMap.separator} aria-hidden=\"true\">\r\n {separator ?? <ArrowRightIcon />}\r\n </span>\r\n )}\r\n <meta itemProp=\"position\" content={`${index + 1}`} />\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n </nav>\r\n );\r\n};\r\n\r\nBreadcrumbsBase.displayName = \"BreadcrumbsBase\";\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Link from \"next/link\";\r\nimport styles from \"./Breadcrumbs.module.scss\";\r\nimport { BreadcrumbsBase } from \"../BreadcrumbsBase\";\r\nimport { BreadcrumbsProps } from \"../Breadcrumbs.types\";\r\nimport { Button } from \"../../../index.next\";\r\n\r\nconst Breadcrumbs: React.FC<BreadcrumbsProps> = (props) => {\r\n return (\r\n <BreadcrumbsBase\r\n {...props}\r\n classMap={styles}\r\n LinkComponent={Link}\r\n ButtonComponent={Button}\r\n />\r\n );\r\n};\r\nBreadcrumbs.displayName = \"Breadcrumbs\";\r\nexport default Breadcrumbs;\r\n"],"names":["separator","disabled","outline","item"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const Breadcrumbs = require("./Breadcrumbs-CrKRsQf3.cjs");
3
+ const Breadcrumbs = require("./Breadcrumbs-BlFi63K8.cjs");
4
4
  exports.ELLIPSIS_LABEL = Breadcrumbs.ELLIPSIS_LABEL;
5
5
  exports.default = Breadcrumbs.Breadcrumbs;
6
6
  //# sourceMappingURL=Breadcrumbs.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { E, B } from "./Breadcrumbs-ZK64MIGd.js";
1
+ import { E, B } from "./Breadcrumbs-D9BMYEZi.js";
2
2
  export {
3
3
  E as ELLIPSIS_LABEL,
4
4
  B as default
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  const require$$2 = require("react/jsx-runtime");
3
3
  const React = require("react");
4
- const link = require("./link-lNk_lOdS.cjs");
4
+ const link = require("./link-B1N-q38H.cjs");
5
5
  const classNames = require("./classNames-BcWMx052.cjs");
6
6
  const capitalize = require("./capitalize-DoV-nOmN.cjs");
7
7
  const borealStyleConfig = require("./boreal-style-config-Rr5d5Qts.cjs");
@@ -228,4 +228,4 @@ ButtonBase.displayName = "ButtonBase";
228
228
  const Button = React.forwardRef((props, ref) => /* @__PURE__ */ require$$2.jsx(ButtonBase, { ...props, classMap: styles, LinkComponent: link.Link, ref }));
229
229
  Button.displayName = "Button";
230
230
  exports.Button = Button;
231
- //# sourceMappingURL=Button-BI0LErYM.cjs.map
231
+ //# sourceMappingURL=Button-DPoX7ahh.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-BI0LErYM.cjs","sources":["../../src/components/Button/ButtonBase.tsx","../../src/components/Button/next/Button.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from \"react\";\r\nimport { ButtonBaseProps } from \"./Button.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst ButtonBase = forwardRef<\r\n HTMLButtonElement | HTMLAnchorElement,\r\n ButtonBaseProps\r\n>(\r\n (\r\n {\r\n icon: Icon,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n onClick,\r\n type = \"button\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n children,\r\n className = \"\",\r\n disabled = false,\r\n ariaLabel,\r\n href,\r\n isExternal = false,\r\n outline = false,\r\n size = getDefaultSize(),\r\n loading = false,\r\n fullWidth = false,\r\n \"data-testid\": testId = \"button\",\r\n classMap,\r\n LinkComponent = \"a\",\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const iconOnly =\r\n !children ||\r\n (typeof children !== \"string\" && React.Children.count(children) === 0);\r\n const computedAriaLabel = iconOnly ? ariaLabel : undefined;\r\n\r\n if (process.env.NODE_ENV === \"development\" && iconOnly && !ariaLabel) {\r\n console.warn(\"ButtonBase: icon-only buttons must provide `ariaLabel`.\");\r\n }\r\n\r\n const combinedClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.button,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n outline && classMap.outline,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n fullWidth && classMap.fullWidth,\r\n disabled && classMap.disabled,\r\n className\r\n ),\r\n [\r\n theme,\r\n state,\r\n outline,\r\n size,\r\n shadow,\r\n rounding,\r\n fullWidth,\r\n disabled,\r\n className,\r\n classMap,\r\n ]\r\n );\r\n\r\n const content = (\r\n <>\r\n {Icon && (\r\n <span\r\n className={classMap.buttonIcon}\r\n aria-hidden=\"true\"\r\n data-testid={testId ? `${testId}-icon` : undefined}\r\n >\r\n <Icon className={classMap.icon} />\r\n </span>\r\n )}\r\n <span\r\n className={classMap.buttonLabel}\r\n aria-live={loading ? \"polite\" : undefined}\r\n aria-atomic={loading || undefined}\r\n data-testid={testId ? `${testId}-loading` : undefined}\r\n >\r\n {loading ? (\r\n <>\r\n <div className={classMap.loader} aria-hidden=\"true\" />\r\n <span className=\"sr_only\">Loading</span>\r\n </>\r\n ) : (\r\n <>\r\n {children}\r\n {href && (isExternal ?? /^https?:\\/\\//i.test(href)) && (\r\n <span className=\"sr_only\"> (opens in a new tab)</span>\r\n )}\r\n </>\r\n )}\r\n </span>\r\n </>\r\n );\r\n\r\n if (href) {\r\n const Comp = (LinkComponent ?? \"a\") as React.ElementType;\r\n const external = (isExternal ?? /^https?:\\/\\//i.test(href)) && !disabled;\r\n\r\n const linkCommon = {\r\n ref: ref as React.Ref<HTMLAnchorElement>,\r\n className: combineClassNames(combinedClassName, classMap.link),\r\n onClick: disabled\r\n ? (e: React.MouseEvent) => e.preventDefault()\r\n : onClick,\r\n \"aria-disabled\": disabled || undefined,\r\n tabIndex: disabled ? -1 : undefined,\r\n ...(computedAriaLabel ? { \"aria-label\": computedAriaLabel } : {}),\r\n \"data-testid\": testId,\r\n } as const;\r\n\r\n if (Comp === \"a\") {\r\n return (\r\n <a\r\n {...linkCommon}\r\n href={disabled ? undefined : href}\r\n target={external ? \"_blank\" : undefined}\r\n rel={external ? \"noopener noreferrer\" : undefined}\r\n {...(rest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\r\n >\r\n {content}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <Comp\r\n {...(linkCommon as Omit<\r\n React.ComponentPropsWithoutRef<typeof Comp>,\r\n \"children\"\r\n >)}\r\n href={href as never}\r\n {...(rest as React.ComponentPropsWithoutRef<typeof Comp>)}\r\n >\r\n {content}\r\n </Comp>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref as React.Ref<HTMLButtonElement>}\r\n type={type}\r\n className={combinedClassName}\r\n disabled={disabled || loading}\r\n aria-busy={loading || undefined}\r\n {...(computedAriaLabel ? { \"aria-label\": computedAriaLabel } : {})}\r\n data-testid={testId}\r\n onClick={disabled ? undefined : onClick}\r\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\r\n >\r\n {content}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButtonBase.displayName = \"ButtonBase\";\r\n\r\nexport default ButtonBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport Link from \"next/link\";\r\nimport styles from \"./Button.module.scss\";\r\nimport ButtonBase from \"../ButtonBase\";\r\nimport { ButtonProps } from \"../Button.types\";\r\n\r\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => (\r\n <ButtonBase {...props} classMap={styles} LinkComponent={Link} ref={ref} />\r\n));\r\nButton.displayName = \"Button\";\r\nexport default Button;\r\n"],"names":["forwardRef","getDefaultTheme","getDefaultRounding","getDefaultShadow","disabled","outline","getDefaultSize","fullWidth","useMemo","combineClassNames","capitalize","jsxs","Fragment","jsx","Link"],"mappings":"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"}
1
+ {"version":3,"file":"Button-DPoX7ahh.cjs","sources":["../../src/components/Button/ButtonBase.tsx","../../src/components/Button/next/Button.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from \"react\";\r\nimport { ButtonBaseProps } from \"./Button.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst ButtonBase = forwardRef<\r\n HTMLButtonElement | HTMLAnchorElement,\r\n ButtonBaseProps\r\n>(\r\n (\r\n {\r\n icon: Icon,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n onClick,\r\n type = \"button\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n children,\r\n className = \"\",\r\n disabled = false,\r\n ariaLabel,\r\n href,\r\n isExternal = false,\r\n outline = false,\r\n size = getDefaultSize(),\r\n loading = false,\r\n fullWidth = false,\r\n \"data-testid\": testId = \"button\",\r\n classMap,\r\n LinkComponent = \"a\",\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const iconOnly =\r\n !children ||\r\n (typeof children !== \"string\" && React.Children.count(children) === 0);\r\n const computedAriaLabel = iconOnly ? ariaLabel : undefined;\r\n\r\n if (process.env.NODE_ENV === \"development\" && iconOnly && !ariaLabel) {\r\n console.warn(\"ButtonBase: icon-only buttons must provide `ariaLabel`.\");\r\n }\r\n\r\n const combinedClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.button,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n outline && classMap.outline,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n fullWidth && classMap.fullWidth,\r\n disabled && classMap.disabled,\r\n className\r\n ),\r\n [\r\n theme,\r\n state,\r\n outline,\r\n size,\r\n shadow,\r\n rounding,\r\n fullWidth,\r\n disabled,\r\n className,\r\n classMap,\r\n ]\r\n );\r\n\r\n const content = (\r\n <>\r\n {Icon && (\r\n <span\r\n className={classMap.buttonIcon}\r\n aria-hidden=\"true\"\r\n data-testid={testId ? `${testId}-icon` : undefined}\r\n >\r\n <Icon className={classMap.icon} />\r\n </span>\r\n )}\r\n <span\r\n className={classMap.buttonLabel}\r\n aria-live={loading ? \"polite\" : undefined}\r\n aria-atomic={loading || undefined}\r\n data-testid={testId ? `${testId}-loading` : undefined}\r\n >\r\n {loading ? (\r\n <>\r\n <div className={classMap.loader} aria-hidden=\"true\" />\r\n <span className=\"sr_only\">Loading</span>\r\n </>\r\n ) : (\r\n <>\r\n {children}\r\n {href && (isExternal ?? /^https?:\\/\\//i.test(href)) && (\r\n <span className=\"sr_only\"> (opens in a new tab)</span>\r\n )}\r\n </>\r\n )}\r\n </span>\r\n </>\r\n );\r\n\r\n if (href) {\r\n const Comp = (LinkComponent ?? \"a\") as React.ElementType;\r\n const external = (isExternal ?? /^https?:\\/\\//i.test(href)) && !disabled;\r\n\r\n const linkCommon = {\r\n ref: ref as React.Ref<HTMLAnchorElement>,\r\n className: combineClassNames(combinedClassName, classMap.link),\r\n onClick: disabled\r\n ? (e: React.MouseEvent) => e.preventDefault()\r\n : onClick,\r\n \"aria-disabled\": disabled || undefined,\r\n tabIndex: disabled ? -1 : undefined,\r\n ...(computedAriaLabel ? { \"aria-label\": computedAriaLabel } : {}),\r\n \"data-testid\": testId,\r\n } as const;\r\n\r\n if (Comp === \"a\") {\r\n return (\r\n <a\r\n {...linkCommon}\r\n href={disabled ? undefined : href}\r\n target={external ? \"_blank\" : undefined}\r\n rel={external ? \"noopener noreferrer\" : undefined}\r\n {...(rest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\r\n >\r\n {content}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <Comp\r\n {...(linkCommon as Omit<\r\n React.ComponentPropsWithoutRef<typeof Comp>,\r\n \"children\"\r\n >)}\r\n href={href as never}\r\n {...(rest as React.ComponentPropsWithoutRef<typeof Comp>)}\r\n >\r\n {content}\r\n </Comp>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref as React.Ref<HTMLButtonElement>}\r\n type={type}\r\n className={combinedClassName}\r\n disabled={disabled || loading}\r\n aria-busy={loading || undefined}\r\n {...(computedAriaLabel ? { \"aria-label\": computedAriaLabel } : {})}\r\n data-testid={testId}\r\n onClick={disabled ? undefined : onClick}\r\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\r\n >\r\n {content}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButtonBase.displayName = \"ButtonBase\";\r\n\r\nexport default ButtonBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport Link from \"next/link\";\r\nimport styles from \"./Button.module.scss\";\r\nimport ButtonBase from \"../ButtonBase\";\r\nimport { ButtonProps } from \"../Button.types\";\r\n\r\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => (\r\n <ButtonBase {...props} classMap={styles} LinkComponent={Link} ref={ref} />\r\n));\r\nButton.displayName = \"Button\";\r\nexport default Button;\r\n"],"names":["forwardRef","getDefaultTheme","getDefaultRounding","getDefaultShadow","disabled","outline","getDefaultSize","fullWidth","useMemo","combineClassNames","capitalize","jsxs","Fragment","jsx","Link"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
2
  import React, { forwardRef, useMemo } from "react";
3
- import { L as Link } from "./link-CxWP3aXr.js";
3
+ import { L as Link } from "./link-CyxHztrS.js";
4
4
  import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
5
5
  import { c as capitalize } from "./capitalize-C0TSQSPh.js";
6
6
  import { a as getDefaultRounding, b as getDefaultShadow, c as getDefaultSize, d as getDefaultTheme } from "./boreal-style-config-BILmxkZG.js";
@@ -229,4 +229,4 @@ Button.displayName = "Button";
229
229
  export {
230
230
  Button as B
231
231
  };
232
- //# sourceMappingURL=Button-qs4m4zx0.js.map
232
+ //# sourceMappingURL=Button-DhH3Gy0J.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-qs4m4zx0.js","sources":["../../src/components/Button/ButtonBase.tsx","../../src/components/Button/next/Button.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from \"react\";\r\nimport { ButtonBaseProps } from \"./Button.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst ButtonBase = forwardRef<\r\n HTMLButtonElement | HTMLAnchorElement,\r\n ButtonBaseProps\r\n>(\r\n (\r\n {\r\n icon: Icon,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n onClick,\r\n type = \"button\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n children,\r\n className = \"\",\r\n disabled = false,\r\n ariaLabel,\r\n href,\r\n isExternal = false,\r\n outline = false,\r\n size = getDefaultSize(),\r\n loading = false,\r\n fullWidth = false,\r\n \"data-testid\": testId = \"button\",\r\n classMap,\r\n LinkComponent = \"a\",\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const iconOnly =\r\n !children ||\r\n (typeof children !== \"string\" && React.Children.count(children) === 0);\r\n const computedAriaLabel = iconOnly ? ariaLabel : undefined;\r\n\r\n if (process.env.NODE_ENV === \"development\" && iconOnly && !ariaLabel) {\r\n console.warn(\"ButtonBase: icon-only buttons must provide `ariaLabel`.\");\r\n }\r\n\r\n const combinedClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.button,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n outline && classMap.outline,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n fullWidth && classMap.fullWidth,\r\n disabled && classMap.disabled,\r\n className\r\n ),\r\n [\r\n theme,\r\n state,\r\n outline,\r\n size,\r\n shadow,\r\n rounding,\r\n fullWidth,\r\n disabled,\r\n className,\r\n classMap,\r\n ]\r\n );\r\n\r\n const content = (\r\n <>\r\n {Icon && (\r\n <span\r\n className={classMap.buttonIcon}\r\n aria-hidden=\"true\"\r\n data-testid={testId ? `${testId}-icon` : undefined}\r\n >\r\n <Icon className={classMap.icon} />\r\n </span>\r\n )}\r\n <span\r\n className={classMap.buttonLabel}\r\n aria-live={loading ? \"polite\" : undefined}\r\n aria-atomic={loading || undefined}\r\n data-testid={testId ? `${testId}-loading` : undefined}\r\n >\r\n {loading ? (\r\n <>\r\n <div className={classMap.loader} aria-hidden=\"true\" />\r\n <span className=\"sr_only\">Loading</span>\r\n </>\r\n ) : (\r\n <>\r\n {children}\r\n {href && (isExternal ?? /^https?:\\/\\//i.test(href)) && (\r\n <span className=\"sr_only\"> (opens in a new tab)</span>\r\n )}\r\n </>\r\n )}\r\n </span>\r\n </>\r\n );\r\n\r\n if (href) {\r\n const Comp = (LinkComponent ?? \"a\") as React.ElementType;\r\n const external = (isExternal ?? /^https?:\\/\\//i.test(href)) && !disabled;\r\n\r\n const linkCommon = {\r\n ref: ref as React.Ref<HTMLAnchorElement>,\r\n className: combineClassNames(combinedClassName, classMap.link),\r\n onClick: disabled\r\n ? (e: React.MouseEvent) => e.preventDefault()\r\n : onClick,\r\n \"aria-disabled\": disabled || undefined,\r\n tabIndex: disabled ? -1 : undefined,\r\n ...(computedAriaLabel ? { \"aria-label\": computedAriaLabel } : {}),\r\n \"data-testid\": testId,\r\n } as const;\r\n\r\n if (Comp === \"a\") {\r\n return (\r\n <a\r\n {...linkCommon}\r\n href={disabled ? undefined : href}\r\n target={external ? \"_blank\" : undefined}\r\n rel={external ? \"noopener noreferrer\" : undefined}\r\n {...(rest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\r\n >\r\n {content}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <Comp\r\n {...(linkCommon as Omit<\r\n React.ComponentPropsWithoutRef<typeof Comp>,\r\n \"children\"\r\n >)}\r\n href={href as never}\r\n {...(rest as React.ComponentPropsWithoutRef<typeof Comp>)}\r\n >\r\n {content}\r\n </Comp>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref as React.Ref<HTMLButtonElement>}\r\n type={type}\r\n className={combinedClassName}\r\n disabled={disabled || loading}\r\n aria-busy={loading || undefined}\r\n {...(computedAriaLabel ? { \"aria-label\": computedAriaLabel } : {})}\r\n data-testid={testId}\r\n onClick={disabled ? undefined : onClick}\r\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\r\n >\r\n {content}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButtonBase.displayName = \"ButtonBase\";\r\n\r\nexport default ButtonBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport Link from \"next/link\";\r\nimport styles from \"./Button.module.scss\";\r\nimport ButtonBase from \"../ButtonBase\";\r\nimport { ButtonProps } from \"../Button.types\";\r\n\r\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => (\r\n <ButtonBase {...props} classMap={styles} LinkComponent={Link} ref={ref} />\r\n));\r\nButton.displayName = \"Button\";\r\nexport default Button;\r\n"],"names":["disabled","outline","fullWidth"],"mappings":"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"}
1
+ {"version":3,"file":"Button-DhH3Gy0J.js","sources":["../../src/components/Button/ButtonBase.tsx","../../src/components/Button/next/Button.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from \"react\";\r\nimport { ButtonBaseProps } from \"./Button.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst ButtonBase = forwardRef<\r\n HTMLButtonElement | HTMLAnchorElement,\r\n ButtonBaseProps\r\n>(\r\n (\r\n {\r\n icon: Icon,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n onClick,\r\n type = \"button\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n children,\r\n className = \"\",\r\n disabled = false,\r\n ariaLabel,\r\n href,\r\n isExternal = false,\r\n outline = false,\r\n size = getDefaultSize(),\r\n loading = false,\r\n fullWidth = false,\r\n \"data-testid\": testId = \"button\",\r\n classMap,\r\n LinkComponent = \"a\",\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const iconOnly =\r\n !children ||\r\n (typeof children !== \"string\" && React.Children.count(children) === 0);\r\n const computedAriaLabel = iconOnly ? ariaLabel : undefined;\r\n\r\n if (process.env.NODE_ENV === \"development\" && iconOnly && !ariaLabel) {\r\n console.warn(\"ButtonBase: icon-only buttons must provide `ariaLabel`.\");\r\n }\r\n\r\n const combinedClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.button,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n outline && classMap.outline,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n fullWidth && classMap.fullWidth,\r\n disabled && classMap.disabled,\r\n className\r\n ),\r\n [\r\n theme,\r\n state,\r\n outline,\r\n size,\r\n shadow,\r\n rounding,\r\n fullWidth,\r\n disabled,\r\n className,\r\n classMap,\r\n ]\r\n );\r\n\r\n const content = (\r\n <>\r\n {Icon && (\r\n <span\r\n className={classMap.buttonIcon}\r\n aria-hidden=\"true\"\r\n data-testid={testId ? `${testId}-icon` : undefined}\r\n >\r\n <Icon className={classMap.icon} />\r\n </span>\r\n )}\r\n <span\r\n className={classMap.buttonLabel}\r\n aria-live={loading ? \"polite\" : undefined}\r\n aria-atomic={loading || undefined}\r\n data-testid={testId ? `${testId}-loading` : undefined}\r\n >\r\n {loading ? (\r\n <>\r\n <div className={classMap.loader} aria-hidden=\"true\" />\r\n <span className=\"sr_only\">Loading</span>\r\n </>\r\n ) : (\r\n <>\r\n {children}\r\n {href && (isExternal ?? /^https?:\\/\\//i.test(href)) && (\r\n <span className=\"sr_only\"> (opens in a new tab)</span>\r\n )}\r\n </>\r\n )}\r\n </span>\r\n </>\r\n );\r\n\r\n if (href) {\r\n const Comp = (LinkComponent ?? \"a\") as React.ElementType;\r\n const external = (isExternal ?? /^https?:\\/\\//i.test(href)) && !disabled;\r\n\r\n const linkCommon = {\r\n ref: ref as React.Ref<HTMLAnchorElement>,\r\n className: combineClassNames(combinedClassName, classMap.link),\r\n onClick: disabled\r\n ? (e: React.MouseEvent) => e.preventDefault()\r\n : onClick,\r\n \"aria-disabled\": disabled || undefined,\r\n tabIndex: disabled ? -1 : undefined,\r\n ...(computedAriaLabel ? { \"aria-label\": computedAriaLabel } : {}),\r\n \"data-testid\": testId,\r\n } as const;\r\n\r\n if (Comp === \"a\") {\r\n return (\r\n <a\r\n {...linkCommon}\r\n href={disabled ? undefined : href}\r\n target={external ? \"_blank\" : undefined}\r\n rel={external ? \"noopener noreferrer\" : undefined}\r\n {...(rest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\r\n >\r\n {content}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <Comp\r\n {...(linkCommon as Omit<\r\n React.ComponentPropsWithoutRef<typeof Comp>,\r\n \"children\"\r\n >)}\r\n href={href as never}\r\n {...(rest as React.ComponentPropsWithoutRef<typeof Comp>)}\r\n >\r\n {content}\r\n </Comp>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref as React.Ref<HTMLButtonElement>}\r\n type={type}\r\n className={combinedClassName}\r\n disabled={disabled || loading}\r\n aria-busy={loading || undefined}\r\n {...(computedAriaLabel ? { \"aria-label\": computedAriaLabel } : {})}\r\n data-testid={testId}\r\n onClick={disabled ? undefined : onClick}\r\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\r\n >\r\n {content}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButtonBase.displayName = \"ButtonBase\";\r\n\r\nexport default ButtonBase;\r\n","\"use client\";\r\n\r\nimport { forwardRef } from \"react\";\r\nimport Link from \"next/link\";\r\nimport styles from \"./Button.module.scss\";\r\nimport ButtonBase from \"../ButtonBase\";\r\nimport { ButtonProps } from \"../Button.types\";\r\n\r\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => (\r\n <ButtonBase {...props} classMap={styles} LinkComponent={Link} ref={ref} />\r\n));\r\nButton.displayName = \"Button\";\r\nexport default Button;\r\n"],"names":["disabled","outline","fullWidth"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const Button = require("./Button-BI0LErYM.cjs");
2
+ const Button = require("./Button-DPoX7ahh.cjs");
3
3
  module.exports = Button.Button;
4
4
  //# sourceMappingURL=Button.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { B } from "./Button-qs4m4zx0.js";
1
+ import { B } from "./Button-DhH3Gy0J.js";
2
2
  export {
3
3
  B as default
4
4
  };
@@ -1,8 +1,8 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
- import { I as Image } from "./image-BBS8QO15.js";
2
+ import { I as Image } from "./image-B9PuwflE.js";
3
3
  /* empty css */
4
- import { B as Button } from "./Button-qs4m4zx0.js";
5
- import { I as IconButton } from "./IconButton-BTUFKRZt.js";
4
+ import { B as Button } from "./Button-DhH3Gy0J.js";
5
+ import { I as IconButton } from "./IconButton-Ct3YtlG9.js";
6
6
  import { S as SkeletonLoader } from "./Skeleton-DC4LJ059.js";
7
7
  import React, { useId, useMemo } from "react";
8
8
  import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
@@ -393,4 +393,4 @@ Card.displayName = "Card";
393
393
  export {
394
394
  Card as C
395
395
  };
396
- //# sourceMappingURL=Card-Da7D02Sj.js.map
396
+ //# sourceMappingURL=Card-4SKxHmOQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card-Da7D02Sj.js","sources":["../../src/components/Card/CardBase.tsx","../../src/components/Card/next/Card.tsx"],"sourcesContent":["import React, { useId, useMemo } from \"react\";\r\nimport { CardBaseProps, CardImageSource, StaticCardImage } from \"./Card.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst CardBase: React.FC<CardBaseProps> = ({\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n cardIcon,\r\n title = \"\",\r\n description = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n imageUrl,\r\n imageAlt,\r\n imageHeight,\r\n imageWidth,\r\n imageFill,\r\n className = \"\",\r\n imageClassName = \"\",\r\n headerClassName = \"\",\r\n bodyClassName = \"\",\r\n footerClassName = \"\",\r\n outline = false,\r\n size = getDefaultSize(),\r\n align = \"center\",\r\n renderHeader,\r\n renderContent,\r\n renderFooter,\r\n actionButtons = [],\r\n useIconButtons = false,\r\n layout = \"vertical\",\r\n loading = false,\r\n children,\r\n \"data-testid\": testId = \"card\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-label\": ariaLabel,\r\n classMap,\r\n SkeletonComponent,\r\n ImageComponent,\r\n}) => {\r\n const autoId = useId();\r\n const headerId = ariaLabelledBy || `${autoId}-header`;\r\n const descriptionId = `${autoId}-description`;\r\n const derivedAriaLabel = ariaLabel || title || description || \"Content card\";\r\n\r\n const FallbackImage = (props: React.ImgHTMLAttributes<HTMLImageElement>) => (\r\n <img {...props} />\r\n );\r\n\r\n function isStaticCardImage(value: unknown): value is StaticCardImage {\r\n return (\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n \"src\" in value &&\r\n typeof (value as { src: unknown }).src === \"string\"\r\n );\r\n }\r\n\r\n function normalizeImageSource(\r\n srcInput: CardImageSource | undefined,\r\n fallbackWidth?: number,\r\n fallbackHeight?: number\r\n ): { src?: string; width?: number; height?: number } {\r\n if (!srcInput) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n if (typeof srcInput === \"string\") {\r\n const trimmed = srcInput.trim();\r\n if (!trimmed) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n return { src: trimmed, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n if (isStaticCardImage(srcInput)) {\r\n const trimmed = srcInput.src.trim();\r\n if (!trimmed) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: srcInput.width ?? fallbackWidth,\r\n height: srcInput.height ?? fallbackHeight,\r\n };\r\n }\r\n\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n const {\r\n src: imgSrc,\r\n width: resolvedWidth,\r\n height: resolvedHeight,\r\n } = normalizeImageSource(imageUrl, imageWidth, imageHeight);\r\n\r\n const hasImage = Boolean(imgSrc);\r\n\r\n const imgAlt = imageAlt || `${title || \"Card\"} image`;\r\n\r\n const ImageRenderer = ImageComponent || FallbackImage;\r\n\r\n const cardClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.card,\r\n classMap[layout],\r\n align && classMap[align],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n loading && classMap.loading,\r\n className\r\n ),\r\n [\r\n classMap,\r\n layout,\r\n align,\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n outline,\r\n loading,\r\n className,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n data-testid={testId}\r\n className={cardClassName}\r\n role=\"region\"\r\n aria-labelledby={title ? headerId : undefined}\r\n aria-label={!title ? derivedAriaLabel : undefined}\r\n aria-busy={loading || undefined}\r\n >\r\n {loading ? (\r\n <SkeletonComponent\r\n width=\"250px\"\r\n height=\"250px\"\r\n data-testid={`${testId}-skeleton`}\r\n />\r\n ) : (\r\n <div className={classMap.content}>\r\n {hasImage &&\r\n imgSrc &&\r\n (imageFill ? (\r\n <div className={classMap.media}>\r\n <ImageRenderer\r\n src={imgSrc}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n fill\r\n />\r\n </div>\r\n ) : (\r\n <ImageRenderer\r\n src={imgSrc}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n width={resolvedWidth ?? 640}\r\n height={resolvedHeight ?? 360}\r\n />\r\n ))}\r\n\r\n <div>\r\n <div\r\n className={combineClassNames(classMap.header, headerClassName)}\r\n id={headerId}\r\n >\r\n {renderHeader ? (\r\n renderHeader()\r\n ) : title ? (\r\n <h2 className={classMap.title}>\r\n {cardIcon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n {React.createElement(cardIcon)}\r\n </span>\r\n )}\r\n {title}\r\n </h2>\r\n ) : null}\r\n </div>\r\n\r\n <div\r\n className={combineClassNames(classMap.body, bodyClassName)}\r\n role=\"group\"\r\n aria-describedby={description ? descriptionId : undefined}\r\n >\r\n {renderContent ? (\r\n renderContent()\r\n ) : (\r\n <>\r\n {description && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n {children && (\r\n <div className={classMap.children}>{children}</div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {(actionButtons.length > 0 || renderFooter) && (\r\n <div\r\n className={combineClassNames(classMap.footer, footerClassName)}\r\n >\r\n {actionButtons.length > 0 && (\r\n <div className={classMap.actions}>\r\n {actionButtons.map((button, index) =>\r\n useIconButtons && button.icon ? (\r\n <button.iconButtonComponent\r\n key={index}\r\n icon={button.icon}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"clear\"}\r\n state={button.state || \"\"}\r\n aria-label={button.label}\r\n size={button.size || size}\r\n href={button.href}\r\n loading={button.loading}\r\n ariaLabel={button.ariaLabel}\r\n />\r\n ) : (\r\n <button.buttonComponent\r\n key={index}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"secondary\"}\r\n state={button.state || \"\"}\r\n href={button.href}\r\n loading={button.loading}\r\n size={button.size || size}\r\n ariaLabel={button.ariaLabel}\r\n >\r\n {button.label}\r\n </button.buttonComponent>\r\n )\r\n )}\r\n </div>\r\n )}\r\n {renderFooter && renderFooter()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nCardBase.displayName = \"CardBase\";\r\n\r\nexport default CardBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Image, { StaticImageData } from \"next/image\";\r\nimport { Button, IconButton, Skeleton } from \"../../../index.next\";\r\nimport styles from \"./Card.module.scss\";\r\nimport CardBase from \"../CardBase\";\r\nimport { CardImageComponentProps, CardProps } from \"../Card.types\";\r\n\r\nconst NextImageWrapper: React.FC<CardImageComponentProps> = ({\r\n src,\r\n alt,\r\n className,\r\n width,\r\n height,\r\n fill,\r\n}) => {\r\n if (typeof src === \"string\" && src.toLowerCase().endsWith(\".svg\")) {\r\n return (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className={className}\r\n width={width}\r\n height={height}\r\n loading=\"lazy\"\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Image\r\n src={src as StaticImageData | string}\r\n alt={alt}\r\n className={className}\r\n {...(fill\r\n ? { fill, sizes: \"100vw\" }\r\n : { width: width ?? 640, height: height ?? 360 })}\r\n />\r\n );\r\n};\r\n\r\nconst Card: React.FC<CardProps> = (props) => {\r\n const wrappedButtons = (props.actionButtons ?? []).map((b) => ({\r\n ...b,\r\n buttonComponent: Button,\r\n iconButtonComponent: IconButton,\r\n }));\r\n\r\n return (\r\n <CardBase\r\n {...props}\r\n actionButtons={wrappedButtons}\r\n classMap={styles}\r\n SkeletonComponent={Skeleton}\r\n ImageComponent={NextImageWrapper}\r\n />\r\n );\r\n};\r\nCard.displayName = \"Card\";\r\nexport default Card;\r\n"],"names":["title","description","outline","loading","children","Skeleton"],"mappings":"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"}
1
+ {"version":3,"file":"Card-4SKxHmOQ.js","sources":["../../src/components/Card/CardBase.tsx","../../src/components/Card/next/Card.tsx"],"sourcesContent":["import React, { useId, useMemo } from \"react\";\r\nimport { CardBaseProps, CardImageSource, StaticCardImage } from \"./Card.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst CardBase: React.FC<CardBaseProps> = ({\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n cardIcon,\r\n title = \"\",\r\n description = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n imageUrl,\r\n imageAlt,\r\n imageHeight,\r\n imageWidth,\r\n imageFill,\r\n className = \"\",\r\n imageClassName = \"\",\r\n headerClassName = \"\",\r\n bodyClassName = \"\",\r\n footerClassName = \"\",\r\n outline = false,\r\n size = getDefaultSize(),\r\n align = \"center\",\r\n renderHeader,\r\n renderContent,\r\n renderFooter,\r\n actionButtons = [],\r\n useIconButtons = false,\r\n layout = \"vertical\",\r\n loading = false,\r\n children,\r\n \"data-testid\": testId = \"card\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-label\": ariaLabel,\r\n classMap,\r\n SkeletonComponent,\r\n ImageComponent,\r\n}) => {\r\n const autoId = useId();\r\n const headerId = ariaLabelledBy || `${autoId}-header`;\r\n const descriptionId = `${autoId}-description`;\r\n const derivedAriaLabel = ariaLabel || title || description || \"Content card\";\r\n\r\n const FallbackImage = (props: React.ImgHTMLAttributes<HTMLImageElement>) => (\r\n <img {...props} />\r\n );\r\n\r\n function isStaticCardImage(value: unknown): value is StaticCardImage {\r\n return (\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n \"src\" in value &&\r\n typeof (value as { src: unknown }).src === \"string\"\r\n );\r\n }\r\n\r\n function normalizeImageSource(\r\n srcInput: CardImageSource | undefined,\r\n fallbackWidth?: number,\r\n fallbackHeight?: number\r\n ): { src?: string; width?: number; height?: number } {\r\n if (!srcInput) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n if (typeof srcInput === \"string\") {\r\n const trimmed = srcInput.trim();\r\n if (!trimmed) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n return { src: trimmed, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n if (isStaticCardImage(srcInput)) {\r\n const trimmed = srcInput.src.trim();\r\n if (!trimmed) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: srcInput.width ?? fallbackWidth,\r\n height: srcInput.height ?? fallbackHeight,\r\n };\r\n }\r\n\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n const {\r\n src: imgSrc,\r\n width: resolvedWidth,\r\n height: resolvedHeight,\r\n } = normalizeImageSource(imageUrl, imageWidth, imageHeight);\r\n\r\n const hasImage = Boolean(imgSrc);\r\n\r\n const imgAlt = imageAlt || `${title || \"Card\"} image`;\r\n\r\n const ImageRenderer = ImageComponent || FallbackImage;\r\n\r\n const cardClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.card,\r\n classMap[layout],\r\n align && classMap[align],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n loading && classMap.loading,\r\n className\r\n ),\r\n [\r\n classMap,\r\n layout,\r\n align,\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n outline,\r\n loading,\r\n className,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n data-testid={testId}\r\n className={cardClassName}\r\n role=\"region\"\r\n aria-labelledby={title ? headerId : undefined}\r\n aria-label={!title ? derivedAriaLabel : undefined}\r\n aria-busy={loading || undefined}\r\n >\r\n {loading ? (\r\n <SkeletonComponent\r\n width=\"250px\"\r\n height=\"250px\"\r\n data-testid={`${testId}-skeleton`}\r\n />\r\n ) : (\r\n <div className={classMap.content}>\r\n {hasImage &&\r\n imgSrc &&\r\n (imageFill ? (\r\n <div className={classMap.media}>\r\n <ImageRenderer\r\n src={imgSrc}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n fill\r\n />\r\n </div>\r\n ) : (\r\n <ImageRenderer\r\n src={imgSrc}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n width={resolvedWidth ?? 640}\r\n height={resolvedHeight ?? 360}\r\n />\r\n ))}\r\n\r\n <div>\r\n <div\r\n className={combineClassNames(classMap.header, headerClassName)}\r\n id={headerId}\r\n >\r\n {renderHeader ? (\r\n renderHeader()\r\n ) : title ? (\r\n <h2 className={classMap.title}>\r\n {cardIcon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n {React.createElement(cardIcon)}\r\n </span>\r\n )}\r\n {title}\r\n </h2>\r\n ) : null}\r\n </div>\r\n\r\n <div\r\n className={combineClassNames(classMap.body, bodyClassName)}\r\n role=\"group\"\r\n aria-describedby={description ? descriptionId : undefined}\r\n >\r\n {renderContent ? (\r\n renderContent()\r\n ) : (\r\n <>\r\n {description && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n {children && (\r\n <div className={classMap.children}>{children}</div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {(actionButtons.length > 0 || renderFooter) && (\r\n <div\r\n className={combineClassNames(classMap.footer, footerClassName)}\r\n >\r\n {actionButtons.length > 0 && (\r\n <div className={classMap.actions}>\r\n {actionButtons.map((button, index) =>\r\n useIconButtons && button.icon ? (\r\n <button.iconButtonComponent\r\n key={index}\r\n icon={button.icon}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"clear\"}\r\n state={button.state || \"\"}\r\n aria-label={button.label}\r\n size={button.size || size}\r\n href={button.href}\r\n loading={button.loading}\r\n ariaLabel={button.ariaLabel}\r\n />\r\n ) : (\r\n <button.buttonComponent\r\n key={index}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"secondary\"}\r\n state={button.state || \"\"}\r\n href={button.href}\r\n loading={button.loading}\r\n size={button.size || size}\r\n ariaLabel={button.ariaLabel}\r\n >\r\n {button.label}\r\n </button.buttonComponent>\r\n )\r\n )}\r\n </div>\r\n )}\r\n {renderFooter && renderFooter()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nCardBase.displayName = \"CardBase\";\r\n\r\nexport default CardBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Image, { StaticImageData } from \"next/image\";\r\nimport { Button, IconButton, Skeleton } from \"../../../index.next\";\r\nimport styles from \"./Card.module.scss\";\r\nimport CardBase from \"../CardBase\";\r\nimport { CardImageComponentProps, CardProps } from \"../Card.types\";\r\n\r\nconst NextImageWrapper: React.FC<CardImageComponentProps> = ({\r\n src,\r\n alt,\r\n className,\r\n width,\r\n height,\r\n fill,\r\n}) => {\r\n if (typeof src === \"string\" && src.toLowerCase().endsWith(\".svg\")) {\r\n return (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className={className}\r\n width={width}\r\n height={height}\r\n loading=\"lazy\"\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Image\r\n src={src as StaticImageData | string}\r\n alt={alt}\r\n className={className}\r\n {...(fill\r\n ? { fill, sizes: \"100vw\" }\r\n : { width: width ?? 640, height: height ?? 360 })}\r\n />\r\n );\r\n};\r\n\r\nconst Card: React.FC<CardProps> = (props) => {\r\n const wrappedButtons = (props.actionButtons ?? []).map((b) => ({\r\n ...b,\r\n buttonComponent: Button,\r\n iconButtonComponent: IconButton,\r\n }));\r\n\r\n return (\r\n <CardBase\r\n {...props}\r\n actionButtons={wrappedButtons}\r\n classMap={styles}\r\n SkeletonComponent={Skeleton}\r\n ImageComponent={NextImageWrapper}\r\n />\r\n );\r\n};\r\nCard.displayName = \"Card\";\r\nexport default Card;\r\n"],"names":["title","description","outline","loading","children","Skeleton"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  const require$$2 = require("react/jsx-runtime");
3
- const image$1 = require("./image-A4nTeRaX.cjs");
3
+ const image$1 = require("./image-Bo_vHlt1.cjs");
4
4
  ;/* empty css */
5
- const Button = require("./Button-BI0LErYM.cjs");
6
- const IconButton = require("./IconButton-2l-_HOMB.cjs");
5
+ const Button = require("./Button-DPoX7ahh.cjs");
6
+ const IconButton = require("./IconButton-aF7cTy19.cjs");
7
7
  const Skeleton = require("./Skeleton-C6wW8eyR.cjs");
8
8
  const React = require("react");
9
9
  const classNames = require("./classNames-BcWMx052.cjs");
@@ -392,4 +392,4 @@ const Card = (props) => {
392
392
  };
393
393
  Card.displayName = "Card";
394
394
  exports.Card = Card;
395
- //# sourceMappingURL=Card-C0SorjuI.cjs.map
395
+ //# sourceMappingURL=Card-BdzmlYGf.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card-C0SorjuI.cjs","sources":["../../src/components/Card/CardBase.tsx","../../src/components/Card/next/Card.tsx"],"sourcesContent":["import React, { useId, useMemo } from \"react\";\r\nimport { CardBaseProps, CardImageSource, StaticCardImage } from \"./Card.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst CardBase: React.FC<CardBaseProps> = ({\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n cardIcon,\r\n title = \"\",\r\n description = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n imageUrl,\r\n imageAlt,\r\n imageHeight,\r\n imageWidth,\r\n imageFill,\r\n className = \"\",\r\n imageClassName = \"\",\r\n headerClassName = \"\",\r\n bodyClassName = \"\",\r\n footerClassName = \"\",\r\n outline = false,\r\n size = getDefaultSize(),\r\n align = \"center\",\r\n renderHeader,\r\n renderContent,\r\n renderFooter,\r\n actionButtons = [],\r\n useIconButtons = false,\r\n layout = \"vertical\",\r\n loading = false,\r\n children,\r\n \"data-testid\": testId = \"card\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-label\": ariaLabel,\r\n classMap,\r\n SkeletonComponent,\r\n ImageComponent,\r\n}) => {\r\n const autoId = useId();\r\n const headerId = ariaLabelledBy || `${autoId}-header`;\r\n const descriptionId = `${autoId}-description`;\r\n const derivedAriaLabel = ariaLabel || title || description || \"Content card\";\r\n\r\n const FallbackImage = (props: React.ImgHTMLAttributes<HTMLImageElement>) => (\r\n <img {...props} />\r\n );\r\n\r\n function isStaticCardImage(value: unknown): value is StaticCardImage {\r\n return (\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n \"src\" in value &&\r\n typeof (value as { src: unknown }).src === \"string\"\r\n );\r\n }\r\n\r\n function normalizeImageSource(\r\n srcInput: CardImageSource | undefined,\r\n fallbackWidth?: number,\r\n fallbackHeight?: number\r\n ): { src?: string; width?: number; height?: number } {\r\n if (!srcInput) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n if (typeof srcInput === \"string\") {\r\n const trimmed = srcInput.trim();\r\n if (!trimmed) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n return { src: trimmed, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n if (isStaticCardImage(srcInput)) {\r\n const trimmed = srcInput.src.trim();\r\n if (!trimmed) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: srcInput.width ?? fallbackWidth,\r\n height: srcInput.height ?? fallbackHeight,\r\n };\r\n }\r\n\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n const {\r\n src: imgSrc,\r\n width: resolvedWidth,\r\n height: resolvedHeight,\r\n } = normalizeImageSource(imageUrl, imageWidth, imageHeight);\r\n\r\n const hasImage = Boolean(imgSrc);\r\n\r\n const imgAlt = imageAlt || `${title || \"Card\"} image`;\r\n\r\n const ImageRenderer = ImageComponent || FallbackImage;\r\n\r\n const cardClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.card,\r\n classMap[layout],\r\n align && classMap[align],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n loading && classMap.loading,\r\n className\r\n ),\r\n [\r\n classMap,\r\n layout,\r\n align,\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n outline,\r\n loading,\r\n className,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n data-testid={testId}\r\n className={cardClassName}\r\n role=\"region\"\r\n aria-labelledby={title ? headerId : undefined}\r\n aria-label={!title ? derivedAriaLabel : undefined}\r\n aria-busy={loading || undefined}\r\n >\r\n {loading ? (\r\n <SkeletonComponent\r\n width=\"250px\"\r\n height=\"250px\"\r\n data-testid={`${testId}-skeleton`}\r\n />\r\n ) : (\r\n <div className={classMap.content}>\r\n {hasImage &&\r\n imgSrc &&\r\n (imageFill ? (\r\n <div className={classMap.media}>\r\n <ImageRenderer\r\n src={imgSrc}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n fill\r\n />\r\n </div>\r\n ) : (\r\n <ImageRenderer\r\n src={imgSrc}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n width={resolvedWidth ?? 640}\r\n height={resolvedHeight ?? 360}\r\n />\r\n ))}\r\n\r\n <div>\r\n <div\r\n className={combineClassNames(classMap.header, headerClassName)}\r\n id={headerId}\r\n >\r\n {renderHeader ? (\r\n renderHeader()\r\n ) : title ? (\r\n <h2 className={classMap.title}>\r\n {cardIcon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n {React.createElement(cardIcon)}\r\n </span>\r\n )}\r\n {title}\r\n </h2>\r\n ) : null}\r\n </div>\r\n\r\n <div\r\n className={combineClassNames(classMap.body, bodyClassName)}\r\n role=\"group\"\r\n aria-describedby={description ? descriptionId : undefined}\r\n >\r\n {renderContent ? (\r\n renderContent()\r\n ) : (\r\n <>\r\n {description && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n {children && (\r\n <div className={classMap.children}>{children}</div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {(actionButtons.length > 0 || renderFooter) && (\r\n <div\r\n className={combineClassNames(classMap.footer, footerClassName)}\r\n >\r\n {actionButtons.length > 0 && (\r\n <div className={classMap.actions}>\r\n {actionButtons.map((button, index) =>\r\n useIconButtons && button.icon ? (\r\n <button.iconButtonComponent\r\n key={index}\r\n icon={button.icon}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"clear\"}\r\n state={button.state || \"\"}\r\n aria-label={button.label}\r\n size={button.size || size}\r\n href={button.href}\r\n loading={button.loading}\r\n ariaLabel={button.ariaLabel}\r\n />\r\n ) : (\r\n <button.buttonComponent\r\n key={index}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"secondary\"}\r\n state={button.state || \"\"}\r\n href={button.href}\r\n loading={button.loading}\r\n size={button.size || size}\r\n ariaLabel={button.ariaLabel}\r\n >\r\n {button.label}\r\n </button.buttonComponent>\r\n )\r\n )}\r\n </div>\r\n )}\r\n {renderFooter && renderFooter()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nCardBase.displayName = \"CardBase\";\r\n\r\nexport default CardBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Image, { StaticImageData } from \"next/image\";\r\nimport { Button, IconButton, Skeleton } from \"../../../index.next\";\r\nimport styles from \"./Card.module.scss\";\r\nimport CardBase from \"../CardBase\";\r\nimport { CardImageComponentProps, CardProps } from \"../Card.types\";\r\n\r\nconst NextImageWrapper: React.FC<CardImageComponentProps> = ({\r\n src,\r\n alt,\r\n className,\r\n width,\r\n height,\r\n fill,\r\n}) => {\r\n if (typeof src === \"string\" && src.toLowerCase().endsWith(\".svg\")) {\r\n return (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className={className}\r\n width={width}\r\n height={height}\r\n loading=\"lazy\"\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Image\r\n src={src as StaticImageData | string}\r\n alt={alt}\r\n className={className}\r\n {...(fill\r\n ? { fill, sizes: \"100vw\" }\r\n : { width: width ?? 640, height: height ?? 360 })}\r\n />\r\n );\r\n};\r\n\r\nconst Card: React.FC<CardProps> = (props) => {\r\n const wrappedButtons = (props.actionButtons ?? []).map((b) => ({\r\n ...b,\r\n buttonComponent: Button,\r\n iconButtonComponent: IconButton,\r\n }));\r\n\r\n return (\r\n <CardBase\r\n {...props}\r\n actionButtons={wrappedButtons}\r\n classMap={styles}\r\n SkeletonComponent={Skeleton}\r\n ImageComponent={NextImageWrapper}\r\n />\r\n );\r\n};\r\nCard.displayName = \"Card\";\r\nexport default Card;\r\n"],"names":["getDefaultTheme","title","description","getDefaultRounding","getDefaultShadow","outline","getDefaultSize","loading","children","useId","jsx","useMemo","combineClassNames","capitalize","jsxs","Fragment","Image","Button","IconButton","Skeleton"],"mappings":"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"}
1
+ {"version":3,"file":"Card-BdzmlYGf.cjs","sources":["../../src/components/Card/CardBase.tsx","../../src/components/Card/next/Card.tsx"],"sourcesContent":["import React, { useId, useMemo } from \"react\";\r\nimport { CardBaseProps, CardImageSource, StaticCardImage } from \"./Card.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst CardBase: React.FC<CardBaseProps> = ({\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n cardIcon,\r\n title = \"\",\r\n description = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n imageUrl,\r\n imageAlt,\r\n imageHeight,\r\n imageWidth,\r\n imageFill,\r\n className = \"\",\r\n imageClassName = \"\",\r\n headerClassName = \"\",\r\n bodyClassName = \"\",\r\n footerClassName = \"\",\r\n outline = false,\r\n size = getDefaultSize(),\r\n align = \"center\",\r\n renderHeader,\r\n renderContent,\r\n renderFooter,\r\n actionButtons = [],\r\n useIconButtons = false,\r\n layout = \"vertical\",\r\n loading = false,\r\n children,\r\n \"data-testid\": testId = \"card\",\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-label\": ariaLabel,\r\n classMap,\r\n SkeletonComponent,\r\n ImageComponent,\r\n}) => {\r\n const autoId = useId();\r\n const headerId = ariaLabelledBy || `${autoId}-header`;\r\n const descriptionId = `${autoId}-description`;\r\n const derivedAriaLabel = ariaLabel || title || description || \"Content card\";\r\n\r\n const FallbackImage = (props: React.ImgHTMLAttributes<HTMLImageElement>) => (\r\n <img {...props} />\r\n );\r\n\r\n function isStaticCardImage(value: unknown): value is StaticCardImage {\r\n return (\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n \"src\" in value &&\r\n typeof (value as { src: unknown }).src === \"string\"\r\n );\r\n }\r\n\r\n function normalizeImageSource(\r\n srcInput: CardImageSource | undefined,\r\n fallbackWidth?: number,\r\n fallbackHeight?: number\r\n ): { src?: string; width?: number; height?: number } {\r\n if (!srcInput) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n if (typeof srcInput === \"string\") {\r\n const trimmed = srcInput.trim();\r\n if (!trimmed) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n return { src: trimmed, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n if (isStaticCardImage(srcInput)) {\r\n const trimmed = srcInput.src.trim();\r\n if (!trimmed) {\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n return {\r\n src: trimmed,\r\n width: srcInput.width ?? fallbackWidth,\r\n height: srcInput.height ?? fallbackHeight,\r\n };\r\n }\r\n\r\n return { src: undefined, width: fallbackWidth, height: fallbackHeight };\r\n }\r\n\r\n const {\r\n src: imgSrc,\r\n width: resolvedWidth,\r\n height: resolvedHeight,\r\n } = normalizeImageSource(imageUrl, imageWidth, imageHeight);\r\n\r\n const hasImage = Boolean(imgSrc);\r\n\r\n const imgAlt = imageAlt || `${title || \"Card\"} image`;\r\n\r\n const ImageRenderer = ImageComponent || FallbackImage;\r\n\r\n const cardClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.card,\r\n classMap[layout],\r\n align && classMap[align],\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n loading && classMap.loading,\r\n className\r\n ),\r\n [\r\n classMap,\r\n layout,\r\n align,\r\n theme,\r\n state,\r\n size,\r\n shadow,\r\n rounding,\r\n outline,\r\n loading,\r\n className,\r\n ]\r\n );\r\n\r\n return (\r\n <div\r\n data-testid={testId}\r\n className={cardClassName}\r\n role=\"region\"\r\n aria-labelledby={title ? headerId : undefined}\r\n aria-label={!title ? derivedAriaLabel : undefined}\r\n aria-busy={loading || undefined}\r\n >\r\n {loading ? (\r\n <SkeletonComponent\r\n width=\"250px\"\r\n height=\"250px\"\r\n data-testid={`${testId}-skeleton`}\r\n />\r\n ) : (\r\n <div className={classMap.content}>\r\n {hasImage &&\r\n imgSrc &&\r\n (imageFill ? (\r\n <div className={classMap.media}>\r\n <ImageRenderer\r\n src={imgSrc}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n fill\r\n />\r\n </div>\r\n ) : (\r\n <ImageRenderer\r\n src={imgSrc}\r\n alt={imgAlt}\r\n className={combineClassNames(classMap.image, imageClassName)}\r\n width={resolvedWidth ?? 640}\r\n height={resolvedHeight ?? 360}\r\n />\r\n ))}\r\n\r\n <div>\r\n <div\r\n className={combineClassNames(classMap.header, headerClassName)}\r\n id={headerId}\r\n >\r\n {renderHeader ? (\r\n renderHeader()\r\n ) : title ? (\r\n <h2 className={classMap.title}>\r\n {cardIcon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n {React.createElement(cardIcon)}\r\n </span>\r\n )}\r\n {title}\r\n </h2>\r\n ) : null}\r\n </div>\r\n\r\n <div\r\n className={combineClassNames(classMap.body, bodyClassName)}\r\n role=\"group\"\r\n aria-describedby={description ? descriptionId : undefined}\r\n >\r\n {renderContent ? (\r\n renderContent()\r\n ) : (\r\n <>\r\n {description && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n {children && (\r\n <div className={classMap.children}>{children}</div>\r\n )}\r\n </>\r\n )}\r\n </div>\r\n\r\n {(actionButtons.length > 0 || renderFooter) && (\r\n <div\r\n className={combineClassNames(classMap.footer, footerClassName)}\r\n >\r\n {actionButtons.length > 0 && (\r\n <div className={classMap.actions}>\r\n {actionButtons.map((button, index) =>\r\n useIconButtons && button.icon ? (\r\n <button.iconButtonComponent\r\n key={index}\r\n icon={button.icon}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"clear\"}\r\n state={button.state || \"\"}\r\n aria-label={button.label}\r\n size={button.size || size}\r\n href={button.href}\r\n loading={button.loading}\r\n ariaLabel={button.ariaLabel}\r\n />\r\n ) : (\r\n <button.buttonComponent\r\n key={index}\r\n onClick={button.onClick}\r\n className={classMap.action_button}\r\n theme={button.theme || \"secondary\"}\r\n state={button.state || \"\"}\r\n href={button.href}\r\n loading={button.loading}\r\n size={button.size || size}\r\n ariaLabel={button.ariaLabel}\r\n >\r\n {button.label}\r\n </button.buttonComponent>\r\n )\r\n )}\r\n </div>\r\n )}\r\n {renderFooter && renderFooter()}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nCardBase.displayName = \"CardBase\";\r\n\r\nexport default CardBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport Image, { StaticImageData } from \"next/image\";\r\nimport { Button, IconButton, Skeleton } from \"../../../index.next\";\r\nimport styles from \"./Card.module.scss\";\r\nimport CardBase from \"../CardBase\";\r\nimport { CardImageComponentProps, CardProps } from \"../Card.types\";\r\n\r\nconst NextImageWrapper: React.FC<CardImageComponentProps> = ({\r\n src,\r\n alt,\r\n className,\r\n width,\r\n height,\r\n fill,\r\n}) => {\r\n if (typeof src === \"string\" && src.toLowerCase().endsWith(\".svg\")) {\r\n return (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className={className}\r\n width={width}\r\n height={height}\r\n loading=\"lazy\"\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <Image\r\n src={src as StaticImageData | string}\r\n alt={alt}\r\n className={className}\r\n {...(fill\r\n ? { fill, sizes: \"100vw\" }\r\n : { width: width ?? 640, height: height ?? 360 })}\r\n />\r\n );\r\n};\r\n\r\nconst Card: React.FC<CardProps> = (props) => {\r\n const wrappedButtons = (props.actionButtons ?? []).map((b) => ({\r\n ...b,\r\n buttonComponent: Button,\r\n iconButtonComponent: IconButton,\r\n }));\r\n\r\n return (\r\n <CardBase\r\n {...props}\r\n actionButtons={wrappedButtons}\r\n classMap={styles}\r\n SkeletonComponent={Skeleton}\r\n ImageComponent={NextImageWrapper}\r\n />\r\n );\r\n};\r\nCard.displayName = \"Card\";\r\nexport default Card;\r\n"],"names":["getDefaultTheme","title","description","getDefaultRounding","getDefaultShadow","outline","getDefaultSize","loading","children","useId","jsx","useMemo","combineClassNames","capitalize","jsxs","Fragment","Image","Button","IconButton","Skeleton"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const Card = require("./Card-C0SorjuI.cjs");
2
+ const Card = require("./Card-BdzmlYGf.cjs");
3
3
  module.exports = Card.Card;
4
4
  //# sourceMappingURL=Card.cjs.js.map
package/dist/next/Card.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C } from "./Card-Da7D02Sj.js";
1
+ import { C } from "./Card-4SKxHmOQ.js";
2
2
  export {
3
3
  C as default
4
4
  };
@@ -6,7 +6,7 @@ import { c as capitalize } from "./capitalize-C0TSQSPh.js";
6
6
  import { a as getDefaultRounding, b as getDefaultShadow, c as getDefaultSize, d as getDefaultTheme } from "./boreal-style-config-BILmxkZG.js";
7
7
  import { C as CloseIcon } from "./CloseIcon-C3eQm4EK.js";
8
8
  /* empty css */
9
- import { I as IconButton } from "./IconButton-BTUFKRZt.js";
9
+ import { I as IconButton } from "./IconButton-Ct3YtlG9.js";
10
10
  const ChipBase = ({
11
11
  id,
12
12
  message: message2,
@@ -215,4 +215,4 @@ Chip.displayName = "Chip";
215
215
  export {
216
216
  Chip as C
217
217
  };
218
- //# sourceMappingURL=Chip-D2mvW5L7.js.map
218
+ //# sourceMappingURL=Chip-BqMZEDW_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chip-D2mvW5L7.js","sources":["../../src/components/Chip/ChipBase.tsx","../../src/components/Chip/next/Chip.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { ChipBaseProps } from \"./Chip.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst ChipBase: React.FC<ChipBaseProps> = ({\r\n id,\r\n message,\r\n visible,\r\n onClose,\r\n icon: Icon,\r\n size = getDefaultSize(),\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n position = \"topCenter\",\r\n usePortal = true,\r\n className = \"\",\r\n autoClose = true,\r\n duration = 3000,\r\n closeIcon: CloseIcon,\r\n IconButtonComponent,\r\n classMap,\r\n stackIndex,\r\n \"data-testid\": testId = \"chip\",\r\n}) => {\r\n const [closing, setClosing] = useState(false);\r\n\r\n const handleClose = useCallback(() => {\r\n setClosing(true);\r\n setTimeout(() => onClose?.(), 300);\r\n }, [onClose]);\r\n\r\n useEffect(() => {\r\n if (autoClose && visible) {\r\n const timer = setTimeout(() => handleClose(), duration);\r\n return () => clearTimeout(timer);\r\n }\r\n }, [autoClose, duration, visible, handleClose]);\r\n\r\n useEffect(() => {\r\n if (visible) setClosing(false);\r\n }, [visible]);\r\n\r\n useEffect(() => {\r\n if (!visible) return;\r\n const onKey = (e: globalThis.KeyboardEvent) => {\r\n if (e.key === \"Escape\") handleClose();\r\n };\r\n window.addEventListener(\"keydown\", onKey);\r\n return () => window.removeEventListener(\"keydown\", onKey);\r\n }, [visible, handleClose]);\r\n\r\n if (!visible && !closing) return null;\r\n\r\n const chipClassName = combineClassNames(\r\n classMap.chip,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n classMap[position],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n closing && classMap.fadeout,\r\n usePortal && classMap.fixed,\r\n className\r\n );\r\n\r\n const portalEl =\r\n typeof window !== \"undefined\"\r\n ? document.getElementById(\"widget-portal\")\r\n : null;\r\n\r\n const chipElement = (\r\n <div\r\n key={id}\r\n className={chipClassName}\r\n role=\"alert\"\r\n aria-live=\"assertive\"\r\n aria-atomic=\"true\"\r\n data-testid={testId}\r\n style={stackIndex != null ? { zIndex: stackIndex } : undefined}\r\n >\r\n {Icon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon className={classMap.inner_icon} />\r\n </span>\r\n )}\r\n <span className={classMap.message} id={`${testId}-message`}>\r\n {message}\r\n </span>\r\n\r\n <IconButtonComponent\r\n icon={CloseIcon}\r\n size={size}\r\n theme=\"clear\"\r\n ariaLabel=\"Close notification\"\r\n aria-controls={`${testId}-message`}\r\n className={classMap.close}\r\n onClick={handleClose}\r\n shadow=\"none\"\r\n data-testid={`${testId}-chip-close`}\r\n />\r\n </div>\r\n );\r\n\r\n if (usePortal && portalEl) {\r\n return createPortal(chipElement, portalEl);\r\n }\r\n\r\n return chipElement;\r\n};\r\n\r\nChipBase.displayName = \"ChipBase\";\r\nexport default ChipBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport ChipBase from \"../ChipBase\";\r\nimport { CloseIcon } from \"@/Icons\";\r\nimport { IconButton } from \"@/index.next\";\r\nimport styles from \"./Chip.module.scss\";\r\nimport { ChipProps } from \"../Chip.types\";\r\n\r\nconst Chip: React.FC<ChipProps> = (props) => (\r\n <ChipBase\r\n {...props}\r\n classMap={styles}\r\n IconButtonComponent={IconButton}\r\n closeIcon={CloseIcon}\r\n />\r\n);\r\nChip.displayName = \"Chip\";\r\nexport default Chip;\r\n"],"names":["message","CloseIcon"],"mappings":"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"}
1
+ {"version":3,"file":"Chip-BqMZEDW_.js","sources":["../../src/components/Chip/ChipBase.tsx","../../src/components/Chip/next/Chip.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { ChipBaseProps } from \"./Chip.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultSize,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst ChipBase: React.FC<ChipBaseProps> = ({\r\n id,\r\n message,\r\n visible,\r\n onClose,\r\n icon: Icon,\r\n size = getDefaultSize(),\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n position = \"topCenter\",\r\n usePortal = true,\r\n className = \"\",\r\n autoClose = true,\r\n duration = 3000,\r\n closeIcon: CloseIcon,\r\n IconButtonComponent,\r\n classMap,\r\n stackIndex,\r\n \"data-testid\": testId = \"chip\",\r\n}) => {\r\n const [closing, setClosing] = useState(false);\r\n\r\n const handleClose = useCallback(() => {\r\n setClosing(true);\r\n setTimeout(() => onClose?.(), 300);\r\n }, [onClose]);\r\n\r\n useEffect(() => {\r\n if (autoClose && visible) {\r\n const timer = setTimeout(() => handleClose(), duration);\r\n return () => clearTimeout(timer);\r\n }\r\n }, [autoClose, duration, visible, handleClose]);\r\n\r\n useEffect(() => {\r\n if (visible) setClosing(false);\r\n }, [visible]);\r\n\r\n useEffect(() => {\r\n if (!visible) return;\r\n const onKey = (e: globalThis.KeyboardEvent) => {\r\n if (e.key === \"Escape\") handleClose();\r\n };\r\n window.addEventListener(\"keydown\", onKey);\r\n return () => window.removeEventListener(\"keydown\", onKey);\r\n }, [visible, handleClose]);\r\n\r\n if (!visible && !closing) return null;\r\n\r\n const chipClassName = combineClassNames(\r\n classMap.chip,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n classMap[position],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n closing && classMap.fadeout,\r\n usePortal && classMap.fixed,\r\n className\r\n );\r\n\r\n const portalEl =\r\n typeof window !== \"undefined\"\r\n ? document.getElementById(\"widget-portal\")\r\n : null;\r\n\r\n const chipElement = (\r\n <div\r\n key={id}\r\n className={chipClassName}\r\n role=\"alert\"\r\n aria-live=\"assertive\"\r\n aria-atomic=\"true\"\r\n data-testid={testId}\r\n style={stackIndex != null ? { zIndex: stackIndex } : undefined}\r\n >\r\n {Icon && (\r\n <span\r\n className={classMap.icon}\r\n aria-hidden=\"true\"\r\n data-testid={`${testId}-icon`}\r\n >\r\n <Icon className={classMap.inner_icon} />\r\n </span>\r\n )}\r\n <span className={classMap.message} id={`${testId}-message`}>\r\n {message}\r\n </span>\r\n\r\n <IconButtonComponent\r\n icon={CloseIcon}\r\n size={size}\r\n theme=\"clear\"\r\n ariaLabel=\"Close notification\"\r\n aria-controls={`${testId}-message`}\r\n className={classMap.close}\r\n onClick={handleClose}\r\n shadow=\"none\"\r\n data-testid={`${testId}-chip-close`}\r\n />\r\n </div>\r\n );\r\n\r\n if (usePortal && portalEl) {\r\n return createPortal(chipElement, portalEl);\r\n }\r\n\r\n return chipElement;\r\n};\r\n\r\nChipBase.displayName = \"ChipBase\";\r\nexport default ChipBase;\r\n","\"use client\";\r\n\r\nimport React from \"react\";\r\nimport ChipBase from \"../ChipBase\";\r\nimport { CloseIcon } from \"@/Icons\";\r\nimport { IconButton } from \"@/index.next\";\r\nimport styles from \"./Chip.module.scss\";\r\nimport { ChipProps } from \"../Chip.types\";\r\n\r\nconst Chip: React.FC<ChipProps> = (props) => (\r\n <ChipBase\r\n {...props}\r\n classMap={styles}\r\n IconButtonComponent={IconButton}\r\n closeIcon={CloseIcon}\r\n />\r\n);\r\nChip.displayName = \"Chip\";\r\nexport default Chip;\r\n"],"names":["message","CloseIcon"],"mappings":"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"}