boreal-ui 0.0.73 → 0.0.74

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 (413) hide show
  1. package/dist/core/{Avatar-Ct2kXkNR.js → Avatar-CHatDRhp.js} +2 -2
  2. package/dist/core/{Avatar-Ct2kXkNR.js.map → Avatar-CHatDRhp.js.map} +1 -1
  3. package/dist/core/Avatar.js +1 -1
  4. package/dist/core/{Badge-BOd5dF4l.js → Badge-DwWiN50f.js} +2 -2
  5. package/dist/core/{Badge-BOd5dF4l.js.map → Badge-DwWiN50f.js.map} +1 -1
  6. package/dist/core/Badge.js +1 -1
  7. package/dist/core/{Breadcrumbs-C1Z59ffV.js → Breadcrumbs-kbOyaea6.js} +3 -3
  8. package/dist/core/{Breadcrumbs-C1Z59ffV.js.map → Breadcrumbs-kbOyaea6.js.map} +1 -1
  9. package/dist/core/Breadcrumbs.js +1 -1
  10. package/dist/core/{Button-IALg9VKr.js → Button-CneoIlVV.js} +2 -2
  11. package/dist/core/{Button-IALg9VKr.js.map → Button-CneoIlVV.js.map} +1 -1
  12. package/dist/core/Button.js +1 -1
  13. package/dist/core/{Card-dazG4EK1.js → Card-CZY1qzwZ.js} +4 -4
  14. package/dist/core/{Card-dazG4EK1.js.map → Card-CZY1qzwZ.js.map} +1 -1
  15. package/dist/core/Card.js +1 -1
  16. package/dist/core/CheckBox.js +1 -1
  17. package/dist/core/{Checkbox-DmMDTc5Z.js → Checkbox-BuFcBJb9.js} +2 -2
  18. package/dist/core/{Checkbox-DmMDTc5Z.js.map → Checkbox-BuFcBJb9.js.map} +1 -1
  19. package/dist/core/{Chip-DSBIjvJZ.js → Chip-DoRSxZKk.js} +3 -3
  20. package/dist/core/{Chip-DSBIjvJZ.js.map → Chip-DoRSxZKk.js.map} +1 -1
  21. package/dist/core/Chip.js +1 -1
  22. package/dist/core/{CommandPalette-BBjIib6T.js → CommandPalette-0uVG4iR2.js} +3 -3
  23. package/dist/core/{CommandPalette-BBjIib6T.js.map → CommandPalette-0uVG4iR2.js.map} +1 -1
  24. package/dist/core/CommandPalette.js +1 -1
  25. package/dist/core/{DateTimePicker-u2p4sBbR.js → DateTimePicker-wO_P5Ab1.js} +2 -2
  26. package/dist/core/{DateTimePicker-u2p4sBbR.js.map → DateTimePicker-wO_P5Ab1.js.map} +1 -1
  27. package/dist/core/DateTimePicker.js +1 -1
  28. package/dist/core/{Dropdown-BGJ8mGhg.js → Dropdown-BEPGhf-i.js} +3 -3
  29. package/dist/core/{Dropdown-BGJ8mGhg.js.map → Dropdown-BEPGhf-i.js.map} +1 -1
  30. package/dist/core/Dropdown.js +1 -1
  31. package/dist/core/{EmptyState-CCSPIDo3.js → EmptyState-CM7nlKER.js} +3 -3
  32. package/dist/core/{EmptyState-CCSPIDo3.js.map → EmptyState-CM7nlKER.js.map} +1 -1
  33. package/dist/core/EmptyState.js +1 -1
  34. package/dist/core/{FileUpload-BWjOciA3.js → FileUpload-CPZetlXM.js} +5 -5
  35. package/dist/core/{FileUpload-BWjOciA3.js.map → FileUpload-CPZetlXM.js.map} +1 -1
  36. package/dist/core/FileUpload.js +1 -1
  37. package/dist/core/{Footer-CkSzN_PI.js → Footer-Q_60pe6o.js} +5 -5
  38. package/dist/core/{Footer-CkSzN_PI.js.map → Footer-Q_60pe6o.js.map} +1 -1
  39. package/dist/core/Footer.js +1 -1
  40. package/dist/core/{IconButton-ChJJCB4O.js → IconButton-By8zuXrs.js} +2 -2
  41. package/dist/core/{IconButton-ChJJCB4O.js.map → IconButton-By8zuXrs.js.map} +1 -1
  42. package/dist/core/IconButton.js +1 -1
  43. package/dist/core/{MessagePopup-D6xuwdAv.js → MessagePopup-D6ljI_rQ.js} +3 -3
  44. package/dist/core/{MessagePopup-D6xuwdAv.js.map → MessagePopup-D6ljI_rQ.js.map} +1 -1
  45. package/dist/core/MessagePopup.js +1 -1
  46. package/dist/core/{MetricBox-BlkBoGCL.js → MetricBox-DTn2x1vz.js} +2 -2
  47. package/dist/core/{MetricBox-BlkBoGCL.js.map → MetricBox-DTn2x1vz.js.map} +1 -1
  48. package/dist/core/MetricBox.js +1 -1
  49. package/dist/core/{Modal-DhpY3Kt6.cjs → Modal-B9FXClBr.cjs} +4 -4
  50. package/dist/core/Modal-B9FXClBr.cjs.map +1 -0
  51. package/dist/core/{Modal-DVz_GNOL.js → Modal-CW8jt0lU.js} +5 -5
  52. package/dist/core/Modal-CW8jt0lU.js.map +1 -0
  53. package/dist/core/Modal.cjs.js +1 -1
  54. package/dist/core/Modal.js +1 -1
  55. package/dist/core/{NotificationCenter-MTRIDmMm.js → NotificationCenter-DA-WGPP9.js} +3 -3
  56. package/dist/core/{NotificationCenter-MTRIDmMm.js.map → NotificationCenter-DA-WGPP9.js.map} +1 -1
  57. package/dist/core/NotificationCenter.js +1 -1
  58. package/dist/core/{Pager-B2MEqAOV.js → Pager-B4hyIUdo.js} +4 -4
  59. package/dist/core/{Pager-B2MEqAOV.js.map → Pager-B4hyIUdo.js.map} +1 -1
  60. package/dist/core/Pager.js +1 -1
  61. package/dist/core/{PopOver-lRqOHUJg.js → PopOver-DCuqGQ_j.js} +2 -2
  62. package/dist/core/{PopOver-lRqOHUJg.js.map → PopOver-DCuqGQ_j.js.map} +1 -1
  63. package/dist/core/PopOver.js +1 -1
  64. package/dist/core/{ProgressBar-pVPs5lsA.js → ProgressBar-BxzX6yn1.js} +2 -2
  65. package/dist/core/{ProgressBar-pVPs5lsA.js.map → ProgressBar-BxzX6yn1.js.map} +1 -1
  66. package/dist/core/ProgressBar.js +1 -1
  67. package/dist/core/{Select-CeyJGftD.js → Select-BXIz5BbU.js} +2 -2
  68. package/dist/core/{Select-CeyJGftD.js.map → Select-BXIz5BbU.js.map} +1 -1
  69. package/dist/core/Select.js +1 -1
  70. package/dist/core/{Sidebar-BWzuQw-r.js → Sidebar-Bi7elIRO.js} +2 -2
  71. package/dist/core/{Sidebar-BWzuQw-r.js.map → Sidebar-Bi7elIRO.js.map} +1 -1
  72. package/dist/core/Sidebar.js +1 -1
  73. package/dist/core/{Slider-Dxcryk5j.js → Slider-CW11kjMv.js} +2 -2
  74. package/dist/core/{Slider-Dxcryk5j.js.map → Slider-CW11kjMv.js.map} +1 -1
  75. package/dist/core/Slider.js +1 -1
  76. package/dist/core/{Stepper-SDJM-Jju.js → Stepper-CLfy0_gZ.js} +3 -3
  77. package/dist/core/{Stepper-SDJM-Jju.js.map → Stepper-CLfy0_gZ.js.map} +1 -1
  78. package/dist/core/Stepper.js +1 -1
  79. package/dist/core/{Tabs-B4HRqGuB.js → Tabs-DBqWn9j9.js} +2 -2
  80. package/dist/core/{Tabs-B4HRqGuB.js.map → Tabs-DBqWn9j9.js.map} +1 -1
  81. package/dist/core/Tabs.js +1 -1
  82. package/dist/core/{TagInput-CcuMIlmi.js → TagInput-YieWARAt.js} +4 -4
  83. package/dist/core/{TagInput-CcuMIlmi.js.map → TagInput-YieWARAt.js.map} +1 -1
  84. package/dist/core/TagInput.js +1 -1
  85. package/dist/core/{TextArea-Ufou1zw1.js → TextArea-CLLK5k18.js} +2 -2
  86. package/dist/core/{TextArea-Ufou1zw1.js.map → TextArea-CLLK5k18.js.map} +1 -1
  87. package/dist/core/TextArea.js +1 -1
  88. package/dist/core/{TextInput-BaiDGrKw.js → TextInput-Bc2YpcvM.js} +3 -3
  89. package/dist/core/{TextInput-BaiDGrKw.js.map → TextInput-Bc2YpcvM.js.map} +1 -1
  90. package/dist/core/TextInput.js +1 -1
  91. package/dist/core/{ThemeContext-nYSJ_G6L.js → ThemeContext-zE_shsx6.js} +3 -3
  92. package/dist/{next/ThemeContext-nYSJ_G6L.js.map → core/ThemeContext-zE_shsx6.js.map} +1 -1
  93. package/dist/core/ThemeProvider.js +3 -3
  94. package/dist/core/{Timeline-BRLd8boJ.js → Timeline-5mzFplzB.js} +2 -2
  95. package/dist/core/{Timeline-BRLd8boJ.js.map → Timeline-5mzFplzB.js.map} +1 -1
  96. package/dist/core/Timeline.js +1 -1
  97. package/dist/core/{Toggle-DL0Nhwgr.js → Toggle-DCK1KtP5.js} +2 -2
  98. package/dist/core/{Toggle-DL0Nhwgr.js.map → Toggle-DCK1KtP5.js.map} +1 -1
  99. package/dist/core/Toggle.js +1 -1
  100. package/dist/core/{Toolbar-fSghH1_-.js → Toolbar-DLgQqPBh.js} +3 -3
  101. package/dist/core/{Toolbar-fSghH1_-.js.map → Toolbar-DLgQqPBh.js.map} +1 -1
  102. package/dist/core/Toolbar.js +1 -1
  103. package/dist/core/{Tooltip-wKNLA3ua.js → Tooltip-Dua_3tqJ.js} +2 -2
  104. package/dist/core/{Tooltip-wKNLA3ua.js.map → Tooltip-Dua_3tqJ.js.map} +1 -1
  105. package/dist/core/Tooltip.js +1 -1
  106. package/dist/core/Typography-D0hPzK5Y.js.map +1 -1
  107. package/dist/core/Typography-DdTiWRgQ.cjs.map +1 -1
  108. package/dist/core/index.cjs.js +8013 -1
  109. package/dist/core/index.cjs.js.map +1 -1
  110. package/dist/core/index.js +8049 -37
  111. package/dist/core/index.js.map +1 -1
  112. package/dist/next/{Avatar-iZKOY9MH.cjs → Avatar-DL_juTQA.cjs} +3 -3
  113. package/dist/next/{Avatar-iZKOY9MH.cjs.map → Avatar-DL_juTQA.cjs.map} +1 -1
  114. package/dist/next/{Avatar-CiFxswSP.js → Avatar-nnjhILk-.js} +4 -4
  115. package/dist/next/{Avatar-CiFxswSP.js.map → Avatar-nnjhILk-.js.map} +1 -1
  116. package/dist/next/Avatar.cjs.js +1 -1
  117. package/dist/next/Avatar.js +1 -1
  118. package/dist/next/{Badge-WP2DFssv.js → Badge-uyqxj7ag.js} +2 -2
  119. package/dist/next/{Badge-WP2DFssv.js.map → Badge-uyqxj7ag.js.map} +1 -1
  120. package/dist/next/Badge.js +1 -1
  121. package/dist/next/{Breadcrumbs-CV5iM8BP.cjs → Breadcrumbs-CuvOmgFe.cjs} +3 -3
  122. package/dist/next/{Breadcrumbs-CV5iM8BP.cjs.map → Breadcrumbs-CuvOmgFe.cjs.map} +1 -1
  123. package/dist/next/{Breadcrumbs-B60a5DUy.js → Breadcrumbs-D0AmJB4U.js} +4 -4
  124. package/dist/next/{Breadcrumbs-B60a5DUy.js.map → Breadcrumbs-D0AmJB4U.js.map} +1 -1
  125. package/dist/next/Breadcrumbs.cjs.js +1 -1
  126. package/dist/next/Breadcrumbs.js +1 -1
  127. package/dist/next/{Button-DMCOgi4K.cjs → Button-BZmph-Qr.cjs} +2 -2
  128. package/dist/next/{Button-DMCOgi4K.cjs.map → Button-BZmph-Qr.cjs.map} +1 -1
  129. package/dist/next/{Button-BfgUzkgN.js → Button-DWpImTmr.js} +3 -3
  130. package/dist/next/{Button-BfgUzkgN.js.map → Button-DWpImTmr.js.map} +1 -1
  131. package/dist/next/Button.cjs.js +1 -1
  132. package/dist/next/Button.js +1 -1
  133. package/dist/next/{Card-CSFC7mpW.js → Card-DnZOsQLP.js} +5 -5
  134. package/dist/next/{Card-CSFC7mpW.js.map → Card-DnZOsQLP.js.map} +1 -1
  135. package/dist/next/{Card-0Pm8Vjjn.cjs → Card-oPTXIvsb.cjs} +4 -4
  136. package/dist/next/{Card-0Pm8Vjjn.cjs.map → Card-oPTXIvsb.cjs.map} +1 -1
  137. package/dist/next/Card.cjs.js +1 -1
  138. package/dist/next/Card.js +1 -1
  139. package/dist/next/CheckBox.js +1 -1
  140. package/dist/next/{Checkbox-BlWHxhjw.js → Checkbox-CRg5oEdB.js} +2 -2
  141. package/dist/next/{Checkbox-BlWHxhjw.js.map → Checkbox-CRg5oEdB.js.map} +1 -1
  142. package/dist/next/{Chip-CuaKFQku.js → Chip-Cg7khsSn.js} +3 -3
  143. package/dist/next/{Chip-CuaKFQku.js.map → Chip-Cg7khsSn.js.map} +1 -1
  144. package/dist/next/{Chip-CB1mcRA1.cjs → Chip-DpMTNARP.cjs} +2 -2
  145. package/dist/next/{Chip-CB1mcRA1.cjs.map → Chip-DpMTNARP.cjs.map} +1 -1
  146. package/dist/next/Chip.cjs.js +1 -1
  147. package/dist/next/Chip.js +1 -1
  148. package/dist/next/{CommandPalette-BQEJG5yN.cjs → CommandPalette-BvjlLE14.cjs} +2 -2
  149. package/dist/next/{CommandPalette-BQEJG5yN.cjs.map → CommandPalette-BvjlLE14.cjs.map} +1 -1
  150. package/dist/next/{CommandPalette-Cxx3Ey9J.js → CommandPalette-D6R9_gmo.js} +3 -3
  151. package/dist/next/{CommandPalette-Cxx3Ey9J.js.map → CommandPalette-D6R9_gmo.js.map} +1 -1
  152. package/dist/next/CommandPalette.cjs.js +1 -1
  153. package/dist/next/CommandPalette.js +1 -1
  154. package/dist/next/{DateTimePicker-CdPvr6Mc.js → DateTimePicker-DB2exnHd.js} +2 -2
  155. package/dist/next/{DateTimePicker-CdPvr6Mc.js.map → DateTimePicker-DB2exnHd.js.map} +1 -1
  156. package/dist/next/DateTimePicker.js +1 -1
  157. package/dist/next/{Dropdown-79ZIBUjB.js → Dropdown-B7PgWHlY.js} +3 -3
  158. package/dist/next/{Dropdown-79ZIBUjB.js.map → Dropdown-B7PgWHlY.js.map} +1 -1
  159. package/dist/next/{Dropdown-BfvCn_20.cjs → Dropdown-kQLhr7_M.cjs} +2 -2
  160. package/dist/next/{Dropdown-BfvCn_20.cjs.map → Dropdown-kQLhr7_M.cjs.map} +1 -1
  161. package/dist/next/Dropdown.cjs.js +1 -1
  162. package/dist/next/Dropdown.js +1 -1
  163. package/dist/next/{EmptyState-Dy1Xeyzp.cjs → EmptyState-BH1X81TH.cjs} +2 -2
  164. package/dist/next/{EmptyState-Dy1Xeyzp.cjs.map → EmptyState-BH1X81TH.cjs.map} +1 -1
  165. package/dist/next/{EmptyState-oXCSBosz.js → EmptyState-DCCDQWOQ.js} +3 -3
  166. package/dist/next/{EmptyState-oXCSBosz.js.map → EmptyState-DCCDQWOQ.js.map} +1 -1
  167. package/dist/next/EmptyState.cjs.js +1 -1
  168. package/dist/next/EmptyState.js +1 -1
  169. package/dist/next/{FileUpload-qiY8YpDz.js → FileUpload-BQW5ol7P.js} +5 -5
  170. package/dist/next/{FileUpload-qiY8YpDz.js.map → FileUpload-BQW5ol7P.js.map} +1 -1
  171. package/dist/next/{FileUpload-C1DVXFK7.cjs → FileUpload-C9Ke2cTs.cjs} +3 -3
  172. package/dist/next/{FileUpload-C1DVXFK7.cjs.map → FileUpload-C9Ke2cTs.cjs.map} +1 -1
  173. package/dist/next/FileUpload.cjs.js +1 -1
  174. package/dist/next/FileUpload.js +1 -1
  175. package/dist/next/{Footer-DIPBB0is.js → Footer-Dl_wQwsb.js} +7 -7
  176. package/dist/next/{Footer-DIPBB0is.js.map → Footer-Dl_wQwsb.js.map} +1 -1
  177. package/dist/next/{Footer-4L7pu4Gp.cjs → Footer-i9rgxATK.cjs} +4 -4
  178. package/dist/next/{Footer-4L7pu4Gp.cjs.map → Footer-i9rgxATK.cjs.map} +1 -1
  179. package/dist/next/Footer.cjs.js +1 -1
  180. package/dist/next/Footer.js +1 -1
  181. package/dist/next/{IconButton-C4OC99ig.cjs → IconButton-4ySBEhn1.cjs} +2 -2
  182. package/dist/next/{IconButton-C4OC99ig.cjs.map → IconButton-4ySBEhn1.cjs.map} +1 -1
  183. package/dist/next/{IconButton-CNiln4Qf.js → IconButton-BWw3WPaS.js} +3 -3
  184. package/dist/next/{IconButton-CNiln4Qf.js.map → IconButton-BWw3WPaS.js.map} +1 -1
  185. package/dist/next/IconButton.cjs.js +1 -1
  186. package/dist/next/IconButton.js +1 -1
  187. package/dist/next/{MessagePopup-BscnzqBa.js → MessagePopup-DIrdAeyg.js} +3 -3
  188. package/dist/next/{MessagePopup-BscnzqBa.js.map → MessagePopup-DIrdAeyg.js.map} +1 -1
  189. package/dist/next/{MessagePopup-lIFn7LZ2.cjs → MessagePopup-D_gZy6eH.cjs} +3 -3
  190. package/dist/next/{MessagePopup-lIFn7LZ2.cjs.map → MessagePopup-D_gZy6eH.cjs.map} +1 -1
  191. package/dist/next/MessagePopup.cjs.js +1 -1
  192. package/dist/next/MessagePopup.js +1 -1
  193. package/dist/next/{MetricBox-Br-_66aB.js → MetricBox-D9-RmZoy.js} +2 -2
  194. package/dist/next/{MetricBox-Br-_66aB.js.map → MetricBox-D9-RmZoy.js.map} +1 -1
  195. package/dist/next/MetricBox.js +1 -1
  196. package/dist/next/{Modal-Baxb-_FV.cjs → Modal-D7hNuMII.cjs} +5 -5
  197. package/dist/next/Modal-D7hNuMII.cjs.map +1 -0
  198. package/dist/next/{Modal-ClsOP_6R.js → Modal-Dre8TMtr.js} +5 -5
  199. package/dist/next/Modal-Dre8TMtr.js.map +1 -0
  200. package/dist/next/Modal.cjs.js +1 -1
  201. package/dist/next/Modal.js +1 -1
  202. package/dist/next/{NavBar-BXnGlk49.cjs → NavBar-d-Hx7gkg.cjs} +3 -3
  203. package/dist/next/{NavBar-BXnGlk49.cjs.map → NavBar-d-Hx7gkg.cjs.map} +1 -1
  204. package/dist/next/{NavBar-Bmf1C-io.js → NavBar-dpbPYT0w.js} +3 -3
  205. package/dist/next/{NavBar-Bmf1C-io.js.map → NavBar-dpbPYT0w.js.map} +1 -1
  206. package/dist/next/NavBar.cjs.js +1 -1
  207. package/dist/next/NavBar.js +1 -1
  208. package/dist/next/{NotificationCenter-BrXxvcLm.js → NotificationCenter-BrAzv2oD.js} +3 -3
  209. package/dist/next/{NotificationCenter-BrXxvcLm.js.map → NotificationCenter-BrAzv2oD.js.map} +1 -1
  210. package/dist/next/{NotificationCenter-XcbhUqkh.cjs → NotificationCenter-JIX-pouI.cjs} +3 -3
  211. package/dist/next/{NotificationCenter-XcbhUqkh.cjs.map → NotificationCenter-JIX-pouI.cjs.map} +1 -1
  212. package/dist/next/NotificationCenter.cjs.js +1 -1
  213. package/dist/next/NotificationCenter.js +1 -1
  214. package/dist/next/{Pager-Dq-KkMmi.js → Pager-DFKfUn1s.js} +4 -4
  215. package/dist/next/{Pager-Dq-KkMmi.js.map → Pager-DFKfUn1s.js.map} +1 -1
  216. package/dist/next/{Pager-DesOcELM.cjs → Pager-DcibmVu1.cjs} +3 -3
  217. package/dist/next/{Pager-DesOcELM.cjs.map → Pager-DcibmVu1.cjs.map} +1 -1
  218. package/dist/next/Pager.cjs.js +1 -1
  219. package/dist/next/Pager.js +1 -1
  220. package/dist/next/{PopOver-Dp_vC53_.js → PopOver-CUON_Abe.js} +2 -2
  221. package/dist/next/{PopOver-Dp_vC53_.js.map → PopOver-CUON_Abe.js.map} +1 -1
  222. package/dist/next/PopOver.js +1 -1
  223. package/dist/next/{ProgressBar-Bf_ZzYzI.js → ProgressBar-CMYDs8uL.js} +2 -2
  224. package/dist/next/{ProgressBar-Bf_ZzYzI.js.map → ProgressBar-CMYDs8uL.js.map} +1 -1
  225. package/dist/next/ProgressBar.js +1 -1
  226. package/dist/next/{Select-DPL__SwJ.js → Select-b8fO1q2K.js} +2 -2
  227. package/dist/next/{Select-DPL__SwJ.js.map → Select-b8fO1q2K.js.map} +1 -1
  228. package/dist/next/Select.js +1 -1
  229. package/dist/next/{Sidebar-CWjyCeQj.js → Sidebar-BwW51HwF.js} +4 -4
  230. package/dist/next/{Sidebar-CWjyCeQj.js.map → Sidebar-BwW51HwF.js.map} +1 -1
  231. package/dist/next/{Sidebar-BXmF-Nl2.cjs → Sidebar-U5BQKtKR.cjs} +3 -3
  232. package/dist/next/{Sidebar-BXmF-Nl2.cjs.map → Sidebar-U5BQKtKR.cjs.map} +1 -1
  233. package/dist/next/Sidebar.cjs.js +1 -1
  234. package/dist/next/Sidebar.js +1 -1
  235. package/dist/next/{Slider-BC9XlsEQ.js → Slider-DOGkUQYT.js} +2 -2
  236. package/dist/next/{Slider-BC9XlsEQ.js.map → Slider-DOGkUQYT.js.map} +1 -1
  237. package/dist/next/Slider.js +1 -1
  238. package/dist/next/{Stepper-P9DL0HZW.cjs → Stepper-C0cNzpY8.cjs} +2 -2
  239. package/dist/next/{Stepper-P9DL0HZW.cjs.map → Stepper-C0cNzpY8.cjs.map} +1 -1
  240. package/dist/next/{Stepper-CTd99d_F.js → Stepper-CSh2wccK.js} +3 -3
  241. package/dist/next/{Stepper-CTd99d_F.js.map → Stepper-CSh2wccK.js.map} +1 -1
  242. package/dist/next/Stepper.cjs.js +1 -1
  243. package/dist/next/Stepper.js +1 -1
  244. package/dist/next/{Tabs-tZjEVd-U.js → Tabs-Dors0bVs.js} +2 -2
  245. package/dist/next/{Tabs-tZjEVd-U.js.map → Tabs-Dors0bVs.js.map} +1 -1
  246. package/dist/next/Tabs.js +1 -1
  247. package/dist/next/{TagInput-CXvw8ogs.js → TagInput-V3zvXcNq.js} +4 -4
  248. package/dist/next/{TagInput-CXvw8ogs.js.map → TagInput-V3zvXcNq.js.map} +1 -1
  249. package/dist/next/{TagInput-DldSDmHu.cjs → TagInput-ceV9Jjqe.cjs} +3 -3
  250. package/dist/next/{TagInput-DldSDmHu.cjs.map → TagInput-ceV9Jjqe.cjs.map} +1 -1
  251. package/dist/next/TagInput.cjs.js +1 -1
  252. package/dist/next/TagInput.js +1 -1
  253. package/dist/next/{TextArea-CWscnEZW.js → TextArea-BSO1_gaS.js} +2 -2
  254. package/dist/next/{TextArea-CWscnEZW.js.map → TextArea-BSO1_gaS.js.map} +1 -1
  255. package/dist/next/TextArea.js +1 -1
  256. package/dist/next/{TextInput-cfBWD6de.cjs → TextInput-7nN8g78V.cjs} +2 -2
  257. package/dist/next/{TextInput-cfBWD6de.cjs.map → TextInput-7nN8g78V.cjs.map} +1 -1
  258. package/dist/next/{TextInput-3ZD3ccXf.js → TextInput-yUHEWbdK.js} +3 -3
  259. package/dist/next/{TextInput-3ZD3ccXf.js.map → TextInput-yUHEWbdK.js.map} +1 -1
  260. package/dist/next/TextInput.cjs.js +1 -1
  261. package/dist/next/TextInput.js +1 -1
  262. package/dist/next/{ThemeContext-nYSJ_G6L.js → ThemeContext-zE_shsx6.js} +3 -3
  263. package/dist/{core/ThemeContext-nYSJ_G6L.js.map → next/ThemeContext-zE_shsx6.js.map} +1 -1
  264. package/dist/next/ThemeProvider.js +3 -3
  265. package/dist/next/{Timeline-Bd6k_2az.js → Timeline-BTsKMULd.js} +2 -2
  266. package/dist/next/{Timeline-Bd6k_2az.js.map → Timeline-BTsKMULd.js.map} +1 -1
  267. package/dist/next/Timeline.js +1 -1
  268. package/dist/next/{Toggle-Bl8weXv8.js → Toggle-BomUbOZa.js} +2 -2
  269. package/dist/next/{Toggle-Bl8weXv8.js.map → Toggle-BomUbOZa.js.map} +1 -1
  270. package/dist/next/Toggle.js +1 -1
  271. package/dist/next/{Toolbar-DyzNvwQv.js → Toolbar-Be-YQqmX.js} +3 -3
  272. package/dist/next/{Toolbar-DyzNvwQv.js.map → Toolbar-Be-YQqmX.js.map} +1 -1
  273. package/dist/next/{Toolbar-s0krbHKU.cjs → Toolbar-roQbIEcD.cjs} +2 -2
  274. package/dist/next/{Toolbar-s0krbHKU.cjs.map → Toolbar-roQbIEcD.cjs.map} +1 -1
  275. package/dist/next/Toolbar.cjs.js +1 -1
  276. package/dist/next/Toolbar.js +1 -1
  277. package/dist/next/{Tooltip-Ba5YWT7r.js → Tooltip-lxpnIfpO.js} +2 -2
  278. package/dist/next/{Tooltip-Ba5YWT7r.js.map → Tooltip-lxpnIfpO.js.map} +1 -1
  279. package/dist/next/Tooltip.js +1 -1
  280. package/dist/next/Typography-B6VNZtxH.cjs.map +1 -1
  281. package/dist/next/Typography-BdS7h4Eq.js.map +1 -1
  282. package/dist/next/{image-B9PuwflE.js → image-CvorlI3C.js} +76 -24
  283. package/dist/next/image-CvorlI3C.js.map +1 -0
  284. package/dist/next/{image-Bo_vHlt1.cjs → image-DuTgdWOV.cjs} +76 -24
  285. package/dist/next/image-DuTgdWOV.cjs.map +1 -0
  286. package/dist/next/index.cjs.js +8033 -21
  287. package/dist/next/index.cjs.js.map +1 -1
  288. package/dist/next/index.js +8050 -38
  289. package/dist/next/index.js.map +1 -1
  290. package/dist/next/{link-CyxHztrS.js → link-4NcriBFB.js} +57 -15
  291. package/dist/next/link-4NcriBFB.js.map +1 -0
  292. package/dist/next/{link-B1N-q38H.cjs → link-CenftYXJ.cjs} +56 -14
  293. package/dist/next/link-CenftYXJ.cjs.map +1 -0
  294. package/dist/next/{navigation-C2hD8Jlk.js → navigation-BCeRD3ib.js} +2128 -87
  295. package/dist/next/navigation-BCeRD3ib.js.map +1 -0
  296. package/dist/next/{navigation-C3npGZmO.cjs → navigation-DtjMH66C.cjs} +2128 -87
  297. package/dist/next/navigation-DtjMH66C.cjs.map +1 -0
  298. package/dist/tsconfig.build.tsbuildinfo +1 -1
  299. package/dist/types/components/Modal/Modal.types.d.ts +3 -3
  300. package/dist/types/components/Modal/Modal.types.d.ts.map +1 -1
  301. package/dist/types/components/Typography/Typography.types.d.ts +2 -2
  302. package/dist/types/components/Typography/Typography.types.d.ts.map +1 -1
  303. package/dist/types/components/Typography/core/Typography.d.ts +1 -2
  304. package/dist/types/components/Typography/core/Typography.d.ts.map +1 -1
  305. package/dist/types/components/Typography/next/Typography.d.ts +1 -2
  306. package/dist/types/components/Typography/next/Typography.d.ts.map +1 -1
  307. package/dist/types/generated-docs/Accordion.props.d.ts +7 -0
  308. package/dist/types/generated-docs/Accordion.props.d.ts.map +1 -0
  309. package/dist/types/generated-docs/Avatar.props.d.ts +7 -0
  310. package/dist/types/generated-docs/Avatar.props.d.ts.map +1 -0
  311. package/dist/types/generated-docs/Badge.props.d.ts +7 -0
  312. package/dist/types/generated-docs/Badge.props.d.ts.map +1 -0
  313. package/dist/types/generated-docs/Breadcrumbs.props.d.ts +7 -0
  314. package/dist/types/generated-docs/Breadcrumbs.props.d.ts.map +1 -0
  315. package/dist/types/generated-docs/Button.props.d.ts +7 -0
  316. package/dist/types/generated-docs/Button.props.d.ts.map +1 -0
  317. package/dist/types/generated-docs/Card.props.d.ts +7 -0
  318. package/dist/types/generated-docs/Card.props.d.ts.map +1 -0
  319. package/dist/types/generated-docs/Chip.props.d.ts +7 -0
  320. package/dist/types/generated-docs/Chip.props.d.ts.map +1 -0
  321. package/dist/types/generated-docs/CircularProgress.props.d.ts +7 -0
  322. package/dist/types/generated-docs/CircularProgress.props.d.ts.map +1 -0
  323. package/dist/types/generated-docs/ColorPicker.props.d.ts +7 -0
  324. package/dist/types/generated-docs/ColorPicker.props.d.ts.map +1 -0
  325. package/dist/types/generated-docs/CommandPalette.props.d.ts +7 -0
  326. package/dist/types/generated-docs/CommandPalette.props.d.ts.map +1 -0
  327. package/dist/types/generated-docs/DataTable.props.d.ts +7 -0
  328. package/dist/types/generated-docs/DataTable.props.d.ts.map +1 -0
  329. package/dist/types/generated-docs/DateTimePicker.props.d.ts +7 -0
  330. package/dist/types/generated-docs/DateTimePicker.props.d.ts.map +1 -0
  331. package/dist/types/generated-docs/Divider.props.d.ts +7 -0
  332. package/dist/types/generated-docs/Divider.props.d.ts.map +1 -0
  333. package/dist/types/generated-docs/Dropdown.props.d.ts +7 -0
  334. package/dist/types/generated-docs/Dropdown.props.d.ts.map +1 -0
  335. package/dist/types/generated-docs/EmptyState.props.d.ts +7 -0
  336. package/dist/types/generated-docs/EmptyState.props.d.ts.map +1 -0
  337. package/dist/types/generated-docs/FileUpload.props.d.ts +7 -0
  338. package/dist/types/generated-docs/FileUpload.props.d.ts.map +1 -0
  339. package/dist/types/generated-docs/Footer.props.d.ts +7 -0
  340. package/dist/types/generated-docs/Footer.props.d.ts.map +1 -0
  341. package/dist/types/generated-docs/FormGroup.props.d.ts +7 -0
  342. package/dist/types/generated-docs/FormGroup.props.d.ts.map +1 -0
  343. package/dist/types/generated-docs/IconButton.props.d.ts +7 -0
  344. package/dist/types/generated-docs/IconButton.props.d.ts.map +1 -0
  345. package/dist/types/generated-docs/MarkdownRenderer.props.d.ts +7 -0
  346. package/dist/types/generated-docs/MarkdownRenderer.props.d.ts.map +1 -0
  347. package/dist/types/generated-docs/MessagePopup.props.d.ts +7 -0
  348. package/dist/types/generated-docs/MessagePopup.props.d.ts.map +1 -0
  349. package/dist/types/generated-docs/MetricBox.props.d.ts +7 -0
  350. package/dist/types/generated-docs/MetricBox.props.d.ts.map +1 -0
  351. package/dist/types/generated-docs/Modal.props.d.ts +7 -0
  352. package/dist/types/generated-docs/Modal.props.d.ts.map +1 -0
  353. package/dist/types/generated-docs/NavBar.props.d.ts +7 -0
  354. package/dist/types/generated-docs/NavBar.props.d.ts.map +1 -0
  355. package/dist/types/generated-docs/NotificationCenter.props.d.ts +7 -0
  356. package/dist/types/generated-docs/NotificationCenter.props.d.ts.map +1 -0
  357. package/dist/types/generated-docs/ProgressBar.props.d.ts +7 -0
  358. package/dist/types/generated-docs/ProgressBar.props.d.ts.map +1 -0
  359. package/dist/types/generated-docs/RadioButton.props.d.ts +7 -0
  360. package/dist/types/generated-docs/RadioButton.props.d.ts.map +1 -0
  361. package/dist/types/generated-docs/Rating.props.d.ts +7 -0
  362. package/dist/types/generated-docs/Rating.props.d.ts.map +1 -0
  363. package/dist/types/generated-docs/ScrollToTop.props.d.ts +7 -0
  364. package/dist/types/generated-docs/ScrollToTop.props.d.ts.map +1 -0
  365. package/dist/types/generated-docs/Select.props.d.ts +7 -0
  366. package/dist/types/generated-docs/Select.props.d.ts.map +1 -0
  367. package/dist/types/generated-docs/Sidebar.props.d.ts +7 -0
  368. package/dist/types/generated-docs/Sidebar.props.d.ts.map +1 -0
  369. package/dist/types/generated-docs/Skeleton.props.d.ts +7 -0
  370. package/dist/types/generated-docs/Skeleton.props.d.ts.map +1 -0
  371. package/dist/types/generated-docs/Slider.props.d.ts +7 -0
  372. package/dist/types/generated-docs/Slider.props.d.ts.map +1 -0
  373. package/dist/types/generated-docs/Spinner.props.d.ts +7 -0
  374. package/dist/types/generated-docs/Spinner.props.d.ts.map +1 -0
  375. package/dist/types/generated-docs/Stepper.props.d.ts +7 -0
  376. package/dist/types/generated-docs/Stepper.props.d.ts.map +1 -0
  377. package/dist/types/generated-docs/Tabs.props.d.ts +7 -0
  378. package/dist/types/generated-docs/Tabs.props.d.ts.map +1 -0
  379. package/dist/types/generated-docs/TagInput.props.d.ts +7 -0
  380. package/dist/types/generated-docs/TagInput.props.d.ts.map +1 -0
  381. package/dist/types/generated-docs/TextArea.props.d.ts +7 -0
  382. package/dist/types/generated-docs/TextArea.props.d.ts.map +1 -0
  383. package/dist/types/generated-docs/TextInput.props.d.ts +7 -0
  384. package/dist/types/generated-docs/TextInput.props.d.ts.map +1 -0
  385. package/dist/types/generated-docs/Timeline.props.d.ts +7 -0
  386. package/dist/types/generated-docs/Timeline.props.d.ts.map +1 -0
  387. package/dist/types/generated-docs/Toggle.props.d.ts +7 -0
  388. package/dist/types/generated-docs/Toggle.props.d.ts.map +1 -0
  389. package/dist/types/generated-docs/Toolbar.props.d.ts +7 -0
  390. package/dist/types/generated-docs/Toolbar.props.d.ts.map +1 -0
  391. package/dist/types/generated-docs/Tooltip.props.d.ts +7 -0
  392. package/dist/types/generated-docs/Tooltip.props.d.ts.map +1 -0
  393. package/dist/types/generated-docs/Typography.props.d.ts +7 -0
  394. package/dist/types/generated-docs/Typography.props.d.ts.map +1 -0
  395. package/dist/types/generated-docs/index.d.ts +50 -0
  396. package/dist/types/generated-docs/index.d.ts.map +1 -0
  397. package/dist/types/generated-docs/types.d.ts +20 -0
  398. package/dist/types/generated-docs/types.d.ts.map +1 -0
  399. package/dist/types/index.core.d.ts +1 -0
  400. package/dist/types/index.core.d.ts.map +1 -1
  401. package/dist/types/index.next.d.ts +1 -0
  402. package/dist/types/index.next.d.ts.map +1 -1
  403. package/package.json +14 -2
  404. package/dist/core/Modal-DVz_GNOL.js.map +0 -1
  405. package/dist/core/Modal-DhpY3Kt6.cjs.map +0 -1
  406. package/dist/next/Modal-Baxb-_FV.cjs.map +0 -1
  407. package/dist/next/Modal-ClsOP_6R.js.map +0 -1
  408. package/dist/next/image-B9PuwflE.js.map +0 -1
  409. package/dist/next/image-Bo_vHlt1.cjs.map +0 -1
  410. package/dist/next/link-B1N-q38H.cjs.map +0 -1
  411. package/dist/next/link-CyxHztrS.js.map +0 -1
  412. package/dist/next/navigation-C2hD8Jlk.js.map +0 -1
  413. package/dist/next/navigation-C3npGZmO.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FileUpload-BWjOciA3.js","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/core/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState, useEffect, useId } from \"react\";\r\nimport { BaseFileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n onFilesChange,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n id,\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n\r\n // a11y props\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-errormessage\": ariaErrorMessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-busy\": ariaBusy,\r\n \"aria-live\": ariaLive,\r\n\r\n inputAriaLabel,\r\n selectButtonAriaLabel,\r\n uploadButtonAriaLabel,\r\n removeFileAriaLabel,\r\n fileListAriaLabel,\r\n rejectedFilesAriaLabel,\r\n successMessage = \"Upload successful.\",\r\n failureMessage = \"Upload failed. Please try again.\",\r\n filesSelectedMessage,\r\n fileRemovedMessage,\r\n rejectedFilesMessage,\r\n liveRegionPoliteness = \"polite\",\r\n dropzoneDescription,\r\n dropzoneRole = \"group\",\r\n enableDragAndDrop = true,\r\n\r\n inputProps,\r\n selectButtonProps,\r\n uploadButtonProps,\r\n removeButtonProps,\r\n progressBarProps,\r\n\r\n className,\r\n ...rest\r\n}) => {\r\n const reactId = useId();\r\n const baseId = id || testId || `file-upload-${reactId.replace(/:/g, \"\")}`;\r\n\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\r\n\r\n const descriptionId = `${baseId}-description`;\r\n const errorId = `${baseId}-error`;\r\n const dropzoneDescriptionId = `${baseId}-dropzone-description`;\r\n const liveRegionId = `${baseId}-live-region`;\r\n const fileListId = `${baseId}-file-list`;\r\n const rejectedListId = `${baseId}-rejected-list`;\r\n const inputId = `${baseId}-input`;\r\n\r\n const accept = useMemo(() => {\r\n if (!allowedFileTypes || allowedFileTypes.length === 0) return undefined;\r\n return allowedFileTypes.join(\",\");\r\n }, [allowedFileTypes]);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const ext = file.name.includes(\".\")\r\n ? \".\" + file.name.split(\".\").pop()!.toLowerCase()\r\n : \"\";\r\n const typeAllowed =\r\n allowedFileTypes.length === 0 ||\r\n allowedFileTypes.includes(file.type) ||\r\n (ext && allowedFileTypes.map((t) => t.toLowerCase()).includes(ext));\r\n\r\n if (isSizeOk && typeAllowed) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || ext || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const truncate = (s: string) => (s.length > 30 ? s.slice(0, 27) + \"...\" : s);\r\n\r\n const announce = (message: string | null) => {\r\n setUploadMessage(message);\r\n };\r\n\r\n const buildSelectedMessage = (selectedFiles: File[]) => {\r\n if (filesSelectedMessage) return filesSelectedMessage(selectedFiles);\r\n const count = selectedFiles.length;\r\n return count === 1\r\n ? `${selectedFiles[0].name} selected.`\r\n : `${count} files selected.`;\r\n };\r\n\r\n const buildRejectedMessage = (\r\n nextRejectedFiles: { name: string; reason: string }[],\r\n ) => {\r\n if (nextRejectedFiles.length === 0) return null;\r\n if (rejectedFilesMessage) return rejectedFilesMessage(nextRejectedFiles);\r\n return nextRejectedFiles.length === 1\r\n ? `${nextRejectedFiles[0].name} was rejected: ${nextRejectedFiles[0].reason}.`\r\n : `${nextRejectedFiles.length} files were rejected.`;\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n setRejectedFiles(rejected);\r\n onFilesChange?.(updatedFiles);\r\n\r\n const selectedMessage =\r\n valid.length > 0 ? buildSelectedMessage(updatedFiles) : null;\r\n const rejectedMessage = buildRejectedMessage(rejected);\r\n\r\n announce(\r\n [selectedMessage, rejectedMessage].filter(Boolean).join(\" \") || null,\r\n );\r\n\r\n if (fileInput.current) fileInput.current.value = \"\";\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const removedFile = files[index];\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n onFilesChange?.(updatedFiles);\r\n\r\n if (removedFile) {\r\n announce(\r\n fileRemovedMessage\r\n ? fileRemovedMessage(removedFile.name, index)\r\n : `${removedFile.name} removed.`,\r\n );\r\n }\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n if (!enableDragAndDrop || disabled) return;\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = async () => {\r\n if (!files.length || uploading || disabled) return;\r\n\r\n setUploading(true);\r\n setInternalProgress(0);\r\n announce(null);\r\n\r\n try {\r\n if (uploadProgress === undefined) {\r\n intervalRef.current = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n }\r\n\r\n await Promise.resolve(onSubmit?.(files));\r\n announce(successMessage);\r\n } catch {\r\n announce(failureMessage);\r\n } finally {\r\n if (intervalRef.current) {\r\n if (uploadProgress === undefined) setInternalProgress(100);\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n\r\n setTimeout(() => setUploading(false), 300);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, []);\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging && classMap.dragging,\r\n disabled && classMap.disabled,\r\n className,\r\n ),\r\n [\r\n classMap,\r\n theme,\r\n state,\r\n outlineShadow,\r\n outlineRounding,\r\n error,\r\n isDragging,\r\n disabled,\r\n className,\r\n ],\r\n );\r\n\r\n const describedBy =\r\n [\r\n description ? descriptionId : undefined,\r\n error ? errorId : undefined,\r\n dropzoneDescription ? dropzoneDescriptionId : undefined,\r\n ariaDescribedBy,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const computedAriaInvalid =\r\n ariaInvalid !== undefined ? ariaInvalid : error ? true : undefined;\r\n\r\n const computedAriaRequired =\r\n ariaRequired !== undefined ? ariaRequired : required ? true : undefined;\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n {...rest}\r\n className={containerClassName}\r\n onDragOver={enableDragAndDrop ? handleDragOver : undefined}\r\n onDragLeave={enableDragAndDrop ? handleDragLeave : undefined}\r\n onDrop={enableDragAndDrop ? handleDrop : undefined}\r\n role={dropzoneRole}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-busy={ariaBusy !== undefined ? ariaBusy : uploading || undefined}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n {dropzoneDescription && (\r\n <div id={dropzoneDescriptionId} className=\"sr_only\">\r\n {dropzoneDescription}\r\n </div>\r\n )}\r\n\r\n <input\r\n {...inputProps}\r\n ref={fileInput}\r\n id={inputProps?.id || inputId}\r\n type=\"file\"\r\n multiple={multiple}\r\n accept={accept}\r\n onChange={handleFileChange}\r\n className={combineClassNames(\r\n classMap.hiddenInput,\r\n inputProps?.className,\r\n )}\r\n required={required}\r\n disabled={disabled}\r\n aria-label={inputAriaLabel || label || \"Choose file\"}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n data-testid={`${testId}-input`}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n {...selectButtonProps}\r\n icon={FileIcon}\r\n size={selectButtonProps?.size ?? \"small\"}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n className={combineClassNames(\r\n classMap.fileInput,\r\n selectButtonProps?.className,\r\n )}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => {\r\n fileInput.current?.click();\r\n }}\r\n aria-label={\r\n selectButtonProps?.[\"aria-label\"] ||\r\n selectButtonAriaLabel ||\r\n \"Choose file\"\r\n }\r\n aria-describedby={fileNames.length > 0 ? fileListId : undefined}\r\n data-testid={`${testId}-file-button`}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div\r\n className={classMap.rejectedFiles}\r\n aria-label={rejectedFilesAriaLabel}\r\n data-testid={testId ? `${testId}-rejected-files` : undefined}\r\n >\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul\r\n id={rejectedListId}\r\n className={classMap.rejectedList}\r\n aria-label={rejectedFilesAriaLabel || \"Rejected files\"}\r\n >\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul\r\n id={fileListId}\r\n className={classMap.fileList}\r\n aria-label={fileListAriaLabel || \"Selected files\"}\r\n >\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n {...removeButtonProps}\r\n icon={TrashIcon}\r\n state=\"error\"\r\n size={removeButtonProps?.size ?? \"small\"}\r\n type=\"button\"\r\n outline\r\n aria-label={\r\n removeFileAriaLabel?.(name, index) || `Remove ${name}`\r\n }\r\n onClick={() => removeFile(index)}\r\n className={combineClassNames(\r\n classMap.removeButton,\r\n removeButtonProps?.className,\r\n )}\r\n data-testid={`${testId}-remove-${index}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n {uploading && (\r\n <ProgressBar\r\n {...progressBarProps}\r\n theme={theme}\r\n className={combineClassNames(\r\n classMap.uploadProgress,\r\n progressBarProps?.className,\r\n )}\r\n value={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={\r\n progressBarProps?.[\"data-testid\"] || `${testId}-progress`\r\n }\r\n />\r\n )}\r\n\r\n {!uploading && (\r\n <Button\r\n {...uploadButtonProps}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n disabled={disabled || files.length === 0}\r\n onClick={() => {\r\n void handleUpload();\r\n }}\r\n loading={uploading}\r\n size={uploadButtonProps?.size ?? \"small\"}\r\n className={combineClassNames(\r\n classMap.uploadButton,\r\n uploadButtonProps?.className,\r\n )}\r\n aria-label={uploadButtonAriaLabel || \"Upload selected files\"}\r\n data-testid={`${testId}-upload-button`}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div\r\n id={liveRegionId}\r\n className=\"sr_only\"\r\n aria-live={ariaLive || liveRegionPoliteness}\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nBaseFileUpload.displayName = \"BaseFileUpload\";\r\nexport default BaseFileUpload;\r\n","import React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport Button from \"../../Button/core/Button\";\r\nimport IconButton from \"../../IconButton/core/IconButton\";\r\nimport ProgressBar from \"../../ProgressBar/core/ProgressBar\";\r\nimport FormGroup from \"../../FormGroup/core/FormGroup\";\r\nimport \"./FileUpload.scss\";\r\n\r\nconst classes = {\r\n fileUpload: \"file_upload\",\r\n hiddenInput: \"file_upload_hidden_input\",\r\n uploadActions: \"file_upload_upload_actions\",\r\n fileInput: \"file_upload_file_input\",\r\n removeButton: \"file_upload_remove_button\",\r\n uploadControls: \"file_upload_upload_controls\",\r\n uploadProgress: \"file_upload_upload_progress\",\r\n uploadButton: \"file_upload_upload_button\",\r\n fileList: \"file_upload_file_list\",\r\n fileListItem: \"file_upload_file_list_item\",\r\n fileListFileName: \"file_upload_file_list_file_name\",\r\n fileListRemoveButton: \"file_upload_file_list_remove_button\",\r\n\r\n primary: \"file_upload_primary\",\r\n secondary: \"file_upload_secondary\",\r\n tertiary: \"file_upload_tertiary\",\r\n quaternary: \"file_upload_quaternary\",\r\n clear: \"file_upload_clear\",\r\n\r\n disabled: \"file_upload_disabled\",\r\n error: \"file_upload_error\",\r\n success: \"file_upload_success\",\r\n warning: \"file_upload_warning\",\r\n\r\n shadowNone: \"file_upload_shadow-None\",\r\n shadowLight: \"file_upload_shadow-Light\",\r\n shadowMedium: \"file_upload_shadow-Medium\",\r\n shadowStrong: \"file_upload_shadow-Strong\",\r\n shadowIntense: \"file_upload_shadow-Intense\",\r\n\r\n roundNone: \"file_upload_round-None\",\r\n roundSmall: \"file_upload_round-Small\",\r\n roundMedium: \"file_upload_round-Medium\",\r\n roundLarge: \"file_upload_round-Large\",\r\n};\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={ProgressBar}\r\n classMap={classes}\r\n />\r\n );\r\n};\r\nFileUpload.displayName = \"FileUpload\";\r\nexport default FileUpload;\r\n"],"names":["FormGroup","Button","IconButton","ProgressBar"],"mappings":"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"}
1
+ {"version":3,"file":"FileUpload-CPZetlXM.js","sources":["../../src/Icons/FileIcon.tsx","../../src/Icons/TrashIcon.tsx","../../src/components/FileUpload/FileUploadBase.tsx","../../src/components/FileUpload/core/FileUpload.tsx"],"sourcesContent":["const FileIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n strokeWidth=\"1.5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 20.5V6.5C3 5.67157 3.67157 5 4.5 5H14.2515C14.4106 5 14.5632 5.06321 14.6757 5.17574L17.8243 8.32426C17.9368 8.43679 18 8.5894 18 8.74853V20.5C18 21.3284 17.3284 22 16.5 22H4.5C3.67157 22 3 21.3284 3 20.5Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M14 5V8.4C14 8.73137 14.2686 9 14.6 9H18\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default FileIcon;\r\n","const TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n stroke-width=\"1.5\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9\"\r\n fill=\"currentColor\"\r\n ></path>\r\n <path\r\n d=\"M20 9L18.005 20.3463C17.8369 21.3026 17.0062 22 16.0353 22H7.96474C6.99379 22 6.1631 21.3026 5.99496 20.3463L4 9H20Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 6H15.375M3 6H8.625M8.625 6V4C8.625 2.89543 9.52043 2 10.625 2H13.375C14.4796 2 15.375 2.89543 15.375 4V6M8.625 6H15.375\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default TrashIcon;\r\n","import React, { useMemo, useRef, useState, useEffect, useId } from \"react\";\r\nimport { BaseFileUploadProps } from \"./FileUpload.types\";\r\nimport { FileIcon, TrashIcon } from \"../../Icons\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst BaseFileUpload: React.FC<BaseFileUploadProps> = ({\r\n label = \"Upload File\",\r\n description,\r\n error,\r\n required = false,\r\n theme = getDefaultTheme(),\r\n controlRounding = getDefaultRounding(),\r\n controlShadow = getDefaultShadow(),\r\n outline = false,\r\n outlineRounding = getDefaultRounding(),\r\n outlineShadow = getDefaultShadow(),\r\n state = \"\",\r\n multiple = false,\r\n maxFileSizeBytes = Infinity,\r\n allowedFileTypes = [],\r\n onSubmit,\r\n onFilesChange,\r\n uploadProgress,\r\n \"data-testid\": testId = \"file-upload\",\r\n id,\r\n FormGroup,\r\n disabled = false,\r\n Button,\r\n IconButton,\r\n ProgressBar,\r\n classMap,\r\n\r\n // a11y props\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-errormessage\": ariaErrorMessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-busy\": ariaBusy,\r\n \"aria-live\": ariaLive,\r\n\r\n inputAriaLabel,\r\n selectButtonAriaLabel,\r\n uploadButtonAriaLabel,\r\n removeFileAriaLabel,\r\n fileListAriaLabel,\r\n rejectedFilesAriaLabel,\r\n successMessage = \"Upload successful.\",\r\n failureMessage = \"Upload failed. Please try again.\",\r\n filesSelectedMessage,\r\n fileRemovedMessage,\r\n rejectedFilesMessage,\r\n liveRegionPoliteness = \"polite\",\r\n dropzoneDescription,\r\n dropzoneRole = \"group\",\r\n enableDragAndDrop = true,\r\n\r\n inputProps,\r\n selectButtonProps,\r\n uploadButtonProps,\r\n removeButtonProps,\r\n progressBarProps,\r\n\r\n className,\r\n ...rest\r\n}) => {\r\n const reactId = useId();\r\n const baseId = id || testId || `file-upload-${reactId.replace(/:/g, \"\")}`;\r\n\r\n const [fileNames, setFileNames] = useState<string[]>([]);\r\n const [files, setFiles] = useState<File[]>([]);\r\n const [rejectedFiles, setRejectedFiles] = useState<\r\n { name: string; reason: string }[]\r\n >([]);\r\n const [internalProgress, setInternalProgress] = useState<number>(0);\r\n const [uploading, setUploading] = useState(false);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [uploadMessage, setUploadMessage] = useState<string | null>(null);\r\n\r\n const fileInput = useRef<HTMLInputElement | null>(null);\r\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null);\r\n\r\n const descriptionId = `${baseId}-description`;\r\n const errorId = `${baseId}-error`;\r\n const dropzoneDescriptionId = `${baseId}-dropzone-description`;\r\n const liveRegionId = `${baseId}-live-region`;\r\n const fileListId = `${baseId}-file-list`;\r\n const rejectedListId = `${baseId}-rejected-list`;\r\n const inputId = `${baseId}-input`;\r\n\r\n const accept = useMemo(() => {\r\n if (!allowedFileTypes || allowedFileTypes.length === 0) return undefined;\r\n return allowedFileTypes.join(\",\");\r\n }, [allowedFileTypes]);\r\n\r\n const validateFiles = (newFiles: File[]) => {\r\n const valid: File[] = [];\r\n const rejected: { name: string; reason: string }[] = [];\r\n\r\n newFiles.forEach((file) => {\r\n const isSizeOk = file.size <= maxFileSizeBytes;\r\n const ext = file.name.includes(\".\")\r\n ? \".\" + file.name.split(\".\").pop()!.toLowerCase()\r\n : \"\";\r\n const typeAllowed =\r\n allowedFileTypes.length === 0 ||\r\n allowedFileTypes.includes(file.type) ||\r\n (ext && allowedFileTypes.map((t) => t.toLowerCase()).includes(ext));\r\n\r\n if (isSizeOk && typeAllowed) {\r\n valid.push(file);\r\n } else {\r\n rejected.push({\r\n name: file.name,\r\n reason: !isSizeOk\r\n ? `Exceeds size limit (${(file.size / 1024 / 1024).toFixed(2)}MB)`\r\n : `Invalid type (${file.type || ext || \"unknown\"})`,\r\n });\r\n }\r\n });\r\n\r\n return { valid, rejected };\r\n };\r\n\r\n const truncate = (s: string) => (s.length > 30 ? s.slice(0, 27) + \"...\" : s);\r\n\r\n const announce = (message: string | null) => {\r\n setUploadMessage(message);\r\n };\r\n\r\n const buildSelectedMessage = (selectedFiles: File[]) => {\r\n if (filesSelectedMessage) return filesSelectedMessage(selectedFiles);\r\n const count = selectedFiles.length;\r\n return count === 1\r\n ? `${selectedFiles[0].name} selected.`\r\n : `${count} files selected.`;\r\n };\r\n\r\n const buildRejectedMessage = (\r\n nextRejectedFiles: { name: string; reason: string }[],\r\n ) => {\r\n if (nextRejectedFiles.length === 0) return null;\r\n if (rejectedFilesMessage) return rejectedFilesMessage(nextRejectedFiles);\r\n return nextRejectedFiles.length === 1\r\n ? `${nextRejectedFiles[0].name} was rejected: ${nextRejectedFiles[0].reason}.`\r\n : `${nextRejectedFiles.length} files were rejected.`;\r\n };\r\n\r\n const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const selected = e.target.files;\r\n if (!selected || selected.length === 0) return;\r\n\r\n const { valid, rejected } = validateFiles(Array.from(selected));\r\n const updatedFiles = multiple ? [...files, ...valid] : valid;\r\n\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n setRejectedFiles(rejected);\r\n onFilesChange?.(updatedFiles);\r\n\r\n const selectedMessage =\r\n valid.length > 0 ? buildSelectedMessage(updatedFiles) : null;\r\n const rejectedMessage = buildRejectedMessage(rejected);\r\n\r\n announce(\r\n [selectedMessage, rejectedMessage].filter(Boolean).join(\" \") || null,\r\n );\r\n\r\n if (fileInput.current) fileInput.current.value = \"\";\r\n };\r\n\r\n const removeFile = (index: number) => {\r\n const removedFile = files[index];\r\n const updatedFiles = files.filter((_, i) => i !== index);\r\n setFiles(updatedFiles);\r\n setFileNames(updatedFiles.map((f) => truncate(f.name)));\r\n onFilesChange?.(updatedFiles);\r\n\r\n if (removedFile) {\r\n announce(\r\n fileRemovedMessage\r\n ? fileRemovedMessage(removedFile.name, index)\r\n : `${removedFile.name} removed.`,\r\n );\r\n }\r\n };\r\n\r\n const getButtonLabel = () => {\r\n if (fileNames.length > 0) return multiple ? \"Add Files\" : \"Select New\";\r\n return \"Choose File\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n if (!enableDragAndDrop || disabled) return;\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent) => {\r\n if (!enableDragAndDrop || disabled) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFiles = e.dataTransfer.files;\r\n if (droppedFiles.length > 0) {\r\n handleFileChange({\r\n target: { files: droppedFiles },\r\n } as React.ChangeEvent<HTMLInputElement>);\r\n }\r\n };\r\n\r\n const handleUpload = async () => {\r\n if (!files.length || uploading || disabled) return;\r\n\r\n setUploading(true);\r\n setInternalProgress(0);\r\n announce(null);\r\n\r\n try {\r\n if (uploadProgress === undefined) {\r\n intervalRef.current = setInterval(() => {\r\n setInternalProgress((prev) => {\r\n if (prev >= 100) {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n return 100;\r\n }\r\n return prev + 10;\r\n });\r\n }, 100);\r\n }\r\n\r\n await Promise.resolve(onSubmit?.(files));\r\n announce(successMessage);\r\n } catch {\r\n announce(failureMessage);\r\n } finally {\r\n if (intervalRef.current) {\r\n if (uploadProgress === undefined) setInternalProgress(100);\r\n clearInterval(intervalRef.current);\r\n intervalRef.current = null;\r\n }\r\n\r\n setTimeout(() => setUploading(false), 300);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n return () => {\r\n if (intervalRef.current) clearInterval(intervalRef.current);\r\n };\r\n }, []);\r\n\r\n const containerClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.fileUpload,\r\n classMap[state],\r\n classMap[theme],\r\n outlineShadow && classMap[`shadow${capitalize(outlineShadow)}`],\r\n outlineRounding && classMap[`round${capitalize(outlineRounding)}`],\r\n error && classMap.error,\r\n isDragging && classMap.dragging,\r\n disabled && classMap.disabled,\r\n className,\r\n ),\r\n [\r\n classMap,\r\n theme,\r\n state,\r\n outlineShadow,\r\n outlineRounding,\r\n error,\r\n isDragging,\r\n disabled,\r\n className,\r\n ],\r\n );\r\n\r\n const describedBy =\r\n [\r\n description ? descriptionId : undefined,\r\n error ? errorId : undefined,\r\n dropzoneDescription ? dropzoneDescriptionId : undefined,\r\n ariaDescribedBy,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \") || undefined;\r\n\r\n const computedAriaInvalid =\r\n ariaInvalid !== undefined ? ariaInvalid : error ? true : undefined;\r\n\r\n const computedAriaRequired =\r\n ariaRequired !== undefined ? ariaRequired : required ? true : undefined;\r\n\r\n return (\r\n <FormGroup\r\n label={label}\r\n description={description}\r\n error={error}\r\n required={required}\r\n data-testid={testId}\r\n >\r\n <div\r\n {...rest}\r\n className={containerClassName}\r\n onDragOver={enableDragAndDrop ? handleDragOver : undefined}\r\n onDragLeave={enableDragAndDrop ? handleDragLeave : undefined}\r\n onDrop={enableDragAndDrop ? handleDrop : undefined}\r\n role={dropzoneRole}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n aria-busy={ariaBusy !== undefined ? ariaBusy : uploading || undefined}\r\n data-testid={testId ? `${testId}-wrapper` : undefined}\r\n >\r\n {dropzoneDescription && (\r\n <div id={dropzoneDescriptionId} className=\"sr_only\">\r\n {dropzoneDescription}\r\n </div>\r\n )}\r\n\r\n <input\r\n {...inputProps}\r\n ref={fileInput}\r\n id={inputProps?.id || inputId}\r\n type=\"file\"\r\n multiple={multiple}\r\n accept={accept}\r\n onChange={handleFileChange}\r\n className={combineClassNames(\r\n classMap.hiddenInput,\r\n inputProps?.className,\r\n )}\r\n required={required}\r\n disabled={disabled}\r\n aria-label={inputAriaLabel || label || \"Choose file\"}\r\n aria-describedby={describedBy}\r\n aria-errormessage={error ? ariaErrorMessage || errorId : undefined}\r\n aria-invalid={computedAriaInvalid}\r\n aria-required={computedAriaRequired}\r\n data-testid={`${testId}-input`}\r\n />\r\n\r\n <div className={classMap.uploadActions}>\r\n <Button\r\n {...selectButtonProps}\r\n icon={FileIcon}\r\n size={selectButtonProps?.size ?? \"small\"}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n className={combineClassNames(\r\n classMap.fileInput,\r\n selectButtonProps?.className,\r\n )}\r\n disabled={uploading || disabled}\r\n outline={outline}\r\n rounding={controlRounding}\r\n shadow={controlShadow}\r\n onClick={() => {\r\n fileInput.current?.click();\r\n }}\r\n aria-label={\r\n selectButtonProps?.[\"aria-label\"] ||\r\n selectButtonAriaLabel ||\r\n \"Choose file\"\r\n }\r\n aria-describedby={fileNames.length > 0 ? fileListId : undefined}\r\n data-testid={`${testId}-file-button`}\r\n >\r\n {getButtonLabel()}\r\n </Button>\r\n </div>\r\n\r\n {rejectedFiles.length > 0 && (\r\n <div\r\n className={classMap.rejectedFiles}\r\n aria-label={rejectedFilesAriaLabel}\r\n data-testid={testId ? `${testId}-rejected-files` : undefined}\r\n >\r\n <p className={classMap.rejectedLabel}>Rejected Files:</p>\r\n <ul\r\n id={rejectedListId}\r\n className={classMap.rejectedList}\r\n aria-label={rejectedFilesAriaLabel || \"Rejected files\"}\r\n >\r\n {rejectedFiles.map((file, index) => (\r\n <li key={index} className={classMap.rejectedItem}>\r\n <span>{file.name}</span>\r\n <span className={classMap.rejectedReason}>\r\n {\" \"}\r\n – {file.reason}\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {fileNames.length > 0 && (\r\n <div\r\n className={classMap.uploadControls}\r\n data-testid={testId ? `${testId}-controls` : undefined}\r\n >\r\n <ul\r\n id={fileListId}\r\n className={classMap.fileList}\r\n aria-label={fileListAriaLabel || \"Selected files\"}\r\n >\r\n {fileNames.map((name, index) => (\r\n <li key={index} className={classMap.fileListItem}>\r\n <span>{name}</span>\r\n <IconButton\r\n {...removeButtonProps}\r\n icon={TrashIcon}\r\n state=\"error\"\r\n size={removeButtonProps?.size ?? \"small\"}\r\n type=\"button\"\r\n outline\r\n aria-label={\r\n removeFileAriaLabel?.(name, index) || `Remove ${name}`\r\n }\r\n onClick={() => removeFile(index)}\r\n className={combineClassNames(\r\n classMap.removeButton,\r\n removeButtonProps?.className,\r\n )}\r\n data-testid={`${testId}-remove-${index}`}\r\n />\r\n </li>\r\n ))}\r\n </ul>\r\n\r\n {uploading && (\r\n <ProgressBar\r\n {...progressBarProps}\r\n theme={theme}\r\n className={combineClassNames(\r\n classMap.uploadProgress,\r\n progressBarProps?.className,\r\n )}\r\n value={uploadProgress ?? internalProgress}\r\n indeterminate={uploadProgress === undefined}\r\n data-testid={\r\n progressBarProps?.[\"data-testid\"] || `${testId}-progress`\r\n }\r\n />\r\n )}\r\n\r\n {!uploading && (\r\n <Button\r\n {...uploadButtonProps}\r\n theme={theme}\r\n state={error ? \"error\" : state}\r\n disabled={disabled || files.length === 0}\r\n onClick={() => {\r\n void handleUpload();\r\n }}\r\n loading={uploading}\r\n size={uploadButtonProps?.size ?? \"small\"}\r\n className={combineClassNames(\r\n classMap.uploadButton,\r\n uploadButtonProps?.className,\r\n )}\r\n aria-label={uploadButtonAriaLabel || \"Upload selected files\"}\r\n data-testid={`${testId}-upload-button`}\r\n >\r\n Upload\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n\r\n <div\r\n id={liveRegionId}\r\n className=\"sr_only\"\r\n aria-live={ariaLive || liveRegionPoliteness}\r\n aria-atomic=\"true\"\r\n data-testid={testId ? `${testId}-upload-message` : undefined}\r\n >\r\n {uploadMessage}\r\n </div>\r\n </div>\r\n </FormGroup>\r\n );\r\n};\r\n\r\nBaseFileUpload.displayName = \"BaseFileUpload\";\r\nexport default BaseFileUpload;\r\n","import React from \"react\";\r\nimport BaseFileUpload from \"../FileUploadBase\";\r\nimport { FileUploadProps } from \"../FileUpload.types\";\r\nimport Button from \"../../Button/core/Button\";\r\nimport IconButton from \"../../IconButton/core/IconButton\";\r\nimport ProgressBar from \"../../ProgressBar/core/ProgressBar\";\r\nimport FormGroup from \"../../FormGroup/core/FormGroup\";\r\nimport \"./FileUpload.scss\";\r\n\r\nconst classes = {\r\n fileUpload: \"file_upload\",\r\n hiddenInput: \"file_upload_hidden_input\",\r\n uploadActions: \"file_upload_upload_actions\",\r\n fileInput: \"file_upload_file_input\",\r\n removeButton: \"file_upload_remove_button\",\r\n uploadControls: \"file_upload_upload_controls\",\r\n uploadProgress: \"file_upload_upload_progress\",\r\n uploadButton: \"file_upload_upload_button\",\r\n fileList: \"file_upload_file_list\",\r\n fileListItem: \"file_upload_file_list_item\",\r\n fileListFileName: \"file_upload_file_list_file_name\",\r\n fileListRemoveButton: \"file_upload_file_list_remove_button\",\r\n\r\n primary: \"file_upload_primary\",\r\n secondary: \"file_upload_secondary\",\r\n tertiary: \"file_upload_tertiary\",\r\n quaternary: \"file_upload_quaternary\",\r\n clear: \"file_upload_clear\",\r\n\r\n disabled: \"file_upload_disabled\",\r\n error: \"file_upload_error\",\r\n success: \"file_upload_success\",\r\n warning: \"file_upload_warning\",\r\n\r\n shadowNone: \"file_upload_shadow-None\",\r\n shadowLight: \"file_upload_shadow-Light\",\r\n shadowMedium: \"file_upload_shadow-Medium\",\r\n shadowStrong: \"file_upload_shadow-Strong\",\r\n shadowIntense: \"file_upload_shadow-Intense\",\r\n\r\n roundNone: \"file_upload_round-None\",\r\n roundSmall: \"file_upload_round-Small\",\r\n roundMedium: \"file_upload_round-Medium\",\r\n roundLarge: \"file_upload_round-Large\",\r\n};\r\n\r\nconst FileUpload: React.FC<FileUploadProps> = (props) => {\r\n return (\r\n <BaseFileUpload\r\n {...props}\r\n FormGroup={FormGroup}\r\n Button={Button}\r\n IconButton={IconButton}\r\n ProgressBar={ProgressBar}\r\n classMap={classes}\r\n />\r\n );\r\n};\r\nFileUpload.displayName = \"FileUpload\";\r\nexport default FileUpload;\r\n"],"names":["FormGroup","Button","IconButton","ProgressBar"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { F } from "./FileUpload-BWjOciA3.js";
1
+ import { F } from "./FileUpload-CPZetlXM.js";
2
2
  export {
3
3
  F as default
4
4
  };
@@ -1,11 +1,11 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, useContext, useMemo } from "react";
3
3
  import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
4
- import { a as getDefaultRounding, b as getDefaultShadow, d as getDefaultTheme } from "./boreal-style-config-DsaRlxmw.js";
4
+ import { d as getDefaultTheme, b as getDefaultShadow, a as getDefaultRounding } from "./boreal-style-config-DsaRlxmw.js";
5
5
  import { c as capitalize } from "./capitalize-C0TSQSPh.js";
6
- import { I as IconButton } from "./IconButton-ChJJCB4O.js";
7
- import { S as Select } from "./Select-CeyJGftD.js";
8
- import { a as ThemeContext } from "./ThemeContext-nYSJ_G6L.js";
6
+ import { I as IconButton } from "./IconButton-By8zuXrs.js";
7
+ import { S as Select } from "./Select-BXIz5BbU.js";
8
+ import { T as ThemeContext } from "./ThemeContext-zE_shsx6.js";
9
9
  const UserThemeSettings = forwardRef(
10
10
  ({
11
11
  theme = getDefaultTheme(),
@@ -270,4 +270,4 @@ export {
270
270
  Footer as F,
271
271
  UserThemeSettings as U
272
272
  };
273
- //# sourceMappingURL=Footer-CkSzN_PI.js.map
273
+ //# sourceMappingURL=Footer-Q_60pe6o.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer-CkSzN_PI.js","sources":["../../src/components/Select/ThemeSelect/core/ThemeSelect.tsx","../../src/components/Footer/FooterBase.tsx","../../src/components/Footer/core/Footer.tsx"],"sourcesContent":["import { useContext, useMemo, forwardRef } from \"react\";\r\nimport Select from \"../../core/Select\";\r\nimport { ThemeContext } from \"../../../../context/ThemeContext\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"@/config/boreal-style-config\";\r\nimport { ThemeSelectProps } from \"../../Select.types\";\r\n\r\nconst UserThemeSettings = forwardRef<HTMLSelectElement, ThemeSelectProps>(\r\n ({\r\n theme = getDefaultTheme(),\r\n shadow = getDefaultShadow(),\r\n rounding = getDefaultRounding(),\r\n \"data-testid\": testId = \"theme-select\",\r\n state = \"\",\r\n }) => {\r\n const ctx = useContext(ThemeContext);\r\n if (!ctx)\r\n throw new Error(\"ThemeContext is undefined. Wrap with ThemeProvider.\");\r\n\r\n const { selectedScheme, setSelectedScheme, schemes } = ctx;\r\n\r\n const options = useMemo(\r\n () =>\r\n schemes.map((scheme, index) => ({\r\n value: String(index),\r\n label: scheme.name,\r\n })),\r\n [schemes],\r\n );\r\n\r\n return (\r\n <div className=\"control-container\">\r\n <Select\r\n theme={theme}\r\n state={state}\r\n shadow={shadow}\r\n rounding={rounding}\r\n options={options}\r\n data-testid={testId}\r\n value={String(selectedScheme)}\r\n aria-label=\"Select Theme\"\r\n onChange={(value: string | number) =>\r\n setSelectedScheme(parseInt(String(value), 10))\r\n }\r\n />\r\n </div>\r\n );\r\n },\r\n);\r\nUserThemeSettings.displayName = \"UserThemeSettings\";\r\nexport default UserThemeSettings;\r\n","import React, { useMemo } from \"react\";\r\nimport { BaseFooterProps, LogoSource } from \"./Footer.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { getDefaultTheme } from \"../../config/boreal-style-config\";\r\nimport { capitalize } from \"@/utils/capitalize\";\r\n\r\nconst FooterBase: React.FC<BaseFooterProps> = ({\r\n theme = getDefaultTheme(),\r\n attachment = \"static\",\r\n shadow = \"none\",\r\n rounding = \"none\",\r\n className = \"\",\r\n \"data-testid\": testId = \"footer\",\r\n copyright,\r\n links = [],\r\n logo,\r\n socialLinks = [],\r\n showThemeSelect = false,\r\n IconButton,\r\n ImageComponent = \"img\",\r\n ThemeSelect,\r\n classMap,\r\n LinkWrapper = ({ href, children, ...rest }) => (\r\n <a href={href} {...rest}>\r\n {children}\r\n </a>\r\n ),\r\n\r\n // New accessibility props\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n navAriaLabel = \"Footer site links\",\r\n socialNavAriaLabel = \"Social media\",\r\n themeSelectAriaLabel = \"Theme selector\",\r\n logoAriaLabel = \"Logo\",\r\n logoDecorative = false,\r\n labelId,\r\n\r\n // Pass-through HTML props\r\n ...rest\r\n}) => {\r\n const footerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.footer,\r\n classMap[theme],\r\n shadow !== \"none\" && classMap[`shadow${capitalize(shadow)}`],\r\n rounding !== \"none\" && classMap[`round${capitalize(rounding)}`],\r\n classMap[`attachment${capitalize(attachment)}`],\r\n className,\r\n ),\r\n [classMap, theme, shadow, rounding, attachment, className],\r\n );\r\n\r\n const isLogoImage = (\r\n value: unknown,\r\n ): value is { src: string; width?: number; height?: number } =>\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n \"src\" in (value as Record<string, unknown>);\r\n\r\n const isImgLike = typeof logo === \"string\" || isLogoImage(logo);\r\n\r\n const imgLogo = isImgLike\r\n ? typeof logo === \"string\"\r\n ? { src: logo }\r\n : logo\r\n : undefined;\r\n\r\n const logoSrc = imgLogo?.src;\r\n const logoW = imgLogo?.width ?? 20;\r\n const logoH = imgLogo?.height ?? 20;\r\n\r\n return (\r\n <footer\r\n className={footerClass}\r\n data-testid={testId}\r\n role=\"contentinfo\"\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy ?? labelId}\r\n aria-describedby={ariaDescribedBy}\r\n {...rest}\r\n >\r\n <div className={classMap.content}>\r\n <div className={classMap.left} data-testid={`${testId}-left`}>\r\n {isImgLike && logoSrc ? (\r\n typeof ImageComponent === \"string\" ? (\r\n <img\r\n className={classMap.logo}\r\n data-testid={`${testId}-logo`}\r\n loading=\"lazy\"\r\n src={logoSrc}\r\n alt={logoDecorative ? \"\" : logoAriaLabel}\r\n aria-hidden={logoDecorative ? true : undefined}\r\n height={logoH}\r\n width={logoW}\r\n />\r\n ) : (\r\n <ImageComponent\r\n className={classMap.logo}\r\n data-testid={`${testId}-logo`}\r\n src={logoSrc}\r\n alt={logoDecorative ? \"\" : logoAriaLabel}\r\n aria-hidden={logoDecorative ? true : undefined}\r\n height={logoH}\r\n width={logoW}\r\n />\r\n )\r\n ) : logo ? (\r\n <span\r\n className={classMap.logo}\r\n role={logoDecorative ? undefined : \"img\"}\r\n aria-label={logoDecorative ? undefined : logoAriaLabel}\r\n aria-hidden={logoDecorative ? true : undefined}\r\n data-testid={`${testId}-logo`}\r\n >\r\n {\r\n logo as Exclude<\r\n LogoSource,\r\n string | { src: string; width?: number; height?: number }\r\n >\r\n }\r\n </span>\r\n ) : null}\r\n\r\n {copyright && (\r\n <div\r\n className={classMap.copyright ?? classMap.left}\r\n data-testid={`${testId}-copyright`}\r\n >\r\n <p id={labelId}>{copyright}</p>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {links.length > 0 && (\r\n <nav\r\n className={classMap.links}\r\n aria-label={navAriaLabel}\r\n data-testid={`${testId}-nav`}\r\n >\r\n <ul>\r\n {links.map((link, i) => {\r\n const slug = (link.label || link.href || `link-${i}`)\r\n .toLowerCase()\r\n .replace(/\\s+/g, \"-\");\r\n\r\n if (link.disabled) {\r\n return (\r\n <li key={`${link.href ?? slug}-${i}`}>\r\n <span\r\n className={classMap.link}\r\n data-testid={`${testId}-link-${slug}`}\r\n aria-disabled=\"true\"\r\n title={link.title}\r\n >\r\n {link.label}\r\n </span>\r\n </li>\r\n );\r\n }\r\n\r\n return (\r\n <li key={`${link.href ?? slug}-${i}`}>\r\n <LinkWrapper\r\n href={link.href}\r\n className={classMap.link}\r\n data-testid={`${testId}-link-${slug}`}\r\n aria-label={link[\"aria-label\"]}\r\n aria-current={link[\"aria-current\"]}\r\n title={link.title}\r\n rel={link.rel}\r\n target={link.target}\r\n >\r\n {link.label}\r\n </LinkWrapper>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </nav>\r\n )}\r\n\r\n {showThemeSelect && (\r\n <div\r\n className={classMap.themeToggle}\r\n data-testid={`${testId}-theme-select`}\r\n aria-label={themeSelectAriaLabel}\r\n >\r\n <ThemeSelect\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={themeSelectAriaLabel}\r\n />\r\n </div>\r\n )}\r\n\r\n {socialLinks.length > 0 && (\r\n <nav\r\n className={classMap.social}\r\n aria-label={socialNavAriaLabel}\r\n data-testid={`${testId}-social`}\r\n >\r\n {socialLinks.map((social, index) => (\r\n <IconButton\r\n key={`${social.href ?? social.title}-${index}`}\r\n icon={social.icon}\r\n href={social.href}\r\n isExternal={social.isExternal ?? true}\r\n shadow=\"none\"\r\n aria-label={social[\"aria-label\"] ?? social.title}\r\n title={social.tooltip ?? social.title}\r\n theme=\"clear\"\r\n disabled={social.disabled}\r\n rel={social.rel}\r\n target={social.target}\r\n data-testid={`${testId}-social-${social.title\r\n .toLowerCase()\r\n .replace(/\\s+/g, \"-\")}`}\r\n />\r\n ))}\r\n </nav>\r\n )}\r\n </div>\r\n </footer>\r\n );\r\n};\r\n\r\nFooterBase.displayName = \"FooterBase\";\r\nexport default FooterBase;\r\n","import React from \"react\";\r\nimport FooterBase from \"../FooterBase\";\r\nimport { FooterProps } from \"../Footer.types\";\r\nimport IconButton from \"../../IconButton/core/IconButton\";\r\nimport ThemeSelect from \"../../Select/ThemeSelect/core/ThemeSelect\";\r\nimport \"./Footer.scss\";\r\n\r\nconst classes = {\r\n footer: \"footer\",\r\n\r\n primary: \"footer_primary\",\r\n secondary: \"footer_secondary\",\r\n tertiary: \"footer_tertiary\",\r\n quaternary: \"footer_quaternary\",\r\n clear: \"footer_clear\",\r\n\r\n shadowNone: \"footer_shadow-None\",\r\n shadowLight: \"footer_shadow-Light\",\r\n shadowMedium: \"footer_shadow-Medium\",\r\n shadowStrong: \"footer_shadow-Strong\",\r\n shadowIntense: \"footer_shadow-Intense\",\r\n\r\n roundNone: \"footer_round-None\",\r\n roundSmall: \"footer_round-Small\",\r\n roundMedium: \"footer_round-Medium\",\r\n roundLarge: \"footer_round-Large\",\r\n\r\n attachmentStatic: \"footer_attachment-static\",\r\n attachmentFixed: \"footer_attachment-fixed\",\r\n attachmentSticky: \"footer_attachment-sticky\",\r\n\r\n content: \"footer_content\",\r\n logo: \"footer_logo\",\r\n left: \"footer_left\",\r\n links: \"footer_links\",\r\n link: \"footer_link\",\r\n social: \"footer_social\",\r\n\r\n themeToggle: \"footer_theme_toggle\",\r\n};\r\n\r\nconst Footer: React.FC<FooterProps> = (props) => {\r\n return (\r\n <FooterBase\r\n {...props}\r\n IconButton={IconButton}\r\n ThemeSelect={ThemeSelect}\r\n classMap={classes}\r\n />\r\n );\r\n};\r\nFooter.displayName = \"Footer\";\r\nexport default Footer;\r\n"],"names":["IconButton","rest","ThemeSelect"],"mappings":";;;;;;;;AAUA,MAAM,oBAAoB;AAAA,EACxB,CAAC;AAAA,IACC,QAAQ,gBAAA;AAAA,IACR,SAAS,iBAAA;AAAA,IACT,WAAW,mBAAA;AAAA,IACX,eAAe,SAAS;AAAA,IACxB,QAAQ;AAAA,EAAA,MACJ;AACJ,UAAM,MAAM,WAAW,YAAY;AACnC,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,qDAAqD;AAEvE,UAAM,EAAE,gBAAgB,mBAAmB,QAAA,IAAY;AAEvD,UAAM,UAAU;AAAA,MACd,MACE,QAAQ,IAAI,CAAC,QAAQ,WAAW;AAAA,QAC9B,OAAO,OAAO,KAAK;AAAA,QACnB,OAAO,OAAO;AAAA,MAAA,EACd;AAAA,MACJ,CAAC,OAAO;AAAA,IAAA;AAGV,WACE,oBAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAa;AAAA,QACb,OAAO,OAAO,cAAc;AAAA,QAC5B,cAAW;AAAA,QACX,UAAU,CAAC,UACT,kBAAkB,SAAS,OAAO,KAAK,GAAG,EAAE,CAAC;AAAA,MAAA;AAAA,IAAA,GAGnD;AAAA,EAEJ;AACF;AACA,kBAAkB,cAAc;AC9ChC,MAAM,aAAwC,CAAC;AAAA,EAC7C,QAAQ,gBAAA;AAAA,EACR,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe,SAAS;AAAA,EACxB;AAAA,EACA,QAAQ,CAAA;AAAA,EACR;AAAA,EACA,cAAc,CAAA;AAAA,EACd,kBAAkB;AAAA,EAClB,YAAAA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA,cAAc,CAAC,EAAE,MAAM,UAAU,GAAGC,MAAAA,MAClC,oBAAC,KAAA,EAAE,MAAa,GAAGA,OAChB,SAAA,CACH;AAAA;AAAA,EAIF,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,uBAAuB;AAAA,EACvB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB;AAAA;AAAA,EAGA,GAAG;AACL,MAAM;AACJ,QAAM,cAAc;AAAA,IAClB,MACE;AAAA,MACE,SAAS;AAAA,MACT,SAAS,KAAK;AAAA,MACd,WAAW,UAAU,SAAS,SAAS,WAAW,MAAM,CAAC,EAAE;AAAA,MAC3D,aAAa,UAAU,SAAS,QAAQ,WAAW,QAAQ,CAAC,EAAE;AAAA,MAC9D,SAAS,aAAa,WAAW,UAAU,CAAC,EAAE;AAAA,MAC9C;AAAA,IAAA;AAAA,IAEJ,CAAC,UAAU,OAAO,QAAQ,UAAU,YAAY,SAAS;AAAA,EAAA;AAG3D,QAAM,cAAc,CAClB,UAEA,OAAO,UAAU,YACjB,UAAU,QACV,SAAU;AAEZ,QAAM,YAAY,OAAO,SAAS,YAAY,YAAY,IAAI;AAE9D,QAAM,UAAU,YACZ,OAAO,SAAS,WACd,EAAE,KAAK,SACP,OACF;AAEJ,QAAM,UAAU,mCAAS;AACzB,QAAM,SAAQ,mCAAS,UAAS;AAChC,QAAM,SAAQ,mCAAS,WAAU;AAEjC,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,eAAa;AAAA,MACb,MAAK;AAAA,MACL,cAAY;AAAA,MACZ,mBAAiB,kBAAkB;AAAA,MACnC,oBAAkB;AAAA,MACjB,GAAG;AAAA,MAEJ,UAAA,qBAAC,OAAA,EAAI,WAAW,SAAS,SACvB,UAAA;AAAA,QAAA,qBAAC,SAAI,WAAW,SAAS,MAAM,eAAa,GAAG,MAAM,SAClD,UAAA;AAAA,UAAA,aAAa,UACZ,OAAO,mBAAmB,WACxB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,SAAS;AAAA,cACpB,eAAa,GAAG,MAAM;AAAA,cACtB,SAAQ;AAAA,cACR,KAAK;AAAA,cACL,KAAK,iBAAiB,KAAK;AAAA,cAC3B,eAAa,iBAAiB,OAAO;AAAA,cACrC,QAAQ;AAAA,cACR,OAAO;AAAA,YAAA;AAAA,UAAA,IAGT;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,SAAS;AAAA,cACpB,eAAa,GAAG,MAAM;AAAA,cACtB,KAAK;AAAA,cACL,KAAK,iBAAiB,KAAK;AAAA,cAC3B,eAAa,iBAAiB,OAAO;AAAA,cACrC,QAAQ;AAAA,cACR,OAAO;AAAA,YAAA;AAAA,UAAA,IAGT,OACF;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,SAAS;AAAA,cACpB,MAAM,iBAAiB,SAAY;AAAA,cACnC,cAAY,iBAAiB,SAAY;AAAA,cACzC,eAAa,iBAAiB,OAAO;AAAA,cACrC,eAAa,GAAG,MAAM;AAAA,cAGpB,UAAA;AAAA,YAAA;AAAA,UAAA,IAMF;AAAA,UAEH,aACC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,SAAS,aAAa,SAAS;AAAA,cAC1C,eAAa,GAAG,MAAM;AAAA,cAEtB,UAAA,oBAAC,KAAA,EAAE,IAAI,SAAU,UAAA,UAAA,CAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QAC7B,GAEJ;AAAA,QAEC,MAAM,SAAS,KACd;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,cAAY;AAAA,YACZ,eAAa,GAAG,MAAM;AAAA,YAEtB,8BAAC,MAAA,EACE,UAAA,MAAM,IAAI,CAAC,MAAM,MAAM;AACtB,oBAAM,QAAQ,KAAK,SAAS,KAAK,QAAQ,QAAQ,CAAC,IAC/C,YAAA,EACA,QAAQ,QAAQ,GAAG;AAEtB,kBAAI,KAAK,UAAU;AACjB,2CACG,MAAA,EACC,UAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAW,SAAS;AAAA,oBACpB,eAAa,GAAG,MAAM,SAAS,IAAI;AAAA,oBACnC,iBAAc;AAAA,oBACd,OAAO,KAAK;AAAA,oBAEX,UAAA,KAAK;AAAA,kBAAA;AAAA,gBAAA,KAPD,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,EASlC;AAAA,cAEJ;AAEA,yCACG,MAAA,EACC,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAM,KAAK;AAAA,kBACX,WAAW,SAAS;AAAA,kBACpB,eAAa,GAAG,MAAM,SAAS,IAAI;AAAA,kBACnC,cAAY,KAAK,YAAY;AAAA,kBAC7B,gBAAc,KAAK,cAAc;AAAA,kBACjC,OAAO,KAAK;AAAA,kBACZ,KAAK,KAAK;AAAA,kBACV,QAAQ,KAAK;AAAA,kBAEZ,UAAA,KAAK;AAAA,gBAAA;AAAA,cAAA,KAXD,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,EAalC;AAAA,YAEJ,CAAC,EAAA,CACH;AAAA,UAAA;AAAA,QAAA;AAAA,QAIH,mBACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,eAAa,GAAG,MAAM;AAAA,YACtB,cAAY;AAAA,YAEZ,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,QAAO;AAAA,gBACP,cAAY;AAAA,cAAA;AAAA,YAAA;AAAA,UACd;AAAA,QAAA;AAAA,QAIH,YAAY,SAAS,KACpB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,cAAY;AAAA,YACZ,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA,YAAY,IAAI,CAAC,QAAQ,UACxB;AAAA,cAACD;AAAA,cAAA;AAAA,gBAEC,MAAM,OAAO;AAAA,gBACb,MAAM,OAAO;AAAA,gBACb,YAAY,OAAO,cAAc;AAAA,gBACjC,QAAO;AAAA,gBACP,cAAY,OAAO,YAAY,KAAK,OAAO;AAAA,gBAC3C,OAAO,OAAO,WAAW,OAAO;AAAA,gBAChC,OAAM;AAAA,gBACN,UAAU,OAAO;AAAA,gBACjB,KAAK,OAAO;AAAA,gBACZ,QAAQ,OAAO;AAAA,gBACf,eAAa,GAAG,MAAM,WAAW,OAAO,MACrC,cACA,QAAQ,QAAQ,GAAG,CAAC;AAAA,cAAA;AAAA,cAblB,GAAG,OAAO,QAAQ,OAAO,KAAK,IAAI,KAAK;AAAA,YAAA,CAe/C;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,WAAW,cAAc;AC9NzB,MAAM,UAAU;AAAA,EACd,QAAQ;AAAA,EAER,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,EAEP,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,eAAe;AAAA,EAEf,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,YAAY;AAAA,EAEZ,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAElB,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ;AAAA,EAER,aAAa;AACf;AAEA,MAAM,SAAgC,CAAC,UAAU;AAC/C,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MAAA,aACAE;AAAAA,MACA,UAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AACA,OAAO,cAAc;"}
1
+ {"version":3,"file":"Footer-Q_60pe6o.js","sources":["../../src/components/Select/ThemeSelect/core/ThemeSelect.tsx","../../src/components/Footer/FooterBase.tsx","../../src/components/Footer/core/Footer.tsx"],"sourcesContent":["import { useContext, useMemo, forwardRef } from \"react\";\r\nimport Select from \"../../core/Select\";\r\nimport { ThemeContext } from \"../../../../context/ThemeContext\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n getDefaultTheme,\r\n} from \"@/config/boreal-style-config\";\r\nimport { ThemeSelectProps } from \"../../Select.types\";\r\n\r\nconst UserThemeSettings = forwardRef<HTMLSelectElement, ThemeSelectProps>(\r\n ({\r\n theme = getDefaultTheme(),\r\n shadow = getDefaultShadow(),\r\n rounding = getDefaultRounding(),\r\n \"data-testid\": testId = \"theme-select\",\r\n state = \"\",\r\n }) => {\r\n const ctx = useContext(ThemeContext);\r\n if (!ctx)\r\n throw new Error(\"ThemeContext is undefined. Wrap with ThemeProvider.\");\r\n\r\n const { selectedScheme, setSelectedScheme, schemes } = ctx;\r\n\r\n const options = useMemo(\r\n () =>\r\n schemes.map((scheme, index) => ({\r\n value: String(index),\r\n label: scheme.name,\r\n })),\r\n [schemes],\r\n );\r\n\r\n return (\r\n <div className=\"control-container\">\r\n <Select\r\n theme={theme}\r\n state={state}\r\n shadow={shadow}\r\n rounding={rounding}\r\n options={options}\r\n data-testid={testId}\r\n value={String(selectedScheme)}\r\n aria-label=\"Select Theme\"\r\n onChange={(value: string | number) =>\r\n setSelectedScheme(parseInt(String(value), 10))\r\n }\r\n />\r\n </div>\r\n );\r\n },\r\n);\r\nUserThemeSettings.displayName = \"UserThemeSettings\";\r\nexport default UserThemeSettings;\r\n","import React, { useMemo } from \"react\";\r\nimport { BaseFooterProps, LogoSource } from \"./Footer.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { getDefaultTheme } from \"../../config/boreal-style-config\";\r\nimport { capitalize } from \"@/utils/capitalize\";\r\n\r\nconst FooterBase: React.FC<BaseFooterProps> = ({\r\n theme = getDefaultTheme(),\r\n attachment = \"static\",\r\n shadow = \"none\",\r\n rounding = \"none\",\r\n className = \"\",\r\n \"data-testid\": testId = \"footer\",\r\n copyright,\r\n links = [],\r\n logo,\r\n socialLinks = [],\r\n showThemeSelect = false,\r\n IconButton,\r\n ImageComponent = \"img\",\r\n ThemeSelect,\r\n classMap,\r\n LinkWrapper = ({ href, children, ...rest }) => (\r\n <a href={href} {...rest}>\r\n {children}\r\n </a>\r\n ),\r\n\r\n // New accessibility props\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n navAriaLabel = \"Footer site links\",\r\n socialNavAriaLabel = \"Social media\",\r\n themeSelectAriaLabel = \"Theme selector\",\r\n logoAriaLabel = \"Logo\",\r\n logoDecorative = false,\r\n labelId,\r\n\r\n // Pass-through HTML props\r\n ...rest\r\n}) => {\r\n const footerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.footer,\r\n classMap[theme],\r\n shadow !== \"none\" && classMap[`shadow${capitalize(shadow)}`],\r\n rounding !== \"none\" && classMap[`round${capitalize(rounding)}`],\r\n classMap[`attachment${capitalize(attachment)}`],\r\n className,\r\n ),\r\n [classMap, theme, shadow, rounding, attachment, className],\r\n );\r\n\r\n const isLogoImage = (\r\n value: unknown,\r\n ): value is { src: string; width?: number; height?: number } =>\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n \"src\" in (value as Record<string, unknown>);\r\n\r\n const isImgLike = typeof logo === \"string\" || isLogoImage(logo);\r\n\r\n const imgLogo = isImgLike\r\n ? typeof logo === \"string\"\r\n ? { src: logo }\r\n : logo\r\n : undefined;\r\n\r\n const logoSrc = imgLogo?.src;\r\n const logoW = imgLogo?.width ?? 20;\r\n const logoH = imgLogo?.height ?? 20;\r\n\r\n return (\r\n <footer\r\n className={footerClass}\r\n data-testid={testId}\r\n role=\"contentinfo\"\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabelledBy ?? labelId}\r\n aria-describedby={ariaDescribedBy}\r\n {...rest}\r\n >\r\n <div className={classMap.content}>\r\n <div className={classMap.left} data-testid={`${testId}-left`}>\r\n {isImgLike && logoSrc ? (\r\n typeof ImageComponent === \"string\" ? (\r\n <img\r\n className={classMap.logo}\r\n data-testid={`${testId}-logo`}\r\n loading=\"lazy\"\r\n src={logoSrc}\r\n alt={logoDecorative ? \"\" : logoAriaLabel}\r\n aria-hidden={logoDecorative ? true : undefined}\r\n height={logoH}\r\n width={logoW}\r\n />\r\n ) : (\r\n <ImageComponent\r\n className={classMap.logo}\r\n data-testid={`${testId}-logo`}\r\n src={logoSrc}\r\n alt={logoDecorative ? \"\" : logoAriaLabel}\r\n aria-hidden={logoDecorative ? true : undefined}\r\n height={logoH}\r\n width={logoW}\r\n />\r\n )\r\n ) : logo ? (\r\n <span\r\n className={classMap.logo}\r\n role={logoDecorative ? undefined : \"img\"}\r\n aria-label={logoDecorative ? undefined : logoAriaLabel}\r\n aria-hidden={logoDecorative ? true : undefined}\r\n data-testid={`${testId}-logo`}\r\n >\r\n {\r\n logo as Exclude<\r\n LogoSource,\r\n string | { src: string; width?: number; height?: number }\r\n >\r\n }\r\n </span>\r\n ) : null}\r\n\r\n {copyright && (\r\n <div\r\n className={classMap.copyright ?? classMap.left}\r\n data-testid={`${testId}-copyright`}\r\n >\r\n <p id={labelId}>{copyright}</p>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {links.length > 0 && (\r\n <nav\r\n className={classMap.links}\r\n aria-label={navAriaLabel}\r\n data-testid={`${testId}-nav`}\r\n >\r\n <ul>\r\n {links.map((link, i) => {\r\n const slug = (link.label || link.href || `link-${i}`)\r\n .toLowerCase()\r\n .replace(/\\s+/g, \"-\");\r\n\r\n if (link.disabled) {\r\n return (\r\n <li key={`${link.href ?? slug}-${i}`}>\r\n <span\r\n className={classMap.link}\r\n data-testid={`${testId}-link-${slug}`}\r\n aria-disabled=\"true\"\r\n title={link.title}\r\n >\r\n {link.label}\r\n </span>\r\n </li>\r\n );\r\n }\r\n\r\n return (\r\n <li key={`${link.href ?? slug}-${i}`}>\r\n <LinkWrapper\r\n href={link.href}\r\n className={classMap.link}\r\n data-testid={`${testId}-link-${slug}`}\r\n aria-label={link[\"aria-label\"]}\r\n aria-current={link[\"aria-current\"]}\r\n title={link.title}\r\n rel={link.rel}\r\n target={link.target}\r\n >\r\n {link.label}\r\n </LinkWrapper>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </nav>\r\n )}\r\n\r\n {showThemeSelect && (\r\n <div\r\n className={classMap.themeToggle}\r\n data-testid={`${testId}-theme-select`}\r\n aria-label={themeSelectAriaLabel}\r\n >\r\n <ThemeSelect\r\n theme=\"clear\"\r\n shadow=\"none\"\r\n aria-label={themeSelectAriaLabel}\r\n />\r\n </div>\r\n )}\r\n\r\n {socialLinks.length > 0 && (\r\n <nav\r\n className={classMap.social}\r\n aria-label={socialNavAriaLabel}\r\n data-testid={`${testId}-social`}\r\n >\r\n {socialLinks.map((social, index) => (\r\n <IconButton\r\n key={`${social.href ?? social.title}-${index}`}\r\n icon={social.icon}\r\n href={social.href}\r\n isExternal={social.isExternal ?? true}\r\n shadow=\"none\"\r\n aria-label={social[\"aria-label\"] ?? social.title}\r\n title={social.tooltip ?? social.title}\r\n theme=\"clear\"\r\n disabled={social.disabled}\r\n rel={social.rel}\r\n target={social.target}\r\n data-testid={`${testId}-social-${social.title\r\n .toLowerCase()\r\n .replace(/\\s+/g, \"-\")}`}\r\n />\r\n ))}\r\n </nav>\r\n )}\r\n </div>\r\n </footer>\r\n );\r\n};\r\n\r\nFooterBase.displayName = \"FooterBase\";\r\nexport default FooterBase;\r\n","import React from \"react\";\r\nimport FooterBase from \"../FooterBase\";\r\nimport { FooterProps } from \"../Footer.types\";\r\nimport IconButton from \"../../IconButton/core/IconButton\";\r\nimport ThemeSelect from \"../../Select/ThemeSelect/core/ThemeSelect\";\r\nimport \"./Footer.scss\";\r\n\r\nconst classes = {\r\n footer: \"footer\",\r\n\r\n primary: \"footer_primary\",\r\n secondary: \"footer_secondary\",\r\n tertiary: \"footer_tertiary\",\r\n quaternary: \"footer_quaternary\",\r\n clear: \"footer_clear\",\r\n\r\n shadowNone: \"footer_shadow-None\",\r\n shadowLight: \"footer_shadow-Light\",\r\n shadowMedium: \"footer_shadow-Medium\",\r\n shadowStrong: \"footer_shadow-Strong\",\r\n shadowIntense: \"footer_shadow-Intense\",\r\n\r\n roundNone: \"footer_round-None\",\r\n roundSmall: \"footer_round-Small\",\r\n roundMedium: \"footer_round-Medium\",\r\n roundLarge: \"footer_round-Large\",\r\n\r\n attachmentStatic: \"footer_attachment-static\",\r\n attachmentFixed: \"footer_attachment-fixed\",\r\n attachmentSticky: \"footer_attachment-sticky\",\r\n\r\n content: \"footer_content\",\r\n logo: \"footer_logo\",\r\n left: \"footer_left\",\r\n links: \"footer_links\",\r\n link: \"footer_link\",\r\n social: \"footer_social\",\r\n\r\n themeToggle: \"footer_theme_toggle\",\r\n};\r\n\r\nconst Footer: React.FC<FooterProps> = (props) => {\r\n return (\r\n <FooterBase\r\n {...props}\r\n IconButton={IconButton}\r\n ThemeSelect={ThemeSelect}\r\n classMap={classes}\r\n />\r\n );\r\n};\r\nFooter.displayName = \"Footer\";\r\nexport default Footer;\r\n"],"names":["IconButton","rest","ThemeSelect"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { F } from "./Footer-CkSzN_PI.js";
1
+ import { F } from "./Footer-Q_60pe6o.js";
2
2
  export {
3
3
  F as default
4
4
  };
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import { forwardRef, useMemo } from "react";
3
3
  import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
4
4
  import { c as capitalize } from "./capitalize-C0TSQSPh.js";
5
- import { a as getDefaultRounding, b as getDefaultShadow, c as getDefaultSize, d as getDefaultTheme } from "./boreal-style-config-DsaRlxmw.js";
5
+ import { d as getDefaultTheme, a as getDefaultRounding, b as getDefaultShadow, c as getDefaultSize } from "./boreal-style-config-DsaRlxmw.js";
6
6
  const IconButtonBase = forwardRef(function IconButtonBase2({
7
7
  id,
8
8
  icon: Icon,
@@ -186,4 +186,4 @@ IconButton.displayName = "IconButton";
186
186
  export {
187
187
  IconButton as I
188
188
  };
189
- //# sourceMappingURL=IconButton-ChJJCB4O.js.map
189
+ //# sourceMappingURL=IconButton-By8zuXrs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton-ChJJCB4O.js","sources":["../../src/components/IconButton/IconButtonBase.tsx","../../src/components/IconButton/core/IconButton.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from \"react\";\r\nimport { IconButtonBaseProps } from \"./IconButton.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 IconButtonBase = forwardRef<\r\n HTMLButtonElement | HTMLAnchorElement,\r\n IconButtonBaseProps\r\n>(function IconButtonBase(\r\n {\r\n id,\r\n icon: Icon,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n href,\r\n isExternal = false,\r\n onClick,\r\n onKeyDown,\r\n className = \"\",\r\n iconClassName = \"\",\r\n disabled = false,\r\n rel,\r\n target,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledby,\r\n \"aria-describedby\": ariaDescribedby,\r\n \"aria-errormessage\": ariaErrormessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-haspopup\": ariaHaspopup,\r\n \"aria-expanded\": ariaExpanded,\r\n \"aria-controls\": ariaControls,\r\n \"aria-pressed\": ariaPressed,\r\n \"aria-selected\": ariaSelected,\r\n \"aria-checked\": ariaChecked,\r\n \"aria-current\": ariaCurrent,\r\n \"aria-busy\": ariaBusy,\r\n \"aria-live\": ariaLive,\r\n \"aria-atomic\": ariaAtomic,\r\n role,\r\n title,\r\n outline = false,\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n size = getDefaultSize(),\r\n loading = false,\r\n type = \"button\",\r\n classMap,\r\n LinkComponent = \"a\",\r\n \"data-testid\": testId = \"icon-button\",\r\n tabIndex,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const needsLabel = !ariaLabel && !ariaLabelledby && !title;\r\n if (process.env.NODE_ENV === \"development\" && needsLabel) {\r\n console.warn(\r\n \"IconButtonBase: provide `aria-label`, `aria-labelledby`, or `title` for icon-only buttons.\",\r\n );\r\n }\r\n\r\n const resolvedLabel =\r\n ariaLabel || (!ariaLabelledby ? title : undefined) || undefined;\r\n\r\n const resolvedBusy = loading || ariaBusy || undefined;\r\n const inert = disabled || loading;\r\n const renderAsLink = !!href;\r\n\r\n const classNames = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.iconButton,\r\n classMap[theme],\r\n classMap[state],\r\n size && classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n inert && classMap.disabled,\r\n className,\r\n ),\r\n [classMap, theme, state, size, shadow, rounding, outline, inert, className],\r\n );\r\n\r\n const sharedAccessibilityProps = {\r\n id,\r\n role,\r\n title,\r\n \"data-testid\": testId,\r\n \"aria-label\": resolvedLabel,\r\n \"aria-labelledby\": ariaLabelledby,\r\n \"aria-describedby\": ariaDescribedby,\r\n \"aria-errormessage\": ariaErrormessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-haspopup\": ariaHaspopup,\r\n \"aria-expanded\": ariaExpanded,\r\n \"aria-controls\": ariaControls,\r\n \"aria-pressed\": ariaPressed,\r\n \"aria-selected\": ariaSelected,\r\n \"aria-checked\": ariaChecked,\r\n \"aria-current\": ariaCurrent,\r\n \"aria-busy\": resolvedBusy,\r\n } as const;\r\n\r\n const iconContent = (\r\n <span\r\n className={classMap.buttonLabel}\r\n aria-live={ariaLive ?? \"polite\"}\r\n aria-atomic={ariaAtomic ?? true}\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 ) : Icon ? (\r\n <Icon\r\n data-testid=\"icon-button-icon\"\r\n aria-hidden={true}\r\n focusable={false}\r\n className={iconClassName}\r\n />\r\n ) : null}\r\n </span>\r\n );\r\n\r\n if (renderAsLink) {\r\n const linkProps = {\r\n className: combineClassNames(classNames, classMap.link),\r\n ref: ref as React.Ref<HTMLAnchorElement>,\r\n onClick: inert\r\n ? (e: React.MouseEvent<HTMLElement>) => e.preventDefault()\r\n : onClick,\r\n onKeyDown,\r\n \"aria-disabled\": inert || undefined,\r\n ...sharedAccessibilityProps,\r\n ...rest,\r\n tabIndex: inert ? -1 : tabIndex,\r\n };\r\n\r\n if (isExternal) {\r\n return (\r\n <a\r\n {...linkProps}\r\n href={inert ? undefined : href}\r\n target={target ?? \"_blank\"}\r\n rel={rel ?? \"noopener noreferrer\"}\r\n >\r\n {iconContent}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <LinkComponent {...linkProps} href={inert ? undefined : href}>\r\n {iconContent}\r\n </LinkComponent>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type={type}\r\n disabled={inert}\r\n className={classNames}\r\n onClick={inert ? (e) => e.preventDefault() : onClick}\r\n onKeyDown={onKeyDown}\r\n ref={ref as React.Ref<HTMLButtonElement>}\r\n {...sharedAccessibilityProps}\r\n {...rest}\r\n tabIndex={tabIndex}\r\n >\r\n {iconContent}\r\n </button>\r\n );\r\n});\r\n\r\nIconButtonBase.displayName = \"IconButtonBase\";\r\nexport default IconButtonBase;\r\n","import IconButtonBase from \"../IconButtonBase\";\r\nimport \"./IconButton.scss\";\r\nimport { IconButtonProps } from \"../IconButton.types\";\r\nimport { forwardRef } from \"react\";\r\n\r\nconst classes = {\r\n iconButton: \"icon_button\",\r\n buttonLabel: \"icon_button_button_label\",\r\n loader: \"icon_button_loader\",\r\n\r\n disabled: \"icon_button_disabled\",\r\n outline: \"icon_button_outline\",\r\n\r\n primary: \"icon_button_primary\",\r\n secondary: \"icon_button_secondary\",\r\n tertiary: \"icon_button_tertiary\",\r\n quaternary: \"icon_button_quaternary\",\r\n\r\n success: \"icon_button_success\",\r\n warning: \"icon_button_warning\",\r\n error: \"icon_button_error\",\r\n\r\n clear: \"icon_button_clear\",\r\n\r\n xs: \"icon_button_xs\",\r\n small: \"icon_button_small\",\r\n medium: \"icon_button_medium\",\r\n large: \"icon_button_large\",\r\n xl: \"icon_button_xl\",\r\n\r\n shadowNone: \"icon_button_shadow-None\",\r\n shadowLight: \"icon_button_shadow-Light\",\r\n shadowMedium: \"icon_button_shadow-Medium\",\r\n shadowStrong: \"icon_button_shadow-Strong\",\r\n shadowIntense: \"icon_button_shadow-Intense\",\r\n\r\n roundNone: \"icon_button_round-None\",\r\n roundSmall: \"icon_button_round-Small\",\r\n roundMedium: \"icon_button_round-Medium\",\r\n roundLarge: \"icon_button_round-Large\",\r\n roundFull: \"icon_button_round-Full\",\r\n};\r\n\r\nconst IconButton = forwardRef<\r\n HTMLButtonElement | HTMLAnchorElement,\r\n IconButtonProps\r\n>((props, ref) => <IconButtonBase ref={ref} {...props} classMap={classes} />);\r\nIconButton.displayName = \"IconButton\";\r\nexport default IconButton;\r\n"],"names":["IconButtonBase"],"mappings":";;;;;AAWA,MAAM,iBAAiB,WAGrB,SAASA,gBACT;AAAA,EACE;AAAA,EACA,MAAM;AAAA,EACN,QAAQ,gBAAA;AAAA,EACR,QAAQ;AAAA,EACR;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,qBAAqB;AAAA,EACrB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,WAAW,mBAAA;AAAA,EACX,SAAS,iBAAA;AAAA,EACT,OAAO,eAAA;AAAA,EACP,UAAU;AAAA,EACV,OAAO;AAAA,EACP;AAAA,EACA,gBAAgB;AAAA,EAChB,eAAe,SAAS;AAAA,EACxB;AAAA,EACA,GAAG;AACL,GACA,KACA;AACA,QAAM,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC;AACrD,MAAI,QAAQ,IAAI,aAAa,iBAAiB,YAAY;AACxD,YAAQ;AAAA,MACN;AAAA,IAAA;AAAA,EAEJ;AAEA,QAAM,gBACJ,cAAc,CAAC,iBAAiB,QAAQ,WAAc;AAExD,QAAM,eAAe,WAAW,YAAY;AAC5C,QAAM,QAAQ,YAAY;AAC1B,QAAM,eAAe,CAAC,CAAC;AAEvB,QAAM,aAAa;AAAA,IACjB,MACE;AAAA,MACE,SAAS;AAAA,MACT,SAAS,KAAK;AAAA,MACd,SAAS,KAAK;AAAA,MACd,QAAQ,SAAS,IAAI;AAAA,MACrB,UAAU,SAAS,SAAS,WAAW,MAAM,CAAC,EAAE;AAAA,MAChD,YAAY,SAAS,QAAQ,WAAW,QAAQ,CAAC,EAAE;AAAA,MACnD,WAAW,SAAS;AAAA,MACpB,SAAS,SAAS;AAAA,MAClB;AAAA,IAAA;AAAA,IAEJ,CAAC,UAAU,OAAO,OAAO,MAAM,QAAQ,UAAU,SAAS,OAAO,SAAS;AAAA,EAAA;AAG5E,QAAM,2BAA2B;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,qBAAqB;AAAA,IACrB,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,aAAa;AAAA,EAAA;AAGf,QAAM,cACJ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,SAAS;AAAA,MACpB,aAAW,YAAY;AAAA,MACvB,eAAa,cAAc;AAAA,MAE1B,oBACC,qBAAA,UAAA,EACE,UAAA;AAAA,QAAA,oBAAC,OAAA,EAAI,WAAW,SAAS,QAAQ,eAAY,QAAO;AAAA,QACpD,oBAAC,QAAA,EAAK,WAAU,WAAU,UAAA,UAAA,CAAO;AAAA,MAAA,EAAA,CACnC,IACE,OACF;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,eAAY;AAAA,UACZ,eAAa;AAAA,UACb,WAAW;AAAA,UACX,WAAW;AAAA,QAAA;AAAA,MAAA,IAEX;AAAA,IAAA;AAAA,EAAA;AAIR,MAAI,cAAc;AAChB,UAAM,YAAY;AAAA,MAChB,WAAW,kBAAkB,YAAY,SAAS,IAAI;AAAA,MACtD;AAAA,MACA,SAAS,QACL,CAAC,MAAqC,EAAE,mBACxC;AAAA,MACJ;AAAA,MACA,iBAAiB,SAAS;AAAA,MAC1B,GAAG;AAAA,MACH,GAAG;AAAA,MACH,UAAU,QAAQ,KAAK;AAAA,IAAA;AAGzB,QAAI,YAAY;AACd,aACE;AAAA,QAAC;AAAA,QAAA;AAAA,UACE,GAAG;AAAA,UACJ,MAAM,QAAQ,SAAY;AAAA,UAC1B,QAAQ,UAAU;AAAA,UAClB,KAAK,OAAO;AAAA,UAEX,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAGP;AAEA,WACE,oBAAC,iBAAe,GAAG,WAAW,MAAM,QAAQ,SAAY,MACrD,UAAA,YAAA,CACH;AAAA,EAEJ;AAEA,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,UAAU;AAAA,MACV,WAAW;AAAA,MACX,SAAS,QAAQ,CAAC,MAAM,EAAE,mBAAmB;AAAA,MAC7C;AAAA,MACA;AAAA,MACC,GAAG;AAAA,MACH,GAAG;AAAA,MACJ;AAAA,MAEC,UAAA;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;AAED,eAAe,cAAc;AClL7B,MAAM,UAAU;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,QAAQ;AAAA,EAER,UAAU;AAAA,EACV,SAAS;AAAA,EAET,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EAEZ,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EAEP,OAAO;AAAA,EAEP,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,IAAI;AAAA,EAEJ,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,eAAe;AAAA,EAEf,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AACb;AAEA,MAAM,aAAa,WAGjB,CAAC,OAAO,QAAQ,oBAAC,gBAAA,EAAe,KAAW,GAAG,OAAO,UAAU,QAAA,CAAS,CAAE;AAC5E,WAAW,cAAc;"}
1
+ {"version":3,"file":"IconButton-By8zuXrs.js","sources":["../../src/components/IconButton/IconButtonBase.tsx","../../src/components/IconButton/core/IconButton.tsx"],"sourcesContent":["import React, { forwardRef, useMemo } from \"react\";\r\nimport { IconButtonBaseProps } from \"./IconButton.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 IconButtonBase = forwardRef<\r\n HTMLButtonElement | HTMLAnchorElement,\r\n IconButtonBaseProps\r\n>(function IconButtonBase(\r\n {\r\n id,\r\n icon: Icon,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n href,\r\n isExternal = false,\r\n onClick,\r\n onKeyDown,\r\n className = \"\",\r\n iconClassName = \"\",\r\n disabled = false,\r\n rel,\r\n target,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledby,\r\n \"aria-describedby\": ariaDescribedby,\r\n \"aria-errormessage\": ariaErrormessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-haspopup\": ariaHaspopup,\r\n \"aria-expanded\": ariaExpanded,\r\n \"aria-controls\": ariaControls,\r\n \"aria-pressed\": ariaPressed,\r\n \"aria-selected\": ariaSelected,\r\n \"aria-checked\": ariaChecked,\r\n \"aria-current\": ariaCurrent,\r\n \"aria-busy\": ariaBusy,\r\n \"aria-live\": ariaLive,\r\n \"aria-atomic\": ariaAtomic,\r\n role,\r\n title,\r\n outline = false,\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n size = getDefaultSize(),\r\n loading = false,\r\n type = \"button\",\r\n classMap,\r\n LinkComponent = \"a\",\r\n \"data-testid\": testId = \"icon-button\",\r\n tabIndex,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const needsLabel = !ariaLabel && !ariaLabelledby && !title;\r\n if (process.env.NODE_ENV === \"development\" && needsLabel) {\r\n console.warn(\r\n \"IconButtonBase: provide `aria-label`, `aria-labelledby`, or `title` for icon-only buttons.\",\r\n );\r\n }\r\n\r\n const resolvedLabel =\r\n ariaLabel || (!ariaLabelledby ? title : undefined) || undefined;\r\n\r\n const resolvedBusy = loading || ariaBusy || undefined;\r\n const inert = disabled || loading;\r\n const renderAsLink = !!href;\r\n\r\n const classNames = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.iconButton,\r\n classMap[theme],\r\n classMap[state],\r\n size && classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n inert && classMap.disabled,\r\n className,\r\n ),\r\n [classMap, theme, state, size, shadow, rounding, outline, inert, className],\r\n );\r\n\r\n const sharedAccessibilityProps = {\r\n id,\r\n role,\r\n title,\r\n \"data-testid\": testId,\r\n \"aria-label\": resolvedLabel,\r\n \"aria-labelledby\": ariaLabelledby,\r\n \"aria-describedby\": ariaDescribedby,\r\n \"aria-errormessage\": ariaErrormessage,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-haspopup\": ariaHaspopup,\r\n \"aria-expanded\": ariaExpanded,\r\n \"aria-controls\": ariaControls,\r\n \"aria-pressed\": ariaPressed,\r\n \"aria-selected\": ariaSelected,\r\n \"aria-checked\": ariaChecked,\r\n \"aria-current\": ariaCurrent,\r\n \"aria-busy\": resolvedBusy,\r\n } as const;\r\n\r\n const iconContent = (\r\n <span\r\n className={classMap.buttonLabel}\r\n aria-live={ariaLive ?? \"polite\"}\r\n aria-atomic={ariaAtomic ?? true}\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 ) : Icon ? (\r\n <Icon\r\n data-testid=\"icon-button-icon\"\r\n aria-hidden={true}\r\n focusable={false}\r\n className={iconClassName}\r\n />\r\n ) : null}\r\n </span>\r\n );\r\n\r\n if (renderAsLink) {\r\n const linkProps = {\r\n className: combineClassNames(classNames, classMap.link),\r\n ref: ref as React.Ref<HTMLAnchorElement>,\r\n onClick: inert\r\n ? (e: React.MouseEvent<HTMLElement>) => e.preventDefault()\r\n : onClick,\r\n onKeyDown,\r\n \"aria-disabled\": inert || undefined,\r\n ...sharedAccessibilityProps,\r\n ...rest,\r\n tabIndex: inert ? -1 : tabIndex,\r\n };\r\n\r\n if (isExternal) {\r\n return (\r\n <a\r\n {...linkProps}\r\n href={inert ? undefined : href}\r\n target={target ?? \"_blank\"}\r\n rel={rel ?? \"noopener noreferrer\"}\r\n >\r\n {iconContent}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <LinkComponent {...linkProps} href={inert ? undefined : href}>\r\n {iconContent}\r\n </LinkComponent>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n type={type}\r\n disabled={inert}\r\n className={classNames}\r\n onClick={inert ? (e) => e.preventDefault() : onClick}\r\n onKeyDown={onKeyDown}\r\n ref={ref as React.Ref<HTMLButtonElement>}\r\n {...sharedAccessibilityProps}\r\n {...rest}\r\n tabIndex={tabIndex}\r\n >\r\n {iconContent}\r\n </button>\r\n );\r\n});\r\n\r\nIconButtonBase.displayName = \"IconButtonBase\";\r\nexport default IconButtonBase;\r\n","import IconButtonBase from \"../IconButtonBase\";\r\nimport \"./IconButton.scss\";\r\nimport { IconButtonProps } from \"../IconButton.types\";\r\nimport { forwardRef } from \"react\";\r\n\r\nconst classes = {\r\n iconButton: \"icon_button\",\r\n buttonLabel: \"icon_button_button_label\",\r\n loader: \"icon_button_loader\",\r\n\r\n disabled: \"icon_button_disabled\",\r\n outline: \"icon_button_outline\",\r\n\r\n primary: \"icon_button_primary\",\r\n secondary: \"icon_button_secondary\",\r\n tertiary: \"icon_button_tertiary\",\r\n quaternary: \"icon_button_quaternary\",\r\n\r\n success: \"icon_button_success\",\r\n warning: \"icon_button_warning\",\r\n error: \"icon_button_error\",\r\n\r\n clear: \"icon_button_clear\",\r\n\r\n xs: \"icon_button_xs\",\r\n small: \"icon_button_small\",\r\n medium: \"icon_button_medium\",\r\n large: \"icon_button_large\",\r\n xl: \"icon_button_xl\",\r\n\r\n shadowNone: \"icon_button_shadow-None\",\r\n shadowLight: \"icon_button_shadow-Light\",\r\n shadowMedium: \"icon_button_shadow-Medium\",\r\n shadowStrong: \"icon_button_shadow-Strong\",\r\n shadowIntense: \"icon_button_shadow-Intense\",\r\n\r\n roundNone: \"icon_button_round-None\",\r\n roundSmall: \"icon_button_round-Small\",\r\n roundMedium: \"icon_button_round-Medium\",\r\n roundLarge: \"icon_button_round-Large\",\r\n roundFull: \"icon_button_round-Full\",\r\n};\r\n\r\nconst IconButton = forwardRef<\r\n HTMLButtonElement | HTMLAnchorElement,\r\n IconButtonProps\r\n>((props, ref) => <IconButtonBase ref={ref} {...props} classMap={classes} />);\r\nIconButton.displayName = \"IconButton\";\r\nexport default IconButton;\r\n"],"names":["IconButtonBase"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { I } from "./IconButton-ChJJCB4O.js";
1
+ import { I } from "./IconButton-By8zuXrs.js";
2
2
  export {
3
3
  I as default
4
4
  };
@@ -5,8 +5,8 @@ import { C as CloseIcon } from "./CloseIcon-C3eQm4EK.js";
5
5
  import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
6
6
  import { c as capitalize } from "./capitalize-C0TSQSPh.js";
7
7
  import { a as getDefaultRounding, b as getDefaultShadow } from "./boreal-style-config-DsaRlxmw.js";
8
- import { B as Button } from "./Button-IALg9VKr.js";
9
- import { I as IconButton } from "./IconButton-ChJJCB4O.js";
8
+ import { B as Button } from "./Button-CneoIlVV.js";
9
+ import { I as IconButton } from "./IconButton-By8zuXrs.js";
10
10
  const BaseMessagePopup = ({
11
11
  message,
12
12
  title,
@@ -252,4 +252,4 @@ MessagePopup.displayName = "MessagePopup";
252
252
  export {
253
253
  MessagePopup as M
254
254
  };
255
- //# sourceMappingURL=MessagePopup-D6xuwdAv.js.map
255
+ //# sourceMappingURL=MessagePopup-D6ljI_rQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MessagePopup-D6xuwdAv.js","sources":["../../src/components/MessagePopup/MessagePopupBase.tsx","../../src/components/MessagePopup/core/MessagePopup.tsx"],"sourcesContent":["import React, {\r\n useEffect,\r\n useRef,\r\n useState,\r\n useId,\r\n KeyboardEvent,\r\n} from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { CloseIcon } from \"../../Icons\";\r\nimport { BaseMessagePopupProps } from \"./MessagePopup.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst BaseMessagePopup: React.FC<BaseMessagePopupProps> = ({\r\n message,\r\n title,\r\n onClose,\r\n onConfirm,\r\n onCancel,\r\n controlsRounding = getDefaultRounding(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n confirmText = \"Confirm\",\r\n cancelText = \"Cancel\",\r\n dialogRole = \"dialog\",\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-label-close-button\": ariaLabelCloseButton = \"Close popup\",\r\n \"aria-live\": ariaLive,\r\n className = \"\",\r\n \"data-testid\": testId = \"message-popup\",\r\n Button,\r\n IconButton,\r\n classMap,\r\n}) => {\r\n const [isMounted, setIsMounted] = useState(false);\r\n const [portalElement, setPortalElement] = useState<HTMLElement | null>(null);\r\n const dialogRef = useRef<HTMLDivElement>(null);\r\n const firstButtonRef = useRef<HTMLButtonElement>(null);\r\n const cancelButtonRef = useRef<HTMLButtonElement>(null);\r\n const closeBtnRef = useRef<HTMLButtonElement>(null);\r\n const openerRef = useRef<HTMLElement | null>(null);\r\n const focusablesRef = useRef<HTMLElement[]>([]);\r\n const messageId = useId();\r\n const titleId = useId();\r\n\r\n const internalLabelledById = title ? titleId : messageId;\r\n const resolvedAriaLabelledBy =\r\n ariaLabelledBy ?? (!ariaLabel ? internalLabelledById : undefined);\r\n const resolvedAriaDescribedBy = ariaDescribedBy ?? messageId;\r\n\r\n useEffect(() => {\r\n setIsMounted(true);\r\n openerRef.current = (document.activeElement as HTMLElement) ?? null;\r\n\r\n let portal = document.getElementById(\"popup-portal\");\r\n if (!portal) {\r\n portal = document.createElement(\"div\");\r\n portal.id = \"popup-portal\";\r\n document.body.appendChild(portal);\r\n }\r\n setPortalElement(portal);\r\n document.body.classList.add(\"no-scroll\");\r\n\r\n const roots = Array.from(document.body.children);\r\n const restored: Array<HTMLElement> = [];\r\n roots.forEach((el) => {\r\n if (el !== portal && !el.hasAttribute(\"aria-hidden\")) {\r\n el.setAttribute(\"aria-hidden\", \"true\");\r\n restored.push(el as HTMLElement);\r\n }\r\n });\r\n\r\n const handleEscape = (e: globalThis.KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n document.addEventListener(\"keydown\", handleEscape);\r\n\r\n return () => {\r\n document.body.classList.remove(\"no-scroll\");\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n restored.forEach((el) => el.removeAttribute(\"aria-hidden\"));\r\n openerRef.current?.focus?.();\r\n };\r\n }, [onClose]);\r\n\r\n useEffect(() => {\r\n if (!dialogRef.current) return;\r\n\r\n focusablesRef.current = Array.from(\r\n dialogRef.current.querySelectorAll<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\r\n ),\r\n ).filter((el) => !el.hasAttribute(\"disabled\") && el.tabIndex !== -1);\r\n\r\n const target =\r\n firstButtonRef.current ||\r\n cancelButtonRef.current ||\r\n (closeBtnRef.current as HTMLElement | null) ||\r\n focusablesRef.current[0];\r\n\r\n target?.focus?.();\r\n }, [isMounted]);\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key !== \"Tab\") return;\r\n\r\n const list = focusablesRef.current;\r\n if (!list.length) return;\r\n\r\n const first = list[0];\r\n const last = list[list.length - 1];\r\n\r\n if (e.shiftKey && document.activeElement === first) {\r\n e.preventDefault();\r\n last.focus();\r\n } else if (!e.shiftKey && document.activeElement === last) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n };\r\n\r\n if (!isMounted || !portalElement) return null;\r\n\r\n const wrapperClass = combineClassNames(\r\n classMap.wrapper,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n );\r\n\r\n return ReactDOM.createPortal(\r\n <div\r\n className={wrapperClass}\r\n onClick={onClose}\r\n role=\"presentation\"\r\n data-testid={testId}\r\n >\r\n <div\r\n className={classMap.content}\r\n onClick={(e) => e.stopPropagation()}\r\n role={dialogRole}\r\n aria-modal={true}\r\n aria-label={ariaLabel}\r\n aria-labelledby={resolvedAriaLabelledBy}\r\n aria-describedby={resolvedAriaDescribedBy}\r\n tabIndex={-1}\r\n ref={dialogRef}\r\n onKeyDown={handleKeyDown}\r\n data-testid={`${testId}-dialog`}\r\n >\r\n {title && (\r\n <div className={classMap.header} data-testid={`${testId}-header`}>\r\n <h2\r\n id={titleId}\r\n className={classMap.title}\r\n data-testid={`${testId}-title`}\r\n >\r\n {title}\r\n </h2>\r\n\r\n <IconButton\r\n ref={closeBtnRef}\r\n className={classMap.close}\r\n onClick={onClose}\r\n aria-label={ariaLabelCloseButton}\r\n icon={CloseIcon}\r\n state=\"error\"\r\n size=\"small\"\r\n type=\"button\"\r\n data-testid={`${testId}-close`}\r\n />\r\n </div>\r\n )}\r\n\r\n {!title && (\r\n <IconButton\r\n ref={closeBtnRef}\r\n className={classMap.close}\r\n onClick={onClose}\r\n aria-label={ariaLabelCloseButton}\r\n icon={CloseIcon}\r\n state=\"error\"\r\n size=\"small\"\r\n type=\"button\"\r\n data-testid={`${testId}-close`}\r\n />\r\n )}\r\n\r\n <div className={classMap.body} data-testid={`${testId}-body`}>\r\n <p\r\n id={messageId}\r\n className={classMap.message}\r\n aria-live={ariaLive}\r\n data-testid={`${testId}-message`}\r\n >\r\n {message}\r\n </p>\r\n\r\n <div className={classMap.actions} data-testid={`${testId}-actions`}>\r\n {onConfirm && (\r\n <Button\r\n className={classMap.confirm}\r\n state=\"success\"\r\n onClick={onConfirm}\r\n ref={firstButtonRef}\r\n rounding={controlsRounding}\r\n type=\"button\"\r\n data-testid={`${testId}-confirm`}\r\n >\r\n {confirmText}\r\n </Button>\r\n )}\r\n\r\n {onCancel && (\r\n <Button\r\n ref={cancelButtonRef}\r\n className={classMap.cancel}\r\n state=\"warning\"\r\n onClick={onCancel}\r\n type=\"button\"\r\n data-testid={`${testId}-cancel`}\r\n >\r\n {cancelText}\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>,\r\n portalElement,\r\n );\r\n};\r\n\r\nBaseMessagePopup.displayName = \"BaseMessagePopup\";\r\nexport default BaseMessagePopup;\r\n","import React from \"react\";\r\nimport BaseMessagePopup from \"../MessagePopupBase\";\r\nimport Button from \"../../Button/core/Button\";\r\nimport IconButton from \"../../IconButton/core/IconButton\";\r\nimport \"./MessagePopup.scss\";\r\nimport { MessagePopupProps } from \"../MessagePopup.types\";\r\n\r\nconst classes = {\r\n wrapper: \"messagePopup\",\r\n content: \"messagePopup_popup_content\",\r\n close: \"messagePopup_close_button\",\r\n message: \"messagePopup_popupMessage\",\r\n header: \"messagePopup_header\",\r\n title: \"messagePopup_title\",\r\n body: \"messagePopup_body\",\r\n actions: \"messagePopup_popupActions\",\r\n confirm: \"messagePopup_confirmBtn\",\r\n cancel: \"messagePopup_cancelBtn\",\r\n\r\n shadowNone: \"messagePopup_shadow-None\",\r\n shadowLight: \"messagePopup_shadow-Light\",\r\n shadowMedium: \"messagePopup_shadow-Medium\",\r\n shadowStrong: \"messagePopup_shadow-Strong\",\r\n shadowIntense: \"messagePopup_shadow-Intense\",\r\n\r\n roundNone: \"messagePopup_round-None\",\r\n roundSmall: \"messagePopup_round-Small\",\r\n roundMedium: \"messagePopup_round-Medium\",\r\n roundLarge: \"messagePopup_round-Large\",\r\n};\r\n\r\nconst MessagePopup: React.FC<MessagePopupProps> = (props) => {\r\n return (\r\n <BaseMessagePopup\r\n {...props}\r\n Button={Button}\r\n IconButton={IconButton}\r\n classMap={classes}\r\n />\r\n );\r\n};\r\nMessagePopup.displayName = \"MessagePopup\";\r\nexport default MessagePopup;\r\n"],"names":["Button","IconButton"],"mappings":"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"}
1
+ {"version":3,"file":"MessagePopup-D6ljI_rQ.js","sources":["../../src/components/MessagePopup/MessagePopupBase.tsx","../../src/components/MessagePopup/core/MessagePopup.tsx"],"sourcesContent":["import React, {\r\n useEffect,\r\n useRef,\r\n useState,\r\n useId,\r\n KeyboardEvent,\r\n} from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { CloseIcon } from \"../../Icons\";\r\nimport { BaseMessagePopupProps } from \"./MessagePopup.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst BaseMessagePopup: React.FC<BaseMessagePopupProps> = ({\r\n message,\r\n title,\r\n onClose,\r\n onConfirm,\r\n onCancel,\r\n controlsRounding = getDefaultRounding(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n confirmText = \"Confirm\",\r\n cancelText = \"Cancel\",\r\n dialogRole = \"dialog\",\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-label-close-button\": ariaLabelCloseButton = \"Close popup\",\r\n \"aria-live\": ariaLive,\r\n className = \"\",\r\n \"data-testid\": testId = \"message-popup\",\r\n Button,\r\n IconButton,\r\n classMap,\r\n}) => {\r\n const [isMounted, setIsMounted] = useState(false);\r\n const [portalElement, setPortalElement] = useState<HTMLElement | null>(null);\r\n const dialogRef = useRef<HTMLDivElement>(null);\r\n const firstButtonRef = useRef<HTMLButtonElement>(null);\r\n const cancelButtonRef = useRef<HTMLButtonElement>(null);\r\n const closeBtnRef = useRef<HTMLButtonElement>(null);\r\n const openerRef = useRef<HTMLElement | null>(null);\r\n const focusablesRef = useRef<HTMLElement[]>([]);\r\n const messageId = useId();\r\n const titleId = useId();\r\n\r\n const internalLabelledById = title ? titleId : messageId;\r\n const resolvedAriaLabelledBy =\r\n ariaLabelledBy ?? (!ariaLabel ? internalLabelledById : undefined);\r\n const resolvedAriaDescribedBy = ariaDescribedBy ?? messageId;\r\n\r\n useEffect(() => {\r\n setIsMounted(true);\r\n openerRef.current = (document.activeElement as HTMLElement) ?? null;\r\n\r\n let portal = document.getElementById(\"popup-portal\");\r\n if (!portal) {\r\n portal = document.createElement(\"div\");\r\n portal.id = \"popup-portal\";\r\n document.body.appendChild(portal);\r\n }\r\n setPortalElement(portal);\r\n document.body.classList.add(\"no-scroll\");\r\n\r\n const roots = Array.from(document.body.children);\r\n const restored: Array<HTMLElement> = [];\r\n roots.forEach((el) => {\r\n if (el !== portal && !el.hasAttribute(\"aria-hidden\")) {\r\n el.setAttribute(\"aria-hidden\", \"true\");\r\n restored.push(el as HTMLElement);\r\n }\r\n });\r\n\r\n const handleEscape = (e: globalThis.KeyboardEvent) => {\r\n if (e.key === \"Escape\") onClose();\r\n };\r\n document.addEventListener(\"keydown\", handleEscape);\r\n\r\n return () => {\r\n document.body.classList.remove(\"no-scroll\");\r\n document.removeEventListener(\"keydown\", handleEscape);\r\n restored.forEach((el) => el.removeAttribute(\"aria-hidden\"));\r\n openerRef.current?.focus?.();\r\n };\r\n }, [onClose]);\r\n\r\n useEffect(() => {\r\n if (!dialogRef.current) return;\r\n\r\n focusablesRef.current = Array.from(\r\n dialogRef.current.querySelectorAll<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\r\n ),\r\n ).filter((el) => !el.hasAttribute(\"disabled\") && el.tabIndex !== -1);\r\n\r\n const target =\r\n firstButtonRef.current ||\r\n cancelButtonRef.current ||\r\n (closeBtnRef.current as HTMLElement | null) ||\r\n focusablesRef.current[0];\r\n\r\n target?.focus?.();\r\n }, [isMounted]);\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key !== \"Tab\") return;\r\n\r\n const list = focusablesRef.current;\r\n if (!list.length) return;\r\n\r\n const first = list[0];\r\n const last = list[list.length - 1];\r\n\r\n if (e.shiftKey && document.activeElement === first) {\r\n e.preventDefault();\r\n last.focus();\r\n } else if (!e.shiftKey && document.activeElement === last) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n };\r\n\r\n if (!isMounted || !portalElement) return null;\r\n\r\n const wrapperClass = combineClassNames(\r\n classMap.wrapper,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n );\r\n\r\n return ReactDOM.createPortal(\r\n <div\r\n className={wrapperClass}\r\n onClick={onClose}\r\n role=\"presentation\"\r\n data-testid={testId}\r\n >\r\n <div\r\n className={classMap.content}\r\n onClick={(e) => e.stopPropagation()}\r\n role={dialogRole}\r\n aria-modal={true}\r\n aria-label={ariaLabel}\r\n aria-labelledby={resolvedAriaLabelledBy}\r\n aria-describedby={resolvedAriaDescribedBy}\r\n tabIndex={-1}\r\n ref={dialogRef}\r\n onKeyDown={handleKeyDown}\r\n data-testid={`${testId}-dialog`}\r\n >\r\n {title && (\r\n <div className={classMap.header} data-testid={`${testId}-header`}>\r\n <h2\r\n id={titleId}\r\n className={classMap.title}\r\n data-testid={`${testId}-title`}\r\n >\r\n {title}\r\n </h2>\r\n\r\n <IconButton\r\n ref={closeBtnRef}\r\n className={classMap.close}\r\n onClick={onClose}\r\n aria-label={ariaLabelCloseButton}\r\n icon={CloseIcon}\r\n state=\"error\"\r\n size=\"small\"\r\n type=\"button\"\r\n data-testid={`${testId}-close`}\r\n />\r\n </div>\r\n )}\r\n\r\n {!title && (\r\n <IconButton\r\n ref={closeBtnRef}\r\n className={classMap.close}\r\n onClick={onClose}\r\n aria-label={ariaLabelCloseButton}\r\n icon={CloseIcon}\r\n state=\"error\"\r\n size=\"small\"\r\n type=\"button\"\r\n data-testid={`${testId}-close`}\r\n />\r\n )}\r\n\r\n <div className={classMap.body} data-testid={`${testId}-body`}>\r\n <p\r\n id={messageId}\r\n className={classMap.message}\r\n aria-live={ariaLive}\r\n data-testid={`${testId}-message`}\r\n >\r\n {message}\r\n </p>\r\n\r\n <div className={classMap.actions} data-testid={`${testId}-actions`}>\r\n {onConfirm && (\r\n <Button\r\n className={classMap.confirm}\r\n state=\"success\"\r\n onClick={onConfirm}\r\n ref={firstButtonRef}\r\n rounding={controlsRounding}\r\n type=\"button\"\r\n data-testid={`${testId}-confirm`}\r\n >\r\n {confirmText}\r\n </Button>\r\n )}\r\n\r\n {onCancel && (\r\n <Button\r\n ref={cancelButtonRef}\r\n className={classMap.cancel}\r\n state=\"warning\"\r\n onClick={onCancel}\r\n type=\"button\"\r\n data-testid={`${testId}-cancel`}\r\n >\r\n {cancelText}\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>,\r\n portalElement,\r\n );\r\n};\r\n\r\nBaseMessagePopup.displayName = \"BaseMessagePopup\";\r\nexport default BaseMessagePopup;\r\n","import React from \"react\";\r\nimport BaseMessagePopup from \"../MessagePopupBase\";\r\nimport Button from \"../../Button/core/Button\";\r\nimport IconButton from \"../../IconButton/core/IconButton\";\r\nimport \"./MessagePopup.scss\";\r\nimport { MessagePopupProps } from \"../MessagePopup.types\";\r\n\r\nconst classes = {\r\n wrapper: \"messagePopup\",\r\n content: \"messagePopup_popup_content\",\r\n close: \"messagePopup_close_button\",\r\n message: \"messagePopup_popupMessage\",\r\n header: \"messagePopup_header\",\r\n title: \"messagePopup_title\",\r\n body: \"messagePopup_body\",\r\n actions: \"messagePopup_popupActions\",\r\n confirm: \"messagePopup_confirmBtn\",\r\n cancel: \"messagePopup_cancelBtn\",\r\n\r\n shadowNone: \"messagePopup_shadow-None\",\r\n shadowLight: \"messagePopup_shadow-Light\",\r\n shadowMedium: \"messagePopup_shadow-Medium\",\r\n shadowStrong: \"messagePopup_shadow-Strong\",\r\n shadowIntense: \"messagePopup_shadow-Intense\",\r\n\r\n roundNone: \"messagePopup_round-None\",\r\n roundSmall: \"messagePopup_round-Small\",\r\n roundMedium: \"messagePopup_round-Medium\",\r\n roundLarge: \"messagePopup_round-Large\",\r\n};\r\n\r\nconst MessagePopup: React.FC<MessagePopupProps> = (props) => {\r\n return (\r\n <BaseMessagePopup\r\n {...props}\r\n Button={Button}\r\n IconButton={IconButton}\r\n classMap={classes}\r\n />\r\n );\r\n};\r\nMessagePopup.displayName = \"MessagePopup\";\r\nexport default MessagePopup;\r\n"],"names":["Button","IconButton"],"mappings":";;;;;;;;;AAiBA,MAAM,mBAAoD,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB,mBAAA;AAAA,EACnB,WAAW,mBAAA;AAAA,EACX,SAAS,iBAAA;AAAA,EACT,cAAc;AAAA,EACd,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,2BAA2B,uBAAuB;AAAA,EAClD,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe,SAAS;AAAA,EACxB,QAAAA;AAAA,EACA,YAAAC;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAA6B,IAAI;AAC3E,QAAM,YAAY,OAAuB,IAAI;AAC7C,QAAM,iBAAiB,OAA0B,IAAI;AACrD,QAAM,kBAAkB,OAA0B,IAAI;AACtD,QAAM,cAAc,OAA0B,IAAI;AAClD,QAAM,YAAY,OAA2B,IAAI;AACjD,QAAM,gBAAgB,OAAsB,EAAE;AAC9C,QAAM,YAAY,MAAA;AAClB,QAAM,UAAU,MAAA;AAEhB,QAAM,uBAAuB,QAAQ,UAAU;AAC/C,QAAM,yBACJ,mBAAmB,CAAC,YAAY,uBAAuB;AACzD,QAAM,0BAA0B,mBAAmB;AAEnD,YAAU,MAAM;AACd,iBAAa,IAAI;AACjB,cAAU,UAAW,SAAS,iBAAiC;AAE/D,QAAI,SAAS,SAAS,eAAe,cAAc;AACnD,QAAI,CAAC,QAAQ;AACX,eAAS,SAAS,cAAc,KAAK;AACrC,aAAO,KAAK;AACZ,eAAS,KAAK,YAAY,MAAM;AAAA,IAClC;AACA,qBAAiB,MAAM;AACvB,aAAS,KAAK,UAAU,IAAI,WAAW;AAEvC,UAAM,QAAQ,MAAM,KAAK,SAAS,KAAK,QAAQ;AAC/C,UAAM,WAA+B,CAAA;AACrC,UAAM,QAAQ,CAAC,OAAO;AACpB,UAAI,OAAO,UAAU,CAAC,GAAG,aAAa,aAAa,GAAG;AACpD,WAAG,aAAa,eAAe,MAAM;AACrC,iBAAS,KAAK,EAAiB;AAAA,MACjC;AAAA,IACF,CAAC;AAED,UAAM,eAAe,CAAC,MAAgC;AACpD,UAAI,EAAE,QAAQ,SAAU,SAAA;AAAA,IAC1B;AACA,aAAS,iBAAiB,WAAW,YAAY;AAEjD,WAAO,MAAM;;AACX,eAAS,KAAK,UAAU,OAAO,WAAW;AAC1C,eAAS,oBAAoB,WAAW,YAAY;AACpD,eAAS,QAAQ,CAAC,OAAO,GAAG,gBAAgB,aAAa,CAAC;AAC1D,4BAAU,YAAV,mBAAmB,UAAnB;AAAA,IACF;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,YAAU,MAAM;;AACd,QAAI,CAAC,UAAU,QAAS;AAExB,kBAAc,UAAU,MAAM;AAAA,MAC5B,UAAU,QAAQ;AAAA,QAChB;AAAA,MAAA;AAAA,IACF,EACA,OAAO,CAAC,OAAO,CAAC,GAAG,aAAa,UAAU,KAAK,GAAG,aAAa,EAAE;AAEnE,UAAM,SACJ,eAAe,WACf,gBAAgB,WACf,YAAY,WACb,cAAc,QAAQ,CAAC;AAEzB,2CAAQ,UAAR;AAAA,EACF,GAAG,CAAC,SAAS,CAAC;AAEd,QAAM,gBAAgB,CAAC,MAAqC;AAC1D,QAAI,EAAE,QAAQ,MAAO;AAErB,UAAM,OAAO,cAAc;AAC3B,QAAI,CAAC,KAAK,OAAQ;AAElB,UAAM,QAAQ,KAAK,CAAC;AACpB,UAAM,OAAO,KAAK,KAAK,SAAS,CAAC;AAEjC,QAAI,EAAE,YAAY,SAAS,kBAAkB,OAAO;AAClD,QAAE,eAAA;AACF,WAAK,MAAA;AAAA,IACP,WAAW,CAAC,EAAE,YAAY,SAAS,kBAAkB,MAAM;AACzD,QAAE,eAAA;AACF,YAAM,MAAA;AAAA,IACR;AAAA,EACF;AAEA,MAAI,CAAC,aAAa,CAAC,cAAe,QAAO;AAEzC,QAAM,eAAe;AAAA,IACnB,SAAS;AAAA,IACT,UAAU,SAAS,SAAS,WAAW,MAAM,CAAC,EAAE;AAAA,IAChD,YAAY,SAAS,QAAQ,WAAW,QAAQ,CAAC,EAAE;AAAA,IACnD;AAAA,EAAA;AAGF,SAAO,SAAS;AAAA,IACd;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,QACX,SAAS;AAAA,QACT,MAAK;AAAA,QACL,eAAa;AAAA,QAEb,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW,SAAS;AAAA,YACpB,SAAS,CAAC,MAAM,EAAE,gBAAA;AAAA,YAClB,MAAM;AAAA,YACN,cAAY;AAAA,YACZ,cAAY;AAAA,YACZ,mBAAiB;AAAA,YACjB,oBAAkB;AAAA,YAClB,UAAU;AAAA,YACV,KAAK;AAAA,YACL,WAAW;AAAA,YACX,eAAa,GAAG,MAAM;AAAA,YAErB,UAAA;AAAA,cAAA,SACC,qBAAC,SAAI,WAAW,SAAS,QAAQ,eAAa,GAAG,MAAM,WACrD,UAAA;AAAA,gBAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,IAAI;AAAA,oBACJ,WAAW,SAAS;AAAA,oBACpB,eAAa,GAAG,MAAM;AAAA,oBAErB,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGH;AAAA,kBAACA;AAAA,kBAAA;AAAA,oBACC,KAAK;AAAA,oBACL,WAAW,SAAS;AAAA,oBACpB,SAAS;AAAA,oBACT,cAAY;AAAA,oBACZ,MAAM;AAAA,oBACN,OAAM;AAAA,oBACN,MAAK;AAAA,oBACL,MAAK;AAAA,oBACL,eAAa,GAAG,MAAM;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACxB,GACF;AAAA,cAGD,CAAC,SACA;AAAA,gBAACA;AAAA,gBAAA;AAAA,kBACC,KAAK;AAAA,kBACL,WAAW,SAAS;AAAA,kBACpB,SAAS;AAAA,kBACT,cAAY;AAAA,kBACZ,MAAM;AAAA,kBACN,OAAM;AAAA,kBACN,MAAK;AAAA,kBACL,MAAK;AAAA,kBACL,eAAa,GAAG,MAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,cAI1B,qBAAC,SAAI,WAAW,SAAS,MAAM,eAAa,GAAG,MAAM,SACnD,UAAA;AAAA,gBAAA;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,IAAI;AAAA,oBACJ,WAAW,SAAS;AAAA,oBACpB,aAAW;AAAA,oBACX,eAAa,GAAG,MAAM;AAAA,oBAErB,UAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGH,qBAAC,SAAI,WAAW,SAAS,SAAS,eAAa,GAAG,MAAM,YACrD,UAAA;AAAA,kBAAA,aACC;AAAA,oBAACD;AAAA,oBAAA;AAAA,sBACC,WAAW,SAAS;AAAA,sBACpB,OAAM;AAAA,sBACN,SAAS;AAAA,sBACT,KAAK;AAAA,sBACL,UAAU;AAAA,sBACV,MAAK;AAAA,sBACL,eAAa,GAAG,MAAM;AAAA,sBAErB,UAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAIJ,YACC;AAAA,oBAACA;AAAA,oBAAA;AAAA,sBACC,KAAK;AAAA,sBACL,WAAW,SAAS;AAAA,sBACpB,OAAM;AAAA,sBACN,SAAS;AAAA,sBACT,MAAK;AAAA,sBACL,eAAa,GAAG,MAAM;AAAA,sBAErB,UAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACH,EAAA,CAEJ;AAAA,cAAA,EAAA,CACF;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAEF;AAAA,EAAA;AAEJ;AAEA,iBAAiB,cAAc;ACxO/B,MAAM,UAAU;AAAA,EACd,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EAER,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,eAAe;AAAA,EAEf,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,YAAY;AACd;AAEA,MAAM,eAA4C,CAAC,UAAU;AAC3D,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IAAA;AAAA,EAAA;AAGhB;AACA,aAAa,cAAc;"}
@@ -1,4 +1,4 @@
1
- import { M } from "./MessagePopup-D6xuwdAv.js";
1
+ import { M } from "./MessagePopup-D6ljI_rQ.js";
2
2
  export {
3
3
  M as default
4
4
  };
@@ -2,7 +2,7 @@ import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { useId, useMemo } from "react";
3
3
  import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
4
4
  import { c as capitalize } from "./capitalize-C0TSQSPh.js";
5
- import { a as getDefaultRounding, b as getDefaultShadow, c as getDefaultSize, d as getDefaultTheme } from "./boreal-style-config-DsaRlxmw.js";
5
+ import { d as getDefaultTheme, b as getDefaultShadow, a as getDefaultRounding, c as getDefaultSize } from "./boreal-style-config-DsaRlxmw.js";
6
6
  const BaseMetricBox = ({
7
7
  title,
8
8
  value,
@@ -151,4 +151,4 @@ MetricBox.displayName = "MetricBox";
151
151
  export {
152
152
  MetricBox as M
153
153
  };
154
- //# sourceMappingURL=MetricBox-BlkBoGCL.js.map
154
+ //# sourceMappingURL=MetricBox-DTn2x1vz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MetricBox-BlkBoGCL.js","sources":["../../src/components/MetricBox/MetricBoxBase.tsx","../../src/components/MetricBox/core/MetricBox.tsx"],"sourcesContent":["import React, { useMemo, useId } from \"react\";\r\nimport { BaseMetricBoxProps } from \"./MetricBox.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 BaseMetricBox: React.FC<BaseMetricBoxProps> = ({\r\n title,\r\n value,\r\n icon: Icon,\r\n subtext,\r\n theme = getDefaultTheme(),\r\n shadow = getDefaultShadow(),\r\n rounding = getDefaultRounding(),\r\n state = \"\",\r\n outline = false,\r\n align = \"center\",\r\n size = getDefaultSize(),\r\n className = \"\",\r\n role,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-live\": ariaLive,\r\n \"aria-atomic\": ariaAtomic,\r\n decorativeIcon = true,\r\n iconAriaLabel,\r\n \"data-testid\": testId = \"metric-box\",\r\n classMap,\r\n}) => {\r\n const uid = useId();\r\n\r\n const titleId = title ? `${testId}-title-${uid}` : undefined;\r\n const subtextId = subtext ? `${testId}-subtext-${uid}` : undefined;\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n outline && classMap.outline,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n classMap[align],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n ),\r\n [classMap, theme, state, size, align, outline, shadow, rounding, className],\r\n );\r\n\r\n const valueLabel =\r\n title && value != null ? `${value} ${title}` : String(value ?? \"\");\r\n\r\n const resolvedRole = role ?? (title ? \"region\" : undefined);\r\n const resolvedAriaLabelledBy =\r\n ariaLabelledBy ?? (title ? titleId : undefined);\r\n const resolvedAriaDescribedBy =\r\n ariaDescribedBy ?? (subtext ? subtextId : undefined);\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n role={resolvedRole}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabel ? undefined : resolvedAriaLabelledBy}\r\n aria-describedby={resolvedAriaDescribedBy}\r\n aria-live={ariaLive}\r\n aria-atomic={ariaAtomic}\r\n data-testid={testId}\r\n >\r\n {Icon && (\r\n <div\r\n className={classMap.icon}\r\n data-testid={`${testId}-icon`}\r\n aria-hidden={decorativeIcon ? true : undefined}\r\n >\r\n <Icon\r\n aria-hidden={decorativeIcon ? true : undefined}\r\n aria-label={!decorativeIcon ? iconAriaLabel : undefined}\r\n focusable={false}\r\n />\r\n </div>\r\n )}\r\n\r\n <div className={classMap.content}>\r\n {title && (\r\n <h3\r\n id={titleId}\r\n className={classMap.title}\r\n data-testid={`${testId}-title`}\r\n >\r\n {title}\r\n </h3>\r\n )}\r\n\r\n <div\r\n className={classMap.value}\r\n data-testid={`${testId}-value`}\r\n aria-label={valueLabel}\r\n >\r\n {value}\r\n </div>\r\n\r\n {subtext && (\r\n <div\r\n id={subtextId}\r\n className={classMap.subtext}\r\n data-testid={`${testId}-subtext`}\r\n >\r\n {subtext}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nBaseMetricBox.displayName = \"BaseMetricBox\";\r\nexport default BaseMetricBox;\r\n","import React from \"react\";\r\nimport BaseMetricBox from \"../MetricBoxBase\";\r\nimport \"./MetricBox.scss\";\r\nimport { MetricBoxProps } from \"../MetricBox.types\";\r\n\r\nconst classes = {\r\n wrapper: \"metricBox\",\r\n outline: \"metricBox_outline\",\r\n\r\n primary: \"metricBox_primary\",\r\n secondary: \"metricBox_secondary\",\r\n tertiary: \"metricBox_tertiary\",\r\n quaternary: \"metricBox_quaternary\",\r\n\r\n success: \"metricBox_success\",\r\n error: \"metricBox_error\",\r\n warning: \"metricBox_warning\",\r\n\r\n clear: \"metricBox_clear\",\r\n\r\n xs: \"metricBox_xs\",\r\n small: \"metricBox_small\",\r\n medium: \"metricBox_medium\",\r\n large: \"metricBox_large\",\r\n xl: \"metricBox_xl\",\r\n\r\n left: \"metricBox_left\",\r\n center: \"metricBox_center\",\r\n right: \"metricBox_right\",\r\n\r\n shadowNone: \"metricBox_shadow-None\",\r\n shadowLight: \"metricBox_shadow-Light\",\r\n shadowMedium: \"metricBox_shadow-Medium\",\r\n shadowStrong: \"metricBox_shadow-Strong\",\r\n shadowIntense: \"metricBox_shadow-Intense\",\r\n\r\n roundNone: \"metricBox_round-None\",\r\n roundSmall: \"metricBox_round-Small\",\r\n roundMedium: \"metricBox_round-Medium\",\r\n roundLarge: \"metricBox_round-Large\",\r\n\r\n icon: \"metricBox_icon\",\r\n content: \"metricBox_content\",\r\n title: \"metricBox_title\",\r\n value: \"metricBox_value\",\r\n subtext: \"metricBox_subtext\",\r\n};\r\n\r\nconst MetricBox: React.FC<MetricBoxProps> = (props) => {\r\n return <BaseMetricBox {...props} classMap={classes} />;\r\n};\r\nMetricBox.displayName = \"MetricBox\";\r\nexport default MetricBox;\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MetricBox-DTn2x1vz.js","sources":["../../src/components/MetricBox/MetricBoxBase.tsx","../../src/components/MetricBox/core/MetricBox.tsx"],"sourcesContent":["import React, { useMemo, useId } from \"react\";\r\nimport { BaseMetricBoxProps } from \"./MetricBox.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 BaseMetricBox: React.FC<BaseMetricBoxProps> = ({\r\n title,\r\n value,\r\n icon: Icon,\r\n subtext,\r\n theme = getDefaultTheme(),\r\n shadow = getDefaultShadow(),\r\n rounding = getDefaultRounding(),\r\n state = \"\",\r\n outline = false,\r\n align = \"center\",\r\n size = getDefaultSize(),\r\n className = \"\",\r\n role,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-live\": ariaLive,\r\n \"aria-atomic\": ariaAtomic,\r\n decorativeIcon = true,\r\n iconAriaLabel,\r\n \"data-testid\": testId = \"metric-box\",\r\n classMap,\r\n}) => {\r\n const uid = useId();\r\n\r\n const titleId = title ? `${testId}-title-${uid}` : undefined;\r\n const subtextId = subtext ? `${testId}-subtext-${uid}` : undefined;\r\n\r\n const wrapperClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n outline && classMap.outline,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n classMap[align],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className,\r\n ),\r\n [classMap, theme, state, size, align, outline, shadow, rounding, className],\r\n );\r\n\r\n const valueLabel =\r\n title && value != null ? `${value} ${title}` : String(value ?? \"\");\r\n\r\n const resolvedRole = role ?? (title ? \"region\" : undefined);\r\n const resolvedAriaLabelledBy =\r\n ariaLabelledBy ?? (title ? titleId : undefined);\r\n const resolvedAriaDescribedBy =\r\n ariaDescribedBy ?? (subtext ? subtextId : undefined);\r\n\r\n return (\r\n <div\r\n className={wrapperClass}\r\n role={resolvedRole}\r\n aria-label={ariaLabel}\r\n aria-labelledby={ariaLabel ? undefined : resolvedAriaLabelledBy}\r\n aria-describedby={resolvedAriaDescribedBy}\r\n aria-live={ariaLive}\r\n aria-atomic={ariaAtomic}\r\n data-testid={testId}\r\n >\r\n {Icon && (\r\n <div\r\n className={classMap.icon}\r\n data-testid={`${testId}-icon`}\r\n aria-hidden={decorativeIcon ? true : undefined}\r\n >\r\n <Icon\r\n aria-hidden={decorativeIcon ? true : undefined}\r\n aria-label={!decorativeIcon ? iconAriaLabel : undefined}\r\n focusable={false}\r\n />\r\n </div>\r\n )}\r\n\r\n <div className={classMap.content}>\r\n {title && (\r\n <h3\r\n id={titleId}\r\n className={classMap.title}\r\n data-testid={`${testId}-title`}\r\n >\r\n {title}\r\n </h3>\r\n )}\r\n\r\n <div\r\n className={classMap.value}\r\n data-testid={`${testId}-value`}\r\n aria-label={valueLabel}\r\n >\r\n {value}\r\n </div>\r\n\r\n {subtext && (\r\n <div\r\n id={subtextId}\r\n className={classMap.subtext}\r\n data-testid={`${testId}-subtext`}\r\n >\r\n {subtext}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nBaseMetricBox.displayName = \"BaseMetricBox\";\r\nexport default BaseMetricBox;\r\n","import React from \"react\";\r\nimport BaseMetricBox from \"../MetricBoxBase\";\r\nimport \"./MetricBox.scss\";\r\nimport { MetricBoxProps } from \"../MetricBox.types\";\r\n\r\nconst classes = {\r\n wrapper: \"metricBox\",\r\n outline: \"metricBox_outline\",\r\n\r\n primary: \"metricBox_primary\",\r\n secondary: \"metricBox_secondary\",\r\n tertiary: \"metricBox_tertiary\",\r\n quaternary: \"metricBox_quaternary\",\r\n\r\n success: \"metricBox_success\",\r\n error: \"metricBox_error\",\r\n warning: \"metricBox_warning\",\r\n\r\n clear: \"metricBox_clear\",\r\n\r\n xs: \"metricBox_xs\",\r\n small: \"metricBox_small\",\r\n medium: \"metricBox_medium\",\r\n large: \"metricBox_large\",\r\n xl: \"metricBox_xl\",\r\n\r\n left: \"metricBox_left\",\r\n center: \"metricBox_center\",\r\n right: \"metricBox_right\",\r\n\r\n shadowNone: \"metricBox_shadow-None\",\r\n shadowLight: \"metricBox_shadow-Light\",\r\n shadowMedium: \"metricBox_shadow-Medium\",\r\n shadowStrong: \"metricBox_shadow-Strong\",\r\n shadowIntense: \"metricBox_shadow-Intense\",\r\n\r\n roundNone: \"metricBox_round-None\",\r\n roundSmall: \"metricBox_round-Small\",\r\n roundMedium: \"metricBox_round-Medium\",\r\n roundLarge: \"metricBox_round-Large\",\r\n\r\n icon: \"metricBox_icon\",\r\n content: \"metricBox_content\",\r\n title: \"metricBox_title\",\r\n value: \"metricBox_value\",\r\n subtext: \"metricBox_subtext\",\r\n};\r\n\r\nconst MetricBox: React.FC<MetricBoxProps> = (props) => {\r\n return <BaseMetricBox {...props} classMap={classes} />;\r\n};\r\nMetricBox.displayName = \"MetricBox\";\r\nexport default MetricBox;\r\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { M } from "./MetricBox-BlkBoGCL.js";
1
+ import { M } from "./MetricBox-DTn2x1vz.js";
2
2
  export {
3
3
  M as default
4
4
  };
@@ -17,9 +17,9 @@ const BaseModal = ({
17
17
  shadow = borealStyleConfig.getDefaultShadow(),
18
18
  open,
19
19
  onClose,
20
- ariaLabel,
21
- ariaLabelledBy,
22
- ariaDescribedBy,
20
+ "aria-label": ariaLabel,
21
+ "aria-labelledby": ariaLabelledBy,
22
+ "aria-describedby": ariaDescribedBy,
23
23
  closeButtonAriaLabel = "Close modal",
24
24
  "data-testid": testId = "modal",
25
25
  IconButton: IconButton2,
@@ -229,4 +229,4 @@ const Modal = (props) => {
229
229
  };
230
230
  Modal.displayName = "Modal";
231
231
  exports.Modal = Modal;
232
- //# sourceMappingURL=Modal-DhpY3Kt6.cjs.map
232
+ //# sourceMappingURL=Modal-B9FXClBr.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal-B9FXClBr.cjs","sources":["../../src/components/Modal/ModalBase.tsx","../../src/components/Modal/core/Modal.tsx"],"sourcesContent":["import React, {\r\n useEffect,\r\n useRef,\r\n useState,\r\n useId,\r\n KeyboardEvent,\r\n useCallback,\r\n} from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { CloseIcon } from \"../../Icons\";\r\nimport { BaseModalProps } from \"./Modal.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { capitalize } from \"../../utils/capitalize\";\r\nimport {\r\n getDefaultRounding,\r\n getDefaultShadow,\r\n} from \"../../config/boreal-style-config\";\r\n\r\nconst BaseModal: React.FC<BaseModalProps> = ({\r\n className = \"\",\r\n children,\r\n title = \"Modal Dialog\",\r\n header,\r\n footer,\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n open,\r\n onClose,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n \"aria-describedby\": ariaDescribedBy,\r\n closeButtonAriaLabel = \"Close modal\",\r\n \"data-testid\": testId = \"modal\",\r\n IconButton,\r\n classMap,\r\n portalId = \"widget-portal\",\r\n}) => {\r\n const [isVisible, setIsVisible] = useState(false);\r\n const [portalElement, setPortalElement] = useState<HTMLElement | null>(null);\r\n const [isRendered, setIsRendered] = useState(false);\r\n\r\n const isControlled = typeof open === \"boolean\";\r\n const shouldBeOpen = isControlled ? open : true;\r\n\r\n const overlayRef = useRef<HTMLDivElement>(null);\r\n const dialogRef = useRef<HTMLDivElement>(null);\r\n const closeBtnRef = useRef<HTMLButtonElement>(null);\r\n const openerRef = useRef<HTMLElement | null>(null);\r\n const focusablesRef = useRef<HTMLElement[]>([]);\r\n\r\n const uid = useId();\r\n const fallbackLabelId = `${uid}-label`;\r\n\r\n const handleClose = useCallback(() => {\r\n setIsVisible(false);\r\n window.setTimeout(() => onClose(), 200);\r\n }, [onClose]);\r\n\r\n useEffect(() => {\r\n if (!isRendered) return;\r\n\r\n openerRef.current = (document.activeElement as HTMLElement) ?? null;\r\n\r\n let portal = document.getElementById(portalId);\r\n if (!portal) {\r\n portal = document.createElement(\"div\");\r\n portal.id = portalId;\r\n document.body.appendChild(portal);\r\n }\r\n setPortalElement(portal);\r\n document.body.classList.add(\"noScroll\");\r\n\r\n const siblings = Array.from(document.body.children) as HTMLElement[];\r\n const hidden: HTMLElement[] = [];\r\n\r\n siblings.forEach((el) => {\r\n if (el !== portal && !el.hasAttribute(\"aria-hidden\")) {\r\n el.setAttribute(\"aria-hidden\", \"true\");\r\n hidden.push(el);\r\n }\r\n });\r\n\r\n const handleEsc = (e: globalThis.KeyboardEvent) => {\r\n if (e.key === \"Escape\") handleClose();\r\n };\r\n\r\n document.addEventListener(\"keydown\", handleEsc);\r\n\r\n return () => {\r\n document.body.classList.remove(\"noScroll\");\r\n document.removeEventListener(\"keydown\", handleEsc);\r\n hidden.forEach((el) => el.removeAttribute(\"aria-hidden\"));\r\n openerRef.current?.focus?.();\r\n setPortalElement(null);\r\n };\r\n }, [isRendered, portalId, handleClose]);\r\n\r\n useEffect(() => {\r\n if (!isRendered) return;\r\n\r\n requestAnimationFrame(() => {\r\n setIsVisible(true);\r\n\r\n if (dialogRef.current) {\r\n focusablesRef.current = Array.from(\r\n dialogRef.current.querySelectorAll<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\r\n ),\r\n ).filter((el) => !el.hasAttribute(\"disabled\") && el.tabIndex !== -1);\r\n }\r\n\r\n (\r\n focusablesRef.current[0] ??\r\n closeBtnRef.current ??\r\n dialogRef.current\r\n )?.focus?.();\r\n });\r\n }, [isRendered]);\r\n\r\n useEffect(() => {\r\n if (shouldBeOpen) {\r\n setIsRendered(true);\r\n } else if (isControlled) {\r\n setIsVisible(false);\r\n const t = window.setTimeout(() => setIsRendered(false), 200);\r\n return () => window.clearTimeout(t);\r\n } else {\r\n setIsRendered(false);\r\n }\r\n }, [shouldBeOpen, isControlled]);\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key !== \"Tab\") return;\r\n\r\n const list = focusablesRef.current;\r\n if (!list.length) return;\r\n\r\n const first = list[0];\r\n const last = list[list.length - 1];\r\n\r\n if (e.shiftKey && document.activeElement === first) {\r\n e.preventDefault();\r\n last.focus();\r\n } else if (!e.shiftKey && document.activeElement === last) {\r\n e.preventDefault();\r\n first.focus();\r\n }\r\n };\r\n\r\n if (!isRendered || !portalElement) return null;\r\n\r\n const contentClassName = combineClassNames(\r\n classMap.content,\r\n className,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n );\r\n\r\n const hasHeader = Boolean(header) || Boolean(title);\r\n const hasFooter = Boolean(footer);\r\n\r\n const resolvedAriaLabelledBy =\r\n ariaLabelledBy ?? (!ariaLabel && hasHeader ? fallbackLabelId : undefined);\r\n\r\n const shouldRenderFallbackLabel = resolvedAriaLabelledBy === fallbackLabelId;\r\n\r\n return ReactDOM.createPortal(\r\n <div\r\n ref={overlayRef}\r\n className={combineClassNames(\r\n classMap.overlay,\r\n isVisible ? classMap.visible : classMap.hidden,\r\n )}\r\n onClick={handleClose}\r\n role=\"presentation\"\r\n data-testid={testId}\r\n >\r\n <div\r\n ref={dialogRef}\r\n className={contentClassName}\r\n onClick={(e) => e.stopPropagation()}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label={ariaLabel}\r\n aria-labelledby={resolvedAriaLabelledBy}\r\n aria-describedby={ariaDescribedBy}\r\n tabIndex={-1}\r\n onKeyDown={handleKeyDown}\r\n data-testid={`${testId}-content`}\r\n >\r\n {shouldRenderFallbackLabel && (\r\n <h2 id={fallbackLabelId} className={classMap.srOnly ?? \"sr_only\"}>\r\n {typeof title === \"string\" ? title : \"Modal Dialog\"}\r\n </h2>\r\n )}\r\n\r\n {hasHeader && (\r\n <div className={classMap.header} data-testid={`${testId}-header`}>\r\n <div className={classMap.headerContent}>\r\n {header ?? <div className={classMap.title}>{title}</div>}\r\n </div>\r\n\r\n <IconButton\r\n ref={closeBtnRef}\r\n className={classMap.closeButton}\r\n state=\"error\"\r\n size=\"small\"\r\n icon={CloseIcon}\r\n aria-label={closeButtonAriaLabel}\r\n onClick={(e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n handleClose();\r\n }}\r\n title=\"Close\"\r\n data-testid={`${testId}-close`}\r\n type=\"button\"\r\n />\r\n </div>\r\n )}\r\n\r\n {!hasHeader && (\r\n <IconButton\r\n ref={closeBtnRef}\r\n className={classMap.closeButtonFloating ?? classMap.closeButton}\r\n state=\"error\"\r\n size=\"small\"\r\n icon={CloseIcon}\r\n aria-label={closeButtonAriaLabel}\r\n onClick={(e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n handleClose();\r\n }}\r\n title=\"Close\"\r\n data-testid={`${testId}-close`}\r\n type=\"button\"\r\n />\r\n )}\r\n\r\n <div className={classMap.body} data-testid={`${testId}-body`}>\r\n {children}\r\n </div>\r\n\r\n {hasFooter && (\r\n <div className={classMap.footer} data-testid={`${testId}-footer`}>\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n </div>,\r\n portalElement,\r\n );\r\n};\r\n\r\nBaseModal.displayName = \"BaseModal\";\r\nexport default BaseModal;\r\n","import React from \"react\";\r\nimport BaseModal from \"../ModalBase\";\r\nimport \"./Modal.scss\";\r\nimport IconButton from \"../../IconButton/core/IconButton\";\r\nimport { ModalProps } from \"../Modal.types\";\r\n\r\nconst classes = {\r\n overlay: \"modal_overlay\",\r\n visible: \"modal_visible\",\r\n hidden: \"modal_hidden\",\r\n header: \"modal_header\",\r\n headerContent: \"modal_header_content\",\r\n title: \"modal_title\",\r\n body: \"modal_body\",\r\n footer: \"modal_footer\",\r\n content: \"modal_content\",\r\n closeButton: \"modal_close_button\",\r\n\r\n shadowNone: \"modal_shadow-None\",\r\n shadowLight: \"modal_shadow-Light\",\r\n shadowMedium: \"modal_shadow-Medium\",\r\n shadowStrong: \"modal_shadow-Strong\",\r\n shadowIntense: \"modal_shadow-Intense\",\r\n\r\n roundNone: \"modal_round-None\",\r\n roundSmall: \"modal_round-Small\",\r\n roundMedium: \"modal_round-Medium\",\r\n roundLarge: \"modal_round-Large\",\r\n};\r\n\r\nconst Modal: React.FC<ModalProps> = (props) => {\r\n return <BaseModal {...props} IconButton={IconButton} classMap={classes} />;\r\n};\r\nModal.displayName = \"Modal\";\r\nexport default Modal;\r\n"],"names":["getDefaultRounding","getDefaultShadow","IconButton","useState","useRef","useId","useCallback","useEffect","combineClassNames","capitalize","jsx","jsxs","CloseIcon"],"mappings":"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"}