boreal-ui 0.0.1 → 0.0.9

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 (311) hide show
  1. package/LICENSE +9 -0
  2. package/dist/core/Accordion-DOhvj3Ty.js.map +1 -1
  3. package/dist/core/Accordion-DQsSUVAE.cjs.map +1 -1
  4. package/dist/core/ArrowRightIcon-BYQv5XS8.js.map +1 -1
  5. package/dist/core/ArrowRightIcon-ClXQHGAD.cjs.map +1 -1
  6. package/dist/core/Avatar-B5aqfDZX.cjs.map +1 -1
  7. package/dist/core/Avatar-mhtrG5FT.js.map +1 -1
  8. package/dist/core/Badge-DfsFGYhY.js.map +1 -1
  9. package/dist/core/Badge-LyKc0uJG.cjs.map +1 -1
  10. package/dist/core/Breadcrumbs-DhioJUB9.js.map +1 -1
  11. package/dist/core/Breadcrumbs-xmUgcTXF.cjs.map +1 -1
  12. package/dist/core/Button-DEYbr8xW.js.map +1 -1
  13. package/dist/core/Button-wz_We8xU.cjs.map +1 -1
  14. package/dist/core/Card-DCxLBwi0.cjs.map +1 -1
  15. package/dist/core/Card-DKPk0zgQ.js.map +1 -1
  16. package/dist/core/Checkbox-BLBbE9Ww.js.map +1 -1
  17. package/dist/core/Checkbox-fVnseKGF.cjs.map +1 -1
  18. package/dist/core/Chip-7R6wAufO.js.map +1 -1
  19. package/dist/core/Chip-CNn0UvOB.cjs.map +1 -1
  20. package/dist/core/CircularProgress-B-N4px22.cjs.map +1 -1
  21. package/dist/core/CircularProgress-ClCxzsSz.js.map +1 -1
  22. package/dist/core/CloseIcon-C3eQm4EK.js.map +1 -1
  23. package/dist/core/CloseIcon-DSnN6ggf.cjs.map +1 -1
  24. package/dist/core/ColorPicker-BQiTjeqQ.js.map +1 -1
  25. package/dist/core/ColorPicker-DR9huYqs.cjs.map +1 -1
  26. package/dist/core/CommandPalette-CHOC0Z2m.js.map +1 -1
  27. package/dist/core/CommandPalette-XTi50U_E.cjs.map +1 -1
  28. package/dist/core/DataTable-DQU1WxPr.js.map +1 -1
  29. package/dist/core/DataTable-DZeVQIC0.cjs.map +1 -1
  30. package/dist/core/DateTimePicker-BtITiL_E.cjs.map +1 -1
  31. package/dist/core/DateTimePicker-O8khtyOu.js.map +1 -1
  32. package/dist/core/Divider-An2VsXog.js.map +1 -1
  33. package/dist/core/Divider-TtfSFBcp.cjs.map +1 -1
  34. package/dist/core/Dropdown-CL7TH2lJ.js.map +1 -1
  35. package/dist/core/Dropdown-CPsxvzTA.cjs.map +1 -1
  36. package/dist/core/EmptyState-BAaCfJzO.cjs.map +1 -1
  37. package/dist/core/EmptyState-Bd-es_rG.js.map +1 -1
  38. package/dist/core/FileUpload-Dv2cvYI2.cjs.map +1 -1
  39. package/dist/core/FileUpload-DxjQ2wnn.js.map +1 -1
  40. package/dist/core/Footer-B4Owy88y.cjs.map +1 -1
  41. package/dist/core/Footer-bKgKgU6L.js.map +1 -1
  42. package/dist/core/FormGroup-BXWYrYOK.cjs.map +1 -1
  43. package/dist/core/FormGroup-DS2tW-lC.js.map +1 -1
  44. package/dist/core/IconButton-B6cAP2hY.js.map +1 -1
  45. package/dist/core/IconButton-BxUXK-xn.cjs.map +1 -1
  46. package/dist/core/MarkdownRenderer-CQVfqnxf.js.map +1 -1
  47. package/dist/core/MarkdownRenderer-taVkZLE9.cjs.map +1 -1
  48. package/dist/core/MessagePopup-By89AGqE.js.map +1 -1
  49. package/dist/core/MessagePopup-OA1gjb8E.cjs.map +1 -1
  50. package/dist/core/MetricBox-D5Dl19d2.js.map +1 -1
  51. package/dist/core/MetricBox-DjE-rdp0.cjs.map +1 -1
  52. package/dist/core/Modal-BhQJOhWV.js.map +1 -1
  53. package/dist/core/Modal-CI2snbvk.cjs.map +1 -1
  54. package/dist/core/NavBar-BAHSDPtT.js.map +1 -1
  55. package/dist/core/NavBar-C5UMiYpA.cjs.map +1 -1
  56. package/dist/core/NotificationCenter-Bp7AqnTg.js.map +1 -1
  57. package/dist/core/NotificationCenter-DxaqoUD1.cjs.map +1 -1
  58. package/dist/core/Pager-2jW3cxx_.js.map +1 -1
  59. package/dist/core/Pager-ByVG_at-.cjs.map +1 -1
  60. package/dist/core/PopOver-DNqWcWjU.js.map +1 -1
  61. package/dist/core/PopOver-OijKNHZU.cjs.map +1 -1
  62. package/dist/core/ProgressBar-CuIHF5N0.js.map +1 -1
  63. package/dist/core/ProgressBar-PiSFvLwa.cjs.map +1 -1
  64. package/dist/core/RadioButton-DP8HSNZD.cjs.map +1 -1
  65. package/dist/core/RadioButton-DTPBlw1t.js.map +1 -1
  66. package/dist/core/Rating-Jx3DBFOd.cjs.map +1 -1
  67. package/dist/core/Rating-QF5O1MFS.js.map +1 -1
  68. package/dist/core/STT-D6L-amjZ.cjs.map +1 -1
  69. package/dist/core/STT-aXWWubSC.js.map +1 -1
  70. package/dist/core/Select-9F6p9ghR.cjs.map +1 -1
  71. package/dist/core/Select-C4a_4B87.js.map +1 -1
  72. package/dist/core/Skeleton-BniIVZmx.js.map +1 -1
  73. package/dist/core/Skeleton-CeMwLgnq.cjs.map +1 -1
  74. package/dist/core/Slider-DZycGDIY.cjs.map +1 -1
  75. package/dist/core/Slider-QEwgd0le.js.map +1 -1
  76. package/dist/core/Spinner-BTmQ7ZN9.cjs.map +1 -1
  77. package/dist/core/Spinner-DGF0pR7I.js.map +1 -1
  78. package/dist/core/Stepper-BkmPckKd.cjs.map +1 -1
  79. package/dist/core/Stepper-PjUFCUBG.js.map +1 -1
  80. package/dist/core/Tabs-DptKFvPK.cjs.map +1 -1
  81. package/dist/core/Tabs-gpyaJFUs.js.map +1 -1
  82. package/dist/core/Taginput-BMPHihSz.cjs.map +1 -1
  83. package/dist/core/Taginput-CrScreYL.js.map +1 -1
  84. package/dist/core/TextArea-B88b8dFf.js.map +1 -1
  85. package/dist/core/TextArea-CxJexFDv.cjs.map +1 -1
  86. package/dist/core/TextInput-8AbKEfUH.cjs.map +1 -1
  87. package/dist/core/TextInput-CtI8fsXR.js.map +1 -1
  88. package/dist/core/ThemeContext-Bo0vLczy.js.map +1 -1
  89. package/dist/core/ThemeContext-CtZXUeeU.cjs.map +1 -1
  90. package/dist/core/Timeline-D7fd8-u_.js.map +1 -1
  91. package/dist/core/Timeline-Dk0q-8BZ.cjs.map +1 -1
  92. package/dist/core/Toggle-CZftIdc3.js.map +1 -1
  93. package/dist/core/Toggle-v31rt4Ya.cjs.map +1 -1
  94. package/dist/core/Toolbar-94Pu5-SL.js.map +1 -1
  95. package/dist/core/Toolbar-Cg_ofRqY.cjs.map +1 -1
  96. package/dist/core/Tooltip-5SfsTZvz.cjs.map +1 -1
  97. package/dist/core/Tooltip-XfsZnGgV.js.map +1 -1
  98. package/dist/core/boreal-style-config-BILmxkZG.js.map +1 -1
  99. package/dist/core/boreal-style-config-Rr5d5Qts.cjs.map +1 -1
  100. package/dist/core/capitalize-C0TSQSPh.js.map +1 -1
  101. package/dist/core/capitalize-DoV-nOmN.cjs.map +1 -1
  102. package/dist/core/colorSchemes.cjs.js.map +1 -1
  103. package/dist/core/colorSchemes.js.map +1 -1
  104. package/dist/core/index.cjs.js.map +1 -1
  105. package/dist/core/index.js.map +1 -1
  106. package/dist/core/registerColorSheme-BPX0H7hl.js.map +1 -1
  107. package/dist/core/registerColorSheme-nhYu5hbY.cjs.map +1 -1
  108. package/dist/next/Accordion-BD-HsAos.cjs.map +1 -1
  109. package/dist/next/Accordion-Bu2IAjE6.js.map +1 -1
  110. package/dist/next/ArrowRightIcon-BVb75OpX.cjs.map +1 -1
  111. package/dist/next/ArrowRightIcon-BYQv5XS8.js.map +1 -1
  112. package/dist/next/{Avatar-B0KvtR9U.js → Avatar-B0vflpuy.js} +3 -3
  113. package/dist/next/{Avatar-B0KvtR9U.js.map → Avatar-B0vflpuy.js.map} +1 -1
  114. package/dist/next/{Avatar-s6BrkUFC.cjs → Avatar-DjuHvrMV.cjs} +3 -3
  115. package/dist/next/{Avatar-s6BrkUFC.cjs.map → Avatar-DjuHvrMV.cjs.map} +1 -1
  116. package/dist/next/Avatar.cjs.js +1 -1
  117. package/dist/next/Avatar.js +1 -1
  118. package/dist/next/Badge-CnKwIP4u.cjs.map +1 -1
  119. package/dist/next/Badge-WWxkzKOl.js.map +1 -1
  120. package/dist/next/{Breadcrumbs-DCPl_wHY.cjs → Breadcrumbs-0cJD4s9s.cjs} +3 -3
  121. package/dist/next/{Breadcrumbs-DCPl_wHY.cjs.map → Breadcrumbs-0cJD4s9s.cjs.map} +1 -1
  122. package/dist/next/{Breadcrumbs-BRfPnjv3.js → Breadcrumbs-liNC5ZzY.js} +3 -3
  123. package/dist/next/{Breadcrumbs-BRfPnjv3.js.map → Breadcrumbs-liNC5ZzY.js.map} +1 -1
  124. package/dist/next/Breadcrumbs.cjs.js +1 -1
  125. package/dist/next/Breadcrumbs.js +1 -1
  126. package/dist/next/{Button-BpVwB1WA.js → Button-CbX-VlK_.js} +2 -2
  127. package/dist/next/{Button-BpVwB1WA.js.map → Button-CbX-VlK_.js.map} +1 -1
  128. package/dist/next/{Button-DUh0L7vy.cjs → Button-WSFdkLsa.cjs} +2 -2
  129. package/dist/next/{Button-DUh0L7vy.cjs.map → Button-WSFdkLsa.cjs.map} +1 -1
  130. package/dist/next/Button.cjs.js +1 -1
  131. package/dist/next/Button.js +1 -1
  132. package/dist/next/{Card-BjYztK13.cjs → Card-BCYMEFyT.cjs} +4 -4
  133. package/dist/next/{Card-BjYztK13.cjs.map → Card-BCYMEFyT.cjs.map} +1 -1
  134. package/dist/next/{Card-RBCzxSIj.js → Card-DhdZiqdl.js} +4 -4
  135. package/dist/next/{Card-RBCzxSIj.js.map → Card-DhdZiqdl.js.map} +1 -1
  136. package/dist/next/Card.cjs.js +1 -1
  137. package/dist/next/Card.js +1 -1
  138. package/dist/next/Checkbox-COcqcXOD.cjs.map +1 -1
  139. package/dist/next/Checkbox-kWrAB9F7.js.map +1 -1
  140. package/dist/next/{Chip-BwyYgH0p.cjs → Chip-DJMY0KHl.cjs} +2 -2
  141. package/dist/next/{Chip-BwyYgH0p.cjs.map → Chip-DJMY0KHl.cjs.map} +1 -1
  142. package/dist/next/{Chip-YKbysMqv.js → Chip-DtHYUkJ4.js} +2 -2
  143. package/dist/next/{Chip-YKbysMqv.js.map → Chip-DtHYUkJ4.js.map} +1 -1
  144. package/dist/next/Chip.cjs.js +1 -1
  145. package/dist/next/Chip.js +1 -1
  146. package/dist/next/CircularProgress-CYo_VUG7.js.map +1 -1
  147. package/dist/next/CircularProgress-DXC_JBTG.cjs.map +1 -1
  148. package/dist/next/CloseIcon-7hy4qJ9o.cjs.map +1 -1
  149. package/dist/next/CloseIcon-C3eQm4EK.js.map +1 -1
  150. package/dist/next/ColorPicker-C-klUf3G.cjs.map +1 -1
  151. package/dist/next/ColorPicker-Ub3qNdeF.js.map +1 -1
  152. package/dist/next/{CommandPalette-Dm_njW12.js → CommandPalette-CEZwvLuu.js} +2 -2
  153. package/dist/next/{CommandPalette-Dm_njW12.js.map → CommandPalette-CEZwvLuu.js.map} +1 -1
  154. package/dist/next/{CommandPalette-BAxyNfRu.cjs → CommandPalette-Dp2pT5ot.cjs} +2 -2
  155. package/dist/next/{CommandPalette-BAxyNfRu.cjs.map → CommandPalette-Dp2pT5ot.cjs.map} +1 -1
  156. package/dist/next/CommandPalette.cjs.js +1 -1
  157. package/dist/next/CommandPalette.js +1 -1
  158. package/dist/next/DataTable-9JLEi0CK.cjs.map +1 -1
  159. package/dist/next/DataTable-D5ffcx-L.js.map +1 -1
  160. package/dist/next/DateTimePicker-C2-or1uL.js.map +1 -1
  161. package/dist/next/DateTimePicker-CoTQNBzD.cjs.map +1 -1
  162. package/dist/next/Divider-BlJMteki.cjs.map +1 -1
  163. package/dist/next/Divider-g7VS0Sbx.js.map +1 -1
  164. package/dist/next/{Dropdown-D2p7q140.cjs → Dropdown-BtbLZeZq.cjs} +2 -2
  165. package/dist/next/{Dropdown-D2p7q140.cjs.map → Dropdown-BtbLZeZq.cjs.map} +1 -1
  166. package/dist/next/{Dropdown-D-Jhdu_7.js → Dropdown-DyBmnKrz.js} +2 -2
  167. package/dist/next/{Dropdown-D-Jhdu_7.js.map → Dropdown-DyBmnKrz.js.map} +1 -1
  168. package/dist/next/Dropdown.cjs.js +1 -1
  169. package/dist/next/Dropdown.js +1 -1
  170. package/dist/next/{EmptyState-C6dGNF-O.js → EmptyState-CSEhZvTp.js} +2 -2
  171. package/dist/next/{EmptyState-C6dGNF-O.js.map → EmptyState-CSEhZvTp.js.map} +1 -1
  172. package/dist/next/{EmptyState-CBGawc9S.cjs → EmptyState-DUZQ2Qmn.cjs} +2 -2
  173. package/dist/next/{EmptyState-CBGawc9S.cjs.map → EmptyState-DUZQ2Qmn.cjs.map} +1 -1
  174. package/dist/next/EmptyState.cjs.js +1 -1
  175. package/dist/next/EmptyState.js +1 -1
  176. package/dist/next/{FileUpload-BOSrZhPq.js → FileUpload-CgPHe6Nn.js} +3 -3
  177. package/dist/next/{FileUpload-BOSrZhPq.js.map → FileUpload-CgPHe6Nn.js.map} +1 -1
  178. package/dist/next/{FileUpload-D65wKrsD.cjs → FileUpload-jh5iTgY-.cjs} +3 -3
  179. package/dist/next/{FileUpload-D65wKrsD.cjs.map → FileUpload-jh5iTgY-.cjs.map} +1 -1
  180. package/dist/next/FileUpload.cjs.js +1 -1
  181. package/dist/next/FileUpload.js +1 -1
  182. package/dist/next/{Footer-CdCqa4Pz.js → Footer-CQAWg2tl.js} +4 -4
  183. package/dist/next/{Footer-CdCqa4Pz.js.map → Footer-CQAWg2tl.js.map} +1 -1
  184. package/dist/next/{Footer-J5Q_SSa-.cjs → Footer-D2veQTa-.cjs} +4 -4
  185. package/dist/next/{Footer-J5Q_SSa-.cjs.map → Footer-D2veQTa-.cjs.map} +1 -1
  186. package/dist/next/Footer.cjs.js +1 -1
  187. package/dist/next/Footer.js +1 -1
  188. package/dist/next/FormGroup-BAtifQGH.cjs.map +1 -1
  189. package/dist/next/FormGroup-DuBfLAMv.js.map +1 -1
  190. package/dist/next/{IconButton-mY_E1gsn.cjs → IconButton-CNzF48hu.cjs} +2 -2
  191. package/dist/next/{IconButton-mY_E1gsn.cjs.map → IconButton-CNzF48hu.cjs.map} +1 -1
  192. package/dist/next/{IconButton-EbX_9a0k.js → IconButton-DFrFh0kg.js} +2 -2
  193. package/dist/next/{IconButton-EbX_9a0k.js.map → IconButton-DFrFh0kg.js.map} +1 -1
  194. package/dist/next/IconButton.cjs.js +1 -1
  195. package/dist/next/IconButton.js +1 -1
  196. package/dist/next/MarkdownRenderer-B-WThNR7.cjs.map +1 -1
  197. package/dist/next/MarkdownRenderer-CxJOetSp.js.map +1 -1
  198. package/dist/next/MessagePopUp.cjs.js +1 -1
  199. package/dist/next/MessagePopUp.js +1 -1
  200. package/dist/next/{MessagePopup-DuXLVt2z.cjs → MessagePopup-C-7N3vB0.cjs} +3 -3
  201. package/dist/next/{MessagePopup-DuXLVt2z.cjs.map → MessagePopup-C-7N3vB0.cjs.map} +1 -1
  202. package/dist/next/{MessagePopup-BL_Tp51e.js → MessagePopup-ClfrvxKq.js} +3 -3
  203. package/dist/next/{MessagePopup-BL_Tp51e.js.map → MessagePopup-ClfrvxKq.js.map} +1 -1
  204. package/dist/next/MetricBox-Dtkrwrtw.cjs.map +1 -1
  205. package/dist/next/MetricBox-rxFYolH_.js.map +1 -1
  206. package/dist/next/{Modal-DkAYQaOH.js → Modal-BZvTcgoM.js} +2 -2
  207. package/dist/next/{Modal-DkAYQaOH.js.map → Modal-BZvTcgoM.js.map} +1 -1
  208. package/dist/next/{Modal-Cr3uE4Wi.cjs → Modal-Bf7egMf2.cjs} +2 -2
  209. package/dist/next/{Modal-Cr3uE4Wi.cjs.map → Modal-Bf7egMf2.cjs.map} +1 -1
  210. package/dist/next/Modal.cjs.js +1 -1
  211. package/dist/next/Modal.js +1 -1
  212. package/dist/next/{NavBar-CyInu_3I.cjs → NavBar-CZtNDAdX.cjs} +103 -87
  213. package/dist/next/NavBar-CZtNDAdX.cjs.map +1 -0
  214. package/dist/next/{NavBar-CsrYdWSV.js → NavBar-DzRWv8W0.js} +103 -87
  215. package/dist/next/NavBar-DzRWv8W0.js.map +1 -0
  216. package/dist/next/NavBar.cjs.js +1 -1
  217. package/dist/next/NavBar.js +1 -1
  218. package/dist/next/{NotificationCenter-BGc41ims.js → NotificationCenter-BCXpVjHd.js} +3 -3
  219. package/dist/next/{NotificationCenter-BGc41ims.js.map → NotificationCenter-BCXpVjHd.js.map} +1 -1
  220. package/dist/next/{NotificationCenter-BTcM5bCY.cjs → NotificationCenter-DmcHIkOp.cjs} +3 -3
  221. package/dist/next/{NotificationCenter-BTcM5bCY.cjs.map → NotificationCenter-DmcHIkOp.cjs.map} +1 -1
  222. package/dist/next/NotificationCenter.cjs.js +1 -1
  223. package/dist/next/NotificationCenter.js +1 -1
  224. package/dist/next/{Pager-CRAgN3LJ.cjs → Pager-B81ecC4j.cjs} +3 -3
  225. package/dist/next/{Pager-CRAgN3LJ.cjs.map → Pager-B81ecC4j.cjs.map} +1 -1
  226. package/dist/next/{Pager-0B36P0k1.js → Pager-BqShs8_d.js} +3 -3
  227. package/dist/next/{Pager-0B36P0k1.js.map → Pager-BqShs8_d.js.map} +1 -1
  228. package/dist/next/Pager.cjs.js +1 -1
  229. package/dist/next/Pager.js +1 -1
  230. package/dist/next/PopOver-CHs0s9rp.cjs.map +1 -1
  231. package/dist/next/PopOver-pllmYvp6.js.map +1 -1
  232. package/dist/next/ProgressBar-Cvf0uNKW.cjs.map +1 -1
  233. package/dist/next/ProgressBar-D_fi1WW3.js.map +1 -1
  234. package/dist/next/RadioButton-BKS65jm9.js.map +1 -1
  235. package/dist/next/RadioButton-cXdUfJD2.cjs.map +1 -1
  236. package/dist/next/Rating-BjN0Sj0r.cjs.map +1 -1
  237. package/dist/next/Rating-Bs7oCe4w.js.map +1 -1
  238. package/dist/next/STT-Br81yPXp.js.map +1 -1
  239. package/dist/next/STT-C0q3yqiJ.cjs.map +1 -1
  240. package/dist/next/Select-DwWTQcCU.js.map +1 -1
  241. package/dist/next/Select-_f1aZuKO.cjs.map +1 -1
  242. package/dist/next/Skeleton-BWBHgsOM.js.map +1 -1
  243. package/dist/next/Skeleton-CMuXs5GO.cjs.map +1 -1
  244. package/dist/next/Slider-B5BJJyaD.js.map +1 -1
  245. package/dist/next/Slider-DbxNKdGq.cjs.map +1 -1
  246. package/dist/next/Spinner-BxvU43sx.js.map +1 -1
  247. package/dist/next/Spinner-Doh4Uft1.cjs.map +1 -1
  248. package/dist/next/{Stepper-DGbO-fUh.js → Stepper-5FojeYPE.js} +2 -2
  249. package/dist/next/{Stepper-DGbO-fUh.js.map → Stepper-5FojeYPE.js.map} +1 -1
  250. package/dist/next/{Stepper-CQaWoBJ2.cjs → Stepper-D2UYDRwT.cjs} +2 -2
  251. package/dist/next/{Stepper-CQaWoBJ2.cjs.map → Stepper-D2UYDRwT.cjs.map} +1 -1
  252. package/dist/next/Stepper.cjs.js +1 -1
  253. package/dist/next/Stepper.js +1 -1
  254. package/dist/next/Tabs-CNU0A_YY.js.map +1 -1
  255. package/dist/next/Tabs-DuZPFjen.cjs.map +1 -1
  256. package/dist/next/TagInput.cjs.js +1 -1
  257. package/dist/next/TagInput.js +1 -1
  258. package/dist/next/{Taginput-DAZs0PlQ.cjs → Taginput-BcNgwFOj.cjs} +3 -3
  259. package/dist/next/{Taginput-DAZs0PlQ.cjs.map → Taginput-BcNgwFOj.cjs.map} +1 -1
  260. package/dist/next/{Taginput-Bppb5ahN.js → Taginput-CdYMgcYY.js} +3 -3
  261. package/dist/next/{Taginput-Bppb5ahN.js.map → Taginput-CdYMgcYY.js.map} +1 -1
  262. package/dist/next/TextArea-CRo_5ZL_.cjs.map +1 -1
  263. package/dist/next/TextArea-W9ekr3ij.js.map +1 -1
  264. package/dist/next/{TextInput-DLROLZ7j.js → TextInput-DkNxrV4X.js} +2 -2
  265. package/dist/next/{TextInput-DLROLZ7j.js.map → TextInput-DkNxrV4X.js.map} +1 -1
  266. package/dist/next/{TextInput-D2cpcHhQ.cjs → TextInput-iQT-2lPj.cjs} +2 -2
  267. package/dist/next/{TextInput-D2cpcHhQ.cjs.map → TextInput-iQT-2lPj.cjs.map} +1 -1
  268. package/dist/next/TextInput.cjs.js +1 -1
  269. package/dist/next/TextInput.js +1 -1
  270. package/dist/next/ThemeContext-BNR3_OIq.cjs.map +1 -1
  271. package/dist/next/ThemeContext-Bo0vLczy.js.map +1 -1
  272. package/dist/next/Timeline-36_Qy1-m.cjs.map +1 -1
  273. package/dist/next/Timeline-EnwGQ4Mi.js.map +1 -1
  274. package/dist/next/Toggle-CU7I_vjc.cjs.map +1 -1
  275. package/dist/next/Toggle-R5pWM7gk.js.map +1 -1
  276. package/dist/next/{Toolbar-vNJ46DTU.js → Toolbar-B8AB6ADW.js} +2 -2
  277. package/dist/next/{Toolbar-vNJ46DTU.js.map → Toolbar-B8AB6ADW.js.map} +1 -1
  278. package/dist/next/{Toolbar-D05Q3wYG.cjs → Toolbar-BIruaq82.cjs} +2 -2
  279. package/dist/next/{Toolbar-D05Q3wYG.cjs.map → Toolbar-BIruaq82.cjs.map} +1 -1
  280. package/dist/next/Toolbar.cjs.js +1 -1
  281. package/dist/next/Toolbar.js +1 -1
  282. package/dist/next/Tooltip-DHhLeygn.cjs.map +1 -1
  283. package/dist/next/Tooltip-G3P0OyTP.js.map +1 -1
  284. package/dist/next/boreal-style-config-BILmxkZG.js.map +1 -1
  285. package/dist/next/boreal-style-config-Rr5d5Qts.cjs.map +1 -1
  286. package/dist/next/capitalize-C0TSQSPh.js.map +1 -1
  287. package/dist/next/capitalize-DoV-nOmN.cjs.map +1 -1
  288. package/dist/next/colorSchemes.cjs.js.map +1 -1
  289. package/dist/next/colorSchemes.js.map +1 -1
  290. package/dist/next/{image-Cs0ZR1Aj.js → image-CEz9QtOW.js} +3 -22
  291. package/dist/next/image-CEz9QtOW.js.map +1 -0
  292. package/dist/next/{image-C5jTmHeD.cjs → image-VX9Ty9NQ.cjs} +3 -22
  293. package/dist/next/image-VX9Ty9NQ.cjs.map +1 -0
  294. package/dist/next/index.cjs.js +20 -20
  295. package/dist/next/index.cjs.js.map +1 -1
  296. package/dist/next/index.js +21 -21
  297. package/dist/next/index.js.map +1 -1
  298. package/dist/next/{link-CX77u6b-.js → link-Bik5xH00.js} +15 -3
  299. package/dist/next/link-Bik5xH00.js.map +1 -0
  300. package/dist/next/{link-B8xgzNiC.cjs → link-hxAaLm0Q.cjs} +15 -3
  301. package/dist/next/link-hxAaLm0Q.cjs.map +1 -0
  302. package/dist/next/registerColorSheme-BPX0H7hl.js.map +1 -1
  303. package/dist/next/registerColorSheme-nhYu5hbY.cjs.map +1 -1
  304. package/dist/tsconfig.build.tsbuildinfo +1 -1
  305. package/package.json +3 -2
  306. package/dist/next/NavBar-CsrYdWSV.js.map +0 -1
  307. package/dist/next/NavBar-CyInu_3I.cjs.map +0 -1
  308. package/dist/next/image-C5jTmHeD.cjs.map +0 -1
  309. package/dist/next/image-Cs0ZR1Aj.js.map +0 -1
  310. package/dist/next/link-B8xgzNiC.cjs.map +0 -1
  311. package/dist/next/link-CX77u6b-.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette-CHOC0Z2m.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(0);\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\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 (!asyncSearch) return;\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n if (!query.trim()) {\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(query)\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 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(0);\r\n setMounted(false);\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 setActiveIndex((prev) => (prev + 1) % filtered.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n setActiveIndex(\r\n (prev) => (prev - 1 + filtered.length) % filtered.length\r\n );\r\n } else if (e.key === \"Enter\" && filtered[activeIndex]) {\r\n filtered[activeIndex].action();\r\n onClose();\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 if (!isOpen || !mounted || !portalElement) return null;\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 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-haspopup=\"listbox\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"command-list\"\r\n aria-activedescendant={\r\n filtered.length > 0 ? `cmd-${activeIndex}` : undefined\r\n }\r\n />\r\n\r\n <ul\r\n id=\"command-list\"\r\n className={classMap.list}\r\n role=\"listbox\"\r\n aria-label=\"Command suggestions\"\r\n >\r\n {isLoading ? (\r\n <div className={combineClassNames(classMap.item, classMap.empty)}>\r\n Searching...\r\n </div>\r\n ) : filtered.length > 0 ? (\r\n filtered.map((cmd, index) => (\r\n <li\r\n key={cmd.label}\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\n\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\n\r\nexport default CommandPalette;\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandPalette-CHOC0Z2m.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(0);\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\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 (!asyncSearch) return;\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n if (!query.trim()) {\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(query)\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 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(0);\r\n setMounted(false);\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 setActiveIndex((prev) => (prev + 1) % filtered.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n setActiveIndex(\r\n (prev) => (prev - 1 + filtered.length) % filtered.length\r\n );\r\n } else if (e.key === \"Enter\" && filtered[activeIndex]) {\r\n filtered[activeIndex].action();\r\n onClose();\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 if (!isOpen || !mounted || !portalElement) return null;\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 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-haspopup=\"listbox\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"command-list\"\r\n aria-activedescendant={\r\n filtered.length > 0 ? `cmd-${activeIndex}` : undefined\r\n }\r\n />\r\n\r\n <ul\r\n id=\"command-list\"\r\n className={classMap.list}\r\n role=\"listbox\"\r\n aria-label=\"Command suggestions\"\r\n >\r\n {isLoading ? (\r\n <div className={combineClassNames(classMap.item, classMap.empty)}>\r\n Searching...\r\n </div>\r\n ) : filtered.length > 0 ? (\r\n filtered.map((cmd, index) => (\r\n <li\r\n key={cmd.label}\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\n\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\n\r\nexport default CommandPalette;\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette-XTi50U_E.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(0);\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\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 (!asyncSearch) return;\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n if (!query.trim()) {\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(query)\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 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(0);\r\n setMounted(false);\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 setActiveIndex((prev) => (prev + 1) % filtered.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n setActiveIndex(\r\n (prev) => (prev - 1 + filtered.length) % filtered.length\r\n );\r\n } else if (e.key === \"Enter\" && filtered[activeIndex]) {\r\n filtered[activeIndex].action();\r\n onClose();\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 if (!isOpen || !mounted || !portalElement) return null;\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 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-haspopup=\"listbox\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"command-list\"\r\n aria-activedescendant={\r\n filtered.length > 0 ? `cmd-${activeIndex}` : undefined\r\n }\r\n />\r\n\r\n <ul\r\n id=\"command-list\"\r\n className={classMap.list}\r\n role=\"listbox\"\r\n aria-label=\"Command suggestions\"\r\n >\r\n {isLoading ? (\r\n <div className={combineClassNames(classMap.item, classMap.empty)}>\r\n Searching...\r\n </div>\r\n ) : filtered.length > 0 ? (\r\n filtered.map((cmd, index) => (\r\n <li\r\n key={cmd.label}\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\n\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\n\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-XTi50U_E.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(0);\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\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 (!asyncSearch) return;\r\n\r\n if (debounceRef.current) clearTimeout(debounceRef.current);\r\n\r\n if (!query.trim()) {\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(query)\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 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(0);\r\n setMounted(false);\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 setActiveIndex((prev) => (prev + 1) % filtered.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n setActiveIndex(\r\n (prev) => (prev - 1 + filtered.length) % filtered.length\r\n );\r\n } else if (e.key === \"Enter\" && filtered[activeIndex]) {\r\n filtered[activeIndex].action();\r\n onClose();\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 if (!isOpen || !mounted || !portalElement) return null;\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 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-haspopup=\"listbox\"\r\n aria-expanded=\"true\"\r\n aria-controls=\"command-list\"\r\n aria-activedescendant={\r\n filtered.length > 0 ? `cmd-${activeIndex}` : undefined\r\n }\r\n />\r\n\r\n <ul\r\n id=\"command-list\"\r\n className={classMap.list}\r\n role=\"listbox\"\r\n aria-label=\"Command suggestions\"\r\n >\r\n {isLoading ? (\r\n <div className={combineClassNames(classMap.item, classMap.empty)}>\r\n Searching...\r\n </div>\r\n ) : filtered.length > 0 ? (\r\n filtered.map((cmd, index) => (\r\n <li\r\n key={cmd.label}\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\n\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\n\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 +1 @@
1
- {"version":3,"file":"DataTable-DQU1WxPr.js","sources":["../../src/components/DataTable/DataTableBase.tsx","../../src/components/DataTable/core/DataTable.tsx"],"sourcesContent":["import { useMemo, useState, KeyboardEvent } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { DataTableBaseProps } from \"./DataTable.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\nfunction DataTableBase<T extends object>({\r\n columns,\r\n data,\r\n onRowClick,\r\n classMap,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n outline = false,\r\n className = \"\",\r\n striped = true,\r\n defaultSortKey,\r\n defaultSortOrder = \"asc\",\r\n serverSort = false,\r\n onSortChange,\r\n rowKey,\r\n \"data-testid\": testId = \"data-table\",\r\n}: DataTableBaseProps<T>) {\r\n const [sortKey, setSortKey] = useState<keyof T | undefined>(defaultSortKey);\r\n const [sortOrder, setSortOrder] = useState<\"asc\" | \"desc\">(defaultSortOrder);\r\n\r\n const sortedData = useMemo(() => {\r\n if (serverSort || !sortKey) return data;\r\n if (!sortKey) return data;\r\n return [...data].sort((a, b) => {\r\n const valA = a[sortKey];\r\n const valB = b[sortKey];\r\n if (valA === valB) return 0;\r\n if (valA == null) return 1;\r\n if (valB == null) return -1;\r\n const isNumA = !isNaN(Number(valA));\r\n const isNumB = !isNaN(Number(valB));\r\n if (isNumA && isNumB)\r\n return sortOrder === \"asc\" ? +valA - +valB : +valB - +valA;\r\n return sortOrder === \"asc\"\r\n ? String(valA).localeCompare(String(valB))\r\n : String(valB).localeCompare(String(valA));\r\n });\r\n }, [data, sortKey, sortOrder]);\r\n\r\n const handleSort = (key: keyof T) => {\r\n const newOrder = key === sortKey && sortOrder === \"asc\" ? \"desc\" : \"asc\";\r\n setSortKey(key);\r\n setSortOrder(newOrder);\r\n if (serverSort && onSortChange) onSortChange(key, newOrder);\r\n };\r\n\r\n const handleSortKeyDown = (e: KeyboardEvent, key: keyof T) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleSort(key);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.wrapper,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n striped && classMap.striped,\r\n className\r\n )}\r\n data-testid={testId}\r\n >\r\n <table\r\n className={combineClassNames(\r\n classMap.table,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline\r\n )}\r\n role=\"table\"\r\n >\r\n <caption className=\"sr_only\">Sortable data table</caption>\r\n <thead>\r\n <tr role=\"row\">\r\n {columns.map((col) => {\r\n const isActive = sortKey === col.key;\r\n return (\r\n <th\r\n key={String(col.key)}\r\n scope=\"col\"\r\n role=\"columnheader\"\r\n tabIndex={col.sortable ? 0 : undefined}\r\n aria-sort={\r\n col.sortable\r\n ? isActive\r\n ? sortOrder === \"asc\"\r\n ? \"ascending\"\r\n : \"descending\"\r\n : \"none\"\r\n : undefined\r\n }\r\n onClick={() => col.sortable && handleSort(col.key)}\r\n onKeyDown={(e) =>\r\n col.sortable && handleSortKeyDown(e, col.key)\r\n }\r\n className={combineClassNames(\r\n col.sortable && classMap.sortable,\r\n classMap.headerCell\r\n )}\r\n >\r\n <span>{col.label}</span>\r\n {col.sortable && (\r\n <span className={classMap.sortIcon} aria-hidden=\"true\">\r\n {isActive ? (sortOrder === \"asc\" ? \"▲\" : \"▼\") : \"⇅\"}\r\n </span>\r\n )}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {sortedData.map((row, idx) => {\r\n const key = rowKey ? rowKey(row) : idx;\r\n return (\r\n <tr\r\n key={key}\r\n role=\"row\"\r\n className={combineClassNames(\r\n onRowClick && classMap.clickable,\r\n striped && idx % 2 === 1 && classMap.striped\r\n )}\r\n onClick={() => onRowClick?.(row)}\r\n tabIndex={onRowClick ? 0 : undefined}\r\n aria-label={onRowClick ? \"Selectable row\" : undefined}\r\n >\r\n {columns.map((col) => (\r\n <td\r\n key={String(col.key)}\r\n role=\"cell\"\r\n data-label={col.label}\r\n className={classMap.cell}\r\n >\r\n {col.render\r\n ? col.render(row[col.key], row)\r\n : typeof row[col.key] === \"object\"\r\n ? JSON.stringify(row[col.key])\r\n : String(row[col.key] ?? \"\")}\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DataTableBase;\r\n","import \"./DataTable.scss\";\r\nimport DataTableBase from \"../DataTableBase\";\r\nimport { DataTableProps } from \"../DataTable.types\";\r\n\r\nconst classes = {\r\n wrapper: \"data_table_wrapper\",\r\n table: \"data_table\",\r\n headerCell: \"data_table_header_cell\",\r\n sortable: \"data_table_header_sortable\",\r\n sortIcon: \"data_table_sort_icon\",\r\n clickable: \"data_table_row_clickable\",\r\n striped: \"data_table_row_striped\",\r\n cell: \"data_table_cell\",\r\n\r\n primary: \"data_table_primary\",\r\n secondary: \"data_table_secondary\",\r\n tertiary: \"data_table_tertiary\",\r\n quaternary: \"data_table_quaternary\",\r\n\r\n success: \"data_table_success\",\r\n error: \"data_table_error\",\r\n warning: \"data_table_warning\",\r\n\r\n clear: \"data_table_clear\",\r\n\r\n outline: \"data_table_outline\",\r\n\r\n shadowNone: \"data_table_shadow-None\",\r\n shadowLight: \"data_table_shadow-Light\",\r\n shadowMedium: \"data_table_shadow-Medium\",\r\n shadowStrong: \"data_table_shadow-Strong\",\r\n shadowIntense: \"data_table_shadow-Intense\",\r\n\r\n roundNone: \"data_table_round-None\",\r\n roundSmall: \"data_table_round-Small\",\r\n roundMedium: \"data_table_round-Medium\",\r\n roundLarge: \"data_table_round-Large\",\r\n};\r\n\r\nfunction DataTable<T extends object>(props: DataTableProps<T>) {\r\n return <DataTableBase {...props} classMap={classes} />;\r\n}\r\n\r\nexport default DataTable;\r\n"],"names":[],"mappings":";;;;;AAUA,SAAS,cAAgC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,gBAAgB;AAAA,EACxB,WAAW,mBAAmB;AAAA,EAC9B,SAAS,iBAAiB;AAAA,EAC1B,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,UAAU;AAAA,EACV;AAAA,EACA,mBAAmB;AAAA,EACnB,aAAa;AAAA,EACb;AAAA,EACA;AAAA,EACA,eAAe,SAAS;AAC1B,GAA0B;AACxB,QAAM,CAAC,SAAS,UAAU,IAAI,SAA8B,cAAc;AAC1E,QAAM,CAAC,WAAW,YAAY,IAAI,SAAyB,gBAAgB;AAErE,QAAA,aAAa,QAAQ,MAAM;AAC3B,QAAA,cAAc,CAAC,QAAgB,QAAA;AAC/B,QAAA,CAAC,QAAgB,QAAA;AACrB,WAAO,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM;AACxB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,OAAO,EAAE,OAAO;AAClB,UAAA,SAAS,KAAa,QAAA;AACtB,UAAA,QAAQ,KAAa,QAAA;AACrB,UAAA,QAAQ,KAAa,QAAA;AACzB,YAAM,SAAS,CAAC,MAAM,OAAO,IAAI,CAAC;AAClC,YAAM,SAAS,CAAC,MAAM,OAAO,IAAI,CAAC;AAClC,UAAI,UAAU;AACL,eAAA,cAAc,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;AACxD,aAAO,cAAc,QACjB,OAAO,IAAI,EAAE,cAAc,OAAO,IAAI,CAAC,IACvC,OAAO,IAAI,EAAE,cAAc,OAAO,IAAI,CAAC;AAAA,IAAA,CAC5C;AAAA,EACA,GAAA,CAAC,MAAM,SAAS,SAAS,CAAC;AAEvB,QAAA,aAAa,CAAC,QAAiB;AACnC,UAAM,WAAW,QAAQ,WAAW,cAAc,QAAQ,SAAS;AACnE,eAAW,GAAG;AACd,iBAAa,QAAQ;AACrB,QAAI,cAAc,aAA2B,cAAA,KAAK,QAAQ;AAAA,EAC5D;AAEM,QAAA,oBAAoB,CAAC,GAAkB,QAAiB;AAC5D,QAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;AACtC,QAAE,eAAe;AACjB,iBAAW,GAAG;AAAA,IAAA;AAAA,EAElB;AAGE,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT,SAAS;AAAA,QACT,UAAU,SAAS,SAAS,WAAW,MAAM,CAAC,EAAE;AAAA,QAChD,YAAY,SAAS,QAAQ,WAAW,QAAQ,CAAC,EAAE;AAAA,QACnD,WAAW,SAAS;AAAA,QACpB;AAAA,MACF;AAAA,MACA,eAAa;AAAA,MAEb,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,YACT,SAAS;AAAA,YACT,SAAS,KAAK;AAAA,YACd,SAAS,KAAK;AAAA,YACd,WAAW,SAAS;AAAA,UACtB;AAAA,UACA,MAAK;AAAA,UAEL,UAAA;AAAA,YAAC,oBAAA,WAAA,EAAQ,WAAU,WAAU,UAAmB,uBAAA;AAAA,YAChD,oBAAC,WACC,UAAC,oBAAA,MAAA,EAAG,MAAK,OACN,UAAA,QAAQ,IAAI,CAAC,QAAQ;AACd,oBAAA,WAAW,YAAY,IAAI;AAE/B,qBAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,OAAM;AAAA,kBACN,MAAK;AAAA,kBACL,UAAU,IAAI,WAAW,IAAI;AAAA,kBAC7B,aACE,IAAI,WACA,WACE,cAAc,QACZ,cACA,eACF,SACF;AAAA,kBAEN,SAAS,MAAM,IAAI,YAAY,WAAW,IAAI,GAAG;AAAA,kBACjD,WAAW,CAAC,MACV,IAAI,YAAY,kBAAkB,GAAG,IAAI,GAAG;AAAA,kBAE9C,WAAW;AAAA,oBACT,IAAI,YAAY,SAAS;AAAA,oBACzB,SAAS;AAAA,kBACX;AAAA,kBAEA,UAAA;AAAA,oBAAC,oBAAA,QAAA,EAAM,cAAI,MAAM,CAAA;AAAA,oBAChB,IAAI,YACF,oBAAA,QAAA,EAAK,WAAW,SAAS,UAAU,eAAY,QAC7C,UAAY,WAAA,cAAc,QAAQ,MAAM,MAAO,IAClD,CAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBA1BG,OAAO,IAAI,GAAG;AAAA,cA4BrB;AAAA,YAAA,CAEH,GACH,EACF,CAAA;AAAA,gCACC,SACE,EAAA,UAAA,WAAW,IAAI,CAAC,KAAK,QAAQ;AAC5B,oBAAM,MAAM,SAAS,OAAO,GAAG,IAAI;AAEjC,qBAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,MAAK;AAAA,kBACL,WAAW;AAAA,oBACT,cAAc,SAAS;AAAA,oBACvB,WAAW,MAAM,MAAM,KAAK,SAAS;AAAA,kBACvC;AAAA,kBACA,SAAS,MAAM,yCAAa;AAAA,kBAC5B,UAAU,aAAa,IAAI;AAAA,kBAC3B,cAAY,aAAa,mBAAmB;AAAA,kBAE3C,UAAA,QAAQ,IAAI,CAAC,QACZ;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,MAAK;AAAA,sBACL,cAAY,IAAI;AAAA,sBAChB,WAAW,SAAS;AAAA,sBAEnB,UAAI,IAAA,SACD,IAAI,OAAO,IAAI,IAAI,GAAG,GAAG,GAAG,IAC5B,OAAO,IAAI,IAAI,GAAG,MAAM,WACtB,KAAK,UAAU,IAAI,IAAI,GAAG,CAAC,IAC3B,OAAO,IAAI,IAAI,GAAG,KAAK,EAAE;AAAA,oBAAA;AAAA,oBAT1B,OAAO,IAAI,GAAG;AAAA,kBAWtB,CAAA;AAAA,gBAAA;AAAA,gBAvBI;AAAA,cAwBP;AAAA,YAAA,CAEH,EACH,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;AC7JA,MAAM,UAAU;AAAA,EACd,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT,MAAM;AAAA,EAEN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EAEZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,SAAS;AAAA,EAET,OAAO;AAAA,EAEP,SAAS;AAAA,EAET,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAAA,EACd,eAAe;AAAA,EAEf,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,YAAY;AACd;AAEA,SAAS,UAA4B,OAA0B;AAC7D,SAAQ,oBAAA,eAAA,EAAe,GAAG,OAAO,UAAU,SAAS;AACtD;"}
1
+ {"version":3,"file":"DataTable-DQU1WxPr.js","sources":["../../src/components/DataTable/DataTableBase.tsx","../../src/components/DataTable/core/DataTable.tsx"],"sourcesContent":["import { useMemo, useState, KeyboardEvent } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { DataTableBaseProps } from \"./DataTable.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\nfunction DataTableBase<T extends object>({\r\n columns,\r\n data,\r\n onRowClick,\r\n classMap,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n outline = false,\r\n className = \"\",\r\n striped = true,\r\n defaultSortKey,\r\n defaultSortOrder = \"asc\",\r\n serverSort = false,\r\n onSortChange,\r\n rowKey,\r\n \"data-testid\": testId = \"data-table\",\r\n}: DataTableBaseProps<T>) {\r\n const [sortKey, setSortKey] = useState<keyof T | undefined>(defaultSortKey);\r\n const [sortOrder, setSortOrder] = useState<\"asc\" | \"desc\">(defaultSortOrder);\r\n\r\n const sortedData = useMemo(() => {\r\n if (serverSort || !sortKey) return data;\r\n if (!sortKey) return data;\r\n return [...data].sort((a, b) => {\r\n const valA = a[sortKey];\r\n const valB = b[sortKey];\r\n if (valA === valB) return 0;\r\n if (valA == null) return 1;\r\n if (valB == null) return -1;\r\n const isNumA = !isNaN(Number(valA));\r\n const isNumB = !isNaN(Number(valB));\r\n if (isNumA && isNumB)\r\n return sortOrder === \"asc\" ? +valA - +valB : +valB - +valA;\r\n return sortOrder === \"asc\"\r\n ? String(valA).localeCompare(String(valB))\r\n : String(valB).localeCompare(String(valA));\r\n });\r\n }, [data, sortKey, sortOrder]);\r\n\r\n const handleSort = (key: keyof T) => {\r\n const newOrder = key === sortKey && sortOrder === \"asc\" ? \"desc\" : \"asc\";\r\n setSortKey(key);\r\n setSortOrder(newOrder);\r\n if (serverSort && onSortChange) onSortChange(key, newOrder);\r\n };\r\n\r\n const handleSortKeyDown = (e: KeyboardEvent, key: keyof T) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleSort(key);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.wrapper,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n striped && classMap.striped,\r\n className\r\n )}\r\n data-testid={testId}\r\n >\r\n <table\r\n className={combineClassNames(\r\n classMap.table,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline\r\n )}\r\n role=\"table\"\r\n >\r\n <caption className=\"sr_only\">Sortable data table</caption>\r\n <thead>\r\n <tr role=\"row\">\r\n {columns.map((col) => {\r\n const isActive = sortKey === col.key;\r\n return (\r\n <th\r\n key={String(col.key)}\r\n scope=\"col\"\r\n role=\"columnheader\"\r\n tabIndex={col.sortable ? 0 : undefined}\r\n aria-sort={\r\n col.sortable\r\n ? isActive\r\n ? sortOrder === \"asc\"\r\n ? \"ascending\"\r\n : \"descending\"\r\n : \"none\"\r\n : undefined\r\n }\r\n onClick={() => col.sortable && handleSort(col.key)}\r\n onKeyDown={(e) =>\r\n col.sortable && handleSortKeyDown(e, col.key)\r\n }\r\n className={combineClassNames(\r\n col.sortable && classMap.sortable,\r\n classMap.headerCell\r\n )}\r\n >\r\n <span>{col.label}</span>\r\n {col.sortable && (\r\n <span className={classMap.sortIcon} aria-hidden=\"true\">\r\n {isActive ? (sortOrder === \"asc\" ? \"▲\" : \"▼\") : \"⇅\"}\r\n </span>\r\n )}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {sortedData.map((row, idx) => {\r\n const key = rowKey ? rowKey(row) : idx;\r\n return (\r\n <tr\r\n key={key}\r\n role=\"row\"\r\n className={combineClassNames(\r\n onRowClick && classMap.clickable,\r\n striped && idx % 2 === 1 && classMap.striped\r\n )}\r\n onClick={() => onRowClick?.(row)}\r\n tabIndex={onRowClick ? 0 : undefined}\r\n aria-label={onRowClick ? \"Selectable row\" : undefined}\r\n >\r\n {columns.map((col) => (\r\n <td\r\n key={String(col.key)}\r\n role=\"cell\"\r\n data-label={col.label}\r\n className={classMap.cell}\r\n >\r\n {col.render\r\n ? col.render(row[col.key], row)\r\n : typeof row[col.key] === \"object\"\r\n ? JSON.stringify(row[col.key])\r\n : String(row[col.key] ?? \"\")}\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DataTableBase;\r\n","import \"./DataTable.scss\";\r\nimport DataTableBase from \"../DataTableBase\";\r\nimport { DataTableProps } from \"../DataTable.types\";\r\n\r\nconst classes = {\r\n wrapper: \"data_table_wrapper\",\r\n table: \"data_table\",\r\n headerCell: \"data_table_header_cell\",\r\n sortable: \"data_table_header_sortable\",\r\n sortIcon: \"data_table_sort_icon\",\r\n clickable: \"data_table_row_clickable\",\r\n striped: \"data_table_row_striped\",\r\n cell: \"data_table_cell\",\r\n\r\n primary: \"data_table_primary\",\r\n secondary: \"data_table_secondary\",\r\n tertiary: \"data_table_tertiary\",\r\n quaternary: \"data_table_quaternary\",\r\n\r\n success: \"data_table_success\",\r\n error: \"data_table_error\",\r\n warning: \"data_table_warning\",\r\n\r\n clear: \"data_table_clear\",\r\n\r\n outline: \"data_table_outline\",\r\n\r\n shadowNone: \"data_table_shadow-None\",\r\n shadowLight: \"data_table_shadow-Light\",\r\n shadowMedium: \"data_table_shadow-Medium\",\r\n shadowStrong: \"data_table_shadow-Strong\",\r\n shadowIntense: \"data_table_shadow-Intense\",\r\n\r\n roundNone: \"data_table_round-None\",\r\n roundSmall: \"data_table_round-Small\",\r\n roundMedium: \"data_table_round-Medium\",\r\n roundLarge: \"data_table_round-Large\",\r\n};\r\n\r\nfunction DataTable<T extends object>(props: DataTableProps<T>) {\r\n return <DataTableBase {...props} classMap={classes} />;\r\n}\r\n\r\nexport default DataTable;\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable-DZeVQIC0.cjs","sources":["../../src/components/DataTable/DataTableBase.tsx","../../src/components/DataTable/core/DataTable.tsx"],"sourcesContent":["import { useMemo, useState, KeyboardEvent } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { DataTableBaseProps } from \"./DataTable.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\nfunction DataTableBase<T extends object>({\r\n columns,\r\n data,\r\n onRowClick,\r\n classMap,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n outline = false,\r\n className = \"\",\r\n striped = true,\r\n defaultSortKey,\r\n defaultSortOrder = \"asc\",\r\n serverSort = false,\r\n onSortChange,\r\n rowKey,\r\n \"data-testid\": testId = \"data-table\",\r\n}: DataTableBaseProps<T>) {\r\n const [sortKey, setSortKey] = useState<keyof T | undefined>(defaultSortKey);\r\n const [sortOrder, setSortOrder] = useState<\"asc\" | \"desc\">(defaultSortOrder);\r\n\r\n const sortedData = useMemo(() => {\r\n if (serverSort || !sortKey) return data;\r\n if (!sortKey) return data;\r\n return [...data].sort((a, b) => {\r\n const valA = a[sortKey];\r\n const valB = b[sortKey];\r\n if (valA === valB) return 0;\r\n if (valA == null) return 1;\r\n if (valB == null) return -1;\r\n const isNumA = !isNaN(Number(valA));\r\n const isNumB = !isNaN(Number(valB));\r\n if (isNumA && isNumB)\r\n return sortOrder === \"asc\" ? +valA - +valB : +valB - +valA;\r\n return sortOrder === \"asc\"\r\n ? String(valA).localeCompare(String(valB))\r\n : String(valB).localeCompare(String(valA));\r\n });\r\n }, [data, sortKey, sortOrder]);\r\n\r\n const handleSort = (key: keyof T) => {\r\n const newOrder = key === sortKey && sortOrder === \"asc\" ? \"desc\" : \"asc\";\r\n setSortKey(key);\r\n setSortOrder(newOrder);\r\n if (serverSort && onSortChange) onSortChange(key, newOrder);\r\n };\r\n\r\n const handleSortKeyDown = (e: KeyboardEvent, key: keyof T) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleSort(key);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.wrapper,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n striped && classMap.striped,\r\n className\r\n )}\r\n data-testid={testId}\r\n >\r\n <table\r\n className={combineClassNames(\r\n classMap.table,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline\r\n )}\r\n role=\"table\"\r\n >\r\n <caption className=\"sr_only\">Sortable data table</caption>\r\n <thead>\r\n <tr role=\"row\">\r\n {columns.map((col) => {\r\n const isActive = sortKey === col.key;\r\n return (\r\n <th\r\n key={String(col.key)}\r\n scope=\"col\"\r\n role=\"columnheader\"\r\n tabIndex={col.sortable ? 0 : undefined}\r\n aria-sort={\r\n col.sortable\r\n ? isActive\r\n ? sortOrder === \"asc\"\r\n ? \"ascending\"\r\n : \"descending\"\r\n : \"none\"\r\n : undefined\r\n }\r\n onClick={() => col.sortable && handleSort(col.key)}\r\n onKeyDown={(e) =>\r\n col.sortable && handleSortKeyDown(e, col.key)\r\n }\r\n className={combineClassNames(\r\n col.sortable && classMap.sortable,\r\n classMap.headerCell\r\n )}\r\n >\r\n <span>{col.label}</span>\r\n {col.sortable && (\r\n <span className={classMap.sortIcon} aria-hidden=\"true\">\r\n {isActive ? (sortOrder === \"asc\" ? \"▲\" : \"▼\") : \"⇅\"}\r\n </span>\r\n )}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {sortedData.map((row, idx) => {\r\n const key = rowKey ? rowKey(row) : idx;\r\n return (\r\n <tr\r\n key={key}\r\n role=\"row\"\r\n className={combineClassNames(\r\n onRowClick && classMap.clickable,\r\n striped && idx % 2 === 1 && classMap.striped\r\n )}\r\n onClick={() => onRowClick?.(row)}\r\n tabIndex={onRowClick ? 0 : undefined}\r\n aria-label={onRowClick ? \"Selectable row\" : undefined}\r\n >\r\n {columns.map((col) => (\r\n <td\r\n key={String(col.key)}\r\n role=\"cell\"\r\n data-label={col.label}\r\n className={classMap.cell}\r\n >\r\n {col.render\r\n ? col.render(row[col.key], row)\r\n : typeof row[col.key] === \"object\"\r\n ? JSON.stringify(row[col.key])\r\n : String(row[col.key] ?? \"\")}\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DataTableBase;\r\n","import \"./DataTable.scss\";\r\nimport DataTableBase from \"../DataTableBase\";\r\nimport { DataTableProps } from \"../DataTable.types\";\r\n\r\nconst classes = {\r\n wrapper: \"data_table_wrapper\",\r\n table: \"data_table\",\r\n headerCell: \"data_table_header_cell\",\r\n sortable: \"data_table_header_sortable\",\r\n sortIcon: \"data_table_sort_icon\",\r\n clickable: \"data_table_row_clickable\",\r\n striped: \"data_table_row_striped\",\r\n cell: \"data_table_cell\",\r\n\r\n primary: \"data_table_primary\",\r\n secondary: \"data_table_secondary\",\r\n tertiary: \"data_table_tertiary\",\r\n quaternary: \"data_table_quaternary\",\r\n\r\n success: \"data_table_success\",\r\n error: \"data_table_error\",\r\n warning: \"data_table_warning\",\r\n\r\n clear: \"data_table_clear\",\r\n\r\n outline: \"data_table_outline\",\r\n\r\n shadowNone: \"data_table_shadow-None\",\r\n shadowLight: \"data_table_shadow-Light\",\r\n shadowMedium: \"data_table_shadow-Medium\",\r\n shadowStrong: \"data_table_shadow-Strong\",\r\n shadowIntense: \"data_table_shadow-Intense\",\r\n\r\n roundNone: \"data_table_round-None\",\r\n roundSmall: \"data_table_round-Small\",\r\n roundMedium: \"data_table_round-Medium\",\r\n roundLarge: \"data_table_round-Large\",\r\n};\r\n\r\nfunction DataTable<T extends object>(props: DataTableProps<T>) {\r\n return <DataTableBase {...props} classMap={classes} />;\r\n}\r\n\r\nexport default DataTable;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","useState","useMemo","jsx","combineClassNames","capitalize","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable-DZeVQIC0.cjs","sources":["../../src/components/DataTable/DataTableBase.tsx","../../src/components/DataTable/core/DataTable.tsx"],"sourcesContent":["import { useMemo, useState, KeyboardEvent } from \"react\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { DataTableBaseProps } from \"./DataTable.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\nfunction DataTableBase<T extends object>({\r\n columns,\r\n data,\r\n onRowClick,\r\n classMap,\r\n theme = getDefaultTheme(),\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n state = \"\",\r\n outline = false,\r\n className = \"\",\r\n striped = true,\r\n defaultSortKey,\r\n defaultSortOrder = \"asc\",\r\n serverSort = false,\r\n onSortChange,\r\n rowKey,\r\n \"data-testid\": testId = \"data-table\",\r\n}: DataTableBaseProps<T>) {\r\n const [sortKey, setSortKey] = useState<keyof T | undefined>(defaultSortKey);\r\n const [sortOrder, setSortOrder] = useState<\"asc\" | \"desc\">(defaultSortOrder);\r\n\r\n const sortedData = useMemo(() => {\r\n if (serverSort || !sortKey) return data;\r\n if (!sortKey) return data;\r\n return [...data].sort((a, b) => {\r\n const valA = a[sortKey];\r\n const valB = b[sortKey];\r\n if (valA === valB) return 0;\r\n if (valA == null) return 1;\r\n if (valB == null) return -1;\r\n const isNumA = !isNaN(Number(valA));\r\n const isNumB = !isNaN(Number(valB));\r\n if (isNumA && isNumB)\r\n return sortOrder === \"asc\" ? +valA - +valB : +valB - +valA;\r\n return sortOrder === \"asc\"\r\n ? String(valA).localeCompare(String(valB))\r\n : String(valB).localeCompare(String(valA));\r\n });\r\n }, [data, sortKey, sortOrder]);\r\n\r\n const handleSort = (key: keyof T) => {\r\n const newOrder = key === sortKey && sortOrder === \"asc\" ? \"desc\" : \"asc\";\r\n setSortKey(key);\r\n setSortOrder(newOrder);\r\n if (serverSort && onSortChange) onSortChange(key, newOrder);\r\n };\r\n\r\n const handleSortKeyDown = (e: KeyboardEvent, key: keyof T) => {\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n handleSort(key);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className={combineClassNames(\r\n classMap.wrapper,\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n striped && classMap.striped,\r\n className\r\n )}\r\n data-testid={testId}\r\n >\r\n <table\r\n className={combineClassNames(\r\n classMap.table,\r\n classMap[theme],\r\n classMap[state],\r\n outline && classMap.outline\r\n )}\r\n role=\"table\"\r\n >\r\n <caption className=\"sr_only\">Sortable data table</caption>\r\n <thead>\r\n <tr role=\"row\">\r\n {columns.map((col) => {\r\n const isActive = sortKey === col.key;\r\n return (\r\n <th\r\n key={String(col.key)}\r\n scope=\"col\"\r\n role=\"columnheader\"\r\n tabIndex={col.sortable ? 0 : undefined}\r\n aria-sort={\r\n col.sortable\r\n ? isActive\r\n ? sortOrder === \"asc\"\r\n ? \"ascending\"\r\n : \"descending\"\r\n : \"none\"\r\n : undefined\r\n }\r\n onClick={() => col.sortable && handleSort(col.key)}\r\n onKeyDown={(e) =>\r\n col.sortable && handleSortKeyDown(e, col.key)\r\n }\r\n className={combineClassNames(\r\n col.sortable && classMap.sortable,\r\n classMap.headerCell\r\n )}\r\n >\r\n <span>{col.label}</span>\r\n {col.sortable && (\r\n <span className={classMap.sortIcon} aria-hidden=\"true\">\r\n {isActive ? (sortOrder === \"asc\" ? \"▲\" : \"▼\") : \"⇅\"}\r\n </span>\r\n )}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {sortedData.map((row, idx) => {\r\n const key = rowKey ? rowKey(row) : idx;\r\n return (\r\n <tr\r\n key={key}\r\n role=\"row\"\r\n className={combineClassNames(\r\n onRowClick && classMap.clickable,\r\n striped && idx % 2 === 1 && classMap.striped\r\n )}\r\n onClick={() => onRowClick?.(row)}\r\n tabIndex={onRowClick ? 0 : undefined}\r\n aria-label={onRowClick ? \"Selectable row\" : undefined}\r\n >\r\n {columns.map((col) => (\r\n <td\r\n key={String(col.key)}\r\n role=\"cell\"\r\n data-label={col.label}\r\n className={classMap.cell}\r\n >\r\n {col.render\r\n ? col.render(row[col.key], row)\r\n : typeof row[col.key] === \"object\"\r\n ? JSON.stringify(row[col.key])\r\n : String(row[col.key] ?? \"\")}\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n })}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport default DataTableBase;\r\n","import \"./DataTable.scss\";\r\nimport DataTableBase from \"../DataTableBase\";\r\nimport { DataTableProps } from \"../DataTable.types\";\r\n\r\nconst classes = {\r\n wrapper: \"data_table_wrapper\",\r\n table: \"data_table\",\r\n headerCell: \"data_table_header_cell\",\r\n sortable: \"data_table_header_sortable\",\r\n sortIcon: \"data_table_sort_icon\",\r\n clickable: \"data_table_row_clickable\",\r\n striped: \"data_table_row_striped\",\r\n cell: \"data_table_cell\",\r\n\r\n primary: \"data_table_primary\",\r\n secondary: \"data_table_secondary\",\r\n tertiary: \"data_table_tertiary\",\r\n quaternary: \"data_table_quaternary\",\r\n\r\n success: \"data_table_success\",\r\n error: \"data_table_error\",\r\n warning: \"data_table_warning\",\r\n\r\n clear: \"data_table_clear\",\r\n\r\n outline: \"data_table_outline\",\r\n\r\n shadowNone: \"data_table_shadow-None\",\r\n shadowLight: \"data_table_shadow-Light\",\r\n shadowMedium: \"data_table_shadow-Medium\",\r\n shadowStrong: \"data_table_shadow-Strong\",\r\n shadowIntense: \"data_table_shadow-Intense\",\r\n\r\n roundNone: \"data_table_round-None\",\r\n roundSmall: \"data_table_round-Small\",\r\n roundMedium: \"data_table_round-Medium\",\r\n roundLarge: \"data_table_round-Large\",\r\n};\r\n\r\nfunction DataTable<T extends object>(props: DataTableProps<T>) {\r\n return <DataTableBase {...props} classMap={classes} />;\r\n}\r\n\r\nexport default DataTable;\r\n"],"names":["getDefaultTheme","getDefaultRounding","getDefaultShadow","useState","useMemo","jsx","combineClassNames","capitalize","jsxs"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker-BtITiL_E.cjs","sources":["../../src/Icons/CalendarIcon.tsx","../../src/components/DateTimePicker/DateTimePickerBase.tsx","../../src/components/DateTimePicker/core/DateTimePicker.tsx"],"sourcesContent":["const CalendarIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n strokeWidth=\"1.5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M15 4V2M15 4V6M15 4H10.5M3 10V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V10H3Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 10V6C3 4.89543 3.89543 4 5 4H7\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M7 2V6\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 10V6C21 4.89543 20.1046 4 19 4H18.5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default CalendarIcon;\r\n","import React, { useId, useMemo, useRef } from \"react\";\r\nimport { DateTimePickerProps } from \"./DateTimePicker.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { CalendarIcon } from \"../../Icons\";\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 interface DateTimePickerBaseProps extends DateTimePickerProps {\r\n classMap: Record<string, string>;\r\n error?: string;\r\n description?: string;\r\n id?: string;\r\n}\r\n\r\nconst DateTimePickerBase: React.FC<DateTimePickerBaseProps> = ({\r\n label,\r\n value,\r\n onChange,\r\n min,\r\n max,\r\n name,\r\n required = false,\r\n disabled = false,\r\n size = getDefaultSize(),\r\n outline,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n className = \"\",\r\n \"data-testid\": testId = \"datetime-picker\",\r\n classMap,\r\n error,\r\n description,\r\n id,\r\n}) => {\r\n const generatedId = useId();\r\n const inputId = id || generatedId;\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const descriptionId = description ? `${inputId}-description` : undefined;\r\n const errorId = error ? `${inputId}-error` : undefined;\r\n\r\n const openPicker = () => {\r\n inputRef.current?.showPicker?.();\r\n };\r\n\r\n const pickerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n className\r\n ),\r\n [classMap, theme, state, size, outline, disabled, className]\r\n );\r\n\r\n return (\r\n <div className={pickerClass} data-testid={testId}>\r\n {label && (\r\n <label htmlFor={inputId} className={classMap.label}>\r\n {label} {required && <span aria-hidden=\"true\">*</span>}\r\n </label>\r\n )}\r\n\r\n <div className={classMap.inputWrapper}>\r\n <input\r\n id={inputId}\r\n type=\"datetime-local\"\r\n className={classMap.input}\r\n value={value}\r\n onChange={(e) => onChange?.(e.target.value)}\r\n min={min}\r\n max={max}\r\n name={name}\r\n ref={inputRef}\r\n required={required}\r\n disabled={disabled}\r\n aria-required={required}\r\n aria-disabled={disabled}\r\n aria-invalid={!!error}\r\n aria-describedby={\r\n [descriptionId, errorId].filter(Boolean).join(\" \") || undefined\r\n }\r\n aria-errormessage={errorId || undefined}\r\n aria-label={label || \"Date and time\"}\r\n data-testid={`${testId}-input`}\r\n />\r\n <span\r\n className={classMap.icon}\r\n onClick={openPicker}\r\n onKeyDown={(e) =>\r\n (e.key === \"Enter\" || e.key === \" \") && openPicker()\r\n }\r\n aria-hidden=\"true\"\r\n role=\"button\"\r\n tabIndex={0}\r\n >\r\n <CalendarIcon />\r\n </span>\r\n </div>\r\n\r\n {description && !error && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n\r\n {error && (\r\n <p id={errorId} className={classMap.error} role=\"alert\">\r\n {error}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default DateTimePickerBase;\r\n","import React from \"react\";\r\nimport DateTimePickerBase from \"../DateTimePickerBase\";\r\nimport \"./DateTimePicker.scss\";\r\nimport type { DateTimePickerProps } from \"../DateTimePicker.types\";\r\n\r\nconst classes = {\r\n wrapper: \"datetime_picker_wrapper\",\r\n label: \"datetime_picker_label\",\r\n inputWrapper: \"datetime_picker_inputWrapper\",\r\n input: \"datetime_picker_input\",\r\n\r\n primary: \"datetime_picker_primary\",\r\n secondary: \"datetime_picker_secondary\",\r\n tertiary: \"datetime_picker_tertiary\",\r\n quaternary: \"datetime_picker_quaternary\",\r\n\r\n success: \"datetime_picker_success\",\r\n error: \"datetime_picker_error\",\r\n warning: \"datetime_picker_warning\",\r\n\r\n clear: \"datetime_picker_clear\",\r\n\r\n xs: \"datetime_picker_xs\",\r\n small: \"datetime_picker_small\",\r\n medium: \"datetime_picker_medium\",\r\n large: \"datetime_picker_large\",\r\n xl: \"datetime_picker_xl\",\r\n\r\n outline: \"datetime_picker_outline\",\r\n disabled: \"datetime_picker_disabled\",\r\n icon: \"datetime_picker_icon\",\r\n\r\n shadowNone: \"datetime_picker_shadow-None\",\r\n shadowLight: \"datetime_picker_shadow-Light\",\r\n shadowMedium: \"datetime_picker_shadow-Medium\",\r\n shadowStrong: \"datetime_picker_shadow-Strong\",\r\n shadowIntense: \"datetime_picker_shadow-Intense\",\r\n\r\n roundNone: \"datetime_picker_round-None\",\r\n roundSmall: \"datetime_picker_round-Small\",\r\n roundMedium: \"datetime_picker_round-Medium\",\r\n roundLarge: \"datetime_picker_round-Large\",\r\n};\r\n\r\nconst DateTimePicker: React.FC<DateTimePickerProps> = (props) => (\r\n <DateTimePickerBase {...props} classMap={classes} />\r\n);\r\n\r\nexport default DateTimePicker;\r\n"],"names":["jsxs","jsx","getDefaultSize","getDefaultTheme","getDefaultRounding","getDefaultShadow","useId","useRef","useMemo","combineClassNames","capitalize"],"mappings":"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"}
1
+ {"version":3,"file":"DateTimePicker-BtITiL_E.cjs","sources":["../../src/Icons/CalendarIcon.tsx","../../src/components/DateTimePicker/DateTimePickerBase.tsx","../../src/components/DateTimePicker/core/DateTimePicker.tsx"],"sourcesContent":["const CalendarIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n strokeWidth=\"1.5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M15 4V2M15 4V6M15 4H10.5M3 10V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V10H3Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 10V6C3 4.89543 3.89543 4 5 4H7\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M7 2V6\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 10V6C21 4.89543 20.1046 4 19 4H18.5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default CalendarIcon;\r\n","import React, { useId, useMemo, useRef } from \"react\";\r\nimport { DateTimePickerProps } from \"./DateTimePicker.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { CalendarIcon } from \"../../Icons\";\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 interface DateTimePickerBaseProps extends DateTimePickerProps {\r\n classMap: Record<string, string>;\r\n error?: string;\r\n description?: string;\r\n id?: string;\r\n}\r\n\r\nconst DateTimePickerBase: React.FC<DateTimePickerBaseProps> = ({\r\n label,\r\n value,\r\n onChange,\r\n min,\r\n max,\r\n name,\r\n required = false,\r\n disabled = false,\r\n size = getDefaultSize(),\r\n outline,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n className = \"\",\r\n \"data-testid\": testId = \"datetime-picker\",\r\n classMap,\r\n error,\r\n description,\r\n id,\r\n}) => {\r\n const generatedId = useId();\r\n const inputId = id || generatedId;\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const descriptionId = description ? `${inputId}-description` : undefined;\r\n const errorId = error ? `${inputId}-error` : undefined;\r\n\r\n const openPicker = () => {\r\n inputRef.current?.showPicker?.();\r\n };\r\n\r\n const pickerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n className\r\n ),\r\n [classMap, theme, state, size, outline, disabled, className]\r\n );\r\n\r\n return (\r\n <div className={pickerClass} data-testid={testId}>\r\n {label && (\r\n <label htmlFor={inputId} className={classMap.label}>\r\n {label} {required && <span aria-hidden=\"true\">*</span>}\r\n </label>\r\n )}\r\n\r\n <div className={classMap.inputWrapper}>\r\n <input\r\n id={inputId}\r\n type=\"datetime-local\"\r\n className={classMap.input}\r\n value={value}\r\n onChange={(e) => onChange?.(e.target.value)}\r\n min={min}\r\n max={max}\r\n name={name}\r\n ref={inputRef}\r\n required={required}\r\n disabled={disabled}\r\n aria-required={required}\r\n aria-disabled={disabled}\r\n aria-invalid={!!error}\r\n aria-describedby={\r\n [descriptionId, errorId].filter(Boolean).join(\" \") || undefined\r\n }\r\n aria-errormessage={errorId || undefined}\r\n aria-label={label || \"Date and time\"}\r\n data-testid={`${testId}-input`}\r\n />\r\n <span\r\n className={classMap.icon}\r\n onClick={openPicker}\r\n onKeyDown={(e) =>\r\n (e.key === \"Enter\" || e.key === \" \") && openPicker()\r\n }\r\n aria-hidden=\"true\"\r\n role=\"button\"\r\n tabIndex={0}\r\n >\r\n <CalendarIcon />\r\n </span>\r\n </div>\r\n\r\n {description && !error && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n\r\n {error && (\r\n <p id={errorId} className={classMap.error} role=\"alert\">\r\n {error}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default DateTimePickerBase;\r\n","import React from \"react\";\r\nimport DateTimePickerBase from \"../DateTimePickerBase\";\r\nimport \"./DateTimePicker.scss\";\r\nimport type { DateTimePickerProps } from \"../DateTimePicker.types\";\r\n\r\nconst classes = {\r\n wrapper: \"datetime_picker_wrapper\",\r\n label: \"datetime_picker_label\",\r\n inputWrapper: \"datetime_picker_inputWrapper\",\r\n input: \"datetime_picker_input\",\r\n\r\n primary: \"datetime_picker_primary\",\r\n secondary: \"datetime_picker_secondary\",\r\n tertiary: \"datetime_picker_tertiary\",\r\n quaternary: \"datetime_picker_quaternary\",\r\n\r\n success: \"datetime_picker_success\",\r\n error: \"datetime_picker_error\",\r\n warning: \"datetime_picker_warning\",\r\n\r\n clear: \"datetime_picker_clear\",\r\n\r\n xs: \"datetime_picker_xs\",\r\n small: \"datetime_picker_small\",\r\n medium: \"datetime_picker_medium\",\r\n large: \"datetime_picker_large\",\r\n xl: \"datetime_picker_xl\",\r\n\r\n outline: \"datetime_picker_outline\",\r\n disabled: \"datetime_picker_disabled\",\r\n icon: \"datetime_picker_icon\",\r\n\r\n shadowNone: \"datetime_picker_shadow-None\",\r\n shadowLight: \"datetime_picker_shadow-Light\",\r\n shadowMedium: \"datetime_picker_shadow-Medium\",\r\n shadowStrong: \"datetime_picker_shadow-Strong\",\r\n shadowIntense: \"datetime_picker_shadow-Intense\",\r\n\r\n roundNone: \"datetime_picker_round-None\",\r\n roundSmall: \"datetime_picker_round-Small\",\r\n roundMedium: \"datetime_picker_round-Medium\",\r\n roundLarge: \"datetime_picker_round-Large\",\r\n};\r\n\r\nconst DateTimePicker: React.FC<DateTimePickerProps> = (props) => (\r\n <DateTimePickerBase {...props} classMap={classes} />\r\n);\r\n\r\nexport default DateTimePicker;\r\n"],"names":["jsxs","jsx","getDefaultSize","getDefaultTheme","getDefaultRounding","getDefaultShadow","useId","useRef","useMemo","combineClassNames","capitalize"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker-O8khtyOu.js","sources":["../../src/Icons/CalendarIcon.tsx","../../src/components/DateTimePicker/DateTimePickerBase.tsx","../../src/components/DateTimePicker/core/DateTimePicker.tsx"],"sourcesContent":["const CalendarIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n strokeWidth=\"1.5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M15 4V2M15 4V6M15 4H10.5M3 10V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V10H3Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 10V6C3 4.89543 3.89543 4 5 4H7\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M7 2V6\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 10V6C21 4.89543 20.1046 4 19 4H18.5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default CalendarIcon;\r\n","import React, { useId, useMemo, useRef } from \"react\";\r\nimport { DateTimePickerProps } from \"./DateTimePicker.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { CalendarIcon } from \"../../Icons\";\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 interface DateTimePickerBaseProps extends DateTimePickerProps {\r\n classMap: Record<string, string>;\r\n error?: string;\r\n description?: string;\r\n id?: string;\r\n}\r\n\r\nconst DateTimePickerBase: React.FC<DateTimePickerBaseProps> = ({\r\n label,\r\n value,\r\n onChange,\r\n min,\r\n max,\r\n name,\r\n required = false,\r\n disabled = false,\r\n size = getDefaultSize(),\r\n outline,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n className = \"\",\r\n \"data-testid\": testId = \"datetime-picker\",\r\n classMap,\r\n error,\r\n description,\r\n id,\r\n}) => {\r\n const generatedId = useId();\r\n const inputId = id || generatedId;\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const descriptionId = description ? `${inputId}-description` : undefined;\r\n const errorId = error ? `${inputId}-error` : undefined;\r\n\r\n const openPicker = () => {\r\n inputRef.current?.showPicker?.();\r\n };\r\n\r\n const pickerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n className\r\n ),\r\n [classMap, theme, state, size, outline, disabled, className]\r\n );\r\n\r\n return (\r\n <div className={pickerClass} data-testid={testId}>\r\n {label && (\r\n <label htmlFor={inputId} className={classMap.label}>\r\n {label} {required && <span aria-hidden=\"true\">*</span>}\r\n </label>\r\n )}\r\n\r\n <div className={classMap.inputWrapper}>\r\n <input\r\n id={inputId}\r\n type=\"datetime-local\"\r\n className={classMap.input}\r\n value={value}\r\n onChange={(e) => onChange?.(e.target.value)}\r\n min={min}\r\n max={max}\r\n name={name}\r\n ref={inputRef}\r\n required={required}\r\n disabled={disabled}\r\n aria-required={required}\r\n aria-disabled={disabled}\r\n aria-invalid={!!error}\r\n aria-describedby={\r\n [descriptionId, errorId].filter(Boolean).join(\" \") || undefined\r\n }\r\n aria-errormessage={errorId || undefined}\r\n aria-label={label || \"Date and time\"}\r\n data-testid={`${testId}-input`}\r\n />\r\n <span\r\n className={classMap.icon}\r\n onClick={openPicker}\r\n onKeyDown={(e) =>\r\n (e.key === \"Enter\" || e.key === \" \") && openPicker()\r\n }\r\n aria-hidden=\"true\"\r\n role=\"button\"\r\n tabIndex={0}\r\n >\r\n <CalendarIcon />\r\n </span>\r\n </div>\r\n\r\n {description && !error && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n\r\n {error && (\r\n <p id={errorId} className={classMap.error} role=\"alert\">\r\n {error}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default DateTimePickerBase;\r\n","import React from \"react\";\r\nimport DateTimePickerBase from \"../DateTimePickerBase\";\r\nimport \"./DateTimePicker.scss\";\r\nimport type { DateTimePickerProps } from \"../DateTimePicker.types\";\r\n\r\nconst classes = {\r\n wrapper: \"datetime_picker_wrapper\",\r\n label: \"datetime_picker_label\",\r\n inputWrapper: \"datetime_picker_inputWrapper\",\r\n input: \"datetime_picker_input\",\r\n\r\n primary: \"datetime_picker_primary\",\r\n secondary: \"datetime_picker_secondary\",\r\n tertiary: \"datetime_picker_tertiary\",\r\n quaternary: \"datetime_picker_quaternary\",\r\n\r\n success: \"datetime_picker_success\",\r\n error: \"datetime_picker_error\",\r\n warning: \"datetime_picker_warning\",\r\n\r\n clear: \"datetime_picker_clear\",\r\n\r\n xs: \"datetime_picker_xs\",\r\n small: \"datetime_picker_small\",\r\n medium: \"datetime_picker_medium\",\r\n large: \"datetime_picker_large\",\r\n xl: \"datetime_picker_xl\",\r\n\r\n outline: \"datetime_picker_outline\",\r\n disabled: \"datetime_picker_disabled\",\r\n icon: \"datetime_picker_icon\",\r\n\r\n shadowNone: \"datetime_picker_shadow-None\",\r\n shadowLight: \"datetime_picker_shadow-Light\",\r\n shadowMedium: \"datetime_picker_shadow-Medium\",\r\n shadowStrong: \"datetime_picker_shadow-Strong\",\r\n shadowIntense: \"datetime_picker_shadow-Intense\",\r\n\r\n roundNone: \"datetime_picker_round-None\",\r\n roundSmall: \"datetime_picker_round-Small\",\r\n roundMedium: \"datetime_picker_round-Medium\",\r\n roundLarge: \"datetime_picker_round-Large\",\r\n};\r\n\r\nconst DateTimePicker: React.FC<DateTimePickerProps> = (props) => (\r\n <DateTimePickerBase {...props} classMap={classes} />\r\n);\r\n\r\nexport default DateTimePicker;\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DateTimePicker-O8khtyOu.js","sources":["../../src/Icons/CalendarIcon.tsx","../../src/components/DateTimePicker/DateTimePickerBase.tsx","../../src/components/DateTimePicker/core/DateTimePicker.tsx"],"sourcesContent":["const CalendarIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n strokeWidth=\"1.5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M15 4V2M15 4V6M15 4H10.5M3 10V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V10H3Z\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 10V6C3 4.89543 3.89543 4 5 4H7\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M7 2V6\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M21 10V6C21 4.89543 20.1046 4 19 4H18.5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default CalendarIcon;\r\n","import React, { useId, useMemo, useRef } from \"react\";\r\nimport { DateTimePickerProps } from \"./DateTimePicker.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { CalendarIcon } from \"../../Icons\";\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 interface DateTimePickerBaseProps extends DateTimePickerProps {\r\n classMap: Record<string, string>;\r\n error?: string;\r\n description?: string;\r\n id?: string;\r\n}\r\n\r\nconst DateTimePickerBase: React.FC<DateTimePickerBaseProps> = ({\r\n label,\r\n value,\r\n onChange,\r\n min,\r\n max,\r\n name,\r\n required = false,\r\n disabled = false,\r\n size = getDefaultSize(),\r\n outline,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n rounding = getDefaultRounding(),\r\n shadow = getDefaultShadow(),\r\n className = \"\",\r\n \"data-testid\": testId = \"datetime-picker\",\r\n classMap,\r\n error,\r\n description,\r\n id,\r\n}) => {\r\n const generatedId = useId();\r\n const inputId = id || generatedId;\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const descriptionId = description ? `${inputId}-description` : undefined;\r\n const errorId = error ? `${inputId}-error` : undefined;\r\n\r\n const openPicker = () => {\r\n inputRef.current?.showPicker?.();\r\n };\r\n\r\n const pickerClass = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.wrapper,\r\n classMap[theme],\r\n classMap[state],\r\n classMap[size],\r\n shadow && classMap[`shadow${capitalize(shadow)}`],\r\n rounding && classMap[`round${capitalize(rounding)}`],\r\n outline && classMap.outline,\r\n disabled && classMap.disabled,\r\n className\r\n ),\r\n [classMap, theme, state, size, outline, disabled, className]\r\n );\r\n\r\n return (\r\n <div className={pickerClass} data-testid={testId}>\r\n {label && (\r\n <label htmlFor={inputId} className={classMap.label}>\r\n {label} {required && <span aria-hidden=\"true\">*</span>}\r\n </label>\r\n )}\r\n\r\n <div className={classMap.inputWrapper}>\r\n <input\r\n id={inputId}\r\n type=\"datetime-local\"\r\n className={classMap.input}\r\n value={value}\r\n onChange={(e) => onChange?.(e.target.value)}\r\n min={min}\r\n max={max}\r\n name={name}\r\n ref={inputRef}\r\n required={required}\r\n disabled={disabled}\r\n aria-required={required}\r\n aria-disabled={disabled}\r\n aria-invalid={!!error}\r\n aria-describedby={\r\n [descriptionId, errorId].filter(Boolean).join(\" \") || undefined\r\n }\r\n aria-errormessage={errorId || undefined}\r\n aria-label={label || \"Date and time\"}\r\n data-testid={`${testId}-input`}\r\n />\r\n <span\r\n className={classMap.icon}\r\n onClick={openPicker}\r\n onKeyDown={(e) =>\r\n (e.key === \"Enter\" || e.key === \" \") && openPicker()\r\n }\r\n aria-hidden=\"true\"\r\n role=\"button\"\r\n tabIndex={0}\r\n >\r\n <CalendarIcon />\r\n </span>\r\n </div>\r\n\r\n {description && !error && (\r\n <p id={descriptionId} className={classMap.description}>\r\n {description}\r\n </p>\r\n )}\r\n\r\n {error && (\r\n <p id={errorId} className={classMap.error} role=\"alert\">\r\n {error}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default DateTimePickerBase;\r\n","import React from \"react\";\r\nimport DateTimePickerBase from \"../DateTimePickerBase\";\r\nimport \"./DateTimePicker.scss\";\r\nimport type { DateTimePickerProps } from \"../DateTimePicker.types\";\r\n\r\nconst classes = {\r\n wrapper: \"datetime_picker_wrapper\",\r\n label: \"datetime_picker_label\",\r\n inputWrapper: \"datetime_picker_inputWrapper\",\r\n input: \"datetime_picker_input\",\r\n\r\n primary: \"datetime_picker_primary\",\r\n secondary: \"datetime_picker_secondary\",\r\n tertiary: \"datetime_picker_tertiary\",\r\n quaternary: \"datetime_picker_quaternary\",\r\n\r\n success: \"datetime_picker_success\",\r\n error: \"datetime_picker_error\",\r\n warning: \"datetime_picker_warning\",\r\n\r\n clear: \"datetime_picker_clear\",\r\n\r\n xs: \"datetime_picker_xs\",\r\n small: \"datetime_picker_small\",\r\n medium: \"datetime_picker_medium\",\r\n large: \"datetime_picker_large\",\r\n xl: \"datetime_picker_xl\",\r\n\r\n outline: \"datetime_picker_outline\",\r\n disabled: \"datetime_picker_disabled\",\r\n icon: \"datetime_picker_icon\",\r\n\r\n shadowNone: \"datetime_picker_shadow-None\",\r\n shadowLight: \"datetime_picker_shadow-Light\",\r\n shadowMedium: \"datetime_picker_shadow-Medium\",\r\n shadowStrong: \"datetime_picker_shadow-Strong\",\r\n shadowIntense: \"datetime_picker_shadow-Intense\",\r\n\r\n roundNone: \"datetime_picker_round-None\",\r\n roundSmall: \"datetime_picker_round-Small\",\r\n roundMedium: \"datetime_picker_round-Medium\",\r\n roundLarge: \"datetime_picker_round-Large\",\r\n};\r\n\r\nconst DateTimePicker: React.FC<DateTimePickerProps> = (props) => (\r\n <DateTimePickerBase {...props} classMap={classes} />\r\n);\r\n\r\nexport default DateTimePicker;\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Divider-An2VsXog.js","sources":["../../src/components/Divider/DividerBase.tsx","../../src/components/Divider/core/Divider.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\r\nimport { DividerProps } from \"./Divider.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { getDefaultTheme } from \"../../config/boreal-style-config\";\r\n\r\nexport interface DividerBaseProps extends DividerProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst DividerBase = forwardRef<HTMLElement, DividerBaseProps>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n thickness = \"1px\",\r\n length = \"100%\",\r\n className = \"\",\r\n dashed = false,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n as = \"div\",\r\n classMap,\r\n \"data-testid\": testId = \"divider\",\r\n \"aria-hidden\": ariaHidden,\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const isVertical = orientation === \"vertical\";\r\n\r\n const style: React.CSSProperties = {\r\n width: isVertical ? thickness : length,\r\n height: isVertical ? length : thickness,\r\n backgroundColor: dashed ? \"transparent\" : undefined,\r\n };\r\n\r\n const ComponentTag = as;\r\n\r\n const role = ComponentTag === \"hr\" ? undefined : \"separator\";\r\n\r\n return (\r\n <ComponentTag\r\n ref={ref as never}\r\n className={combineClassNames(\r\n classMap.divider,\r\n classMap[orientation],\r\n theme && classMap[theme],\r\n state && classMap[state],\r\n dashed && classMap.dashed,\r\n className\r\n )}\r\n {...(role && { role })}\r\n {...(role && isVertical && { \"aria-orientation\": \"vertical\" })}\r\n {...(ariaHidden !== undefined && { \"aria-hidden\": ariaHidden })}\r\n style={style}\r\n data-testid={testId}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nDividerBase.displayName = \"DividerBase\";\r\n\r\nexport default DividerBase;\r\n","import React from \"react\";\r\nimport DividerBase from \"../DividerBase\";\r\nimport \"./Divider.scss\";\r\nimport { DividerProps } from \"../Divider.types\";\r\n\r\nconst classes = {\r\n divider: \"divider\",\r\n horizontal: \"divider_horizontal\",\r\n vertical: \"divider_vertical\",\r\n dashed: \"divider_dashed\",\r\n primary: \"divider_primary\",\r\n secondary: \"divider_secondary\",\r\n tertiary: \"divider_tertiary\",\r\n quaternary: \"divider_quaternary\",\r\n clear: \"divider_clear\",\r\n success: \"divider_success\",\r\n warning: \"divider_warning\",\r\n error: \"divider_error\",\r\n};\r\n\r\nconst Divider: React.FC<DividerProps> = (props) => (\r\n <DividerBase {...props} classMap={classes} />\r\n);\r\n\r\nexport default Divider;\r\n"],"names":[],"mappings":";;;;AASA,MAAM,cAAc;AAAA,EAClB,CACE;AAAA,IACE,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ,gBAAgB;AAAA,IACxB,QAAQ;AAAA,IACR,KAAK;AAAA,IACL;AAAA,IACA,eAAe,SAAS;AAAA,IACxB,eAAe;AAAA,IACf,GAAG;AAAA,KAEL,QACG;AACH,UAAM,aAAa,gBAAgB;AAEnC,UAAM,QAA6B;AAAA,MACjC,OAAO,aAAa,YAAY;AAAA,MAChC,QAAQ,aAAa,SAAS;AAAA,MAC9B,iBAAiB,SAAS,gBAAgB;AAAA,IAC5C;AAEA,UAAM,eAAe;AAEf,UAAA,OAAO,iBAAiB,OAAO,SAAY;AAG/C,WAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT,SAAS;AAAA,UACT,SAAS,WAAW;AAAA,UACpB,SAAS,SAAS,KAAK;AAAA,UACvB,SAAS,SAAS,KAAK;AAAA,UACvB,UAAU,SAAS;AAAA,UACnB;AAAA,QACF;AAAA,QACC,GAAI,QAAQ,EAAE,KAAK;AAAA,QACnB,GAAI,QAAQ,cAAc,EAAE,oBAAoB,WAAW;AAAA,QAC3D,GAAI,eAAe,UAAa,EAAE,eAAe,WAAW;AAAA,QAC7D;AAAA,QACA,eAAa;AAAA,QACZ,GAAG;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN;AAEA,YAAY,cAAc;ACxD1B,MAAM,UAAU;AAAA,EACd,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEM,MAAA,UAAkC,CAAC,UACvC,oBAAC,eAAa,GAAG,OAAO,UAAU,QAAS,CAAA;"}
1
+ {"version":3,"file":"Divider-An2VsXog.js","sources":["../../src/components/Divider/DividerBase.tsx","../../src/components/Divider/core/Divider.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\r\nimport { DividerProps } from \"./Divider.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { getDefaultTheme } from \"../../config/boreal-style-config\";\r\n\r\nexport interface DividerBaseProps extends DividerProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst DividerBase = forwardRef<HTMLElement, DividerBaseProps>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n thickness = \"1px\",\r\n length = \"100%\",\r\n className = \"\",\r\n dashed = false,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n as = \"div\",\r\n classMap,\r\n \"data-testid\": testId = \"divider\",\r\n \"aria-hidden\": ariaHidden,\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const isVertical = orientation === \"vertical\";\r\n\r\n const style: React.CSSProperties = {\r\n width: isVertical ? thickness : length,\r\n height: isVertical ? length : thickness,\r\n backgroundColor: dashed ? \"transparent\" : undefined,\r\n };\r\n\r\n const ComponentTag = as;\r\n\r\n const role = ComponentTag === \"hr\" ? undefined : \"separator\";\r\n\r\n return (\r\n <ComponentTag\r\n ref={ref as never}\r\n className={combineClassNames(\r\n classMap.divider,\r\n classMap[orientation],\r\n theme && classMap[theme],\r\n state && classMap[state],\r\n dashed && classMap.dashed,\r\n className\r\n )}\r\n {...(role && { role })}\r\n {...(role && isVertical && { \"aria-orientation\": \"vertical\" })}\r\n {...(ariaHidden !== undefined && { \"aria-hidden\": ariaHidden })}\r\n style={style}\r\n data-testid={testId}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nDividerBase.displayName = \"DividerBase\";\r\n\r\nexport default DividerBase;\r\n","import React from \"react\";\r\nimport DividerBase from \"../DividerBase\";\r\nimport \"./Divider.scss\";\r\nimport { DividerProps } from \"../Divider.types\";\r\n\r\nconst classes = {\r\n divider: \"divider\",\r\n horizontal: \"divider_horizontal\",\r\n vertical: \"divider_vertical\",\r\n dashed: \"divider_dashed\",\r\n primary: \"divider_primary\",\r\n secondary: \"divider_secondary\",\r\n tertiary: \"divider_tertiary\",\r\n quaternary: \"divider_quaternary\",\r\n clear: \"divider_clear\",\r\n success: \"divider_success\",\r\n warning: \"divider_warning\",\r\n error: \"divider_error\",\r\n};\r\n\r\nconst Divider: React.FC<DividerProps> = (props) => (\r\n <DividerBase {...props} classMap={classes} />\r\n);\r\n\r\nexport default Divider;\r\n"],"names":[],"mappings":";;;;AASA,MAAM,cAAc;AAAA,EAClB,CACE;AAAA,IACE,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ,gBAAA;AAAA,IACR,QAAQ;AAAA,IACR,KAAK;AAAA,IACL;AAAA,IACA,eAAe,SAAS;AAAA,IACxB,eAAe;AAAA,IACf,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,aAAa,gBAAgB;AAEnC,UAAM,QAA6B;AAAA,MACjC,OAAO,aAAa,YAAY;AAAA,MAChC,QAAQ,aAAa,SAAS;AAAA,MAC9B,iBAAiB,SAAS,gBAAgB;AAAA,IAAA;AAG5C,UAAM,eAAe;AAErB,UAAM,OAAO,iBAAiB,OAAO,SAAY;AAEjD,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAW;AAAA,UACT,SAAS;AAAA,UACT,SAAS,WAAW;AAAA,UACpB,SAAS,SAAS,KAAK;AAAA,UACvB,SAAS,SAAS,KAAK;AAAA,UACvB,UAAU,SAAS;AAAA,UACnB;AAAA,QAAA;AAAA,QAED,GAAI,QAAQ,EAAE,KAAA;AAAA,QACd,GAAI,QAAQ,cAAc,EAAE,oBAAoB,WAAA;AAAA,QAChD,GAAI,eAAe,UAAa,EAAE,eAAe,WAAA;AAAA,QAClD;AAAA,QACA,eAAa;AAAA,QACZ,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA,YAAY,cAAc;ACxD1B,MAAM,UAAU;AAAA,EACd,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEA,MAAM,UAAkC,CAAC,UACvC,oBAAC,eAAa,GAAG,OAAO,UAAU,QAAA,CAAS;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Divider-TtfSFBcp.cjs","sources":["../../src/components/Divider/DividerBase.tsx","../../src/components/Divider/core/Divider.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\r\nimport { DividerProps } from \"./Divider.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { getDefaultTheme } from \"../../config/boreal-style-config\";\r\n\r\nexport interface DividerBaseProps extends DividerProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst DividerBase = forwardRef<HTMLElement, DividerBaseProps>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n thickness = \"1px\",\r\n length = \"100%\",\r\n className = \"\",\r\n dashed = false,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n as = \"div\",\r\n classMap,\r\n \"data-testid\": testId = \"divider\",\r\n \"aria-hidden\": ariaHidden,\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const isVertical = orientation === \"vertical\";\r\n\r\n const style: React.CSSProperties = {\r\n width: isVertical ? thickness : length,\r\n height: isVertical ? length : thickness,\r\n backgroundColor: dashed ? \"transparent\" : undefined,\r\n };\r\n\r\n const ComponentTag = as;\r\n\r\n const role = ComponentTag === \"hr\" ? undefined : \"separator\";\r\n\r\n return (\r\n <ComponentTag\r\n ref={ref as never}\r\n className={combineClassNames(\r\n classMap.divider,\r\n classMap[orientation],\r\n theme && classMap[theme],\r\n state && classMap[state],\r\n dashed && classMap.dashed,\r\n className\r\n )}\r\n {...(role && { role })}\r\n {...(role && isVertical && { \"aria-orientation\": \"vertical\" })}\r\n {...(ariaHidden !== undefined && { \"aria-hidden\": ariaHidden })}\r\n style={style}\r\n data-testid={testId}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nDividerBase.displayName = \"DividerBase\";\r\n\r\nexport default DividerBase;\r\n","import React from \"react\";\r\nimport DividerBase from \"../DividerBase\";\r\nimport \"./Divider.scss\";\r\nimport { DividerProps } from \"../Divider.types\";\r\n\r\nconst classes = {\r\n divider: \"divider\",\r\n horizontal: \"divider_horizontal\",\r\n vertical: \"divider_vertical\",\r\n dashed: \"divider_dashed\",\r\n primary: \"divider_primary\",\r\n secondary: \"divider_secondary\",\r\n tertiary: \"divider_tertiary\",\r\n quaternary: \"divider_quaternary\",\r\n clear: \"divider_clear\",\r\n success: \"divider_success\",\r\n warning: \"divider_warning\",\r\n error: \"divider_error\",\r\n};\r\n\r\nconst Divider: React.FC<DividerProps> = (props) => (\r\n <DividerBase {...props} classMap={classes} />\r\n);\r\n\r\nexport default Divider;\r\n"],"names":["forwardRef","getDefaultTheme","jsx","combineClassNames"],"mappings":";;;;;AASA,MAAM,cAAcA,MAAA;AAAA,EAClB,CACE;AAAA,IACE,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQC,kBAAAA,gBAAgB;AAAA,IACxB,QAAQ;AAAA,IACR,KAAK;AAAA,IACL;AAAA,IACA,eAAe,SAAS;AAAA,IACxB,eAAe;AAAA,IACf,GAAG;AAAA,KAEL,QACG;AACH,UAAM,aAAa,gBAAgB;AAEnC,UAAM,QAA6B;AAAA,MACjC,OAAO,aAAa,YAAY;AAAA,MAChC,QAAQ,aAAa,SAAS;AAAA,MAC9B,iBAAiB,SAAS,gBAAgB;AAAA,IAC5C;AAEA,UAAM,eAAe;AAEf,UAAA,OAAO,iBAAiB,OAAO,SAAY;AAG/C,WAAAC,2BAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAWC,WAAA;AAAA,UACT,SAAS;AAAA,UACT,SAAS,WAAW;AAAA,UACpB,SAAS,SAAS,KAAK;AAAA,UACvB,SAAS,SAAS,KAAK;AAAA,UACvB,UAAU,SAAS;AAAA,UACnB;AAAA,QACF;AAAA,QACC,GAAI,QAAQ,EAAE,KAAK;AAAA,QACnB,GAAI,QAAQ,cAAc,EAAE,oBAAoB,WAAW;AAAA,QAC3D,GAAI,eAAe,UAAa,EAAE,eAAe,WAAW;AAAA,QAC7D;AAAA,QACA,eAAa;AAAA,QACZ,GAAG;AAAA,MAAA;AAAA,IACN;AAAA,EAAA;AAGN;AAEA,YAAY,cAAc;ACxD1B,MAAM,UAAU;AAAA,EACd,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEM,MAAA,UAAkC,CAAC,UACvCD,+BAAC,eAAa,GAAG,OAAO,UAAU,QAAS,CAAA;;"}
1
+ {"version":3,"file":"Divider-TtfSFBcp.cjs","sources":["../../src/components/Divider/DividerBase.tsx","../../src/components/Divider/core/Divider.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\r\nimport { DividerProps } from \"./Divider.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport { getDefaultTheme } from \"../../config/boreal-style-config\";\r\n\r\nexport interface DividerBaseProps extends DividerProps {\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst DividerBase = forwardRef<HTMLElement, DividerBaseProps>(\r\n (\r\n {\r\n orientation = \"horizontal\",\r\n thickness = \"1px\",\r\n length = \"100%\",\r\n className = \"\",\r\n dashed = false,\r\n theme = getDefaultTheme(),\r\n state = \"\",\r\n as = \"div\",\r\n classMap,\r\n \"data-testid\": testId = \"divider\",\r\n \"aria-hidden\": ariaHidden,\r\n ...rest\r\n },\r\n ref\r\n ) => {\r\n const isVertical = orientation === \"vertical\";\r\n\r\n const style: React.CSSProperties = {\r\n width: isVertical ? thickness : length,\r\n height: isVertical ? length : thickness,\r\n backgroundColor: dashed ? \"transparent\" : undefined,\r\n };\r\n\r\n const ComponentTag = as;\r\n\r\n const role = ComponentTag === \"hr\" ? undefined : \"separator\";\r\n\r\n return (\r\n <ComponentTag\r\n ref={ref as never}\r\n className={combineClassNames(\r\n classMap.divider,\r\n classMap[orientation],\r\n theme && classMap[theme],\r\n state && classMap[state],\r\n dashed && classMap.dashed,\r\n className\r\n )}\r\n {...(role && { role })}\r\n {...(role && isVertical && { \"aria-orientation\": \"vertical\" })}\r\n {...(ariaHidden !== undefined && { \"aria-hidden\": ariaHidden })}\r\n style={style}\r\n data-testid={testId}\r\n {...rest}\r\n />\r\n );\r\n }\r\n);\r\n\r\nDividerBase.displayName = \"DividerBase\";\r\n\r\nexport default DividerBase;\r\n","import React from \"react\";\r\nimport DividerBase from \"../DividerBase\";\r\nimport \"./Divider.scss\";\r\nimport { DividerProps } from \"../Divider.types\";\r\n\r\nconst classes = {\r\n divider: \"divider\",\r\n horizontal: \"divider_horizontal\",\r\n vertical: \"divider_vertical\",\r\n dashed: \"divider_dashed\",\r\n primary: \"divider_primary\",\r\n secondary: \"divider_secondary\",\r\n tertiary: \"divider_tertiary\",\r\n quaternary: \"divider_quaternary\",\r\n clear: \"divider_clear\",\r\n success: \"divider_success\",\r\n warning: \"divider_warning\",\r\n error: \"divider_error\",\r\n};\r\n\r\nconst Divider: React.FC<DividerProps> = (props) => (\r\n <DividerBase {...props} classMap={classes} />\r\n);\r\n\r\nexport default Divider;\r\n"],"names":["forwardRef","getDefaultTheme","jsx","combineClassNames"],"mappings":";;;;;AASA,MAAM,cAAcA,MAAAA;AAAAA,EAClB,CACE;AAAA,IACE,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQC,kBAAAA,gBAAA;AAAA,IACR,QAAQ;AAAA,IACR,KAAK;AAAA,IACL;AAAA,IACA,eAAe,SAAS;AAAA,IACxB,eAAe;AAAA,IACf,GAAG;AAAA,EAAA,GAEL,QACG;AACH,UAAM,aAAa,gBAAgB;AAEnC,UAAM,QAA6B;AAAA,MACjC,OAAO,aAAa,YAAY;AAAA,MAChC,QAAQ,aAAa,SAAS;AAAA,MAC9B,iBAAiB,SAAS,gBAAgB;AAAA,IAAA;AAG5C,UAAM,eAAe;AAErB,UAAM,OAAO,iBAAiB,OAAO,SAAY;AAEjD,WACEC,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAWC,WAAAA;AAAAA,UACT,SAAS;AAAA,UACT,SAAS,WAAW;AAAA,UACpB,SAAS,SAAS,KAAK;AAAA,UACvB,SAAS,SAAS,KAAK;AAAA,UACvB,UAAU,SAAS;AAAA,UACnB;AAAA,QAAA;AAAA,QAED,GAAI,QAAQ,EAAE,KAAA;AAAA,QACd,GAAI,QAAQ,cAAc,EAAE,oBAAoB,WAAA;AAAA,QAChD,GAAI,eAAe,UAAa,EAAE,eAAe,WAAA;AAAA,QAClD;AAAA,QACA,eAAa;AAAA,QACZ,GAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEA,YAAY,cAAc;ACxD1B,MAAM,UAAU;AAAA,EACd,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAEA,MAAM,UAAkC,CAAC,UACvCD,+BAAC,eAAa,GAAG,OAAO,UAAU,QAAA,CAAS;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown-CL7TH2lJ.js","sources":["../../src/Icons/MenuIcon.tsx","../../src/components/Dropdown/DropdownBase.tsx","../../src/components/Dropdown/core/Dropdown.tsx"],"sourcesContent":["const MenuIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n strokeWidth=\"1.5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 5H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 12H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 19H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default MenuIcon;\r\n","import React, {\r\n useState,\r\n useRef,\r\n useEffect,\r\n KeyboardEvent,\r\n useId,\r\n JSX,\r\n ComponentType,\r\n useMemo,\r\n} from \"react\";\r\nimport { DropdownProps } from \"./Dropdown.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport MenuIcon from \"../../Icons/MenuIcon\";\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 BaseDropdownProps extends DropdownProps {\r\n IconButton: ComponentType<any>;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseDropdown: React.FC<BaseDropdownProps> = ({\r\n triggerIcon,\r\n items,\r\n align = \"right\",\r\n className = \"\",\r\n menuClassName = \"\",\r\n ariaLabel = \"Dropdown menu\",\r\n theme = getDefaultTheme(),\r\n toggleRounding = getDefaultRounding(),\r\n menuRounding = getDefaultRounding(),\r\n toggleShadow = getDefaultShadow(),\r\n menuShadow = getDefaultShadow(),\r\n toggleOutline = false,\r\n state = \"\",\r\n \"data-testid\": testId = \"dropdown\",\r\n IconButton,\r\n classMap,\r\n}: BaseDropdownProps): JSX.Element => {\r\n const [open, setOpen] = useState(false);\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const menuId = useId();\r\n\r\n const Icon = triggerIcon ?? MenuIcon;\r\n\r\n const toggleDropdown = () => setOpen((prev) => !prev);\r\n const closeDropdown = () => {\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n };\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (!open) return;\r\n\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n closeDropdown();\r\n } else if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev + 1) % items.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev - 1 + items.length) % items.length);\r\n } else if (e.key === \"Enter\" || e.key === \" \") {\r\n const item = items[activeIndex];\r\n if (item) {\r\n item.onClick?.();\r\n closeDropdown();\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (\r\n dropdownRef.current &&\r\n !dropdownRef.current.contains(e.target as Node)\r\n ) {\r\n closeDropdown();\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n\r\n if (open && menuRef.current) {\r\n const rect = menuRef.current.getBoundingClientRect();\r\n const isOverflowingRight = rect.right > window.innerWidth;\r\n const isOverflowingLeft = rect.left < 0;\r\n\r\n if (isOverflowingRight) {\r\n menuRef.current.setAttribute(\"data-overflow-right\", \"true\");\r\n menuRef.current.removeAttribute(\"data-overflow-left\");\r\n } else if (isOverflowingLeft) {\r\n menuRef.current.setAttribute(\"data-overflow-left\", \"true\");\r\n menuRef.current.removeAttribute(\"data-overflow-right\");\r\n } else {\r\n menuRef.current.removeAttribute(\"data-overflow-right\");\r\n menuRef.current.removeAttribute(\"data-overflow-left\");\r\n }\r\n }\r\n\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [open, menuRef]);\r\n\r\n useEffect(() => {\r\n const menuItems =\r\n menuRef.current?.querySelectorAll<HTMLElement>('[role=\"menuitem\"]');\r\n if (open && menuItems && activeIndex >= 0) {\r\n menuItems[activeIndex]?.focus();\r\n }\r\n }, [activeIndex, open]);\r\n\r\n const menuClassNames = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.menu,\r\n align === \"right\" ? classMap.alignRight : classMap.alignLeft,\r\n menuShadow && classMap[`shadow${capitalize(menuShadow)}`],\r\n menuRounding && classMap[`round${capitalize(menuRounding)}`],\r\n menuClassName\r\n ),\r\n [classMap, align, menuShadow, menuRounding, menuClassName]\r\n );\r\n\r\n return (\r\n <div\r\n ref={dropdownRef}\r\n className={combineClassNames(classMap.wrapper, className)}\r\n onKeyDown={handleKeyDown}\r\n data-testid={testId}\r\n >\r\n <IconButton\r\n icon={Icon}\r\n ariaLabel={ariaLabel}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n aria-controls={menuId}\r\n rounding={toggleRounding}\r\n shadow={toggleShadow}\r\n outline={toggleOutline}\r\n theme={theme}\r\n state={state}\r\n onClick={toggleDropdown}\r\n data-testid={`${testId}-trigger`}\r\n />\r\n\r\n {open && (\r\n <div\r\n id={menuId}\r\n ref={menuRef}\r\n role=\"menu\"\r\n aria-label={ariaLabel}\r\n className={menuClassNames}\r\n data-testid={`${testId}-menu`}\r\n >\r\n {items.map((item, index) =>\r\n item.href ? (\r\n <a\r\n key={index}\r\n href={item.href}\r\n className={classMap.item}\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n data-testid={item[\"data-testid\"]}\r\n >\r\n {item.icon && (\r\n <span className={classMap.icon}>{item.icon}</span>\r\n )}\r\n {item.label}\r\n </a>\r\n ) : (\r\n <button\r\n key={index}\r\n type=\"button\"\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n className={classMap.item}\r\n onClick={() => {\r\n item.onClick?.();\r\n closeDropdown();\r\n }}\r\n data-testid={item[\"data-testid\"]}\r\n >\r\n {item.icon && (\r\n <span className={classMap.icon}>{item.icon}</span>\r\n )}\r\n {item.label}\r\n </button>\r\n )\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default BaseDropdown;\r\n","import React from \"react\";\r\nimport BaseDropdown from \"../DropdownBase\";\r\nimport { DropdownProps } from \"../Dropdown.types\";\r\nimport { IconButton } from \"@/index.core\";\r\nimport \"./Dropdown.scss\";\r\n\r\nconst classes = {\r\n wrapper: \"dropdown\",\r\n menu: \"dropdown_menu\",\r\n item: \"dropdown_item\",\r\n icon: \"dropdown_icon\",\r\n\r\n alignRight: \"dropdown_menu_right\",\r\n alignLeft: \"dropdown_menu_left\",\r\n\r\n shadowNone: \"menu_shadow-None\",\r\n shadowLight: \"menu_shadow-Light\",\r\n shadowMedium: \"menu_shadow-Medium\",\r\n shadowStrong: \"menu_shadow-Strong\",\r\n shadowIntense: \"menu_shadow-Intense\",\r\n\r\n roundNone: \"menu_round-None\",\r\n roundSmall: \"menu_round-Small\",\r\n roundMedium: \"menu_round-Medium\",\r\n roundLarge: \"menu_round-Large\",\r\n};\r\n\r\nconst Dropdown: React.FC<DropdownProps> = (props) => {\r\n return <BaseDropdown {...props} IconButton={IconButton} classMap={classes} />;\r\n};\r\n\r\nexport default Dropdown;\r\n"],"names":["IconButton"],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown-CL7TH2lJ.js","sources":["../../src/Icons/MenuIcon.tsx","../../src/components/Dropdown/DropdownBase.tsx","../../src/components/Dropdown/core/Dropdown.tsx"],"sourcesContent":["const MenuIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n strokeWidth=\"1.5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 5H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 12H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 19H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default MenuIcon;\r\n","import React, {\r\n useState,\r\n useRef,\r\n useEffect,\r\n KeyboardEvent,\r\n useId,\r\n JSX,\r\n ComponentType,\r\n useMemo,\r\n} from \"react\";\r\nimport { DropdownProps } from \"./Dropdown.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport MenuIcon from \"../../Icons/MenuIcon\";\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 BaseDropdownProps extends DropdownProps {\r\n IconButton: ComponentType<any>;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseDropdown: React.FC<BaseDropdownProps> = ({\r\n triggerIcon,\r\n items,\r\n align = \"right\",\r\n className = \"\",\r\n menuClassName = \"\",\r\n ariaLabel = \"Dropdown menu\",\r\n theme = getDefaultTheme(),\r\n toggleRounding = getDefaultRounding(),\r\n menuRounding = getDefaultRounding(),\r\n toggleShadow = getDefaultShadow(),\r\n menuShadow = getDefaultShadow(),\r\n toggleOutline = false,\r\n state = \"\",\r\n \"data-testid\": testId = \"dropdown\",\r\n IconButton,\r\n classMap,\r\n}: BaseDropdownProps): JSX.Element => {\r\n const [open, setOpen] = useState(false);\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const menuId = useId();\r\n\r\n const Icon = triggerIcon ?? MenuIcon;\r\n\r\n const toggleDropdown = () => setOpen((prev) => !prev);\r\n const closeDropdown = () => {\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n };\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (!open) return;\r\n\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n closeDropdown();\r\n } else if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev + 1) % items.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev - 1 + items.length) % items.length);\r\n } else if (e.key === \"Enter\" || e.key === \" \") {\r\n const item = items[activeIndex];\r\n if (item) {\r\n item.onClick?.();\r\n closeDropdown();\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (\r\n dropdownRef.current &&\r\n !dropdownRef.current.contains(e.target as Node)\r\n ) {\r\n closeDropdown();\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n\r\n if (open && menuRef.current) {\r\n const rect = menuRef.current.getBoundingClientRect();\r\n const isOverflowingRight = rect.right > window.innerWidth;\r\n const isOverflowingLeft = rect.left < 0;\r\n\r\n if (isOverflowingRight) {\r\n menuRef.current.setAttribute(\"data-overflow-right\", \"true\");\r\n menuRef.current.removeAttribute(\"data-overflow-left\");\r\n } else if (isOverflowingLeft) {\r\n menuRef.current.setAttribute(\"data-overflow-left\", \"true\");\r\n menuRef.current.removeAttribute(\"data-overflow-right\");\r\n } else {\r\n menuRef.current.removeAttribute(\"data-overflow-right\");\r\n menuRef.current.removeAttribute(\"data-overflow-left\");\r\n }\r\n }\r\n\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [open, menuRef]);\r\n\r\n useEffect(() => {\r\n const menuItems =\r\n menuRef.current?.querySelectorAll<HTMLElement>('[role=\"menuitem\"]');\r\n if (open && menuItems && activeIndex >= 0) {\r\n menuItems[activeIndex]?.focus();\r\n }\r\n }, [activeIndex, open]);\r\n\r\n const menuClassNames = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.menu,\r\n align === \"right\" ? classMap.alignRight : classMap.alignLeft,\r\n menuShadow && classMap[`shadow${capitalize(menuShadow)}`],\r\n menuRounding && classMap[`round${capitalize(menuRounding)}`],\r\n menuClassName\r\n ),\r\n [classMap, align, menuShadow, menuRounding, menuClassName]\r\n );\r\n\r\n return (\r\n <div\r\n ref={dropdownRef}\r\n className={combineClassNames(classMap.wrapper, className)}\r\n onKeyDown={handleKeyDown}\r\n data-testid={testId}\r\n >\r\n <IconButton\r\n icon={Icon}\r\n ariaLabel={ariaLabel}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n aria-controls={menuId}\r\n rounding={toggleRounding}\r\n shadow={toggleShadow}\r\n outline={toggleOutline}\r\n theme={theme}\r\n state={state}\r\n onClick={toggleDropdown}\r\n data-testid={`${testId}-trigger`}\r\n />\r\n\r\n {open && (\r\n <div\r\n id={menuId}\r\n ref={menuRef}\r\n role=\"menu\"\r\n aria-label={ariaLabel}\r\n className={menuClassNames}\r\n data-testid={`${testId}-menu`}\r\n >\r\n {items.map((item, index) =>\r\n item.href ? (\r\n <a\r\n key={index}\r\n href={item.href}\r\n className={classMap.item}\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n data-testid={item[\"data-testid\"]}\r\n >\r\n {item.icon && (\r\n <span className={classMap.icon}>{item.icon}</span>\r\n )}\r\n {item.label}\r\n </a>\r\n ) : (\r\n <button\r\n key={index}\r\n type=\"button\"\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n className={classMap.item}\r\n onClick={() => {\r\n item.onClick?.();\r\n closeDropdown();\r\n }}\r\n data-testid={item[\"data-testid\"]}\r\n >\r\n {item.icon && (\r\n <span className={classMap.icon}>{item.icon}</span>\r\n )}\r\n {item.label}\r\n </button>\r\n )\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default BaseDropdown;\r\n","import React from \"react\";\r\nimport BaseDropdown from \"../DropdownBase\";\r\nimport { DropdownProps } from \"../Dropdown.types\";\r\nimport { IconButton } from \"@/index.core\";\r\nimport \"./Dropdown.scss\";\r\n\r\nconst classes = {\r\n wrapper: \"dropdown\",\r\n menu: \"dropdown_menu\",\r\n item: \"dropdown_item\",\r\n icon: \"dropdown_icon\",\r\n\r\n alignRight: \"dropdown_menu_right\",\r\n alignLeft: \"dropdown_menu_left\",\r\n\r\n shadowNone: \"menu_shadow-None\",\r\n shadowLight: \"menu_shadow-Light\",\r\n shadowMedium: \"menu_shadow-Medium\",\r\n shadowStrong: \"menu_shadow-Strong\",\r\n shadowIntense: \"menu_shadow-Intense\",\r\n\r\n roundNone: \"menu_round-None\",\r\n roundSmall: \"menu_round-Small\",\r\n roundMedium: \"menu_round-Medium\",\r\n roundLarge: \"menu_round-Large\",\r\n};\r\n\r\nconst Dropdown: React.FC<DropdownProps> = (props) => {\r\n return <BaseDropdown {...props} IconButton={IconButton} classMap={classes} />;\r\n};\r\n\r\nexport default Dropdown;\r\n"],"names":["IconButton"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown-CPsxvzTA.cjs","sources":["../../src/Icons/MenuIcon.tsx","../../src/components/Dropdown/DropdownBase.tsx","../../src/components/Dropdown/core/Dropdown.tsx"],"sourcesContent":["const MenuIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n strokeWidth=\"1.5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 5H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 12H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 19H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default MenuIcon;\r\n","import React, {\r\n useState,\r\n useRef,\r\n useEffect,\r\n KeyboardEvent,\r\n useId,\r\n JSX,\r\n ComponentType,\r\n useMemo,\r\n} from \"react\";\r\nimport { DropdownProps } from \"./Dropdown.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport MenuIcon from \"../../Icons/MenuIcon\";\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 BaseDropdownProps extends DropdownProps {\r\n IconButton: ComponentType<any>;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseDropdown: React.FC<BaseDropdownProps> = ({\r\n triggerIcon,\r\n items,\r\n align = \"right\",\r\n className = \"\",\r\n menuClassName = \"\",\r\n ariaLabel = \"Dropdown menu\",\r\n theme = getDefaultTheme(),\r\n toggleRounding = getDefaultRounding(),\r\n menuRounding = getDefaultRounding(),\r\n toggleShadow = getDefaultShadow(),\r\n menuShadow = getDefaultShadow(),\r\n toggleOutline = false,\r\n state = \"\",\r\n \"data-testid\": testId = \"dropdown\",\r\n IconButton,\r\n classMap,\r\n}: BaseDropdownProps): JSX.Element => {\r\n const [open, setOpen] = useState(false);\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const menuId = useId();\r\n\r\n const Icon = triggerIcon ?? MenuIcon;\r\n\r\n const toggleDropdown = () => setOpen((prev) => !prev);\r\n const closeDropdown = () => {\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n };\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (!open) return;\r\n\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n closeDropdown();\r\n } else if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev + 1) % items.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev - 1 + items.length) % items.length);\r\n } else if (e.key === \"Enter\" || e.key === \" \") {\r\n const item = items[activeIndex];\r\n if (item) {\r\n item.onClick?.();\r\n closeDropdown();\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (\r\n dropdownRef.current &&\r\n !dropdownRef.current.contains(e.target as Node)\r\n ) {\r\n closeDropdown();\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n\r\n if (open && menuRef.current) {\r\n const rect = menuRef.current.getBoundingClientRect();\r\n const isOverflowingRight = rect.right > window.innerWidth;\r\n const isOverflowingLeft = rect.left < 0;\r\n\r\n if (isOverflowingRight) {\r\n menuRef.current.setAttribute(\"data-overflow-right\", \"true\");\r\n menuRef.current.removeAttribute(\"data-overflow-left\");\r\n } else if (isOverflowingLeft) {\r\n menuRef.current.setAttribute(\"data-overflow-left\", \"true\");\r\n menuRef.current.removeAttribute(\"data-overflow-right\");\r\n } else {\r\n menuRef.current.removeAttribute(\"data-overflow-right\");\r\n menuRef.current.removeAttribute(\"data-overflow-left\");\r\n }\r\n }\r\n\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [open, menuRef]);\r\n\r\n useEffect(() => {\r\n const menuItems =\r\n menuRef.current?.querySelectorAll<HTMLElement>('[role=\"menuitem\"]');\r\n if (open && menuItems && activeIndex >= 0) {\r\n menuItems[activeIndex]?.focus();\r\n }\r\n }, [activeIndex, open]);\r\n\r\n const menuClassNames = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.menu,\r\n align === \"right\" ? classMap.alignRight : classMap.alignLeft,\r\n menuShadow && classMap[`shadow${capitalize(menuShadow)}`],\r\n menuRounding && classMap[`round${capitalize(menuRounding)}`],\r\n menuClassName\r\n ),\r\n [classMap, align, menuShadow, menuRounding, menuClassName]\r\n );\r\n\r\n return (\r\n <div\r\n ref={dropdownRef}\r\n className={combineClassNames(classMap.wrapper, className)}\r\n onKeyDown={handleKeyDown}\r\n data-testid={testId}\r\n >\r\n <IconButton\r\n icon={Icon}\r\n ariaLabel={ariaLabel}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n aria-controls={menuId}\r\n rounding={toggleRounding}\r\n shadow={toggleShadow}\r\n outline={toggleOutline}\r\n theme={theme}\r\n state={state}\r\n onClick={toggleDropdown}\r\n data-testid={`${testId}-trigger`}\r\n />\r\n\r\n {open && (\r\n <div\r\n id={menuId}\r\n ref={menuRef}\r\n role=\"menu\"\r\n aria-label={ariaLabel}\r\n className={menuClassNames}\r\n data-testid={`${testId}-menu`}\r\n >\r\n {items.map((item, index) =>\r\n item.href ? (\r\n <a\r\n key={index}\r\n href={item.href}\r\n className={classMap.item}\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n data-testid={item[\"data-testid\"]}\r\n >\r\n {item.icon && (\r\n <span className={classMap.icon}>{item.icon}</span>\r\n )}\r\n {item.label}\r\n </a>\r\n ) : (\r\n <button\r\n key={index}\r\n type=\"button\"\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n className={classMap.item}\r\n onClick={() => {\r\n item.onClick?.();\r\n closeDropdown();\r\n }}\r\n data-testid={item[\"data-testid\"]}\r\n >\r\n {item.icon && (\r\n <span className={classMap.icon}>{item.icon}</span>\r\n )}\r\n {item.label}\r\n </button>\r\n )\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default BaseDropdown;\r\n","import React from \"react\";\r\nimport BaseDropdown from \"../DropdownBase\";\r\nimport { DropdownProps } from \"../Dropdown.types\";\r\nimport { IconButton } from \"@/index.core\";\r\nimport \"./Dropdown.scss\";\r\n\r\nconst classes = {\r\n wrapper: \"dropdown\",\r\n menu: \"dropdown_menu\",\r\n item: \"dropdown_item\",\r\n icon: \"dropdown_icon\",\r\n\r\n alignRight: \"dropdown_menu_right\",\r\n alignLeft: \"dropdown_menu_left\",\r\n\r\n shadowNone: \"menu_shadow-None\",\r\n shadowLight: \"menu_shadow-Light\",\r\n shadowMedium: \"menu_shadow-Medium\",\r\n shadowStrong: \"menu_shadow-Strong\",\r\n shadowIntense: \"menu_shadow-Intense\",\r\n\r\n roundNone: \"menu_round-None\",\r\n roundSmall: \"menu_round-Small\",\r\n roundMedium: \"menu_round-Medium\",\r\n roundLarge: \"menu_round-Large\",\r\n};\r\n\r\nconst Dropdown: React.FC<DropdownProps> = (props) => {\r\n return <BaseDropdown {...props} IconButton={IconButton} classMap={classes} />;\r\n};\r\n\r\nexport default Dropdown;\r\n"],"names":["jsxs","jsx","getDefaultTheme","getDefaultRounding","getDefaultShadow","IconButton","useState","useRef","useId","useEffect","useMemo","combineClassNames","capitalize"],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown-CPsxvzTA.cjs","sources":["../../src/Icons/MenuIcon.tsx","../../src/components/Dropdown/DropdownBase.tsx","../../src/components/Dropdown/core/Dropdown.tsx"],"sourcesContent":["const MenuIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\r\n <svg\r\n width=\"24px\"\r\n height=\"24px\"\r\n strokeWidth=\"1.5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n color=\"currentColor\"\r\n {...props}\r\n >\r\n <path\r\n d=\"M3 5H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 12H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n <path\r\n d=\"M3 19H21\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n ></path>\r\n </svg>\r\n);\r\n\r\nexport default MenuIcon;\r\n","import React, {\r\n useState,\r\n useRef,\r\n useEffect,\r\n KeyboardEvent,\r\n useId,\r\n JSX,\r\n ComponentType,\r\n useMemo,\r\n} from \"react\";\r\nimport { DropdownProps } from \"./Dropdown.types\";\r\nimport { combineClassNames } from \"../../utils/classNames\";\r\nimport MenuIcon from \"../../Icons/MenuIcon\";\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 BaseDropdownProps extends DropdownProps {\r\n IconButton: ComponentType<any>;\r\n classMap: Record<string, string>;\r\n}\r\n\r\nconst BaseDropdown: React.FC<BaseDropdownProps> = ({\r\n triggerIcon,\r\n items,\r\n align = \"right\",\r\n className = \"\",\r\n menuClassName = \"\",\r\n ariaLabel = \"Dropdown menu\",\r\n theme = getDefaultTheme(),\r\n toggleRounding = getDefaultRounding(),\r\n menuRounding = getDefaultRounding(),\r\n toggleShadow = getDefaultShadow(),\r\n menuShadow = getDefaultShadow(),\r\n toggleOutline = false,\r\n state = \"\",\r\n \"data-testid\": testId = \"dropdown\",\r\n IconButton,\r\n classMap,\r\n}: BaseDropdownProps): JSX.Element => {\r\n const [open, setOpen] = useState(false);\r\n const [activeIndex, setActiveIndex] = useState<number>(-1);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const menuId = useId();\r\n\r\n const Icon = triggerIcon ?? MenuIcon;\r\n\r\n const toggleDropdown = () => setOpen((prev) => !prev);\r\n const closeDropdown = () => {\r\n setOpen(false);\r\n setActiveIndex(-1);\r\n };\r\n\r\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\r\n if (!open) return;\r\n\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n closeDropdown();\r\n } else if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev + 1) % items.length);\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setActiveIndex((prev) => (prev - 1 + items.length) % items.length);\r\n } else if (e.key === \"Enter\" || e.key === \" \") {\r\n const item = items[activeIndex];\r\n if (item) {\r\n item.onClick?.();\r\n closeDropdown();\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (\r\n dropdownRef.current &&\r\n !dropdownRef.current.contains(e.target as Node)\r\n ) {\r\n closeDropdown();\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n\r\n if (open && menuRef.current) {\r\n const rect = menuRef.current.getBoundingClientRect();\r\n const isOverflowingRight = rect.right > window.innerWidth;\r\n const isOverflowingLeft = rect.left < 0;\r\n\r\n if (isOverflowingRight) {\r\n menuRef.current.setAttribute(\"data-overflow-right\", \"true\");\r\n menuRef.current.removeAttribute(\"data-overflow-left\");\r\n } else if (isOverflowingLeft) {\r\n menuRef.current.setAttribute(\"data-overflow-left\", \"true\");\r\n menuRef.current.removeAttribute(\"data-overflow-right\");\r\n } else {\r\n menuRef.current.removeAttribute(\"data-overflow-right\");\r\n menuRef.current.removeAttribute(\"data-overflow-left\");\r\n }\r\n }\r\n\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [open, menuRef]);\r\n\r\n useEffect(() => {\r\n const menuItems =\r\n menuRef.current?.querySelectorAll<HTMLElement>('[role=\"menuitem\"]');\r\n if (open && menuItems && activeIndex >= 0) {\r\n menuItems[activeIndex]?.focus();\r\n }\r\n }, [activeIndex, open]);\r\n\r\n const menuClassNames = useMemo(\r\n () =>\r\n combineClassNames(\r\n classMap.menu,\r\n align === \"right\" ? classMap.alignRight : classMap.alignLeft,\r\n menuShadow && classMap[`shadow${capitalize(menuShadow)}`],\r\n menuRounding && classMap[`round${capitalize(menuRounding)}`],\r\n menuClassName\r\n ),\r\n [classMap, align, menuShadow, menuRounding, menuClassName]\r\n );\r\n\r\n return (\r\n <div\r\n ref={dropdownRef}\r\n className={combineClassNames(classMap.wrapper, className)}\r\n onKeyDown={handleKeyDown}\r\n data-testid={testId}\r\n >\r\n <IconButton\r\n icon={Icon}\r\n ariaLabel={ariaLabel}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n aria-controls={menuId}\r\n rounding={toggleRounding}\r\n shadow={toggleShadow}\r\n outline={toggleOutline}\r\n theme={theme}\r\n state={state}\r\n onClick={toggleDropdown}\r\n data-testid={`${testId}-trigger`}\r\n />\r\n\r\n {open && (\r\n <div\r\n id={menuId}\r\n ref={menuRef}\r\n role=\"menu\"\r\n aria-label={ariaLabel}\r\n className={menuClassNames}\r\n data-testid={`${testId}-menu`}\r\n >\r\n {items.map((item, index) =>\r\n item.href ? (\r\n <a\r\n key={index}\r\n href={item.href}\r\n className={classMap.item}\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n data-testid={item[\"data-testid\"]}\r\n >\r\n {item.icon && (\r\n <span className={classMap.icon}>{item.icon}</span>\r\n )}\r\n {item.label}\r\n </a>\r\n ) : (\r\n <button\r\n key={index}\r\n type=\"button\"\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n className={classMap.item}\r\n onClick={() => {\r\n item.onClick?.();\r\n closeDropdown();\r\n }}\r\n data-testid={item[\"data-testid\"]}\r\n >\r\n {item.icon && (\r\n <span className={classMap.icon}>{item.icon}</span>\r\n )}\r\n {item.label}\r\n </button>\r\n )\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default BaseDropdown;\r\n","import React from \"react\";\r\nimport BaseDropdown from \"../DropdownBase\";\r\nimport { DropdownProps } from \"../Dropdown.types\";\r\nimport { IconButton } from \"@/index.core\";\r\nimport \"./Dropdown.scss\";\r\n\r\nconst classes = {\r\n wrapper: \"dropdown\",\r\n menu: \"dropdown_menu\",\r\n item: \"dropdown_item\",\r\n icon: \"dropdown_icon\",\r\n\r\n alignRight: \"dropdown_menu_right\",\r\n alignLeft: \"dropdown_menu_left\",\r\n\r\n shadowNone: \"menu_shadow-None\",\r\n shadowLight: \"menu_shadow-Light\",\r\n shadowMedium: \"menu_shadow-Medium\",\r\n shadowStrong: \"menu_shadow-Strong\",\r\n shadowIntense: \"menu_shadow-Intense\",\r\n\r\n roundNone: \"menu_round-None\",\r\n roundSmall: \"menu_round-Small\",\r\n roundMedium: \"menu_round-Medium\",\r\n roundLarge: \"menu_round-Large\",\r\n};\r\n\r\nconst Dropdown: React.FC<DropdownProps> = (props) => {\r\n return <BaseDropdown {...props} IconButton={IconButton} classMap={classes} />;\r\n};\r\n\r\nexport default Dropdown;\r\n"],"names":["jsxs","jsx","getDefaultTheme","getDefaultRounding","getDefaultShadow","IconButton","useState","useRef","useId","useEffect","useMemo","combineClassNames","capitalize"],"mappings":"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"}