boreal-ui 0.0.63 → 0.0.64

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 (318) hide show
  1. package/dist/core/{Badge-DnE8lt7-.js → Badge-C0Twrrjc.js} +12 -13
  2. package/dist/core/Badge-C0Twrrjc.js.map +1 -0
  3. package/dist/core/{Badge-CyGz8K5W.cjs → Badge-tFIHQcKi.cjs} +12 -13
  4. package/dist/core/Badge-tFIHQcKi.cjs.map +1 -0
  5. package/dist/core/Badge.cjs.js +1 -1
  6. package/dist/core/Badge.js +1 -1
  7. package/dist/core/{CommandPalette-CDrgdLqM.js → CommandPalette-BcPsaNIk.js} +2 -2
  8. package/dist/core/{CommandPalette-CDrgdLqM.js.map → CommandPalette-BcPsaNIk.js.map} +1 -1
  9. package/dist/core/{CommandPalette-va8rXgrv.cjs → CommandPalette-Cv79G0W9.cjs} +2 -2
  10. package/dist/core/{CommandPalette-va8rXgrv.cjs.map → CommandPalette-Cv79G0W9.cjs.map} +1 -1
  11. package/dist/core/CommandPalette.cjs.js +1 -1
  12. package/dist/core/CommandPalette.js +1 -1
  13. package/dist/core/{Footer-D7XF9Pd_.cjs → Footer-B9J4a1Ro.cjs} +2 -2
  14. package/dist/core/{Footer-D7XF9Pd_.cjs.map → Footer-B9J4a1Ro.cjs.map} +1 -1
  15. package/dist/core/{Footer-DIqYxkhA.js → Footer-gOtEBvFb.js} +2 -2
  16. package/dist/core/{Footer-DIqYxkhA.js.map → Footer-gOtEBvFb.js.map} +1 -1
  17. package/dist/core/Footer.cjs.js +1 -1
  18. package/dist/core/Footer.js +1 -1
  19. package/dist/core/{Modal-FSXyuUVq.cjs → Modal-CIkYf4MD.cjs} +36 -4
  20. package/dist/core/Modal-CIkYf4MD.cjs.map +1 -0
  21. package/dist/core/{Modal-Bxr3hpdX.js → Modal-DCBP18Ov.js} +36 -4
  22. package/dist/core/Modal-DCBP18Ov.js.map +1 -0
  23. package/dist/core/Modal.cjs.js +1 -1
  24. package/dist/core/Modal.js +1 -1
  25. package/dist/core/{TagInput-D8BA-iET.js → TagInput-Bvoe6pm0.js} +2 -2
  26. package/dist/core/{TagInput-D8BA-iET.js.map → TagInput-Bvoe6pm0.js.map} +1 -1
  27. package/dist/core/{TagInput-BeMxm2HH.cjs → TagInput-Ce3BWJaw.cjs} +2 -2
  28. package/dist/core/{TagInput-BeMxm2HH.cjs.map → TagInput-Ce3BWJaw.cjs.map} +1 -1
  29. package/dist/core/TagInput.cjs.js +1 -1
  30. package/dist/core/TagInput.js +1 -1
  31. package/dist/core/TextArea-CdulzkDh.js +171 -0
  32. package/dist/core/TextArea-CdulzkDh.js.map +1 -0
  33. package/dist/core/TextArea-UeNb21Ch.cjs +170 -0
  34. package/dist/core/TextArea-UeNb21Ch.cjs.map +1 -0
  35. package/dist/core/TextArea.cjs.js +1 -1
  36. package/dist/core/TextArea.js +1 -1
  37. package/dist/core/{TextInput-DK7uh51U.cjs → TextInput-DcONHL6m.cjs} +90 -86
  38. package/dist/core/TextInput-DcONHL6m.cjs.map +1 -0
  39. package/dist/core/{TextInput-BiB2ml8J.js → TextInput-lFozK5mA.js} +90 -86
  40. package/dist/core/TextInput-lFozK5mA.js.map +1 -0
  41. package/dist/core/TextInput.cjs.js +1 -1
  42. package/dist/core/TextInput.js +1 -1
  43. package/dist/core/{ThemeContext-BEYRgPZ9.js → ThemeContext-BsFZ0Cl7.js} +11 -2
  44. package/dist/core/ThemeContext-BsFZ0Cl7.js.map +1 -0
  45. package/dist/core/{ThemeContext-C-0mwEv4.cjs → ThemeContext-DOlnx89D.cjs} +11 -2
  46. package/dist/core/ThemeContext-DOlnx89D.cjs.map +1 -0
  47. package/dist/core/ThemeProvider.cjs.js +1 -1
  48. package/dist/core/ThemeProvider.js +1 -1
  49. package/dist/core/boreal-ui.css +327 -117
  50. package/dist/core/index.cjs.js +8 -8
  51. package/dist/core/index.js +8 -8
  52. package/dist/next/{Accordion-Dn_TH9Fi.js → Accordion-BGmQxSLY.js} +50 -50
  53. package/dist/next/{Accordion-Dn_TH9Fi.js.map → Accordion-BGmQxSLY.js.map} +1 -1
  54. package/dist/next/{Accordion-DwVQe79s.cjs → Accordion-CWYy3ivV.cjs} +50 -50
  55. package/dist/next/{Accordion-DwVQe79s.cjs.map → Accordion-CWYy3ivV.cjs.map} +1 -1
  56. package/dist/next/Accordion.cjs.js +1 -1
  57. package/dist/next/Accordion.js +1 -1
  58. package/dist/next/{Badge-DxwCU8MI.js → Badge-4PrdXKYJ.js} +12 -13
  59. package/dist/next/Badge-4PrdXKYJ.js.map +1 -0
  60. package/dist/next/{Badge-QK8EwBZC.cjs → Badge-BYC1gEgw.cjs} +12 -13
  61. package/dist/next/Badge-BYC1gEgw.cjs.map +1 -0
  62. package/dist/next/Badge.cjs.js +1 -1
  63. package/dist/next/Badge.js +1 -1
  64. package/dist/next/{Breadcrumbs-3XEDzKbm.cjs → Breadcrumbs--HIh4k3A.cjs} +2 -2
  65. package/dist/next/{Breadcrumbs-3XEDzKbm.cjs.map → Breadcrumbs--HIh4k3A.cjs.map} +1 -1
  66. package/dist/next/{Breadcrumbs-BsNWBc-h.js → Breadcrumbs-DrLy6lxS.js} +2 -2
  67. package/dist/next/{Breadcrumbs-BsNWBc-h.js.map → Breadcrumbs-DrLy6lxS.js.map} +1 -1
  68. package/dist/next/Breadcrumbs.cjs.js +1 -1
  69. package/dist/next/Breadcrumbs.js +1 -1
  70. package/dist/next/{Button-CbLs7Xb_.js → Button-CARQQF9h.js} +46 -46
  71. package/dist/next/{Button-CbLs7Xb_.js.map → Button-CARQQF9h.js.map} +1 -1
  72. package/dist/next/{Button-BxKYm6hW.cjs → Button-CfP7f3xF.cjs} +46 -46
  73. package/dist/next/{Button-BxKYm6hW.cjs.map → Button-CfP7f3xF.cjs.map} +1 -1
  74. package/dist/next/Button.cjs.js +1 -1
  75. package/dist/next/Button.js +1 -1
  76. package/dist/next/{Card--Vnbkx_t.js → Card-B_J1YknX.js} +62 -62
  77. package/dist/next/{Card--Vnbkx_t.js.map → Card-B_J1YknX.js.map} +1 -1
  78. package/dist/next/{Card-F3Rcxsp7.cjs → Card-WoaRWnDq.cjs} +62 -62
  79. package/dist/next/{Card-F3Rcxsp7.cjs.map → Card-WoaRWnDq.cjs.map} +1 -1
  80. package/dist/next/Card.cjs.js +1 -1
  81. package/dist/next/Card.js +1 -1
  82. package/dist/next/CheckBox.cjs.js +1 -1
  83. package/dist/next/CheckBox.js +1 -1
  84. package/dist/next/{Checkbox-V_yJTGLJ.cjs → Checkbox-C6DZ3PSD.cjs} +44 -44
  85. package/dist/next/{Checkbox-V_yJTGLJ.cjs.map → Checkbox-C6DZ3PSD.cjs.map} +1 -1
  86. package/dist/next/{Checkbox-DCP9e_zW.js → Checkbox-ClhCa1K9.js} +44 -44
  87. package/dist/next/{Checkbox-DCP9e_zW.js.map → Checkbox-ClhCa1K9.js.map} +1 -1
  88. package/dist/next/{Chip-DZJSDzXr.cjs → Chip-Ben13vdt.cjs} +50 -50
  89. package/dist/next/{Chip-DZJSDzXr.cjs.map → Chip-Ben13vdt.cjs.map} +1 -1
  90. package/dist/next/{Chip-RMMKC89X.js → Chip-CGlXrV7g.js} +50 -50
  91. package/dist/next/{Chip-RMMKC89X.js.map → Chip-CGlXrV7g.js.map} +1 -1
  92. package/dist/next/Chip.cjs.js +1 -1
  93. package/dist/next/Chip.js +1 -1
  94. package/dist/next/{CircularProgress-DDzPH1aF.js → CircularProgress-C3Hd3lut.js} +37 -37
  95. package/dist/next/{CircularProgress-DDzPH1aF.js.map → CircularProgress-C3Hd3lut.js.map} +1 -1
  96. package/dist/next/{CircularProgress-D7VkwZME.cjs → CircularProgress-R9oZ2NqR.cjs} +37 -37
  97. package/dist/next/{CircularProgress-D7VkwZME.cjs.map → CircularProgress-R9oZ2NqR.cjs.map} +1 -1
  98. package/dist/next/CircularProgress.cjs.js +1 -1
  99. package/dist/next/CircularProgress.js +1 -1
  100. package/dist/next/{ColorPicker-llWz1lyd.js → ColorPicker-C4n_QzLE.js} +38 -38
  101. package/dist/next/{ColorPicker-llWz1lyd.js.map → ColorPicker-C4n_QzLE.js.map} +1 -1
  102. package/dist/next/{ColorPicker-D5SYdLA9.cjs → ColorPicker-wDTOI4jh.cjs} +38 -38
  103. package/dist/next/{ColorPicker-D5SYdLA9.cjs.map → ColorPicker-wDTOI4jh.cjs.map} +1 -1
  104. package/dist/next/ColorPicker.cjs.js +1 -1
  105. package/dist/next/ColorPicker.js +1 -1
  106. package/dist/next/{CommandPalette-DVwb5WCx.cjs → CommandPalette-BL6WEeB9.cjs} +42 -42
  107. package/dist/next/{CommandPalette-DVwb5WCx.cjs.map → CommandPalette-BL6WEeB9.cjs.map} +1 -1
  108. package/dist/next/{CommandPalette-BKXggOFe.js → CommandPalette-Do6cyU-X.js} +42 -42
  109. package/dist/next/{CommandPalette-BKXggOFe.js.map → CommandPalette-Do6cyU-X.js.map} +1 -1
  110. package/dist/next/CommandPalette.cjs.js +1 -1
  111. package/dist/next/CommandPalette.js +1 -1
  112. package/dist/next/{DataTable-DdbfhIs4.cjs → DataTable-C9yi1-h5.cjs} +40 -40
  113. package/dist/next/{DataTable-DdbfhIs4.cjs.map → DataTable-C9yi1-h5.cjs.map} +1 -1
  114. package/dist/next/{DataTable-v0Tuwx7T.js → DataTable-CPrmW5w0.js} +40 -40
  115. package/dist/next/{DataTable-v0Tuwx7T.js.map → DataTable-CPrmW5w0.js.map} +1 -1
  116. package/dist/next/DataTable.cjs.js +1 -1
  117. package/dist/next/DataTable.js +1 -1
  118. package/dist/next/{DateTimePicker-DVo9uK3q.cjs → DateTimePicker-BzfEJxVQ.cjs} +46 -46
  119. package/dist/next/{DateTimePicker-DVo9uK3q.cjs.map → DateTimePicker-BzfEJxVQ.cjs.map} +1 -1
  120. package/dist/next/{DateTimePicker-BBF5R9-X.js → DateTimePicker-Cf8gB9Uf.js} +46 -46
  121. package/dist/next/{DateTimePicker-BBF5R9-X.js.map → DateTimePicker-Cf8gB9Uf.js.map} +1 -1
  122. package/dist/next/DateTimePicker.cjs.js +1 -1
  123. package/dist/next/DateTimePicker.js +1 -1
  124. package/dist/next/{Divider-qisY9Yx8.cjs → Divider-C0voHnSK.cjs} +28 -28
  125. package/dist/next/{Divider-qisY9Yx8.cjs.map → Divider-C0voHnSK.cjs.map} +1 -1
  126. package/dist/next/{Divider-SOFRGXN4.js → Divider-DZ7hdt_B.js} +28 -28
  127. package/dist/next/{Divider-SOFRGXN4.js.map → Divider-DZ7hdt_B.js.map} +1 -1
  128. package/dist/next/Divider.cjs.js +1 -1
  129. package/dist/next/Divider.js +1 -1
  130. package/dist/next/{EmptyState-AM8RgRxl.js → EmptyState-C9ZcLwdE.js} +2 -2
  131. package/dist/next/{EmptyState-AM8RgRxl.js.map → EmptyState-C9ZcLwdE.js.map} +1 -1
  132. package/dist/next/{EmptyState-BbasdxVa.cjs → EmptyState-DEXnMGP_.cjs} +2 -2
  133. package/dist/next/{EmptyState-BbasdxVa.cjs.map → EmptyState-DEXnMGP_.cjs.map} +1 -1
  134. package/dist/next/EmptyState.cjs.js +1 -1
  135. package/dist/next/EmptyState.js +1 -1
  136. package/dist/next/{FileUpload-Cz5Cmf7D.cjs → FileUpload-2KSre6xp.cjs} +51 -51
  137. package/dist/next/{FileUpload-Cz5Cmf7D.cjs.map → FileUpload-2KSre6xp.cjs.map} +1 -1
  138. package/dist/next/{FileUpload-vAtZJfmM.js → FileUpload-CjQJNL7t.js} +51 -51
  139. package/dist/next/{FileUpload-vAtZJfmM.js.map → FileUpload-CjQJNL7t.js.map} +1 -1
  140. package/dist/next/FileUpload.cjs.js +1 -1
  141. package/dist/next/FileUpload.js +1 -1
  142. package/dist/next/{Footer-BeALudhE.js → Footer-CReI_mpq.js} +41 -41
  143. package/dist/next/{Footer-BeALudhE.js.map → Footer-CReI_mpq.js.map} +1 -1
  144. package/dist/next/{Footer-CX_AJG0N.cjs → Footer-DPZhRbf9.cjs} +41 -41
  145. package/dist/next/{Footer-CX_AJG0N.cjs.map → Footer-DPZhRbf9.cjs.map} +1 -1
  146. package/dist/next/Footer.cjs.js +1 -1
  147. package/dist/next/Footer.js +1 -1
  148. package/dist/next/{FormGroup-dDYVBjuL.js → FormGroup-B9yxTKxp.js} +30 -30
  149. package/dist/next/{FormGroup-dDYVBjuL.js.map → FormGroup-B9yxTKxp.js.map} +1 -1
  150. package/dist/next/{FormGroup-ZIcoxpF7.cjs → FormGroup-W7B4Ej-t.cjs} +30 -30
  151. package/dist/next/{FormGroup-ZIcoxpF7.cjs.map → FormGroup-W7B4Ej-t.cjs.map} +1 -1
  152. package/dist/next/FormGroup.cjs.js +1 -1
  153. package/dist/next/FormGroup.js +1 -1
  154. package/dist/next/{MessagePopup-Cb98cQsc.js → MessagePopup-CyO5NAiy.js} +2 -2
  155. package/dist/next/{MessagePopup-Cb98cQsc.js.map → MessagePopup-CyO5NAiy.js.map} +1 -1
  156. package/dist/next/{MessagePopup-CdGMtQjq.cjs → MessagePopup-DX7KfiyF.cjs} +2 -2
  157. package/dist/next/{MessagePopup-CdGMtQjq.cjs.map → MessagePopup-DX7KfiyF.cjs.map} +1 -1
  158. package/dist/next/MessagePopup.cjs.js +1 -1
  159. package/dist/next/MessagePopup.js +1 -1
  160. package/dist/next/{MetricBox-DnKSec6I.cjs → MetricBox-B2-l8cVO.cjs} +47 -47
  161. package/dist/next/{MetricBox-DnKSec6I.cjs.map → MetricBox-B2-l8cVO.cjs.map} +1 -1
  162. package/dist/next/{MetricBox-BgErSHJ2.js → MetricBox-CKKlOQGM.js} +47 -47
  163. package/dist/next/{MetricBox-BgErSHJ2.js.map → MetricBox-CKKlOQGM.js.map} +1 -1
  164. package/dist/next/MetricBox.cjs.js +1 -1
  165. package/dist/next/MetricBox.js +1 -1
  166. package/dist/next/{Modal-DIMVFaMZ.js → Modal-CJnNyxLT.js} +62 -21
  167. package/dist/next/Modal-CJnNyxLT.js.map +1 -0
  168. package/dist/next/{Modal-C2b5gSAI.cjs → Modal-TdYJrZnP.cjs} +62 -21
  169. package/dist/next/Modal-TdYJrZnP.cjs.map +1 -0
  170. package/dist/next/Modal.cjs.js +1 -1
  171. package/dist/next/Modal.js +1 -1
  172. package/dist/next/{NavBar-B5mwxdyF.js → NavBar-CRF1Qtot.js} +37 -37
  173. package/dist/next/{NavBar-B5mwxdyF.js.map → NavBar-CRF1Qtot.js.map} +1 -1
  174. package/dist/next/{NavBar-MdBgi_nF.cjs → NavBar-CqENeqkx.cjs} +37 -37
  175. package/dist/next/{NavBar-MdBgi_nF.cjs.map → NavBar-CqENeqkx.cjs.map} +1 -1
  176. package/dist/next/NavBar.cjs.js +1 -1
  177. package/dist/next/NavBar.js +1 -1
  178. package/dist/next/{NotificationCenter-_XsQhE7s.js → NotificationCenter-Bo2NcO55.js} +42 -42
  179. package/dist/next/{NotificationCenter-_XsQhE7s.js.map → NotificationCenter-Bo2NcO55.js.map} +1 -1
  180. package/dist/next/{NotificationCenter-Caz3jxdn.cjs → NotificationCenter-COZtpamq.cjs} +42 -42
  181. package/dist/next/{NotificationCenter-Caz3jxdn.cjs.map → NotificationCenter-COZtpamq.cjs.map} +1 -1
  182. package/dist/next/NotificationCenter.cjs.js +1 -1
  183. package/dist/next/NotificationCenter.js +1 -1
  184. package/dist/next/{Pager-DvKe6hJy.js → Pager-BBG2hp_T.js} +2 -2
  185. package/dist/next/{Pager-DvKe6hJy.js.map → Pager-BBG2hp_T.js.map} +1 -1
  186. package/dist/next/{Pager-B8F1r2e2.cjs → Pager-CVNoZgLk.cjs} +2 -2
  187. package/dist/next/{Pager-B8F1r2e2.cjs.map → Pager-CVNoZgLk.cjs.map} +1 -1
  188. package/dist/next/Pager.cjs.js +1 -1
  189. package/dist/next/Pager.js +1 -1
  190. package/dist/next/{PopOver-RQs7wnzJ.js → PopOver-D300C5Sg.js} +40 -40
  191. package/dist/next/{PopOver-RQs7wnzJ.js.map → PopOver-D300C5Sg.js.map} +1 -1
  192. package/dist/next/{PopOver-DKO8mxAQ.cjs → PopOver-_Fhr-zDB.cjs} +40 -40
  193. package/dist/next/{PopOver-DKO8mxAQ.cjs.map → PopOver-_Fhr-zDB.cjs.map} +1 -1
  194. package/dist/next/PopOver.cjs.js +1 -1
  195. package/dist/next/PopOver.js +1 -1
  196. package/dist/next/{ProgressBar-CpPnKp50.js → ProgressBar-BI4bjuDK.js} +49 -49
  197. package/dist/next/{ProgressBar-CpPnKp50.js.map → ProgressBar-BI4bjuDK.js.map} +1 -1
  198. package/dist/next/{ProgressBar-C2RB6irR.cjs → ProgressBar-Bk7qClkI.cjs} +49 -49
  199. package/dist/next/{ProgressBar-C2RB6irR.cjs.map → ProgressBar-Bk7qClkI.cjs.map} +1 -1
  200. package/dist/next/ProgressBar.cjs.js +1 -1
  201. package/dist/next/ProgressBar.js +1 -1
  202. package/dist/next/{RadioButton-D0653S8V.cjs → RadioButton-BkLrVidx.cjs} +38 -38
  203. package/dist/next/{RadioButton-D0653S8V.cjs.map → RadioButton-BkLrVidx.cjs.map} +1 -1
  204. package/dist/next/{RadioButton-y2Gj8oA8.js → RadioButton-D-BZDfsG.js} +38 -38
  205. package/dist/next/{RadioButton-y2Gj8oA8.js.map → RadioButton-D-BZDfsG.js.map} +1 -1
  206. package/dist/next/RadioButton.cjs.js +1 -1
  207. package/dist/next/RadioButton.js +1 -1
  208. package/dist/next/{Rating-Dwl39FBy.cjs → Rating-DTdMdPfy.cjs} +34 -34
  209. package/dist/next/{Rating-Dwl39FBy.cjs.map → Rating-DTdMdPfy.cjs.map} +1 -1
  210. package/dist/next/{Rating-CdLx5K9F.js → Rating-DnjJd_Sd.js} +34 -34
  211. package/dist/next/{Rating-CdLx5K9F.js.map → Rating-DnjJd_Sd.js.map} +1 -1
  212. package/dist/next/Rating.cjs.js +1 -1
  213. package/dist/next/Rating.js +1 -1
  214. package/dist/next/{Skeleton-BrqgG8hs.js → Skeleton-DT7qYlqM.js} +26 -26
  215. package/dist/next/{Skeleton-BrqgG8hs.js.map → Skeleton-DT7qYlqM.js.map} +1 -1
  216. package/dist/next/{Skeleton-B1CXIUtq.cjs → Skeleton-YTWvOtCq.cjs} +26 -26
  217. package/dist/next/{Skeleton-B1CXIUtq.cjs.map → Skeleton-YTWvOtCq.cjs.map} +1 -1
  218. package/dist/next/Skeleton.cjs.js +1 -1
  219. package/dist/next/Skeleton.js +1 -1
  220. package/dist/next/{Slider-CIRshlPG.cjs → Slider-CG_242Zv.cjs} +43 -43
  221. package/dist/next/{Slider-CIRshlPG.cjs.map → Slider-CG_242Zv.cjs.map} +1 -1
  222. package/dist/next/{Slider-DsMR0_ku.js → Slider-DXYXQ52q.js} +43 -43
  223. package/dist/next/{Slider-DsMR0_ku.js.map → Slider-DXYXQ52q.js.map} +1 -1
  224. package/dist/next/Slider.cjs.js +1 -1
  225. package/dist/next/Slider.js +1 -1
  226. package/dist/next/{Spinner-DmsSt_pC.cjs → Spinner-COpCxB1_.cjs} +37 -37
  227. package/dist/next/{Spinner-DmsSt_pC.cjs.map → Spinner-COpCxB1_.cjs.map} +1 -1
  228. package/dist/next/{Spinner-CJ-iu7ef.js → Spinner-DgHFzfrq.js} +37 -37
  229. package/dist/next/{Spinner-CJ-iu7ef.js.map → Spinner-DgHFzfrq.js.map} +1 -1
  230. package/dist/next/Spinner.cjs.js +1 -1
  231. package/dist/next/Spinner.js +1 -1
  232. package/dist/next/{Stepper-COpAZ9L5.js → Stepper-Bqt2vsZw.js} +39 -39
  233. package/dist/next/{Stepper-COpAZ9L5.js.map → Stepper-Bqt2vsZw.js.map} +1 -1
  234. package/dist/next/{Stepper-DuwfXoUQ.cjs → Stepper-Dyhw2IRi.cjs} +39 -39
  235. package/dist/next/{Stepper-DuwfXoUQ.cjs.map → Stepper-Dyhw2IRi.cjs.map} +1 -1
  236. package/dist/next/Stepper.cjs.js +1 -1
  237. package/dist/next/Stepper.js +1 -1
  238. package/dist/next/{TagInput-UXdEhgt6.cjs → TagInput-BmDFdbya.cjs} +47 -47
  239. package/dist/next/{TagInput-UXdEhgt6.cjs.map → TagInput-BmDFdbya.cjs.map} +1 -1
  240. package/dist/next/{TagInput-Calu7rmv.js → TagInput-D_uwHhyp.js} +47 -47
  241. package/dist/next/{TagInput-Calu7rmv.js.map → TagInput-D_uwHhyp.js.map} +1 -1
  242. package/dist/next/TagInput.cjs.js +1 -1
  243. package/dist/next/TagInput.js +1 -1
  244. package/dist/next/TextArea-BYVNcPkb.cjs +195 -0
  245. package/dist/next/TextArea-BYVNcPkb.cjs.map +1 -0
  246. package/dist/next/TextArea-DHWAB-SG.js +196 -0
  247. package/dist/next/TextArea-DHWAB-SG.js.map +1 -0
  248. package/dist/next/TextArea.cjs.js +1 -1
  249. package/dist/next/TextArea.js +1 -1
  250. package/dist/next/{TextInput-DgWD3y-H.js → TextInput-Ce0hLx8w.js} +118 -109
  251. package/dist/next/TextInput-Ce0hLx8w.js.map +1 -0
  252. package/dist/next/{TextInput-BnvakI1-.cjs → TextInput-uBklbK19.cjs} +118 -109
  253. package/dist/next/TextInput-uBklbK19.cjs.map +1 -0
  254. package/dist/next/TextInput.cjs.js +1 -1
  255. package/dist/next/TextInput.js +1 -1
  256. package/dist/next/{ThemeContext-BEYRgPZ9.js → ThemeContext-BsFZ0Cl7.js} +11 -2
  257. package/dist/next/ThemeContext-BsFZ0Cl7.js.map +1 -0
  258. package/dist/next/{ThemeContext-GXlhpxO0.cjs → ThemeContext-DA4TVcjV.cjs} +11 -2
  259. package/dist/next/ThemeContext-DA4TVcjV.cjs.map +1 -0
  260. package/dist/next/ThemeProvider.cjs.js +1 -1
  261. package/dist/next/ThemeProvider.js +1 -1
  262. package/dist/next/{Toolbar-C9Zkjg6l.js → Toolbar-BueVwC2Y.js} +34 -34
  263. package/dist/next/{Toolbar-C9Zkjg6l.js.map → Toolbar-BueVwC2Y.js.map} +1 -1
  264. package/dist/next/{Toolbar-Dx_lsHnl.cjs → Toolbar-DnxBBQex.cjs} +34 -34
  265. package/dist/next/{Toolbar-Dx_lsHnl.cjs.map → Toolbar-DnxBBQex.cjs.map} +1 -1
  266. package/dist/next/Toolbar.cjs.js +1 -1
  267. package/dist/next/Toolbar.js +1 -1
  268. package/dist/next/{Tooltip-DO95QNH2.js → Tooltip-BQuUSBWE.js} +39 -39
  269. package/dist/next/{Tooltip-DO95QNH2.js.map → Tooltip-BQuUSBWE.js.map} +1 -1
  270. package/dist/next/{Tooltip-BLWL7U26.cjs → Tooltip-DrsJZe1I.cjs} +39 -39
  271. package/dist/next/{Tooltip-BLWL7U26.cjs.map → Tooltip-DrsJZe1I.cjs.map} +1 -1
  272. package/dist/next/Tooltip.cjs.js +1 -1
  273. package/dist/next/Tooltip.js +1 -1
  274. package/dist/next/boreal-ui.css +2868 -2640
  275. package/dist/next/index.cjs.js +60 -60
  276. package/dist/next/index.js +60 -60
  277. package/dist/tsconfig.build.tsbuildinfo +1 -1
  278. package/dist/types/components/Badge/Badge.types.d.ts +4 -4
  279. package/dist/types/components/Badge/Badge.types.d.ts.map +1 -1
  280. package/dist/types/components/Badge/BadgeBase.d.ts.map +1 -1
  281. package/dist/types/components/Modal/Modal.types.d.ts +7 -1
  282. package/dist/types/components/Modal/Modal.types.d.ts.map +1 -1
  283. package/dist/types/components/Modal/ModalBase.d.ts.map +1 -1
  284. package/dist/types/components/Modal/core/Modal.d.ts.map +1 -1
  285. package/dist/types/components/TextArea/TextArea.types.d.ts +10 -2
  286. package/dist/types/components/TextArea/TextArea.types.d.ts.map +1 -1
  287. package/dist/types/components/TextArea/TextAreaBase.d.ts.map +1 -1
  288. package/dist/types/components/TextArea/core/TextArea.d.ts.map +1 -1
  289. package/dist/types/components/TextInput/TextInput.types.d.ts +6 -8
  290. package/dist/types/components/TextInput/TextInput.types.d.ts.map +1 -1
  291. package/dist/types/components/TextInput/TextInputBase.d.ts.map +1 -1
  292. package/dist/types/components/TextInput/core/TextInput.d.ts.map +1 -1
  293. package/dist/types/context/ThemeContext.d.ts.map +1 -1
  294. package/package.json +1 -1
  295. package/dist/core/Badge-CyGz8K5W.cjs.map +0 -1
  296. package/dist/core/Badge-DnE8lt7-.js.map +0 -1
  297. package/dist/core/Modal-Bxr3hpdX.js.map +0 -1
  298. package/dist/core/Modal-FSXyuUVq.cjs.map +0 -1
  299. package/dist/core/TextArea-FZ2to7QC.js +0 -142
  300. package/dist/core/TextArea-FZ2to7QC.js.map +0 -1
  301. package/dist/core/TextArea-tRdQdCYT.cjs +0 -141
  302. package/dist/core/TextArea-tRdQdCYT.cjs.map +0 -1
  303. package/dist/core/TextInput-BiB2ml8J.js.map +0 -1
  304. package/dist/core/TextInput-DK7uh51U.cjs.map +0 -1
  305. package/dist/core/ThemeContext-BEYRgPZ9.js.map +0 -1
  306. package/dist/core/ThemeContext-C-0mwEv4.cjs.map +0 -1
  307. package/dist/next/Badge-DxwCU8MI.js.map +0 -1
  308. package/dist/next/Badge-QK8EwBZC.cjs.map +0 -1
  309. package/dist/next/Modal-C2b5gSAI.cjs.map +0 -1
  310. package/dist/next/Modal-DIMVFaMZ.js.map +0 -1
  311. package/dist/next/TextArea-D1tyvK9I.js +0 -165
  312. package/dist/next/TextArea-D1tyvK9I.js.map +0 -1
  313. package/dist/next/TextArea-DstXzsQz.cjs +0 -164
  314. package/dist/next/TextArea-DstXzsQz.cjs.map +0 -1
  315. package/dist/next/TextInput-BnvakI1-.cjs.map +0 -1
  316. package/dist/next/TextInput-DgWD3y-H.js.map +0 -1
  317. package/dist/next/ThemeContext-BEYRgPZ9.js.map +0 -1
  318. package/dist/next/ThemeContext-GXlhpxO0.cjs.map +0 -1
@@ -4,8 +4,8 @@ import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
4
4
  import { c as capitalize } from "./capitalize-C0TSQSPh.js";
5
5
  import { a as getDefaultRounding, b as getDefaultShadow, d as getDefaultTheme, c as getDefaultSize } from "./boreal-style-config-BILmxkZG.js";
6
6
  const BadgeBase = ({
7
- text,
8
7
  children,
8
+ ariaLabel,
9
9
  theme = getDefaultTheme(),
10
10
  state = "",
11
11
  disabled = false,
@@ -22,9 +22,9 @@ const BadgeBase = ({
22
22
  href,
23
23
  ...rest
24
24
  }) => {
25
- if (!text && !children) return null;
26
- const content = children ?? text;
27
- const label = typeof content === "string" ? content : text;
25
+ if (children == null && !Icon) return null;
26
+ const isTextContent = typeof children === "string" || typeof children === "number";
27
+ const accessibleLabel = ariaLabel ?? (isTextContent ? String(children) : void 0);
28
28
  const combinedClassName = useMemo(
29
29
  () => combineClassNames(
30
30
  classMap.badge,
@@ -60,7 +60,6 @@ const BadgeBase = ({
60
60
  }
61
61
  onClick == null ? void 0 : onClick(e);
62
62
  };
63
- const needsAriaLabel = typeof content !== "string";
64
63
  const inner = /* @__PURE__ */ jsxs(Fragment, { children: [
65
64
  Icon && /* @__PURE__ */ jsx(
66
65
  Icon,
@@ -71,7 +70,7 @@ const BadgeBase = ({
71
70
  "data-testid": testId ? `${testId}-icon` : void 0
72
71
  }
73
72
  ),
74
- content
73
+ children
75
74
  ] });
76
75
  if (href) {
77
76
  const isHttp = /^https?:\/\//i.test(href);
@@ -83,8 +82,8 @@ const BadgeBase = ({
83
82
  onClick: handleClick,
84
83
  role: "status",
85
84
  "data-testid": testId ? `${testId}-main` : void 0,
86
- title: title ?? (typeof label === "string" ? label : void 0),
87
- ...needsAriaLabel ? { "aria-label": label } : {},
85
+ title: title ?? accessibleLabel,
86
+ ...accessibleLabel ? { "aria-label": accessibleLabel } : {},
88
87
  "aria-disabled": disabled || void 0,
89
88
  tabIndex: disabled ? -1 : 0,
90
89
  target: isHttp && !disabled ? "_blank" : void 0,
@@ -104,8 +103,8 @@ const BadgeBase = ({
104
103
  onClick: handleClick,
105
104
  disabled,
106
105
  "data-testid": testId ? `${testId}-main` : void 0,
107
- title: title ?? (typeof label === "string" ? label : void 0),
108
- ...needsAriaLabel ? { "aria-label": label } : {},
106
+ title: title ?? accessibleLabel,
107
+ ...accessibleLabel ? { "aria-label": accessibleLabel } : {},
109
108
  ...rest,
110
109
  children: inner
111
110
  }
@@ -116,9 +115,9 @@ const BadgeBase = ({
116
115
  {
117
116
  className: combinedClassName,
118
117
  "data-testid": testId ? `${testId}-main` : void 0,
119
- title: title ?? (typeof label === "string" ? label : void 0),
118
+ title: title ?? accessibleLabel,
120
119
  role: "status",
121
- ...needsAriaLabel ? { "aria-label": label } : {},
120
+ ...accessibleLabel ? { "aria-label": accessibleLabel } : {},
122
121
  children: inner
123
122
  }
124
123
  );
@@ -159,4 +158,4 @@ Badge.displayName = "Badge";
159
158
  export {
160
159
  Badge as B
161
160
  };
162
- //# sourceMappingURL=Badge-DnE8lt7-.js.map
161
+ //# sourceMappingURL=Badge-C0Twrrjc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge-C0Twrrjc.js","sources":["../../src/components/Badge/BadgeBase.tsx","../../src/components/Badge/core/Badge.tsx"],"sourcesContent":["import React, { useMemo, MouseEvent } from \"react\";\r\nimport { BadgeBaseProps } from \"./Badge.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\nexport const BadgeBase: React.FC<BadgeBaseProps> = ({\r\n children,\r\n ariaLabel,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n disabled = false,\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n title,\r\n size = getDefaultSize(),\r\n outline = false,\r\n icon: Icon,\r\n className = \"\",\r\n classMap,\r\n \"data-testid\": testId = \"badge\",\r\n onClick,\r\n href,\r\n ...rest\r\n}: BadgeBaseProps) => {\r\n if (children == null && !Icon) return null;\r\n\r\n const isTextContent =\r\n typeof children === \"string\" || typeof children === \"number\";\r\n\r\n const accessibleLabel =\r\n ariaLabel ?? (isTextContent ? String(children) : undefined);\r\n\r\n const combinedClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.badge,\r\n classMap[size],\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n disabled && classMap.disabled,\r\n outline && classMap.outline,\r\n onClick && classMap.clickable,\r\n className,\r\n ),\r\n [\r\n size,\r\n theme,\r\n state,\r\n shadow,\r\n rounding,\r\n disabled,\r\n outline,\r\n onClick,\r\n href,\r\n className,\r\n classMap,\r\n ],\r\n );\r\n\r\n const handleClick = (e: MouseEvent<HTMLElement>) => {\r\n if (disabled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n onClick?.(e as MouseEvent<HTMLButtonElement | HTMLAnchorElement>);\r\n };\r\n\r\n const inner = (\r\n <>\r\n {Icon && (\r\n <Icon\r\n className={classMap.badge_icon}\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n data-testid={testId ? `${testId}-icon` : undefined}\r\n />\r\n )}\r\n {children}\r\n </>\r\n );\r\n\r\n if (href) {\r\n const isHttp = /^https?:\\/\\//i.test(href);\r\n return (\r\n <a\r\n href={disabled ? undefined : href}\r\n className={combinedClassName}\r\n onClick={handleClick}\r\n role=\"status\"\r\n data-testid={testId ? `${testId}-main` : undefined}\r\n title={title ?? accessibleLabel}\r\n {...(accessibleLabel ? { \"aria-label\": accessibleLabel } : {})}\r\n aria-disabled={disabled || undefined}\r\n tabIndex={disabled ? -1 : 0}\r\n target={isHttp && !disabled ? \"_blank\" : undefined}\r\n rel={isHttp && !disabled ? \"noopener noreferrer\" : undefined}\r\n {...(rest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\r\n >\r\n {inner}\r\n </a>\r\n );\r\n }\r\n\r\n if (onClick) {\r\n return (\r\n <button\r\n type=\"button\"\r\n className={combinedClassName}\r\n role=\"status\"\r\n onClick={handleClick}\r\n disabled={disabled}\r\n data-testid={testId ? `${testId}-main` : undefined}\r\n title={title ?? accessibleLabel}\r\n {...(accessibleLabel ? { \"aria-label\": accessibleLabel } : {})}\r\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\r\n >\r\n {inner}\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <span\r\n className={combinedClassName}\r\n data-testid={testId ? `${testId}-main` : undefined}\r\n title={title ?? accessibleLabel}\r\n role=\"status\"\r\n {...(accessibleLabel ? { \"aria-label\": accessibleLabel } : {})}\r\n >\r\n {inner}\r\n </span>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Badge.scss\";\r\nimport { BadgeBase } from \"../BadgeBase\";\r\nimport { BadgeProps } from \"../Badge.types\";\r\n\r\nconst classes = {\r\n badge: \"badge\",\r\n\r\n primary: \"badge_primary\",\r\n secondary: \"badge_secondary\",\r\n tertiary: \"badge_tertiary\",\r\n quaternary: \"badge_quaternary\",\r\n clear: \"badge_clear\",\r\n\r\n success: \"badge_success\",\r\n error: \"badge_error\",\r\n warning: \"badge_warning\",\r\n\r\n xs: \"badge_xs\",\r\n small: \"badge_small\",\r\n medium: \"badge_medium\",\r\n large: \"badge_large\",\r\n xl: \"badge_xl\",\r\n\r\n shadowNone: \"badge_shadow-None\",\r\n shadowLight: \"badge_shadow-Light\",\r\n shadowMedium: \"badge_shadow-Medium\",\r\n shadowStrong: \"badge_shadow-Strong\",\r\n shadowIntense: \"badge_shadow-Intense\",\r\n\r\n roundNone: \"badge_round-None\",\r\n roundSmall: \"badge_round-Small\",\r\n roundMedium: \"badge_round-Medium\",\r\n roundLarge: \"badge_round-Large\",\r\n\r\n outline: \"badge_outline\",\r\n disabled: \"badge_disabled\",\r\n icon: \"badge_icon\",\r\n clickable: \"badge_clickable\",\r\n};\r\n\r\nconst Badge: React.FC<BadgeProps> = (props) => {\r\n return <BadgeBase {...props} classMap={classes} />;\r\n};\r\nBadge.displayName = \"Badge\";\r\nexport default Badge;\r\n"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@ const classNames = require("./classNames-BcWMx052.cjs");
5
5
  const capitalize = require("./capitalize-DoV-nOmN.cjs");
6
6
  const borealStyleConfig = require("./boreal-style-config-Rr5d5Qts.cjs");
7
7
  const BadgeBase = ({
8
- text,
9
8
  children,
9
+ ariaLabel,
10
10
  theme = borealStyleConfig.getDefaultTheme(),
11
11
  state = "",
12
12
  disabled = false,
@@ -23,9 +23,9 @@ const BadgeBase = ({
23
23
  href,
24
24
  ...rest
25
25
  }) => {
26
- if (!text && !children) return null;
27
- const content = children ?? text;
28
- const label = typeof content === "string" ? content : text;
26
+ if (children == null && !Icon) return null;
27
+ const isTextContent = typeof children === "string" || typeof children === "number";
28
+ const accessibleLabel = ariaLabel ?? (isTextContent ? String(children) : void 0);
29
29
  const combinedClassName = React.useMemo(
30
30
  () => classNames.combineClassNames(
31
31
  classMap.badge,
@@ -61,7 +61,6 @@ const BadgeBase = ({
61
61
  }
62
62
  onClick == null ? void 0 : onClick(e);
63
63
  };
64
- const needsAriaLabel = typeof content !== "string";
65
64
  const inner = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
66
65
  Icon && /* @__PURE__ */ jsxRuntime.jsx(
67
66
  Icon,
@@ -72,7 +71,7 @@ const BadgeBase = ({
72
71
  "data-testid": testId ? `${testId}-icon` : void 0
73
72
  }
74
73
  ),
75
- content
74
+ children
76
75
  ] });
77
76
  if (href) {
78
77
  const isHttp = /^https?:\/\//i.test(href);
@@ -84,8 +83,8 @@ const BadgeBase = ({
84
83
  onClick: handleClick,
85
84
  role: "status",
86
85
  "data-testid": testId ? `${testId}-main` : void 0,
87
- title: title ?? (typeof label === "string" ? label : void 0),
88
- ...needsAriaLabel ? { "aria-label": label } : {},
86
+ title: title ?? accessibleLabel,
87
+ ...accessibleLabel ? { "aria-label": accessibleLabel } : {},
89
88
  "aria-disabled": disabled || void 0,
90
89
  tabIndex: disabled ? -1 : 0,
91
90
  target: isHttp && !disabled ? "_blank" : void 0,
@@ -105,8 +104,8 @@ const BadgeBase = ({
105
104
  onClick: handleClick,
106
105
  disabled,
107
106
  "data-testid": testId ? `${testId}-main` : void 0,
108
- title: title ?? (typeof label === "string" ? label : void 0),
109
- ...needsAriaLabel ? { "aria-label": label } : {},
107
+ title: title ?? accessibleLabel,
108
+ ...accessibleLabel ? { "aria-label": accessibleLabel } : {},
110
109
  ...rest,
111
110
  children: inner
112
111
  }
@@ -117,9 +116,9 @@ const BadgeBase = ({
117
116
  {
118
117
  className: combinedClassName,
119
118
  "data-testid": testId ? `${testId}-main` : void 0,
120
- title: title ?? (typeof label === "string" ? label : void 0),
119
+ title: title ?? accessibleLabel,
121
120
  role: "status",
122
- ...needsAriaLabel ? { "aria-label": label } : {},
121
+ ...accessibleLabel ? { "aria-label": accessibleLabel } : {},
123
122
  children: inner
124
123
  }
125
124
  );
@@ -158,4 +157,4 @@ const Badge = (props) => {
158
157
  };
159
158
  Badge.displayName = "Badge";
160
159
  exports.Badge = Badge;
161
- //# sourceMappingURL=Badge-CyGz8K5W.cjs.map
160
+ //# sourceMappingURL=Badge-tFIHQcKi.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge-tFIHQcKi.cjs","sources":["../../src/components/Badge/BadgeBase.tsx","../../src/components/Badge/core/Badge.tsx"],"sourcesContent":["import React, { useMemo, MouseEvent } from \"react\";\r\nimport { BadgeBaseProps } from \"./Badge.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\nexport const BadgeBase: React.FC<BadgeBaseProps> = ({\r\n children,\r\n ariaLabel,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n disabled = false,\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n title,\r\n size = getDefaultSize(),\r\n outline = false,\r\n icon: Icon,\r\n className = \"\",\r\n classMap,\r\n \"data-testid\": testId = \"badge\",\r\n onClick,\r\n href,\r\n ...rest\r\n}: BadgeBaseProps) => {\r\n if (children == null && !Icon) return null;\r\n\r\n const isTextContent =\r\n typeof children === \"string\" || typeof children === \"number\";\r\n\r\n const accessibleLabel =\r\n ariaLabel ?? (isTextContent ? String(children) : undefined);\r\n\r\n const combinedClassName = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.badge,\r\n classMap[size],\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n disabled && classMap.disabled,\r\n outline && classMap.outline,\r\n onClick && classMap.clickable,\r\n className,\r\n ),\r\n [\r\n size,\r\n theme,\r\n state,\r\n shadow,\r\n rounding,\r\n disabled,\r\n outline,\r\n onClick,\r\n href,\r\n className,\r\n classMap,\r\n ],\r\n );\r\n\r\n const handleClick = (e: MouseEvent<HTMLElement>) => {\r\n if (disabled) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return;\r\n }\r\n onClick?.(e as MouseEvent<HTMLButtonElement | HTMLAnchorElement>);\r\n };\r\n\r\n const inner = (\r\n <>\r\n {Icon && (\r\n <Icon\r\n className={classMap.badge_icon}\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n data-testid={testId ? `${testId}-icon` : undefined}\r\n />\r\n )}\r\n {children}\r\n </>\r\n );\r\n\r\n if (href) {\r\n const isHttp = /^https?:\\/\\//i.test(href);\r\n return (\r\n <a\r\n href={disabled ? undefined : href}\r\n className={combinedClassName}\r\n onClick={handleClick}\r\n role=\"status\"\r\n data-testid={testId ? `${testId}-main` : undefined}\r\n title={title ?? accessibleLabel}\r\n {...(accessibleLabel ? { \"aria-label\": accessibleLabel } : {})}\r\n aria-disabled={disabled || undefined}\r\n tabIndex={disabled ? -1 : 0}\r\n target={isHttp && !disabled ? \"_blank\" : undefined}\r\n rel={isHttp && !disabled ? \"noopener noreferrer\" : undefined}\r\n {...(rest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\r\n >\r\n {inner}\r\n </a>\r\n );\r\n }\r\n\r\n if (onClick) {\r\n return (\r\n <button\r\n type=\"button\"\r\n className={combinedClassName}\r\n role=\"status\"\r\n onClick={handleClick}\r\n disabled={disabled}\r\n data-testid={testId ? `${testId}-main` : undefined}\r\n title={title ?? accessibleLabel}\r\n {...(accessibleLabel ? { \"aria-label\": accessibleLabel } : {})}\r\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\r\n >\r\n {inner}\r\n </button>\r\n );\r\n }\r\n\r\n return (\r\n <span\r\n className={combinedClassName}\r\n data-testid={testId ? `${testId}-main` : undefined}\r\n title={title ?? accessibleLabel}\r\n role=\"status\"\r\n {...(accessibleLabel ? { \"aria-label\": accessibleLabel } : {})}\r\n >\r\n {inner}\r\n </span>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport \"./Badge.scss\";\r\nimport { BadgeBase } from \"../BadgeBase\";\r\nimport { BadgeProps } from \"../Badge.types\";\r\n\r\nconst classes = {\r\n badge: \"badge\",\r\n\r\n primary: \"badge_primary\",\r\n secondary: \"badge_secondary\",\r\n tertiary: \"badge_tertiary\",\r\n quaternary: \"badge_quaternary\",\r\n clear: \"badge_clear\",\r\n\r\n success: \"badge_success\",\r\n error: \"badge_error\",\r\n warning: \"badge_warning\",\r\n\r\n xs: \"badge_xs\",\r\n small: \"badge_small\",\r\n medium: \"badge_medium\",\r\n large: \"badge_large\",\r\n xl: \"badge_xl\",\r\n\r\n shadowNone: \"badge_shadow-None\",\r\n shadowLight: \"badge_shadow-Light\",\r\n shadowMedium: \"badge_shadow-Medium\",\r\n shadowStrong: \"badge_shadow-Strong\",\r\n shadowIntense: \"badge_shadow-Intense\",\r\n\r\n roundNone: \"badge_round-None\",\r\n roundSmall: \"badge_round-Small\",\r\n roundMedium: \"badge_round-Medium\",\r\n roundLarge: \"badge_round-Large\",\r\n\r\n outline: \"badge_outline\",\r\n disabled: \"badge_disabled\",\r\n icon: \"badge_icon\",\r\n clickable: \"badge_clickable\",\r\n};\r\n\r\nconst Badge: React.FC<BadgeProps> = (props) => {\r\n return <BadgeBase {...props} classMap={classes} />;\r\n};\r\nBadge.displayName = \"Badge\";\r\nexport default Badge;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","getDefaultSize","useMemo","combineClassNames","capitalize","jsxs","Fragment","jsx"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const Badge = require("./Badge-CyGz8K5W.cjs");
2
+ const Badge = require("./Badge-tFIHQcKi.cjs");
3
3
  module.exports = Badge.Badge;
4
4
  //# sourceMappingURL=Badge.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { B } from "./Badge-DnE8lt7-.js";
1
+ import { B } from "./Badge-C0Twrrjc.js";
2
2
  export {
3
3
  B as default
4
4
  };
@@ -4,7 +4,7 @@ import ReactDOM from "react-dom";
4
4
  import { c as combineClassNames } from "./classNames-AS8QjFq7.js";
5
5
  import { c as capitalize } from "./capitalize-C0TSQSPh.js";
6
6
  import { a as getDefaultRounding, d as getDefaultTheme, b as getDefaultShadow } from "./boreal-style-config-BILmxkZG.js";
7
- import { T as TextInput } from "./TextInput-BiB2ml8J.js";
7
+ import { T as TextInput } from "./TextInput-lFozK5mA.js";
8
8
  const CommandPaletteBase = ({
9
9
  commands,
10
10
  placeholder = "Search...",
@@ -264,4 +264,4 @@ CommandPalette.displayName = "CommandPalette";
264
264
  export {
265
265
  CommandPalette as C
266
266
  };
267
- //# sourceMappingURL=CommandPalette-CDrgdLqM.js.map
267
+ //# sourceMappingURL=CommandPalette-BcPsaNIk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette-CDrgdLqM.js","sources":["../../src/components/CommandPalette/CommandPaletteBase.tsx","../../src/components/CommandPalette/core/CommandPalette.tsx"],"sourcesContent":["import React, {\r\n useEffect,\r\n useRef,\r\n useState,\r\n useCallback,\r\n KeyboardEvent,\r\n} from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport type { CommandPaletteProps } from \"./CommandPalette.types\";\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\nexport interface CommandPaletteBaseProps extends CommandPaletteProps {\r\n classMap: Record<string, string>;\r\n TextInputComponent: React.ElementType;\r\n}\r\n\r\nconst CommandPaletteBase: React.FC<CommandPaletteBaseProps> = ({\r\n commands,\r\n placeholder = \"Search...\",\r\n isOpen,\r\n onClose,\r\n asyncSearch,\r\n debounceMs = 300,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n classMap,\r\n TextInputComponent,\r\n \"data-testid\": testId = \"command-palette\",\r\n className,\r\n}) => {\r\n const [query, setQuery] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const [mounted, setMounted] = useState(false);\r\n const [portalElement, setPortalElement] = useState<HTMLElement | null>(null);\r\n const [asyncResults, setAsyncResults] = useState<typeof commands>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const prevFocusRef = useRef<HTMLElement | null>(null);\r\n\r\n const filtered = asyncSearch\r\n ? asyncResults\r\n : commands.filter((cmd) =>\r\n cmd.label.toLowerCase().includes(query.toLowerCase())\r\n );\r\n\r\n useEffect(() => {\r\n if (filtered.length === 0) {\r\n setActiveIndex(-1);\r\n } else if (activeIndex < 0 || activeIndex >= filtered.length) {\r\n setActiveIndex(0);\r\n }\r\n }, [filtered, activeIndex]);\r\n\r\n useEffect(() => {\r\n if (!asyncSearch) return;\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n const q = query.trim();\r\n if (!q) {\r\n setAsyncResults([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n debounceRef.current = setTimeout(() => {\r\n asyncSearch(q)\r\n .then((results) => {\r\n setAsyncResults(results);\r\n setIsLoading(false);\r\n })\r\n .catch(() => {\r\n setAsyncResults([]);\r\n setIsLoading(false);\r\n });\r\n }, debounceMs);\r\n\r\n return () => {\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n };\r\n }, [query, asyncSearch, debounceMs]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n setMounted(true);\r\n prevFocusRef.current = (document.activeElement as HTMLElement) ?? null;\r\n\r\n const portal =\r\n document.getElementById(\"widget-portal\") ||\r\n (() => {\r\n const el = document.createElement(\"div\");\r\n el.id = \"widget-portal\";\r\n document.body.appendChild(el);\r\n return el;\r\n })();\r\n\r\n setPortalElement(portal);\r\n document.body.classList.add(\"noScroll\");\r\n\r\n return () => {\r\n document.body.classList.remove(\"noScroll\");\r\n setQuery(\"\");\r\n setActiveIndex(-1);\r\n setMounted(false);\r\n prevFocusRef.current?.focus?.();\r\n };\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (isOpen && inputRef.current) inputRef.current.focus();\r\n }, [isOpen]);\r\n\r\n const handleKeyDown = useCallback(\r\n (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n if (filtered.length === 0) return;\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev + 1) % filtered.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n if (filtered.length === 0) return;\r\n e.preventDefault();\r\n setActiveIndex(\r\n (prev) => (prev - 1 + filtered.length) % filtered.length\r\n );\r\n } else if (e.key === \"Enter\") {\r\n if (activeIndex >= 0 && filtered[activeIndex]) {\r\n filtered[activeIndex].action();\r\n onClose();\r\n }\r\n } else if (e.key === \"Escape\") {\r\n onClose();\r\n }\r\n },\r\n [filtered, activeIndex, onClose]\r\n );\r\n\r\n const handleContainerKeyDown = useCallback(\r\n (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key === \"Escape\") onClose();\r\n },\r\n [onClose]\r\n );\r\n\r\n if (!isOpen || !mounted || !portalElement) return null;\r\n\r\n const listId = `${testId}-list`;\r\n\r\n return ReactDOM.createPortal(\r\n <div\r\n className={classMap.overlay}\r\n onClick={onClose}\r\n data-testid={`${testId}-overlay`}\r\n >\r\n <div\r\n className={combineClassNames(\r\n classMap.command_palette,\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n )}\r\n onClick={(e) => e.stopPropagation()}\r\n onKeyDown={handleContainerKeyDown}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label=\"Command palette\"\r\n data-testid={testId}\r\n >\r\n <TextInputComponent\r\n ref={inputRef}\r\n type=\"text\"\r\n value={query}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\r\n setQuery(e.target.value)\r\n }\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n theme={theme}\r\n state={state}\r\n shadow={\"none\"}\r\n rounding={rounding}\r\n className={classMap.input}\r\n data-testid={`${testId}-input`}\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n aria-haspopup=\"listbox\"\r\n aria-expanded={filtered.length > 0}\r\n aria-controls={listId}\r\n aria-activedescendant={\r\n activeIndex >= 0 ? `cmd-${activeIndex}` : undefined\r\n }\r\n />\r\n\r\n <ul\r\n id={listId}\r\n className={classMap.list}\r\n role=\"listbox\"\r\n aria-label=\"Command suggestions\"\r\n aria-busy={isLoading || undefined}\r\n >\r\n {isLoading ? (\r\n <li\r\n className={combineClassNames(classMap.item, classMap.empty)}\r\n role=\"option\"\r\n aria-disabled=\"true\"\r\n aria-selected=\"false\"\r\n >\r\n Searching…\r\n </li>\r\n ) : filtered.length > 0 ? (\r\n filtered.map((cmd, index) => (\r\n <li\r\n key={`${cmd.label}-${index}`}\r\n id={`cmd-${index}`}\r\n role=\"option\"\r\n aria-selected={index === activeIndex}\r\n className={combineClassNames(\r\n classMap.item,\r\n classMap[theme],\r\n index === activeIndex && classMap.active\r\n )}\r\n onClick={() => {\r\n cmd.action();\r\n onClose();\r\n }}\r\n >\r\n {cmd.icon && (\r\n <span className={classMap.icon} aria-hidden=\"true\">\r\n {cmd.icon}\r\n </span>\r\n )}\r\n {cmd.label}\r\n </li>\r\n ))\r\n ) : (\r\n <li\r\n role=\"option\"\r\n aria-selected=\"false\"\r\n aria-disabled=\"true\"\r\n className={combineClassNames(classMap.item, classMap.empty)}\r\n >\r\n No matching results\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n </div>,\r\n portalElement\r\n );\r\n};\r\nCommandPaletteBase.displayName = \"CommandPaletteBase\";\r\nexport default CommandPaletteBase;\r\n","import React from \"react\";\r\nimport CommandPaletteBase from \"../CommandPaletteBase\";\r\nimport \"./CommandPalette.scss\";\r\nimport TextInput from \"../../TextInput/core/TextInput\";\r\nimport { CommandPaletteProps } from \"../CommandPalette.types\";\r\n\r\nconst classes = {\r\n overlay: \"command_palette_overlay\",\r\n command_palette: \"command_palette\",\r\n input: \"command_palette_input\",\r\n list: \"command_palette_list\",\r\n item: \"command_palette_item\",\r\n icon: \"command_palette_icon\",\r\n active: \"command_palette_active\",\r\n empty: \"command_palette_empty\",\r\n\r\n primary: \"command_palette_primary\",\r\n secondary: \"command_palette_secondary\",\r\n tertiary: \"command_palette_tertiary\",\r\n quaternary: \"command_palette_quaternary\",\r\n\r\n success: \"command_palette_success\",\r\n error: \"command_palette_error\",\r\n warning: \"command_palette_warning\",\r\n\r\n clear: \"command_palette_clear\",\r\n\r\n shadowNone: \"command_palette_shadow-None\",\r\n shadowLight: \"command_palette_shadow-Light\",\r\n shadowMedium: \"command_palette_shadow-Medium\",\r\n shadowStrong: \"command_palette_shadow-Strong\",\r\n shadowIntense: \"command_palette_shadow-Intense\",\r\n\r\n roundNone: \"command_palette_round-None\",\r\n roundSmall: \"command_palette_round-Small\",\r\n roundMedium: \"command_palette_round-Medium\",\r\n roundLarge: \"command_palette_round-Large\",\r\n};\r\n\r\nconst CommandPalette: React.FC<CommandPaletteProps> = (props) => (\r\n <CommandPaletteBase\r\n {...props}\r\n classMap={classes}\r\n TextInputComponent={TextInput}\r\n />\r\n);\r\nCommandPalette.displayName = \"CommandPalette\";\r\nexport default CommandPalette;\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandPalette-BcPsaNIk.js","sources":["../../src/components/CommandPalette/CommandPaletteBase.tsx","../../src/components/CommandPalette/core/CommandPalette.tsx"],"sourcesContent":["import React, {\r\n useEffect,\r\n useRef,\r\n useState,\r\n useCallback,\r\n KeyboardEvent,\r\n} from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport type { CommandPaletteProps } from \"./CommandPalette.types\";\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\nexport interface CommandPaletteBaseProps extends CommandPaletteProps {\r\n classMap: Record<string, string>;\r\n TextInputComponent: React.ElementType;\r\n}\r\n\r\nconst CommandPaletteBase: React.FC<CommandPaletteBaseProps> = ({\r\n commands,\r\n placeholder = \"Search...\",\r\n isOpen,\r\n onClose,\r\n asyncSearch,\r\n debounceMs = 300,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n classMap,\r\n TextInputComponent,\r\n \"data-testid\": testId = \"command-palette\",\r\n className,\r\n}) => {\r\n const [query, setQuery] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const [mounted, setMounted] = useState(false);\r\n const [portalElement, setPortalElement] = useState<HTMLElement | null>(null);\r\n const [asyncResults, setAsyncResults] = useState<typeof commands>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const prevFocusRef = useRef<HTMLElement | null>(null);\r\n\r\n const filtered = asyncSearch\r\n ? asyncResults\r\n : commands.filter((cmd) =>\r\n cmd.label.toLowerCase().includes(query.toLowerCase())\r\n );\r\n\r\n useEffect(() => {\r\n if (filtered.length === 0) {\r\n setActiveIndex(-1);\r\n } else if (activeIndex < 0 || activeIndex >= filtered.length) {\r\n setActiveIndex(0);\r\n }\r\n }, [filtered, activeIndex]);\r\n\r\n useEffect(() => {\r\n if (!asyncSearch) return;\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n const q = query.trim();\r\n if (!q) {\r\n setAsyncResults([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n debounceRef.current = setTimeout(() => {\r\n asyncSearch(q)\r\n .then((results) => {\r\n setAsyncResults(results);\r\n setIsLoading(false);\r\n })\r\n .catch(() => {\r\n setAsyncResults([]);\r\n setIsLoading(false);\r\n });\r\n }, debounceMs);\r\n\r\n return () => {\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n };\r\n }, [query, asyncSearch, debounceMs]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n setMounted(true);\r\n prevFocusRef.current = (document.activeElement as HTMLElement) ?? null;\r\n\r\n const portal =\r\n document.getElementById(\"widget-portal\") ||\r\n (() => {\r\n const el = document.createElement(\"div\");\r\n el.id = \"widget-portal\";\r\n document.body.appendChild(el);\r\n return el;\r\n })();\r\n\r\n setPortalElement(portal);\r\n document.body.classList.add(\"noScroll\");\r\n\r\n return () => {\r\n document.body.classList.remove(\"noScroll\");\r\n setQuery(\"\");\r\n setActiveIndex(-1);\r\n setMounted(false);\r\n prevFocusRef.current?.focus?.();\r\n };\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (isOpen && inputRef.current) inputRef.current.focus();\r\n }, [isOpen]);\r\n\r\n const handleKeyDown = useCallback(\r\n (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n if (filtered.length === 0) return;\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev + 1) % filtered.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n if (filtered.length === 0) return;\r\n e.preventDefault();\r\n setActiveIndex(\r\n (prev) => (prev - 1 + filtered.length) % filtered.length\r\n );\r\n } else if (e.key === \"Enter\") {\r\n if (activeIndex >= 0 && filtered[activeIndex]) {\r\n filtered[activeIndex].action();\r\n onClose();\r\n }\r\n } else if (e.key === \"Escape\") {\r\n onClose();\r\n }\r\n },\r\n [filtered, activeIndex, onClose]\r\n );\r\n\r\n const handleContainerKeyDown = useCallback(\r\n (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key === \"Escape\") onClose();\r\n },\r\n [onClose]\r\n );\r\n\r\n if (!isOpen || !mounted || !portalElement) return null;\r\n\r\n const listId = `${testId}-list`;\r\n\r\n return ReactDOM.createPortal(\r\n <div\r\n className={classMap.overlay}\r\n onClick={onClose}\r\n data-testid={`${testId}-overlay`}\r\n >\r\n <div\r\n className={combineClassNames(\r\n classMap.command_palette,\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n )}\r\n onClick={(e) => e.stopPropagation()}\r\n onKeyDown={handleContainerKeyDown}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label=\"Command palette\"\r\n data-testid={testId}\r\n >\r\n <TextInputComponent\r\n ref={inputRef}\r\n type=\"text\"\r\n value={query}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\r\n setQuery(e.target.value)\r\n }\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n theme={theme}\r\n state={state}\r\n shadow={\"none\"}\r\n rounding={rounding}\r\n className={classMap.input}\r\n data-testid={`${testId}-input`}\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n aria-haspopup=\"listbox\"\r\n aria-expanded={filtered.length > 0}\r\n aria-controls={listId}\r\n aria-activedescendant={\r\n activeIndex >= 0 ? `cmd-${activeIndex}` : undefined\r\n }\r\n />\r\n\r\n <ul\r\n id={listId}\r\n className={classMap.list}\r\n role=\"listbox\"\r\n aria-label=\"Command suggestions\"\r\n aria-busy={isLoading || undefined}\r\n >\r\n {isLoading ? (\r\n <li\r\n className={combineClassNames(classMap.item, classMap.empty)}\r\n role=\"option\"\r\n aria-disabled=\"true\"\r\n aria-selected=\"false\"\r\n >\r\n Searching…\r\n </li>\r\n ) : filtered.length > 0 ? (\r\n filtered.map((cmd, index) => (\r\n <li\r\n key={`${cmd.label}-${index}`}\r\n id={`cmd-${index}`}\r\n role=\"option\"\r\n aria-selected={index === activeIndex}\r\n className={combineClassNames(\r\n classMap.item,\r\n classMap[theme],\r\n index === activeIndex && classMap.active\r\n )}\r\n onClick={() => {\r\n cmd.action();\r\n onClose();\r\n }}\r\n >\r\n {cmd.icon && (\r\n <span className={classMap.icon} aria-hidden=\"true\">\r\n {cmd.icon}\r\n </span>\r\n )}\r\n {cmd.label}\r\n </li>\r\n ))\r\n ) : (\r\n <li\r\n role=\"option\"\r\n aria-selected=\"false\"\r\n aria-disabled=\"true\"\r\n className={combineClassNames(classMap.item, classMap.empty)}\r\n >\r\n No matching results\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n </div>,\r\n portalElement\r\n );\r\n};\r\nCommandPaletteBase.displayName = \"CommandPaletteBase\";\r\nexport default CommandPaletteBase;\r\n","import React from \"react\";\r\nimport CommandPaletteBase from \"../CommandPaletteBase\";\r\nimport \"./CommandPalette.scss\";\r\nimport TextInput from \"../../TextInput/core/TextInput\";\r\nimport { CommandPaletteProps } from \"../CommandPalette.types\";\r\n\r\nconst classes = {\r\n overlay: \"command_palette_overlay\",\r\n command_palette: \"command_palette\",\r\n input: \"command_palette_input\",\r\n list: \"command_palette_list\",\r\n item: \"command_palette_item\",\r\n icon: \"command_palette_icon\",\r\n active: \"command_palette_active\",\r\n empty: \"command_palette_empty\",\r\n\r\n primary: \"command_palette_primary\",\r\n secondary: \"command_palette_secondary\",\r\n tertiary: \"command_palette_tertiary\",\r\n quaternary: \"command_palette_quaternary\",\r\n\r\n success: \"command_palette_success\",\r\n error: \"command_palette_error\",\r\n warning: \"command_palette_warning\",\r\n\r\n clear: \"command_palette_clear\",\r\n\r\n shadowNone: \"command_palette_shadow-None\",\r\n shadowLight: \"command_palette_shadow-Light\",\r\n shadowMedium: \"command_palette_shadow-Medium\",\r\n shadowStrong: \"command_palette_shadow-Strong\",\r\n shadowIntense: \"command_palette_shadow-Intense\",\r\n\r\n roundNone: \"command_palette_round-None\",\r\n roundSmall: \"command_palette_round-Small\",\r\n roundMedium: \"command_palette_round-Medium\",\r\n roundLarge: \"command_palette_round-Large\",\r\n};\r\n\r\nconst CommandPalette: React.FC<CommandPaletteProps> = (props) => (\r\n <CommandPaletteBase\r\n {...props}\r\n classMap={classes}\r\n TextInputComponent={TextInput}\r\n />\r\n);\r\nCommandPalette.displayName = \"CommandPalette\";\r\nexport default CommandPalette;\r\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ const ReactDOM = require("react-dom");
5
5
  const classNames = require("./classNames-BcWMx052.cjs");
6
6
  const capitalize = require("./capitalize-DoV-nOmN.cjs");
7
7
  const borealStyleConfig = require("./boreal-style-config-Rr5d5Qts.cjs");
8
- const TextInput = require("./TextInput-DK7uh51U.cjs");
8
+ const TextInput = require("./TextInput-DcONHL6m.cjs");
9
9
  const CommandPaletteBase = ({
10
10
  commands,
11
11
  placeholder = "Search...",
@@ -263,4 +263,4 @@ const CommandPalette = (props) => /* @__PURE__ */ jsxRuntime.jsx(
263
263
  );
264
264
  CommandPalette.displayName = "CommandPalette";
265
265
  exports.CommandPalette = CommandPalette;
266
- //# sourceMappingURL=CommandPalette-va8rXgrv.cjs.map
266
+ //# sourceMappingURL=CommandPalette-Cv79G0W9.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette-va8rXgrv.cjs","sources":["../../src/components/CommandPalette/CommandPaletteBase.tsx","../../src/components/CommandPalette/core/CommandPalette.tsx"],"sourcesContent":["import React, {\r\n useEffect,\r\n useRef,\r\n useState,\r\n useCallback,\r\n KeyboardEvent,\r\n} from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport type { CommandPaletteProps } from \"./CommandPalette.types\";\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\nexport interface CommandPaletteBaseProps extends CommandPaletteProps {\r\n classMap: Record<string, string>;\r\n TextInputComponent: React.ElementType;\r\n}\r\n\r\nconst CommandPaletteBase: React.FC<CommandPaletteBaseProps> = ({\r\n commands,\r\n placeholder = \"Search...\",\r\n isOpen,\r\n onClose,\r\n asyncSearch,\r\n debounceMs = 300,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n classMap,\r\n TextInputComponent,\r\n \"data-testid\": testId = \"command-palette\",\r\n className,\r\n}) => {\r\n const [query, setQuery] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const [mounted, setMounted] = useState(false);\r\n const [portalElement, setPortalElement] = useState<HTMLElement | null>(null);\r\n const [asyncResults, setAsyncResults] = useState<typeof commands>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const prevFocusRef = useRef<HTMLElement | null>(null);\r\n\r\n const filtered = asyncSearch\r\n ? asyncResults\r\n : commands.filter((cmd) =>\r\n cmd.label.toLowerCase().includes(query.toLowerCase())\r\n );\r\n\r\n useEffect(() => {\r\n if (filtered.length === 0) {\r\n setActiveIndex(-1);\r\n } else if (activeIndex < 0 || activeIndex >= filtered.length) {\r\n setActiveIndex(0);\r\n }\r\n }, [filtered, activeIndex]);\r\n\r\n useEffect(() => {\r\n if (!asyncSearch) return;\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n const q = query.trim();\r\n if (!q) {\r\n setAsyncResults([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n debounceRef.current = setTimeout(() => {\r\n asyncSearch(q)\r\n .then((results) => {\r\n setAsyncResults(results);\r\n setIsLoading(false);\r\n })\r\n .catch(() => {\r\n setAsyncResults([]);\r\n setIsLoading(false);\r\n });\r\n }, debounceMs);\r\n\r\n return () => {\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n };\r\n }, [query, asyncSearch, debounceMs]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n setMounted(true);\r\n prevFocusRef.current = (document.activeElement as HTMLElement) ?? null;\r\n\r\n const portal =\r\n document.getElementById(\"widget-portal\") ||\r\n (() => {\r\n const el = document.createElement(\"div\");\r\n el.id = \"widget-portal\";\r\n document.body.appendChild(el);\r\n return el;\r\n })();\r\n\r\n setPortalElement(portal);\r\n document.body.classList.add(\"noScroll\");\r\n\r\n return () => {\r\n document.body.classList.remove(\"noScroll\");\r\n setQuery(\"\");\r\n setActiveIndex(-1);\r\n setMounted(false);\r\n prevFocusRef.current?.focus?.();\r\n };\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (isOpen && inputRef.current) inputRef.current.focus();\r\n }, [isOpen]);\r\n\r\n const handleKeyDown = useCallback(\r\n (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n if (filtered.length === 0) return;\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev + 1) % filtered.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n if (filtered.length === 0) return;\r\n e.preventDefault();\r\n setActiveIndex(\r\n (prev) => (prev - 1 + filtered.length) % filtered.length\r\n );\r\n } else if (e.key === \"Enter\") {\r\n if (activeIndex >= 0 && filtered[activeIndex]) {\r\n filtered[activeIndex].action();\r\n onClose();\r\n }\r\n } else if (e.key === \"Escape\") {\r\n onClose();\r\n }\r\n },\r\n [filtered, activeIndex, onClose]\r\n );\r\n\r\n const handleContainerKeyDown = useCallback(\r\n (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key === \"Escape\") onClose();\r\n },\r\n [onClose]\r\n );\r\n\r\n if (!isOpen || !mounted || !portalElement) return null;\r\n\r\n const listId = `${testId}-list`;\r\n\r\n return ReactDOM.createPortal(\r\n <div\r\n className={classMap.overlay}\r\n onClick={onClose}\r\n data-testid={`${testId}-overlay`}\r\n >\r\n <div\r\n className={combineClassNames(\r\n classMap.command_palette,\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n )}\r\n onClick={(e) => e.stopPropagation()}\r\n onKeyDown={handleContainerKeyDown}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label=\"Command palette\"\r\n data-testid={testId}\r\n >\r\n <TextInputComponent\r\n ref={inputRef}\r\n type=\"text\"\r\n value={query}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\r\n setQuery(e.target.value)\r\n }\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n theme={theme}\r\n state={state}\r\n shadow={\"none\"}\r\n rounding={rounding}\r\n className={classMap.input}\r\n data-testid={`${testId}-input`}\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n aria-haspopup=\"listbox\"\r\n aria-expanded={filtered.length > 0}\r\n aria-controls={listId}\r\n aria-activedescendant={\r\n activeIndex >= 0 ? `cmd-${activeIndex}` : undefined\r\n }\r\n />\r\n\r\n <ul\r\n id={listId}\r\n className={classMap.list}\r\n role=\"listbox\"\r\n aria-label=\"Command suggestions\"\r\n aria-busy={isLoading || undefined}\r\n >\r\n {isLoading ? (\r\n <li\r\n className={combineClassNames(classMap.item, classMap.empty)}\r\n role=\"option\"\r\n aria-disabled=\"true\"\r\n aria-selected=\"false\"\r\n >\r\n Searching…\r\n </li>\r\n ) : filtered.length > 0 ? (\r\n filtered.map((cmd, index) => (\r\n <li\r\n key={`${cmd.label}-${index}`}\r\n id={`cmd-${index}`}\r\n role=\"option\"\r\n aria-selected={index === activeIndex}\r\n className={combineClassNames(\r\n classMap.item,\r\n classMap[theme],\r\n index === activeIndex && classMap.active\r\n )}\r\n onClick={() => {\r\n cmd.action();\r\n onClose();\r\n }}\r\n >\r\n {cmd.icon && (\r\n <span className={classMap.icon} aria-hidden=\"true\">\r\n {cmd.icon}\r\n </span>\r\n )}\r\n {cmd.label}\r\n </li>\r\n ))\r\n ) : (\r\n <li\r\n role=\"option\"\r\n aria-selected=\"false\"\r\n aria-disabled=\"true\"\r\n className={combineClassNames(classMap.item, classMap.empty)}\r\n >\r\n No matching results\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n </div>,\r\n portalElement\r\n );\r\n};\r\nCommandPaletteBase.displayName = \"CommandPaletteBase\";\r\nexport default CommandPaletteBase;\r\n","import React from \"react\";\r\nimport CommandPaletteBase from \"../CommandPaletteBase\";\r\nimport \"./CommandPalette.scss\";\r\nimport TextInput from \"../../TextInput/core/TextInput\";\r\nimport { CommandPaletteProps } from \"../CommandPalette.types\";\r\n\r\nconst classes = {\r\n overlay: \"command_palette_overlay\",\r\n command_palette: \"command_palette\",\r\n input: \"command_palette_input\",\r\n list: \"command_palette_list\",\r\n item: \"command_palette_item\",\r\n icon: \"command_palette_icon\",\r\n active: \"command_palette_active\",\r\n empty: \"command_palette_empty\",\r\n\r\n primary: \"command_palette_primary\",\r\n secondary: \"command_palette_secondary\",\r\n tertiary: \"command_palette_tertiary\",\r\n quaternary: \"command_palette_quaternary\",\r\n\r\n success: \"command_palette_success\",\r\n error: \"command_palette_error\",\r\n warning: \"command_palette_warning\",\r\n\r\n clear: \"command_palette_clear\",\r\n\r\n shadowNone: \"command_palette_shadow-None\",\r\n shadowLight: \"command_palette_shadow-Light\",\r\n shadowMedium: \"command_palette_shadow-Medium\",\r\n shadowStrong: \"command_palette_shadow-Strong\",\r\n shadowIntense: \"command_palette_shadow-Intense\",\r\n\r\n roundNone: \"command_palette_round-None\",\r\n roundSmall: \"command_palette_round-Small\",\r\n roundMedium: \"command_palette_round-Medium\",\r\n roundLarge: \"command_palette_round-Large\",\r\n};\r\n\r\nconst CommandPalette: React.FC<CommandPaletteProps> = (props) => (\r\n <CommandPaletteBase\r\n {...props}\r\n classMap={classes}\r\n TextInputComponent={TextInput}\r\n />\r\n);\r\nCommandPalette.displayName = \"CommandPalette\";\r\nexport default CommandPalette;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","useState","useRef","useEffect","useCallback","jsx","jsxs","combineClassNames","capitalize","TextInput"],"mappings":"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"}
1
+ {"version":3,"file":"CommandPalette-Cv79G0W9.cjs","sources":["../../src/components/CommandPalette/CommandPaletteBase.tsx","../../src/components/CommandPalette/core/CommandPalette.tsx"],"sourcesContent":["import React, {\r\n useEffect,\r\n useRef,\r\n useState,\r\n useCallback,\r\n KeyboardEvent,\r\n} from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport type { CommandPaletteProps } from \"./CommandPalette.types\";\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\nexport interface CommandPaletteBaseProps extends CommandPaletteProps {\r\n classMap: Record<string, string>;\r\n TextInputComponent: React.ElementType;\r\n}\r\n\r\nconst CommandPaletteBase: React.FC<CommandPaletteBaseProps> = ({\r\n commands,\r\n placeholder = \"Search...\",\r\n isOpen,\r\n onClose,\r\n asyncSearch,\r\n debounceMs = 300,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n classMap,\r\n TextInputComponent,\r\n \"data-testid\": testId = \"command-palette\",\r\n className,\r\n}) => {\r\n const [query, setQuery] = useState(\"\");\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n const [mounted, setMounted] = useState(false);\r\n const [portalElement, setPortalElement] = useState<HTMLElement | null>(null);\r\n const [asyncResults, setAsyncResults] = useState<typeof commands>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const prevFocusRef = useRef<HTMLElement | null>(null);\r\n\r\n const filtered = asyncSearch\r\n ? asyncResults\r\n : commands.filter((cmd) =>\r\n cmd.label.toLowerCase().includes(query.toLowerCase())\r\n );\r\n\r\n useEffect(() => {\r\n if (filtered.length === 0) {\r\n setActiveIndex(-1);\r\n } else if (activeIndex < 0 || activeIndex >= filtered.length) {\r\n setActiveIndex(0);\r\n }\r\n }, [filtered, activeIndex]);\r\n\r\n useEffect(() => {\r\n if (!asyncSearch) return;\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n const q = query.trim();\r\n if (!q) {\r\n setAsyncResults([]);\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n debounceRef.current = setTimeout(() => {\r\n asyncSearch(q)\r\n .then((results) => {\r\n setAsyncResults(results);\r\n setIsLoading(false);\r\n })\r\n .catch(() => {\r\n setAsyncResults([]);\r\n setIsLoading(false);\r\n });\r\n }, debounceMs);\r\n\r\n return () => {\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n };\r\n }, [query, asyncSearch, debounceMs]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n setMounted(true);\r\n prevFocusRef.current = (document.activeElement as HTMLElement) ?? null;\r\n\r\n const portal =\r\n document.getElementById(\"widget-portal\") ||\r\n (() => {\r\n const el = document.createElement(\"div\");\r\n el.id = \"widget-portal\";\r\n document.body.appendChild(el);\r\n return el;\r\n })();\r\n\r\n setPortalElement(portal);\r\n document.body.classList.add(\"noScroll\");\r\n\r\n return () => {\r\n document.body.classList.remove(\"noScroll\");\r\n setQuery(\"\");\r\n setActiveIndex(-1);\r\n setMounted(false);\r\n prevFocusRef.current?.focus?.();\r\n };\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (isOpen && inputRef.current) inputRef.current.focus();\r\n }, [isOpen]);\r\n\r\n const handleKeyDown = useCallback(\r\n (e: KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n if (filtered.length === 0) return;\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev + 1) % filtered.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n if (filtered.length === 0) return;\r\n e.preventDefault();\r\n setActiveIndex(\r\n (prev) => (prev - 1 + filtered.length) % filtered.length\r\n );\r\n } else if (e.key === \"Enter\") {\r\n if (activeIndex >= 0 && filtered[activeIndex]) {\r\n filtered[activeIndex].action();\r\n onClose();\r\n }\r\n } else if (e.key === \"Escape\") {\r\n onClose();\r\n }\r\n },\r\n [filtered, activeIndex, onClose]\r\n );\r\n\r\n const handleContainerKeyDown = useCallback(\r\n (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (e.key === \"Escape\") onClose();\r\n },\r\n [onClose]\r\n );\r\n\r\n if (!isOpen || !mounted || !portalElement) return null;\r\n\r\n const listId = `${testId}-list`;\r\n\r\n return ReactDOM.createPortal(\r\n <div\r\n className={classMap.overlay}\r\n onClick={onClose}\r\n data-testid={`${testId}-overlay`}\r\n >\r\n <div\r\n className={combineClassNames(\r\n classMap.command_palette,\r\n classMap[theme],\r\n classMap[state],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n className\r\n )}\r\n onClick={(e) => e.stopPropagation()}\r\n onKeyDown={handleContainerKeyDown}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label=\"Command palette\"\r\n data-testid={testId}\r\n >\r\n <TextInputComponent\r\n ref={inputRef}\r\n type=\"text\"\r\n value={query}\r\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\r\n setQuery(e.target.value)\r\n }\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n theme={theme}\r\n state={state}\r\n shadow={\"none\"}\r\n rounding={rounding}\r\n className={classMap.input}\r\n data-testid={`${testId}-input`}\r\n role=\"combobox\"\r\n aria-autocomplete=\"list\"\r\n aria-haspopup=\"listbox\"\r\n aria-expanded={filtered.length > 0}\r\n aria-controls={listId}\r\n aria-activedescendant={\r\n activeIndex >= 0 ? `cmd-${activeIndex}` : undefined\r\n }\r\n />\r\n\r\n <ul\r\n id={listId}\r\n className={classMap.list}\r\n role=\"listbox\"\r\n aria-label=\"Command suggestions\"\r\n aria-busy={isLoading || undefined}\r\n >\r\n {isLoading ? (\r\n <li\r\n className={combineClassNames(classMap.item, classMap.empty)}\r\n role=\"option\"\r\n aria-disabled=\"true\"\r\n aria-selected=\"false\"\r\n >\r\n Searching…\r\n </li>\r\n ) : filtered.length > 0 ? (\r\n filtered.map((cmd, index) => (\r\n <li\r\n key={`${cmd.label}-${index}`}\r\n id={`cmd-${index}`}\r\n role=\"option\"\r\n aria-selected={index === activeIndex}\r\n className={combineClassNames(\r\n classMap.item,\r\n classMap[theme],\r\n index === activeIndex && classMap.active\r\n )}\r\n onClick={() => {\r\n cmd.action();\r\n onClose();\r\n }}\r\n >\r\n {cmd.icon && (\r\n <span className={classMap.icon} aria-hidden=\"true\">\r\n {cmd.icon}\r\n </span>\r\n )}\r\n {cmd.label}\r\n </li>\r\n ))\r\n ) : (\r\n <li\r\n role=\"option\"\r\n aria-selected=\"false\"\r\n aria-disabled=\"true\"\r\n className={combineClassNames(classMap.item, classMap.empty)}\r\n >\r\n No matching results\r\n </li>\r\n )}\r\n </ul>\r\n </div>\r\n </div>,\r\n portalElement\r\n );\r\n};\r\nCommandPaletteBase.displayName = \"CommandPaletteBase\";\r\nexport default CommandPaletteBase;\r\n","import React from \"react\";\r\nimport CommandPaletteBase from \"../CommandPaletteBase\";\r\nimport \"./CommandPalette.scss\";\r\nimport TextInput from \"../../TextInput/core/TextInput\";\r\nimport { CommandPaletteProps } from \"../CommandPalette.types\";\r\n\r\nconst classes = {\r\n overlay: \"command_palette_overlay\",\r\n command_palette: \"command_palette\",\r\n input: \"command_palette_input\",\r\n list: \"command_palette_list\",\r\n item: \"command_palette_item\",\r\n icon: \"command_palette_icon\",\r\n active: \"command_palette_active\",\r\n empty: \"command_palette_empty\",\r\n\r\n primary: \"command_palette_primary\",\r\n secondary: \"command_palette_secondary\",\r\n tertiary: \"command_palette_tertiary\",\r\n quaternary: \"command_palette_quaternary\",\r\n\r\n success: \"command_palette_success\",\r\n error: \"command_palette_error\",\r\n warning: \"command_palette_warning\",\r\n\r\n clear: \"command_palette_clear\",\r\n\r\n shadowNone: \"command_palette_shadow-None\",\r\n shadowLight: \"command_palette_shadow-Light\",\r\n shadowMedium: \"command_palette_shadow-Medium\",\r\n shadowStrong: \"command_palette_shadow-Strong\",\r\n shadowIntense: \"command_palette_shadow-Intense\",\r\n\r\n roundNone: \"command_palette_round-None\",\r\n roundSmall: \"command_palette_round-Small\",\r\n roundMedium: \"command_palette_round-Medium\",\r\n roundLarge: \"command_palette_round-Large\",\r\n};\r\n\r\nconst CommandPalette: React.FC<CommandPaletteProps> = (props) => (\r\n <CommandPaletteBase\r\n {...props}\r\n classMap={classes}\r\n TextInputComponent={TextInput}\r\n />\r\n);\r\nCommandPalette.displayName = \"CommandPalette\";\r\nexport default CommandPalette;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","useState","useRef","useEffect","useCallback","jsx","jsxs","combineClassNames","capitalize","TextInput"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const CommandPalette = require("./CommandPalette-va8rXgrv.cjs");
2
+ const CommandPalette = require("./CommandPalette-Cv79G0W9.cjs");
3
3
  module.exports = CommandPalette.CommandPalette;
4
4
  //# sourceMappingURL=CommandPalette.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { C } from "./CommandPalette-CDrgdLqM.js";
1
+ import { C } from "./CommandPalette-BcPsaNIk.js";
2
2
  export {
3
3
  C as default
4
4
  };
@@ -6,7 +6,7 @@ const borealStyleConfig = require("./boreal-style-config-Rr5d5Qts.cjs");
6
6
  const capitalize = require("./capitalize-DoV-nOmN.cjs");
7
7
  const IconButton = require("./IconButton-Bio6Azm-.cjs");
8
8
  const Select = require("./Select-CeGp-Feb.cjs");
9
- const ThemeContext = require("./ThemeContext-C-0mwEv4.cjs");
9
+ const ThemeContext = require("./ThemeContext-DOlnx89D.cjs");
10
10
  const UserThemeSettings = React.forwardRef(
11
11
  ({
12
12
  theme = borealStyleConfig.getDefaultTheme(),
@@ -214,4 +214,4 @@ const Footer = (props) => {
214
214
  Footer.displayName = "Footer";
215
215
  exports.Footer = Footer;
216
216
  exports.UserThemeSettings = UserThemeSettings;
217
- //# sourceMappingURL=Footer-D7XF9Pd_.cjs.map
217
+ //# sourceMappingURL=Footer-B9J4a1Ro.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer-D7XF9Pd_.cjs","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 ariaLabel=\"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 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 v: unknown\r\n ): v is { src: string; width?: number; height?: number } =>\r\n typeof v === \"object\" &&\r\n v !== null &&\r\n \"src\" in (v 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 className={footerClass} data-testid={testId} role=\"contentinfo\">\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=\"Logo\"\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=\"Logo\"\r\n height={logoH}\r\n width={logoW}\r\n />\r\n )\r\n ) : (\r\n <span\r\n className={classMap.logo}\r\n role=\"img\"\r\n aria-label=\"Logo\"\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 )}\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>{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=\"Footer site links\"\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 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 >\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 >\r\n <ThemeSelect theme=\"clear\" shadow=\"none\" aria-label=\"Theme\" />\r\n </div>\r\n )}\r\n\r\n {socialLinks.length > 0 && (\r\n <nav\r\n className={classMap.social}\r\n aria-label=\"Social media\"\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\r\n shadow=\"none\"\r\n ariaLabel={social.title}\r\n title={social.title}\r\n theme=\"clear\"\r\n data-testid={`${testId}-social-${social.title.toLowerCase().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":["forwardRef","getDefaultTheme","getDefaultShadow","getDefaultRounding","useContext","ThemeContext","useMemo","jsx","Select","IconButton","combineClassNames","capitalize","jsxs","ThemeSelect"],"mappings":"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"}
1
+ {"version":3,"file":"Footer-B9J4a1Ro.cjs","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 ariaLabel=\"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 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 v: unknown\r\n ): v is { src: string; width?: number; height?: number } =>\r\n typeof v === \"object\" &&\r\n v !== null &&\r\n \"src\" in (v 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 className={footerClass} data-testid={testId} role=\"contentinfo\">\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=\"Logo\"\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=\"Logo\"\r\n height={logoH}\r\n width={logoW}\r\n />\r\n )\r\n ) : (\r\n <span\r\n className={classMap.logo}\r\n role=\"img\"\r\n aria-label=\"Logo\"\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 )}\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>{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=\"Footer site links\"\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 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 >\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 >\r\n <ThemeSelect theme=\"clear\" shadow=\"none\" aria-label=\"Theme\" />\r\n </div>\r\n )}\r\n\r\n {socialLinks.length > 0 && (\r\n <nav\r\n className={classMap.social}\r\n aria-label=\"Social media\"\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\r\n shadow=\"none\"\r\n ariaLabel={social.title}\r\n title={social.title}\r\n theme=\"clear\"\r\n data-testid={`${testId}-social-${social.title.toLowerCase().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":["forwardRef","getDefaultTheme","getDefaultShadow","getDefaultRounding","useContext","ThemeContext","useMemo","jsx","Select","IconButton","combineClassNames","capitalize","jsxs","ThemeSelect"],"mappings":"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"}
@@ -5,7 +5,7 @@ import { a as getDefaultRounding, b as getDefaultShadow, d as getDefaultTheme }
5
5
  import { c as capitalize } from "./capitalize-C0TSQSPh.js";
6
6
  import { I as IconButton } from "./IconButton-BMZhwYXB.js";
7
7
  import { S as Select } from "./Select-DnCmFsPq.js";
8
- import { a as ThemeContext } from "./ThemeContext-BEYRgPZ9.js";
8
+ import { a as ThemeContext } from "./ThemeContext-BsFZ0Cl7.js";
9
9
  const UserThemeSettings = forwardRef(
10
10
  ({
11
11
  theme = getDefaultTheme(),
@@ -215,4 +215,4 @@ export {
215
215
  Footer as F,
216
216
  UserThemeSettings as U
217
217
  };
218
- //# sourceMappingURL=Footer-DIqYxkhA.js.map
218
+ //# sourceMappingURL=Footer-gOtEBvFb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Footer-DIqYxkhA.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 ariaLabel=\"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 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 v: unknown\r\n ): v is { src: string; width?: number; height?: number } =>\r\n typeof v === \"object\" &&\r\n v !== null &&\r\n \"src\" in (v 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 className={footerClass} data-testid={testId} role=\"contentinfo\">\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=\"Logo\"\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=\"Logo\"\r\n height={logoH}\r\n width={logoW}\r\n />\r\n )\r\n ) : (\r\n <span\r\n className={classMap.logo}\r\n role=\"img\"\r\n aria-label=\"Logo\"\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 )}\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>{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=\"Footer site links\"\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 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 >\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 >\r\n <ThemeSelect theme=\"clear\" shadow=\"none\" aria-label=\"Theme\" />\r\n </div>\r\n )}\r\n\r\n {socialLinks.length > 0 && (\r\n <nav\r\n className={classMap.social}\r\n aria-label=\"Social media\"\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\r\n shadow=\"none\"\r\n ariaLabel={social.title}\r\n title={social.title}\r\n theme=\"clear\"\r\n data-testid={`${testId}-social-${social.title.toLowerCase().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","ThemeSelect"],"mappings":"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"}
1
+ {"version":3,"file":"Footer-gOtEBvFb.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 ariaLabel=\"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 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 v: unknown\r\n ): v is { src: string; width?: number; height?: number } =>\r\n typeof v === \"object\" &&\r\n v !== null &&\r\n \"src\" in (v 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 className={footerClass} data-testid={testId} role=\"contentinfo\">\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=\"Logo\"\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=\"Logo\"\r\n height={logoH}\r\n width={logoW}\r\n />\r\n )\r\n ) : (\r\n <span\r\n className={classMap.logo}\r\n role=\"img\"\r\n aria-label=\"Logo\"\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 )}\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>{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=\"Footer site links\"\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 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 >\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 >\r\n <ThemeSelect theme=\"clear\" shadow=\"none\" aria-label=\"Theme\" />\r\n </div>\r\n )}\r\n\r\n {socialLinks.length > 0 && (\r\n <nav\r\n className={classMap.social}\r\n aria-label=\"Social media\"\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\r\n shadow=\"none\"\r\n ariaLabel={social.title}\r\n title={social.title}\r\n theme=\"clear\"\r\n data-testid={`${testId}-social-${social.title.toLowerCase().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","ThemeSelect"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const Footer = require("./Footer-D7XF9Pd_.cjs");
2
+ const Footer = require("./Footer-B9J4a1Ro.cjs");
3
3
  module.exports = Footer.Footer;
4
4
  //# sourceMappingURL=Footer.cjs.js.map