@uva-glass/component-library 3.56.0 → 3.57.0

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 (389) hide show
  1. package/dist/{Accordion-DaCqVof1.js → Accordion-DQNoRsg_.js} +2 -2
  2. package/dist/{Accordion-DaCqVof1.js.map → Accordion-DQNoRsg_.js.map} +1 -1
  3. package/dist/{AccordionCard-CD5H9gR1.js → AccordionCard-C4k8EI39.js} +2 -2
  4. package/dist/{AccordionCard-CD5H9gR1.js.map → AccordionCard-C4k8EI39.js.map} +1 -1
  5. package/dist/{ActionList-C0hD9noC.js → ActionList-D2GC2qPX.js} +2 -2
  6. package/dist/{ActionList-C0hD9noC.js.map → ActionList-D2GC2qPX.js.map} +1 -1
  7. package/dist/{AddCatalogueLinkForm-DNv2tEdF.js → AddCatalogueLinkForm-Di0xm7Ep.js} +5 -5
  8. package/dist/{AddCatalogueLinkForm-DNv2tEdF.js.map → AddCatalogueLinkForm-Di0xm7Ep.js.map} +1 -1
  9. package/dist/{AppStatusBar-BK0yaC4G.js → AppStatusBar-DW-w7Nzp.js} +2 -2
  10. package/dist/{AppStatusBar-BK0yaC4G.js.map → AppStatusBar-DW-w7Nzp.js.map} +1 -1
  11. package/dist/{ButtonGroup-ZqGGZ1rz.js → ButtonGroup-D2z5UWTR.js} +2 -2
  12. package/dist/{ButtonGroup-ZqGGZ1rz.js.map → ButtonGroup-D2z5UWTR.js.map} +1 -1
  13. package/dist/{Card-BH1ySOiP.js → Card-DENYj3eR.js} +3 -3
  14. package/dist/{Card-BH1ySOiP.js.map → Card-DENYj3eR.js.map} +1 -1
  15. package/dist/{CheckboxButtonBar-DpNnwLzI.js → CheckboxButtonBar-OrJSqUTN.js} +5 -5
  16. package/dist/{CheckboxButtonBar-DpNnwLzI.js.map → CheckboxButtonBar-OrJSqUTN.js.map} +1 -1
  17. package/dist/{Column-BwCVSZrG.js → Column-jJBZgP8m.js} +2 -2
  18. package/dist/{Column-BwCVSZrG.js.map → Column-jJBZgP8m.js.map} +1 -1
  19. package/dist/{Container-DK25h_-f.js → Container-DOcrVe7u.js} +2 -2
  20. package/dist/{Container-DK25h_-f.js.map → Container-DOcrVe7u.js.map} +1 -1
  21. package/dist/{ControlsButton-9uR_zW_F.js → ControlsButton-Byx4XQtB.js} +2 -2
  22. package/dist/{ControlsButton-9uR_zW_F.js.map → ControlsButton-Byx4XQtB.js.map} +1 -1
  23. package/dist/{CopyableText-hSqhyUWx.js → CopyableText-BKsM-TuS.js} +2 -2
  24. package/dist/{CopyableText-hSqhyUWx.js.map → CopyableText-BKsM-TuS.js.map} +1 -1
  25. package/dist/{DataTable-C46IkAmF.js → DataTable-Cgn_RKTA.js} +2 -2
  26. package/dist/{DataTable-C46IkAmF.js.map → DataTable-Cgn_RKTA.js.map} +1 -1
  27. package/dist/{Drawer-BbVJqFQI.js → Drawer-fUw0LEuj.js} +3 -3
  28. package/dist/{Drawer-BbVJqFQI.js.map → Drawer-fUw0LEuj.js.map} +1 -1
  29. package/dist/{EmptyStateDataDisplay-IT2P3ius.js → EmptyStateDataDisplay-FBDAGO88.js} +2 -2
  30. package/dist/{EmptyStateDataDisplay-IT2P3ius.js.map → EmptyStateDataDisplay-FBDAGO88.js.map} +1 -1
  31. package/dist/{ExpandableInfoPanel-DMfcJFP3.js → ExpandableInfoPanel-BmbgbAjf.js} +2 -2
  32. package/dist/{ExpandableInfoPanel-DMfcJFP3.js.map → ExpandableInfoPanel-BmbgbAjf.js.map} +1 -1
  33. package/dist/{FeedbackBar-DRbJVniP.js → FeedbackBar-DEDpoNy7.js} +3 -3
  34. package/dist/{FeedbackBar-DRbJVniP.js.map → FeedbackBar-DEDpoNy7.js.map} +1 -1
  35. package/dist/{FeedbackBox-CaSxB4uc.js → FeedbackBox-BpOf_dxg.js} +2 -2
  36. package/dist/{FeedbackBox-CaSxB4uc.js.map → FeedbackBox-BpOf_dxg.js.map} +1 -1
  37. package/dist/{Fieldset-D01_rj_p.js → Fieldset-CgnLyAyS.js} +2 -2
  38. package/dist/{Fieldset-D01_rj_p.js.map → Fieldset-CgnLyAyS.js.map} +1 -1
  39. package/dist/{FormField-CcV84TfI.js → FormField-ByjTkKKq.js} +2 -2
  40. package/dist/{FormField-CcV84TfI.js.map → FormField-ByjTkKKq.js.map} +1 -1
  41. package/dist/{IconButton-CSNMVEG1.js → IconButton-BZVNomru.js} +2 -2
  42. package/dist/{IconButton-CSNMVEG1.js.map → IconButton-BZVNomru.js.map} +1 -1
  43. package/dist/{InfoMessage-COywXu4O.js → InfoMessage-CCEg222m.js} +2 -2
  44. package/dist/{InfoMessage-COywXu4O.js.map → InfoMessage-CCEg222m.js.map} +1 -1
  45. package/dist/{Input-BzKvzbzP.js → Input-CF3dxqTC.js} +2 -2
  46. package/dist/{Input-BzKvzbzP.js.map → Input-CF3dxqTC.js.map} +1 -1
  47. package/dist/{InputField-T01uazlI.js → InputField-asFsxHvx.js} +2 -2
  48. package/dist/{InputField-T01uazlI.js.map → InputField-asFsxHvx.js.map} +1 -1
  49. package/dist/{Label-D0ACrYG3.js → Label-52ny6d06.js} +2 -2
  50. package/dist/{Label-D0ACrYG3.js.map → Label-52ny6d06.js.map} +1 -1
  51. package/dist/{Lexical.prod-8zZnpGo4.js → Lexical.prod-DApSVwEN.js} +2 -2
  52. package/dist/Lexical.prod-DApSVwEN.js.map +1 -0
  53. package/dist/{LexicalClipboard.prod-hbxbsROy.js → LexicalClipboard.prod--xxt8Vi4.js} +6 -6
  54. package/dist/LexicalClipboard.prod--xxt8Vi4.js.map +1 -0
  55. package/dist/{LexicalComposerContext.prod-y_BRxu3Z.js → LexicalComposerContext.prod-o3ynMZsi.js} +2 -2
  56. package/dist/LexicalComposerContext.prod-o3ynMZsi.js.map +1 -0
  57. package/dist/{LexicalExtension.prod-v8IpET5E.js → LexicalExtension.prod-efmFsltb.js} +4 -4
  58. package/dist/LexicalExtension.prod-efmFsltb.js.map +1 -0
  59. package/dist/{LexicalLink.prod-BVUv9-sZ.js → LexicalLink.prod-DCBvBDd1.js} +5 -5
  60. package/dist/LexicalLink.prod-DCBvBDd1.js.map +1 -0
  61. package/dist/{LexicalList.prod-CCPDDafy.js → LexicalList.prod-DA6gHLh6.js} +5 -5
  62. package/dist/LexicalList.prod-DA6gHLh6.js.map +1 -0
  63. package/dist/{LexicalTable.prod-D_9Dr3kL.js → LexicalTable.prod-Dw8vTvL0.js} +6 -6
  64. package/dist/LexicalTable.prod-Dw8vTvL0.js.map +1 -0
  65. package/dist/{LexicalUtils.prod-BWhWP8es.js → LexicalUtils.prod-DRNc5TMZ.js} +4 -4
  66. package/dist/LexicalUtils.prod-DRNc5TMZ.js.map +1 -0
  67. package/dist/{LinkContextMenu-CTu2nP2j.js → LinkContextMenu-Jna2w4Ob.js} +2 -2
  68. package/dist/{LinkContextMenu-CTu2nP2j.js.map → LinkContextMenu-Jna2w4Ob.js.map} +1 -1
  69. package/dist/{MenuLink-La_3ANEL.js → MenuLink-sK2_W2zs.js} +2 -2
  70. package/dist/{MenuLink-La_3ANEL.js.map → MenuLink-sK2_W2zs.js.map} +1 -1
  71. package/dist/{ModalDialog-J7xcPcnS.js → ModalDialog-4V70sxK_.js} +3 -3
  72. package/dist/{ModalDialog-J7xcPcnS.js.map → ModalDialog-4V70sxK_.js.map} +1 -1
  73. package/dist/{MultiSelectBox-BmBxa6PH.js → MultiSelectBox-D34qAgzc.js} +2 -2
  74. package/dist/{MultiSelectBox-BmBxa6PH.js.map → MultiSelectBox-D34qAgzc.js.map} +1 -1
  75. package/dist/{MultiSelectItem-6d8kQgFs.js → MultiSelectItem-hx3Y4Lmk.js} +2 -2
  76. package/dist/{MultiSelectItem-6d8kQgFs.js.map → MultiSelectItem-hx3Y4Lmk.js.map} +1 -1
  77. package/dist/{Notification-BAqCenxt.js → Notification-BhqWENfu.js} +2 -2
  78. package/dist/{Notification-BAqCenxt.js.map → Notification-BhqWENfu.js.map} +1 -1
  79. package/dist/{OverlayCloseButton-j-7mC4Zz.js → OverlayCloseButton-Dt6Yec8G.js} +2 -2
  80. package/dist/{OverlayCloseButton-j-7mC4Zz.js.map → OverlayCloseButton-Dt6Yec8G.js.map} +1 -1
  81. package/dist/{OverlayStepBar-Cj_-0waE.js → OverlayStepBar-BiC06Itd.js} +2 -2
  82. package/dist/{OverlayStepBar-Cj_-0waE.js.map → OverlayStepBar-BiC06Itd.js.map} +1 -1
  83. package/dist/{PageOverlay-DqwdG5ve.js → PageOverlay-BR9ypiar.js} +3 -3
  84. package/dist/{PageOverlay-DqwdG5ve.js.map → PageOverlay-BR9ypiar.js.map} +1 -1
  85. package/dist/{PasteHandlerPlugin-Bc6n-G35.js → PasteHandlerPlugin-IsbHaMUu.js} +6 -6
  86. package/dist/{PasteHandlerPlugin-Bc6n-G35.js.map → PasteHandlerPlugin-IsbHaMUu.js.map} +1 -1
  87. package/dist/{Periods-C5cxLlWt.js → Periods-B4ms3N24.js} +2 -2
  88. package/dist/{Periods-C5cxLlWt.js.map → Periods-B4ms3N24.js.map} +1 -1
  89. package/dist/{ProgrammeCard-CAAOSWKa.js → ProgrammeCard-DdCFNx0d.js} +2 -2
  90. package/dist/{ProgrammeCard-CAAOSWKa.js.map → ProgrammeCard-DdCFNx0d.js.map} +1 -1
  91. package/dist/{RadioButton-CKALsbBb.js → RadioButton-DmBpXwIS.js} +2 -2
  92. package/dist/{RadioButton-CKALsbBb.js.map → RadioButton-DmBpXwIS.js.map} +1 -1
  93. package/dist/{RadioGroup-DhnnBRJu.js → RadioGroup-DlQjMmpa.js} +3 -3
  94. package/dist/{RadioGroup-DhnnBRJu.js.map → RadioGroup-DlQjMmpa.js.map} +1 -1
  95. package/dist/{Repeater-Bnoqqz0X.js → Repeater-BAEfOMZI.js} +2 -2
  96. package/dist/{Repeater-Bnoqqz0X.js.map → Repeater-BAEfOMZI.js.map} +1 -1
  97. package/dist/{SectionNotification-BT0Z2edJ.js → SectionNotification-CN-NdGL8.js} +2 -2
  98. package/dist/{SectionNotification-BT0Z2edJ.js.map → SectionNotification-CN-NdGL8.js.map} +1 -1
  99. package/dist/{Slider-dCmT0VM2.js → Slider-Czd2xAGf.js} +2 -2
  100. package/dist/{Slider-dCmT0VM2.js.map → Slider-Czd2xAGf.js.map} +1 -1
  101. package/dist/{SortableProvider-DV6gWmq_.js → SortableProvider-D-6Ttz0h.js} +2 -2
  102. package/dist/{SortableProvider-DV6gWmq_.js.map → SortableProvider-D-6Ttz0h.js.map} +1 -1
  103. package/dist/{StatusBage-CfEIuIPa.js → StatusBage-hJmNPqtk.js} +2 -2
  104. package/dist/{StatusBage-CfEIuIPa.js.map → StatusBage-hJmNPqtk.js.map} +1 -1
  105. package/dist/{StatusPill-CbJV4t-V.js → StatusPill-vdqU92pW.js} +2 -2
  106. package/dist/{StatusPill-CbJV4t-V.js.map → StatusPill-vdqU92pW.js.map} +1 -1
  107. package/dist/{TableCellContextMenu-9V8mnPmU.js → TableCellContextMenu-Dm-UNfH8.js} +3 -3
  108. package/dist/{TableCellContextMenu-9V8mnPmU.js.map → TableCellContextMenu-Dm-UNfH8.js.map} +1 -1
  109. package/dist/{TableCellResizerPlugin-Djym940U.js → TableCellResizerPlugin-OgsG5jSq.js} +6 -6
  110. package/dist/TableCellResizerPlugin-OgsG5jSq.js.map +1 -0
  111. package/dist/{TextArea-GR2ZWwLh.js → TextArea-D_VoyGIO.js} +2 -2
  112. package/dist/{TextArea-GR2ZWwLh.js.map → TextArea-D_VoyGIO.js.map} +1 -1
  113. package/dist/{ToggleSwitch-b54K58vY.js → ToggleSwitch-ev4Jh4y-.js} +2 -2
  114. package/dist/{ToggleSwitch-b54K58vY.js.map → ToggleSwitch-ev4Jh4y-.js.map} +1 -1
  115. package/dist/{VarIndicator-DoMWwSUm.js → VarIndicator-D0cnlcIf.js} +2 -2
  116. package/dist/{VarIndicator-DoMWwSUm.js.map → VarIndicator-D0cnlcIf.js.map} +1 -1
  117. package/dist/{chunk-FON5IJBZ-BBb6rYhU.js → chunk-5WKL7XVT-3IraU-Ja.js} +19 -24
  118. package/dist/chunk-5WKL7XVT-3IraU-Ja.js.map +1 -0
  119. package/dist/{client-DJaPTT6C.js → client-BcEWjSJP.js} +2 -2
  120. package/dist/client-BcEWjSJP.js.map +1 -0
  121. package/dist/{clsx-BWCAbrjV.js → clsx-C67XSbzZ.js} +2 -2
  122. package/dist/clsx-C67XSbzZ.js.map +1 -0
  123. package/dist/components/Accordion/Accordion.js +1 -1
  124. package/dist/components/Accordion/Accordion.stories.js +2 -2
  125. package/dist/components/Accordion/Accordion.test.js +4 -4
  126. package/dist/components/Accordion/index.js +1 -1
  127. package/dist/components/AccordionCard/AccordionCard.js +1 -1
  128. package/dist/components/AccordionCard/AccordionCard.stories.js +2 -2
  129. package/dist/components/AccordionCard/AccordionCard.test.js +4 -4
  130. package/dist/components/AccordionCard/index.js +1 -1
  131. package/dist/components/ActionList/ActionList.js +1 -1
  132. package/dist/components/ActionList/ActionList.stories.js +1 -1
  133. package/dist/components/ActionList/ActionList.test.js +4 -4
  134. package/dist/components/ActionList/index.js +1 -1
  135. package/dist/components/AppStatusBar/AppStatusBar.js +1 -1
  136. package/dist/components/AppStatusBar/AppStatusBar.stories.js +1 -1
  137. package/dist/components/AppStatusBar/AppStatusBar.test.js +3 -3
  138. package/dist/components/AppStatusBar/index.js +1 -1
  139. package/dist/components/Attention/Attention.test.js +2 -2
  140. package/dist/components/Backdrop/Backdrop.stories.js +1 -1
  141. package/dist/components/Backdrop/Backdrop.test.js +2 -2
  142. package/dist/components/ButtonGroup/ButtonGroup.js +1 -1
  143. package/dist/components/ButtonGroup/ButtonGroup.stories.js +2 -2
  144. package/dist/components/ButtonGroup/index.js +1 -1
  145. package/dist/components/Buttons/Button.js +1 -1
  146. package/dist/components/Buttons/Button.stories.js +1 -1
  147. package/dist/components/Buttons/Button.test.js +2 -2
  148. package/dist/components/Buttons/LinkButton.js +1 -1
  149. package/dist/components/Buttons/LinkButton.stories.js +1 -1
  150. package/dist/components/Buttons/LinkButton.test.js +2 -2
  151. package/dist/components/Buttons/MenuButton.js +1 -1
  152. package/dist/components/Buttons/MenuButton.stories.js +1 -1
  153. package/dist/components/Buttons/MenuButton.test.js +2 -2
  154. package/dist/components/Card/Card.js +1 -1
  155. package/dist/components/Card/Card.stories.js +1 -1
  156. package/dist/components/Card/Card.test.js +3 -3
  157. package/dist/components/Card/index.js +1 -1
  158. package/dist/components/Checkbox/Checkbox.stories.js +3 -3
  159. package/dist/components/Checkbox/Checkbox.test.js +3 -3
  160. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.js +1 -1
  161. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +3 -3
  162. package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +3 -3
  163. package/dist/components/CheckboxButtonBar/index.js +1 -1
  164. package/dist/components/CheckboxTree/CheckboxTree.js +1 -1
  165. package/dist/components/CheckboxTree/CheckboxTree.stories.js +3 -3
  166. package/dist/components/CheckboxTree/index.js +1 -1
  167. package/dist/components/Chip/Chip.stories.js +1 -1
  168. package/dist/components/ControlsButton/ControlsButton.js +1 -1
  169. package/dist/components/ControlsButton/ControlsButton.stories.js +3 -3
  170. package/dist/components/ControlsButton/index.js +1 -1
  171. package/dist/components/CopyableText/CopyableText.js +1 -1
  172. package/dist/components/CopyableText/CopyableText.stories.js +1 -1
  173. package/dist/components/CopyableText/index.js +1 -1
  174. package/dist/components/DataTable/DataTable.js +1 -1
  175. package/dist/components/DataTable/DataTable.stories.js +1 -1
  176. package/dist/components/DataTable/index.js +1 -1
  177. package/dist/components/Drawer/Drawer.js +1 -1
  178. package/dist/components/Drawer/Drawer.stories.js +3 -3
  179. package/dist/components/Drawer/index.js +1 -1
  180. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.js +1 -1
  181. package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.stories.js +1 -1
  182. package/dist/components/EmptyStateDataDisplay/index.js +1 -1
  183. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.js +1 -1
  184. package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.stories.js +2 -2
  185. package/dist/components/ExpandableInfoPanel/index.js +1 -1
  186. package/dist/components/FeedbackBar/FeedbackBar.js +1 -1
  187. package/dist/components/FeedbackBar/FeedbackBar.stories.js +3 -3
  188. package/dist/components/FeedbackBar/FeedbackBar.test.js +3 -3
  189. package/dist/components/FeedbackBar/index.js +1 -1
  190. package/dist/components/FeedbackBox/FeedbackBox.js +1 -1
  191. package/dist/components/FeedbackBox/FeedbackBox.stories.js +3 -3
  192. package/dist/components/FeedbackBox/index.js +1 -1
  193. package/dist/components/Fieldset/Fieldset.js +1 -1
  194. package/dist/components/Fieldset/Fieldset.stories.js +5 -5
  195. package/dist/components/Fieldset/index.js +1 -1
  196. package/dist/components/FormField/FormField.js +1 -1
  197. package/dist/components/FormField/FormField.stories.js +4 -4
  198. package/dist/components/FormField/index.js +1 -1
  199. package/dist/components/FormInput/FormInput.js +1 -1
  200. package/dist/components/FormInput/FormInput.stories.js +2 -2
  201. package/dist/components/FormInput/index.js +1 -1
  202. package/dist/components/GridRow/Column/Column.js +1 -1
  203. package/dist/components/GridRow/Column/index.js +1 -1
  204. package/dist/components/GridRow/GridRow.js +2 -2
  205. package/dist/components/IconButton/IconButton.js +1 -1
  206. package/dist/components/IconButton/IconButton.stories.js +2 -2
  207. package/dist/components/IconButton/index.js +1 -1
  208. package/dist/components/InfoMessage/InfoMessage.js +1 -1
  209. package/dist/components/InfoMessage/InfoMessage.stories.js +1 -1
  210. package/dist/components/InfoMessage/index.js +1 -1
  211. package/dist/components/Input/Input.js +1 -1
  212. package/dist/components/Input/Input.stories.js +1 -1
  213. package/dist/components/Input/index.js +1 -1
  214. package/dist/components/InputField/InputField.js +1 -1
  215. package/dist/components/InputField/InputField.stories.js +3 -3
  216. package/dist/components/InputField/index.js +1 -1
  217. package/dist/components/Label/Label.js +1 -1
  218. package/dist/components/Label/Label.stories.js +1 -1
  219. package/dist/components/Label/Label.test.js +3 -3
  220. package/dist/components/Label/index.js +1 -1
  221. package/dist/components/MenuLink/MenuLink.js +1 -1
  222. package/dist/components/MenuLink/MenuLink.stories.js +1 -1
  223. package/dist/components/MenuLink/index.js +1 -1
  224. package/dist/components/MetaDataBar/MetaDataBar.test.js +1 -1
  225. package/dist/components/MetaDataList/MetaDataList.stories.js +1 -1
  226. package/dist/components/ModalDialog/ModalDialog.js +1 -1
  227. package/dist/components/ModalDialog/ModalDialog.stories.js +6 -6
  228. package/dist/components/ModalDialog/index.js +1 -1
  229. package/dist/components/MultiSelect/MultiSelect.js +1 -1
  230. package/dist/components/MultiSelect/MultiSelect.stories.js +3 -3
  231. package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -1
  232. package/dist/components/MultiSelect/components/MultiSelectItem.js +1 -1
  233. package/dist/components/MultiSelect/index.js +1 -1
  234. package/dist/components/MultiSelectBox/MultiSelectBox.js +1 -1
  235. package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +2 -2
  236. package/dist/components/MultiSelectBox/MultiSelectBox.test.js +3 -3
  237. package/dist/components/MultiSelectBox/index.js +1 -1
  238. package/dist/components/Notification/Notification.js +1 -1
  239. package/dist/components/Notification/Notification.stories.js +2 -2
  240. package/dist/components/Notification/Notification.test.js +3 -3
  241. package/dist/components/Notification/index.js +1 -1
  242. package/dist/components/OverlayCloseButton/OverlayCloseButton.js +1 -1
  243. package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +3 -3
  244. package/dist/components/OverlayCloseButton/index.js +1 -1
  245. package/dist/components/OverlayStepBar/OverlayStepBar.js +1 -1
  246. package/dist/components/OverlayStepBar/OverlayStepBar.stories.js +1 -1
  247. package/dist/components/OverlayStepBar/index.js +1 -1
  248. package/dist/components/PageOverlay/PageOverlay.js +1 -1
  249. package/dist/components/PageOverlay/PageOverlay.stories.js +6 -6
  250. package/dist/components/PageOverlay/PageOverlay.stories.js.map +1 -1
  251. package/dist/components/PageOverlay/index.js +1 -1
  252. package/dist/components/PeriodSelector/PeriodSelector.js +1 -1
  253. package/dist/components/PeriodSelector/PeriodSelector.stories.js +2 -2
  254. package/dist/components/PeriodSelector/index.js +1 -1
  255. package/dist/components/Periods/Periods.js +1 -1
  256. package/dist/components/Periods/Periods.stories.js +1 -1
  257. package/dist/components/Periods/index.js +1 -1
  258. package/dist/components/ProgrammeCard/ProgrammeCard.js +1 -1
  259. package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +3 -3
  260. package/dist/components/ProgrammeCard/index.js +1 -1
  261. package/dist/components/RadioButton/RadioButton.js +1 -1
  262. package/dist/components/RadioButton/RadioButton.stories.js +1 -1
  263. package/dist/components/RadioButton/index.js +1 -1
  264. package/dist/components/RadioGroup/RadioGroup.js +1 -1
  265. package/dist/components/RadioGroup/RadioGroup.stories.js +2 -2
  266. package/dist/components/RadioGroup/Radiogroup.test.js +3 -3
  267. package/dist/components/RadioGroup/index.js +1 -1
  268. package/dist/components/RadioTabSelector/RadioTabSelector.js +1 -1
  269. package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +2 -2
  270. package/dist/components/RadioTabSelector/index.js +1 -1
  271. package/dist/components/Repeater/Repeater.js +1 -1
  272. package/dist/components/Repeater/Repeater.stories.js +2 -2
  273. package/dist/components/Repeater/index.js +1 -1
  274. package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -1
  275. package/dist/components/RteEditor/EditorHeader/index.js +1 -1
  276. package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +3 -3
  277. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js +1 -1
  278. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js +1 -1
  279. package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +5 -5
  280. package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +1 -1
  281. package/dist/components/RteEditor/Plugins/HistoryPlugin/index.js +1 -1
  282. package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +1 -1
  283. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +1 -1
  284. package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +1 -1
  285. package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
  286. package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +1 -1
  287. package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +5 -5
  288. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +1 -1
  289. package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/index.js +1 -1
  290. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +1 -1
  291. package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
  292. package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +1 -1
  293. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +1 -1
  294. package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/index.js +1 -1
  295. package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +1 -1
  296. package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +2 -2
  297. package/dist/components/RteEditor/Plugins/TablePlugin/index.js +2 -2
  298. package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +1 -1
  299. package/dist/components/RteEditor/Plugins/ToolbarPlugin/index.js +1 -1
  300. package/dist/components/RteEditor/Plugins/index.js +4 -4
  301. package/dist/components/RteEditor/RteEditor.js +1 -1
  302. package/dist/components/RteEditor/RteEditor.stories.js +2 -2
  303. package/dist/components/RteEditor/helpers.js +4 -4
  304. package/dist/components/RteEditor/index.js +1 -1
  305. package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +3 -3
  306. package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +3 -3
  307. package/dist/components/SearchField/SearchField.js +1 -1
  308. package/dist/components/SectionNotification/SectionNotification.js +1 -1
  309. package/dist/components/SectionNotification/SectionNotification.stories.js +1 -1
  310. package/dist/components/SectionNotification/index.js +1 -1
  311. package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
  312. package/dist/components/SelectListbox/components/SelectButton.js +1 -1
  313. package/dist/components/SelectListbox/components/SelectOption.js +1 -1
  314. package/dist/components/Slider/Slider.js +1 -1
  315. package/dist/components/Slider/Slider.stories.js +1 -1
  316. package/dist/components/Slider/index.js +1 -1
  317. package/dist/components/Sortable/Sortable.js +1 -1
  318. package/dist/components/Sortable/Sortable.stories.js +2 -2
  319. package/dist/components/Sortable/SortableProvider.js +1 -1
  320. package/dist/components/Sortable/components/SortableContainer.js +1 -1
  321. package/dist/components/Sortable/components/SortableItem.js +2 -2
  322. package/dist/components/StatusBadge/StatusBadge.stories.js +1 -1
  323. package/dist/components/StatusBadge/StatusBadge.test.js +3 -3
  324. package/dist/components/StatusBadge/StatusBage.js +1 -1
  325. package/dist/components/StatusBadge/index.js +1 -1
  326. package/dist/components/StatusPill/StatusPill.js +1 -1
  327. package/dist/components/StatusPill/StatusPill.stories.js +2 -2
  328. package/dist/components/StatusPill/index.js +1 -1
  329. package/dist/components/TextArea/TextArea.js +1 -1
  330. package/dist/components/TextArea/TextArea.stories.js +2 -2
  331. package/dist/components/TextArea/TextArea.test.js +4 -4
  332. package/dist/components/TextArea/index.js +1 -1
  333. package/dist/components/ToggleSwitch/ToggleSwitch.js +1 -1
  334. package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +2 -2
  335. package/dist/components/ToggleSwitch/index.js +1 -1
  336. package/dist/components/Tooltip/Tooltip.stories.js +1 -1
  337. package/dist/components/VarIndicator/VarIndicator.js +1 -1
  338. package/dist/components/VarIndicator/VarIndicator.stories.js +2 -2
  339. package/dist/components/VarIndicator/VarIndicator.test.js +4 -4
  340. package/dist/components/VarIndicator/index.js +1 -1
  341. package/dist/components/WeekSelector/components/WeekSelectorOption.js +1 -1
  342. package/dist/components/index.js +42 -42
  343. package/dist/{components-D6_Sx8Hs.js → components-DHB1OMJ8.js} +38 -38
  344. package/dist/components-DHB1OMJ8.js.map +1 -0
  345. package/dist/{lib-Do6N-CJR.js → dist-C6Ar8a59.js} +2799 -714
  346. package/dist/dist-C6Ar8a59.js.map +1 -0
  347. package/dist/{esm-BJhEQquH.js → esm-B6Pg-v2v.js} +89 -89
  348. package/dist/esm-B6Pg-v2v.js.map +1 -0
  349. package/dist/{helpers-z8cqBNoz.js → helpers-C3IJbMVf.js} +4 -4
  350. package/dist/helpers-C3IJbMVf.js.map +1 -0
  351. package/dist/index.js +42 -42
  352. package/dist/{react-18-BAudFSEM.js → react-18-DbbN8Pdb.js} +3 -3
  353. package/dist/react-18-DbbN8Pdb.js.map +1 -0
  354. package/dist/react.esm-56DGmlLk.js +8884 -0
  355. package/dist/react.esm-56DGmlLk.js.map +1 -0
  356. package/dist/setupTests.js +6 -1196
  357. package/dist/setupTests.js.map +1 -1
  358. package/dist/storyComponents/Container/Container.js +1 -1
  359. package/dist/storyComponents/Container/index.js +1 -1
  360. package/dist/storybook__react.d.js +17 -17
  361. package/dist/storybook__react.d.js.map +1 -1
  362. package/dist/{test-Bd7kXF_B.js → test-WxLxsxwA.js} +56 -57
  363. package/dist/test-WxLxsxwA.js.map +1 -0
  364. package/dist/{test-utils-DcI4ZXle.js → test-utils-CMrZ33U0.js} +2 -2
  365. package/dist/test-utils-CMrZ33U0.js.map +1 -0
  366. package/package.json +30 -17
  367. package/dist/Lexical.prod-8zZnpGo4.js.map +0 -1
  368. package/dist/LexicalClipboard.prod-hbxbsROy.js.map +0 -1
  369. package/dist/LexicalComposerContext.prod-y_BRxu3Z.js.map +0 -1
  370. package/dist/LexicalExtension.prod-v8IpET5E.js.map +0 -1
  371. package/dist/LexicalLink.prod-BVUv9-sZ.js.map +0 -1
  372. package/dist/LexicalList.prod-CCPDDafy.js.map +0 -1
  373. package/dist/LexicalTable.prod-D_9Dr3kL.js.map +0 -1
  374. package/dist/LexicalUtils.prod-BWhWP8es.js.map +0 -1
  375. package/dist/TableCellResizerPlugin-Djym940U.js.map +0 -1
  376. package/dist/chunk-FON5IJBZ-BBb6rYhU.js.map +0 -1
  377. package/dist/client-DJaPTT6C.js.map +0 -1
  378. package/dist/clsx-BWCAbrjV.js.map +0 -1
  379. package/dist/components-D6_Sx8Hs.js.map +0 -1
  380. package/dist/dist-Dlg0QxSO.js +0 -2225
  381. package/dist/dist-Dlg0QxSO.js.map +0 -1
  382. package/dist/esm-BJhEQquH.js.map +0 -1
  383. package/dist/helpers-z8cqBNoz.js.map +0 -1
  384. package/dist/lib-Do6N-CJR.js.map +0 -1
  385. package/dist/react-18-BAudFSEM.js.map +0 -1
  386. package/dist/react.esm-GvSawg5E.js +0 -3297
  387. package/dist/react.esm-GvSawg5E.js.map +0 -1
  388. package/dist/test-Bd7kXF_B.js.map +0 -1
  389. package/dist/test-utils-DcI4ZXle.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable-C46IkAmF.js","names":[],"sources":["../src/components/DataTable/DataTable.module.css","../src/components/DataTable/DataTable.tsx"],"sourcesContent":[".data-table__container {\n height: 100%;\n overflow-y: auto;\n position: relative;\n width: 100%;\n}\n\n.data-table__spacer {\n background-color: transparent;\n width: 0.0625rem;\n}\n\n.data-table {\n border-collapse: collapse;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n.data-table--virtualized {\n border-collapse: collapse;\n left: 0;\n position: sticky;\n top: 0;\n width: 100%;\n z-index: 10;\n}\n\n.data-table__row,\n.data-table__header-row {\n background-color: var(--color-uva-white);\n border-bottom: 0.0625rem solid var(--color-grey-300);\n}\n\n.data-table__row:hover {\n background-color: var(--color-grey-200);\n}\n\n.data-table__row--active {\n background-color: var(--color-navy-100);\n}\n\n.data-table__row--active:hover {\n background-color: var(--color-navy-200);\n}\n\n.data-table__cell {\n overflow: hidden;\n padding: 0.6875rem 0.75rem;\n text-align: left;\n vertical-align: baseline;\n white-space: nowrap;\n}\n\n.data-table__sticky-header {\n background-color: var(--color-uva-white);\n left: 0;\n position: sticky;\n top: 0;\n z-index: 1;\n}\n\n.data-table__sticky-header::after {\n border-bottom: 0.0625rem solid var(--color-grey-300);\n content: \"\";\n display: block;\n height: 0.0625rem;\n left: 0;\n position: absolute;\n top: 100%;\n width: 100%;\n}\n\n.data-table__empty-state {\n color: var(--color-grey-600);\n font-size: 1rem;\n padding: 2rem;\n text-align: center;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState, type ReactNode, type UIEvent } from 'react';\r\nimport { clsx } from 'clsx';\r\n\r\nimport styles from './DataTable.module.css';\r\nimport { useVirtualScroll } from './hooks/useVirtualScroll';\r\n\r\ntype DataTablePrimitive = string | number | boolean | null | undefined;\r\ntype DataTableRow = Record<string, DataTablePrimitive>;\r\nexport type DataTableColumnContent<TRow extends object> = ReactNode | ((row: TRow) => ReactNode);\r\ntype DataTableColumn<TRow extends object> = {\r\n key: Extract<keyof TRow, string>;\r\n label?: ReactNode | ((row: TRow) => ReactNode);\r\n cell?: ReactNode | ((row: TRow) => ReactNode);\r\n fixedWidth?: string;\r\n};\r\ntype DataRow<TRow extends object> = { visibleRows: Partial<TRow>[]; rowsToRender: TRow[] };\r\n\r\nexport type DataTableProps<TRow extends { id: string | number } = DataTableRow & { id: string | number }> = {\r\n /** The data to be displayed in the table */\r\n data: TRow[];\r\n /** The columns configuration for the table */\r\n columns?: DataTableColumn<TRow>[];\r\n /** Whether the table header should be sticky */\r\n stickyHeader?: boolean;\r\n /** Virtualization settings for the table */\r\n virtualize?: {\r\n /** The height of each row in pixels */\r\n rowHeight: number;\r\n /** The number of additional rows to render above and below the visible area for smoother scrolling */\r\n buffer?: number;\r\n } | null;\r\n /** The keys in the data objects that indicate whether a row is active (for styling purposes) */\r\n activeKeys?: (string | number)[];\r\n /** Message to display when there is no data */\r\n noDataMessage?: string;\r\n};\r\n\r\nconst DEFAULT_BUFFER = 4;\r\n\r\nexport const DataTable = <TRow extends { id: string | number } = DataTableRow & { id: string | number }>({\r\n data,\r\n columns,\r\n stickyHeader = false,\r\n virtualize = null,\r\n activeKeys = [],\r\n noDataMessage = 'No data to display',\r\n}: DataTableProps<TRow>) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const headerRef = useRef<HTMLTableSectionElement>(null);\r\n const headerRowRef = useRef<HTMLTableRowElement>(null);\r\n const tbodyRef = useRef<HTMLTableSectionElement>(null);\r\n const { visibleItems, totalHeight, offsetTop, onScroll, setContainerHeight } = useVirtualScroll({\r\n rowHeight: virtualize?.rowHeight ?? 0,\r\n buffer: virtualize?.buffer ?? DEFAULT_BUFFER,\r\n totalItems: data.length,\r\n });\r\n const throttling = useRef(false);\r\n const resizeThrottling = useRef(false);\r\n const [columnWidths, setColumnWidths] = useState<number[]>([]);\r\n\r\n const tableData: DataRow<TRow> = useMemo(() => {\r\n if (!columns) return { visibleRows: data, rowsToRender: data };\r\n const rowsToRender = virtualize ? visibleItems.map((index) => data[index]) : data;\r\n const visibleRows = rowsToRender.map((row) => {\r\n const newRow: Partial<TRow> = {};\r\n columns.forEach((col) => {\r\n newRow[col.key] = row[col.key];\r\n });\r\n return newRow;\r\n });\r\n return { visibleRows, rowsToRender };\r\n }, [columns, data, virtualize, visibleItems]);\r\n\r\n const handleScroll = useCallback(\r\n (event: UIEvent<HTMLDivElement>) => {\r\n if (!virtualize) return;\r\n\r\n const scrollTop = event.currentTarget.scrollTop;\r\n\r\n if (!throttling.current) {\r\n throttling.current = true;\r\n\r\n requestAnimationFrame(() => {\r\n onScroll({ currentTarget: { scrollTop } } as UIEvent<HTMLElement>);\r\n throttling.current = false;\r\n });\r\n }\r\n },\r\n [virtualize, onScroll]\r\n );\r\n\r\n const onRenderValue = (value: ((row: TRow) => ReactNode) | ReactNode, row?: TRow) =>\r\n typeof value === 'function' ? value(row!) : value;\r\n\r\n useEffect(() => {\r\n if (!virtualize || !containerRef.current) {\r\n return;\r\n }\r\n\r\n const handleResize = () => {\r\n const containerHeight = containerRef.current?.parentElement?.clientHeight ?? 0;\r\n\r\n if (!resizeThrottling.current) {\r\n resizeThrottling.current = true;\r\n\r\n requestAnimationFrame(() => {\r\n setContainerHeight(containerHeight);\r\n resizeThrottling.current = false;\r\n });\r\n }\r\n };\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, [virtualize, setContainerHeight]);\r\n\r\n useEffect(() => {\r\n if (containerRef.current) {\r\n setContainerHeight(containerRef.current.parentElement?.clientHeight ?? 0);\r\n }\r\n }, [setContainerHeight]);\r\n\r\n useEffect(() => {\r\n containerRef.current?.scrollTo({ top: 0 });\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n if (!stickyHeader || !tbodyRef.current) return;\r\n\r\n const measureWidths = () => {\r\n const firstRow = tbodyRef.current?.querySelector('tr');\r\n if (!firstRow) return;\r\n\r\n const cells = firstRow.querySelectorAll('td');\r\n const widths = Array.from(cells).map((cell) => cell.getBoundingClientRect().width);\r\n\r\n setColumnWidths(widths);\r\n };\r\n\r\n const observer = new ResizeObserver(() => {\r\n requestAnimationFrame(measureWidths);\r\n });\r\n\r\n observer.observe(tbodyRef.current);\r\n\r\n measureWidths();\r\n\r\n return () => observer.disconnect();\r\n }, [stickyHeader, tableData.visibleRows]);\r\n\r\n return data.length ? (\r\n <div className={styles['data-table__container']} onScroll={handleScroll} ref={containerRef}>\r\n {/* sticky header if virtualized */}\r\n {virtualize && stickyHeader && columns && (\r\n <table className={styles['data-table--virtualized']}>\r\n <thead className={styles['data-table__sticky-header']}>\r\n <tr className={styles['data-table__header-row']} ref={headerRowRef}>\r\n {columns &&\r\n columns.map((column, index) => {\r\n const forcedWidth = columnWidths[index] ? `${columnWidths[index]}px` : column.fixedWidth;\r\n return (\r\n <th\r\n key={column.key}\r\n className={styles['data-table__cell']}\r\n style={{\r\n width: forcedWidth,\r\n minWidth: forcedWidth,\r\n maxWidth: forcedWidth,\r\n }}\r\n >\r\n {onRenderValue(column?.label)}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n </thead>\r\n </table>\r\n )}\r\n\r\n <div className={styles['data-table__spacer']} style={{ height: totalHeight }} />\r\n <table\r\n className={styles['data-table']}\r\n style={virtualize ? { transform: `translateY(${offsetTop}px)` } : undefined}\r\n >\r\n {/* header */}\r\n <thead className={clsx({ [styles['data-table__sticky-header']]: stickyHeader })} ref={headerRef}>\r\n <tr className={styles['data-table__header-row']}>\r\n {!virtualize || !stickyHeader ? (\r\n columns &&\r\n columns.map((column, index) => {\r\n const forcedWidth = columnWidths[index] ? `${columnWidths[index]}px` : column.fixedWidth;\r\n return (\r\n <th key={column.key} className={styles['data-table__cell']} style={{ width: forcedWidth }}>\r\n {onRenderValue(column?.label)}\r\n </th>\r\n );\r\n })\r\n ) : (\r\n <th colSpan={columns?.length} style={{ height: headerRowRef.current?.clientHeight }} />\r\n )}\r\n </tr>\r\n </thead>\r\n\r\n {/* data rows */}\r\n <tbody ref={tbodyRef}>\r\n {tableData.visibleRows.map((row, index) => (\r\n <tr\r\n key={tableData.rowsToRender[index].id}\r\n className={clsx(styles['data-table__row'], {\r\n [styles['data-table__row--active']]: activeKeys?.includes(tableData.rowsToRender[index].id),\r\n })}\r\n >\r\n {Object.entries(row as Record<string, unknown>).map(([key]) => {\r\n const column = columns?.find((col) => col.key === key);\r\n return (\r\n <td\r\n key={key}\r\n className={styles['data-table__cell']}\r\n style={{\r\n width: column?.fixedWidth,\r\n height: virtualize ? virtualize.rowHeight : undefined,\r\n maxHeight: virtualize ? virtualize.rowHeight : undefined,\r\n }}\r\n >\r\n {onRenderValue(column?.cell, tableData.rowsToRender[index])}\r\n </td>\r\n );\r\n })}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n ) : (\r\n <div className={styles['data-table__empty-state']}>{noDataMessage}</div>\r\n );\r\n};\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable-Cgn_RKTA.js","names":[],"sources":["../src/components/DataTable/DataTable.module.css","../src/components/DataTable/DataTable.tsx"],"sourcesContent":[".data-table__container {\n height: 100%;\n overflow-y: auto;\n position: relative;\n width: 100%;\n}\n\n.data-table__spacer {\n background-color: transparent;\n width: 0.0625rem;\n}\n\n.data-table {\n border-collapse: collapse;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n.data-table--virtualized {\n border-collapse: collapse;\n left: 0;\n position: sticky;\n top: 0;\n width: 100%;\n z-index: 10;\n}\n\n.data-table__row,\n.data-table__header-row {\n background-color: var(--color-uva-white);\n border-bottom: 0.0625rem solid var(--color-grey-300);\n}\n\n.data-table__row:hover {\n background-color: var(--color-grey-200);\n}\n\n.data-table__row--active {\n background-color: var(--color-navy-100);\n}\n\n.data-table__row--active:hover {\n background-color: var(--color-navy-200);\n}\n\n.data-table__cell {\n overflow: hidden;\n padding: 0.6875rem 0.75rem;\n text-align: left;\n vertical-align: baseline;\n white-space: nowrap;\n}\n\n.data-table__sticky-header {\n background-color: var(--color-uva-white);\n left: 0;\n position: sticky;\n top: 0;\n z-index: 1;\n}\n\n.data-table__sticky-header::after {\n border-bottom: 0.0625rem solid var(--color-grey-300);\n content: \"\";\n display: block;\n height: 0.0625rem;\n left: 0;\n position: absolute;\n top: 100%;\n width: 100%;\n}\n\n.data-table__empty-state {\n color: var(--color-grey-600);\n font-size: 1rem;\n padding: 2rem;\n text-align: center;\n}\n","import { useCallback, useEffect, useMemo, useRef, useState, type ReactNode, type UIEvent } from 'react';\r\nimport { clsx } from 'clsx';\r\n\r\nimport styles from './DataTable.module.css';\r\nimport { useVirtualScroll } from './hooks/useVirtualScroll';\r\n\r\ntype DataTablePrimitive = string | number | boolean | null | undefined;\r\ntype DataTableRow = Record<string, DataTablePrimitive>;\r\nexport type DataTableColumnContent<TRow extends object> = ReactNode | ((row: TRow) => ReactNode);\r\ntype DataTableColumn<TRow extends object> = {\r\n key: Extract<keyof TRow, string>;\r\n label?: ReactNode | ((row: TRow) => ReactNode);\r\n cell?: ReactNode | ((row: TRow) => ReactNode);\r\n fixedWidth?: string;\r\n};\r\ntype DataRow<TRow extends object> = { visibleRows: Partial<TRow>[]; rowsToRender: TRow[] };\r\n\r\nexport type DataTableProps<TRow extends { id: string | number } = DataTableRow & { id: string | number }> = {\r\n /** The data to be displayed in the table */\r\n data: TRow[];\r\n /** The columns configuration for the table */\r\n columns?: DataTableColumn<TRow>[];\r\n /** Whether the table header should be sticky */\r\n stickyHeader?: boolean;\r\n /** Virtualization settings for the table */\r\n virtualize?: {\r\n /** The height of each row in pixels */\r\n rowHeight: number;\r\n /** The number of additional rows to render above and below the visible area for smoother scrolling */\r\n buffer?: number;\r\n } | null;\r\n /** The keys in the data objects that indicate whether a row is active (for styling purposes) */\r\n activeKeys?: (string | number)[];\r\n /** Message to display when there is no data */\r\n noDataMessage?: string;\r\n};\r\n\r\nconst DEFAULT_BUFFER = 4;\r\n\r\nexport const DataTable = <TRow extends { id: string | number } = DataTableRow & { id: string | number }>({\r\n data,\r\n columns,\r\n stickyHeader = false,\r\n virtualize = null,\r\n activeKeys = [],\r\n noDataMessage = 'No data to display',\r\n}: DataTableProps<TRow>) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const headerRef = useRef<HTMLTableSectionElement>(null);\r\n const headerRowRef = useRef<HTMLTableRowElement>(null);\r\n const tbodyRef = useRef<HTMLTableSectionElement>(null);\r\n const { visibleItems, totalHeight, offsetTop, onScroll, setContainerHeight } = useVirtualScroll({\r\n rowHeight: virtualize?.rowHeight ?? 0,\r\n buffer: virtualize?.buffer ?? DEFAULT_BUFFER,\r\n totalItems: data.length,\r\n });\r\n const throttling = useRef(false);\r\n const resizeThrottling = useRef(false);\r\n const [columnWidths, setColumnWidths] = useState<number[]>([]);\r\n\r\n const tableData: DataRow<TRow> = useMemo(() => {\r\n if (!columns) return { visibleRows: data, rowsToRender: data };\r\n const rowsToRender = virtualize ? visibleItems.map((index) => data[index]) : data;\r\n const visibleRows = rowsToRender.map((row) => {\r\n const newRow: Partial<TRow> = {};\r\n columns.forEach((col) => {\r\n newRow[col.key] = row[col.key];\r\n });\r\n return newRow;\r\n });\r\n return { visibleRows, rowsToRender };\r\n }, [columns, data, virtualize, visibleItems]);\r\n\r\n const handleScroll = useCallback(\r\n (event: UIEvent<HTMLDivElement>) => {\r\n if (!virtualize) return;\r\n\r\n const scrollTop = event.currentTarget.scrollTop;\r\n\r\n if (!throttling.current) {\r\n throttling.current = true;\r\n\r\n requestAnimationFrame(() => {\r\n onScroll({ currentTarget: { scrollTop } } as UIEvent<HTMLElement>);\r\n throttling.current = false;\r\n });\r\n }\r\n },\r\n [virtualize, onScroll]\r\n );\r\n\r\n const onRenderValue = (value: ((row: TRow) => ReactNode) | ReactNode, row?: TRow) =>\r\n typeof value === 'function' ? value(row!) : value;\r\n\r\n useEffect(() => {\r\n if (!virtualize || !containerRef.current) {\r\n return;\r\n }\r\n\r\n const handleResize = () => {\r\n const containerHeight = containerRef.current?.parentElement?.clientHeight ?? 0;\r\n\r\n if (!resizeThrottling.current) {\r\n resizeThrottling.current = true;\r\n\r\n requestAnimationFrame(() => {\r\n setContainerHeight(containerHeight);\r\n resizeThrottling.current = false;\r\n });\r\n }\r\n };\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, [virtualize, setContainerHeight]);\r\n\r\n useEffect(() => {\r\n if (containerRef.current) {\r\n setContainerHeight(containerRef.current.parentElement?.clientHeight ?? 0);\r\n }\r\n }, [setContainerHeight]);\r\n\r\n useEffect(() => {\r\n containerRef.current?.scrollTo({ top: 0 });\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n if (!stickyHeader || !tbodyRef.current) return;\r\n\r\n const measureWidths = () => {\r\n const firstRow = tbodyRef.current?.querySelector('tr');\r\n if (!firstRow) return;\r\n\r\n const cells = firstRow.querySelectorAll('td');\r\n const widths = Array.from(cells).map((cell) => cell.getBoundingClientRect().width);\r\n\r\n setColumnWidths(widths);\r\n };\r\n\r\n const observer = new ResizeObserver(() => {\r\n requestAnimationFrame(measureWidths);\r\n });\r\n\r\n observer.observe(tbodyRef.current);\r\n\r\n measureWidths();\r\n\r\n return () => observer.disconnect();\r\n }, [stickyHeader, tableData.visibleRows]);\r\n\r\n return data.length ? (\r\n <div className={styles['data-table__container']} onScroll={handleScroll} ref={containerRef}>\r\n {/* sticky header if virtualized */}\r\n {virtualize && stickyHeader && columns && (\r\n <table className={styles['data-table--virtualized']}>\r\n <thead className={styles['data-table__sticky-header']}>\r\n <tr className={styles['data-table__header-row']} ref={headerRowRef}>\r\n {columns &&\r\n columns.map((column, index) => {\r\n const forcedWidth = columnWidths[index] ? `${columnWidths[index]}px` : column.fixedWidth;\r\n return (\r\n <th\r\n key={column.key}\r\n className={styles['data-table__cell']}\r\n style={{\r\n width: forcedWidth,\r\n minWidth: forcedWidth,\r\n maxWidth: forcedWidth,\r\n }}\r\n >\r\n {onRenderValue(column?.label)}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n </thead>\r\n </table>\r\n )}\r\n\r\n <div className={styles['data-table__spacer']} style={{ height: totalHeight }} />\r\n <table\r\n className={styles['data-table']}\r\n style={virtualize ? { transform: `translateY(${offsetTop}px)` } : undefined}\r\n >\r\n {/* header */}\r\n <thead className={clsx({ [styles['data-table__sticky-header']]: stickyHeader })} ref={headerRef}>\r\n <tr className={styles['data-table__header-row']}>\r\n {!virtualize || !stickyHeader ? (\r\n columns &&\r\n columns.map((column, index) => {\r\n const forcedWidth = columnWidths[index] ? `${columnWidths[index]}px` : column.fixedWidth;\r\n return (\r\n <th key={column.key} className={styles['data-table__cell']} style={{ width: forcedWidth }}>\r\n {onRenderValue(column?.label)}\r\n </th>\r\n );\r\n })\r\n ) : (\r\n <th colSpan={columns?.length} style={{ height: headerRowRef.current?.clientHeight }} />\r\n )}\r\n </tr>\r\n </thead>\r\n\r\n {/* data rows */}\r\n <tbody ref={tbodyRef}>\r\n {tableData.visibleRows.map((row, index) => (\r\n <tr\r\n key={tableData.rowsToRender[index].id}\r\n className={clsx(styles['data-table__row'], {\r\n [styles['data-table__row--active']]: activeKeys?.includes(tableData.rowsToRender[index].id),\r\n })}\r\n >\r\n {Object.entries(row as Record<string, unknown>).map(([key]) => {\r\n const column = columns?.find((col) => col.key === key);\r\n return (\r\n <td\r\n key={key}\r\n className={styles['data-table__cell']}\r\n style={{\r\n width: column?.fixedWidth,\r\n height: virtualize ? virtualize.rowHeight : undefined,\r\n maxHeight: virtualize ? virtualize.rowHeight : undefined,\r\n }}\r\n >\r\n {onRenderValue(column?.cell, tableData.rowsToRender[index])}\r\n </td>\r\n );\r\n })}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n ) : (\r\n <div className={styles['data-table__empty-state']}>{noDataMessage}</div>\r\n );\r\n};\r\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { t } from "./Backdrop-bQ8kXsge.js";
3
- import { t as n } from "./OverlayCloseButton-j-7mC4Zz.js";
3
+ import { t as n } from "./OverlayCloseButton-Dt6Yec8G.js";
4
4
  import { useEffect as r, useRef as i, useState as a } from "react";
5
5
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
6
6
  import { useDialog as c } from "@react-aria/dialog";
@@ -73,4 +73,4 @@ function g({ buttons: g, children: _, isOpen: v, onClose: y, title: b, closeButt
73
73
  //#endregion
74
74
  export { g as t };
75
75
 
76
- //# sourceMappingURL=Drawer-BbVJqFQI.js.map
76
+ //# sourceMappingURL=Drawer-fUw0LEuj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer-BbVJqFQI.js","names":[],"sources":["../src/components/Drawer/Drawer.module.css","../src/components/Drawer/Drawer.tsx"],"sourcesContent":[".drawer {\n background-color: var(--color-uva-white);\n bottom: 0;\n box-shadow: 0 0 0.75rem 0.25rem rgb(0 0 0 / 10%);\n display: flex;\n flex-direction: column;\n left: 10vw;\n max-width: 90vw;\n min-width: 25rem;\n padding: 2.5rem 2rem;\n position: fixed;\n right: 0;\n top: 0;\n transform: translateX(100%);\n transform-origin: right;\n transition-duration: 200ms;\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n width: 100%;\n}\n\n.drawer__content {\n /**\n * Drawer content height cannot exceed the available height, dictated by its parent.\n * Subtracting top and bottom padding from .drawer as well as the height and bottom margin of\n * .drawer__heading from the parent's height gives us the maximum height the content should be.\n */\n max-height: calc(100vh - 7rem);\n overflow-y: auto;\n}\n\n.drawer__header {\n display: flex;\n gap: 2rem;\n justify-content: space-between;\n position: relative;\n}\n\n.drawer__footer {\n gap: 2rem;\n justify-content: flex-end;\n margin-top: auto;\n}\n\n.drawer__heading {\n font-size: var(--font-size-s);\n line-height: var(--line-height-s);\n margin: 0.25rem 0 0.5rem;\n padding-right: 2rem;\n}\n\n@media only screen and (min-width: 40rem) {\n .drawer {\n left: auto;\n max-width: 37.5rem;\n }\n}\n\n.drawer--open {\n transform: translateX(0);\n transition-duration: 250ms;\n}\n\n.drawer__buttons {\n display: flex;\n flex-flow: row wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n margin: 2.5rem 0 0;\n}\n","import { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { OverlayContainer, useModal, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { clsx } from 'clsx';\nimport { useEffect, useRef, useState } from 'react';\n\nimport type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './Drawer.module.css';\n\nimport { Backdrop } from 'components/Backdrop/Backdrop';\nimport { OverlayCloseButton } from 'components/OverlayCloseButton';\n\nexport interface DrawerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'className'> {\n /** The buttons to render in the drawer. */\n buttons?: ReactNode;\n /** true if the drawer should be open; otherwise, false. The default is false. */\n isOpen?: boolean;\n /** The callback method that is invoked when the drawer is closed. */\n onClose: () => void;\n /** The title of the drawer. */\n title: string;\n /** The aria-label of the close button. */\n closeButtonAriaValueText?: string;\n}\n\nconst closingDelay = 200;\n\n/** Represents a Drawer component. */\nexport function Drawer({\n buttons,\n children,\n isOpen,\n onClose,\n title,\n closeButtonAriaValueText = 'Close',\n ...restProps\n}: PropsWithChildren<DrawerProps>) {\n const [containerClassNames, setContainerClassNames] = useState(styles.drawer);\n // Hide content outside the modal from screen readers.\n const { modalProps } = useModal({ isDisabled: !isOpen });\n const contentRef = useRef<HTMLDivElement>(null);\n\n function onCloseDrawer() {\n setContainerClassNames(styles.drawer);\n\n globalThis.setTimeout(() => {\n onClose();\n }, closingDelay);\n }\n\n // Handle interacting outside the dialog and pressing\n // the Escape key to close the modal.\n const { overlayProps, underlayProps } = useOverlay(\n { isDismissable: true, isKeyboardDismissDisabled: false, isOpen, onClose: onCloseDrawer },\n contentRef\n );\n\n // Get props for the dialog and its title\n const { dialogProps, titleProps } = useDialog({}, contentRef);\n\n usePreventScroll({ isDisabled: !isOpen });\n\n useEffect(() => {\n // setting class name after render so that element can slide in after it is mounted and slide out\n // before it is unmounted\n setContainerClassNames(clsx(styles.drawer, { [styles['drawer--open']]: isOpen }));\n }, [isOpen]);\n\n return (\n <OverlayContainer>\n <Backdrop {...underlayProps}>\n <FocusScope contain restoreFocus>\n <aside\n {...modalProps}\n {...overlayProps}\n {...dialogProps}\n {...restProps}\n className={containerClassNames}\n ref={contentRef}\n >\n <header className={styles.drawer__header}>\n <h1 className={styles.drawer__heading} {...titleProps}>\n {title}\n </h1>\n\n <OverlayCloseButton aria-label={closeButtonAriaValueText} onClick={onCloseDrawer} />\n </header>\n\n <div className={styles.drawer__content}>{children}</div>\n\n {buttons && (\n <footer className={styles.drawer__footer}>\n <div className={styles.drawer__buttons}>{buttons}</div>\n </footer>\n )}\n </aside>\n </FocusScope>\n </Backdrop>\n </OverlayContainer>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;GC0BM,IAAe;AAGrB,SAAgB,EAAO,EACrB,YACA,aACA,WACA,YACA,UACA,8BAA2B,SAC3B,GAAG,KAC8B;CACjC,IAAM,CAAC,GAAqB,KAA0B,EAAS,EAAO,MAAM,GAEtE,EAAE,kBAAe,EAAS,EAAE,YAAY,CAAC,EAAO,CAAC,GACjD,IAAa,EAAuB,IAAI;CAE9C,SAAS,IAAgB;EAGvB,AAFA,EAAuB,EAAO,MAAM,GAEpC,WAAW,iBAAiB;GAC1B,EAAQ;EACV,GAAG,CAAY;CACjB;CAIA,IAAM,EAAE,iBAAc,qBAAkB,EACtC;EAAE,eAAe;EAAM,2BAA2B;EAAO;EAAQ,SAAS;CAAc,GACxF,CACF,GAGM,EAAE,gBAAa,kBAAe,EAAU,CAAC,GAAG,CAAU;CAU5D,OARA,EAAiB,EAAE,YAAY,CAAC,EAAO,CAAC,GAExC,QAAgB;EAGd,EAAuB,EAAK,EAAO,QAAQ,GAAG,EAAO,kBAAkB,EAAO,CAAC,CAAC;CAClF,GAAG,CAAC,CAAM,CAAC,GAGT,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAAU,GAAI;YACZ,kBAAC,GAAD;GAAY,SAAA;GAAQ,cAAA;aAClB,kBAAC,SAAD;IACE,GAAI;IACJ,GAAI;IACJ,GAAI;IACJ,GAAI;IACJ,WAAW;IACX,KAAK;cANP;KAQE,kBAAC,UAAD;MAAQ,WAAW,EAAO;gBAA1B,CACE,kBAAC,MAAD;OAAI,WAAW,EAAO;OAAiB,GAAI;iBACxC;MACC,CAAA,GAEJ,kBAAC,GAAD;OAAoB,cAAY;OAA0B,SAAS;MAAgB,CAAA,CAC7E;;KAER,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAkB;KAAc,CAAA;KAEtD,KACC,kBAAC,UAAD;MAAQ,WAAW,EAAO;gBACxB,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAkB;MAAa,CAAA;KAChD,CAAA;IAEL;;EACG,CAAA;CACJ,CAAA,EACM,CAAA;AAEtB"}
1
+ {"version":3,"file":"Drawer-fUw0LEuj.js","names":[],"sources":["../src/components/Drawer/Drawer.module.css","../src/components/Drawer/Drawer.tsx"],"sourcesContent":[".drawer {\n background-color: var(--color-uva-white);\n bottom: 0;\n box-shadow: 0 0 0.75rem 0.25rem rgb(0 0 0 / 10%);\n display: flex;\n flex-direction: column;\n left: 10vw;\n max-width: 90vw;\n min-width: 25rem;\n padding: 2.5rem 2rem;\n position: fixed;\n right: 0;\n top: 0;\n transform: translateX(100%);\n transform-origin: right;\n transition-duration: 200ms;\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n width: 100%;\n}\n\n.drawer__content {\n /**\n * Drawer content height cannot exceed the available height, dictated by its parent.\n * Subtracting top and bottom padding from .drawer as well as the height and bottom margin of\n * .drawer__heading from the parent's height gives us the maximum height the content should be.\n */\n max-height: calc(100vh - 7rem);\n overflow-y: auto;\n}\n\n.drawer__header {\n display: flex;\n gap: 2rem;\n justify-content: space-between;\n position: relative;\n}\n\n.drawer__footer {\n gap: 2rem;\n justify-content: flex-end;\n margin-top: auto;\n}\n\n.drawer__heading {\n font-size: var(--font-size-s);\n line-height: var(--line-height-s);\n margin: 0.25rem 0 0.5rem;\n padding-right: 2rem;\n}\n\n@media only screen and (min-width: 40rem) {\n .drawer {\n left: auto;\n max-width: 37.5rem;\n }\n}\n\n.drawer--open {\n transform: translateX(0);\n transition-duration: 250ms;\n}\n\n.drawer__buttons {\n display: flex;\n flex-flow: row wrap;\n gap: 0.75rem;\n justify-content: flex-end;\n margin: 2.5rem 0 0;\n}\n","import { useDialog } from '@react-aria/dialog';\nimport { FocusScope } from '@react-aria/focus';\nimport { OverlayContainer, useModal, useOverlay, usePreventScroll } from '@react-aria/overlays';\nimport { clsx } from 'clsx';\nimport { useEffect, useRef, useState } from 'react';\n\nimport type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './Drawer.module.css';\n\nimport { Backdrop } from 'components/Backdrop/Backdrop';\nimport { OverlayCloseButton } from 'components/OverlayCloseButton';\n\nexport interface DrawerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'style' | 'className'> {\n /** The buttons to render in the drawer. */\n buttons?: ReactNode;\n /** true if the drawer should be open; otherwise, false. The default is false. */\n isOpen?: boolean;\n /** The callback method that is invoked when the drawer is closed. */\n onClose: () => void;\n /** The title of the drawer. */\n title: string;\n /** The aria-label of the close button. */\n closeButtonAriaValueText?: string;\n}\n\nconst closingDelay = 200;\n\n/** Represents a Drawer component. */\nexport function Drawer({\n buttons,\n children,\n isOpen,\n onClose,\n title,\n closeButtonAriaValueText = 'Close',\n ...restProps\n}: PropsWithChildren<DrawerProps>) {\n const [containerClassNames, setContainerClassNames] = useState(styles.drawer);\n // Hide content outside the modal from screen readers.\n const { modalProps } = useModal({ isDisabled: !isOpen });\n const contentRef = useRef<HTMLDivElement>(null);\n\n function onCloseDrawer() {\n setContainerClassNames(styles.drawer);\n\n globalThis.setTimeout(() => {\n onClose();\n }, closingDelay);\n }\n\n // Handle interacting outside the dialog and pressing\n // the Escape key to close the modal.\n const { overlayProps, underlayProps } = useOverlay(\n { isDismissable: true, isKeyboardDismissDisabled: false, isOpen, onClose: onCloseDrawer },\n contentRef\n );\n\n // Get props for the dialog and its title\n const { dialogProps, titleProps } = useDialog({}, contentRef);\n\n usePreventScroll({ isDisabled: !isOpen });\n\n useEffect(() => {\n // setting class name after render so that element can slide in after it is mounted and slide out\n // before it is unmounted\n setContainerClassNames(clsx(styles.drawer, { [styles['drawer--open']]: isOpen }));\n }, [isOpen]);\n\n return (\n <OverlayContainer>\n <Backdrop {...underlayProps}>\n <FocusScope contain restoreFocus>\n <aside\n {...modalProps}\n {...overlayProps}\n {...dialogProps}\n {...restProps}\n className={containerClassNames}\n ref={contentRef}\n >\n <header className={styles.drawer__header}>\n <h1 className={styles.drawer__heading} {...titleProps}>\n {title}\n </h1>\n\n <OverlayCloseButton aria-label={closeButtonAriaValueText} onClick={onCloseDrawer} />\n </header>\n\n <div className={styles.drawer__content}>{children}</div>\n\n {buttons && (\n <footer className={styles.drawer__footer}>\n <div className={styles.drawer__buttons}>{buttons}</div>\n </footer>\n )}\n </aside>\n </FocusScope>\n </Backdrop>\n </OverlayContainer>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;GC0BM,IAAe;AAGrB,SAAgB,EAAO,EACrB,YACA,aACA,WACA,YACA,UACA,8BAA2B,SAC3B,GAAG,KAC8B;CACjC,IAAM,CAAC,GAAqB,KAA0B,EAAS,EAAO,MAAM,GAEtE,EAAE,kBAAe,EAAS,EAAE,YAAY,CAAC,EAAO,CAAC,GACjD,IAAa,EAAuB,IAAI;CAE9C,SAAS,IAAgB;EAGvB,AAFA,EAAuB,EAAO,MAAM,GAEpC,WAAW,iBAAiB;GAC1B,EAAQ;EACV,GAAG,CAAY;CACjB;CAIA,IAAM,EAAE,iBAAc,qBAAkB,EACtC;EAAE,eAAe;EAAM,2BAA2B;EAAO;EAAQ,SAAS;CAAc,GACxF,CACF,GAGM,EAAE,gBAAa,kBAAe,EAAU,CAAC,GAAG,CAAU;CAU5D,OARA,EAAiB,EAAE,YAAY,CAAC,EAAO,CAAC,GAExC,QAAgB;EAGd,EAAuB,EAAK,EAAO,QAAQ,GAAG,EAAO,kBAAkB,EAAO,CAAC,CAAC;CAClF,GAAG,CAAC,CAAM,CAAC,GAGT,kBAAC,GAAD,EAAA,UACE,kBAAC,GAAD;EAAU,GAAI;YACZ,kBAAC,GAAD;GAAY,SAAA;GAAQ,cAAA;aAClB,kBAAC,SAAD;IACE,GAAI;IACJ,GAAI;IACJ,GAAI;IACJ,GAAI;IACJ,WAAW;IACX,KAAK;cANP;KAQE,kBAAC,UAAD;MAAQ,WAAW,EAAO;gBAA1B,CACE,kBAAC,MAAD;OAAI,WAAW,EAAO;OAAiB,GAAI;iBACxC;MACC,CAAA,GAEJ,kBAAC,GAAD;OAAoB,cAAY;OAA0B,SAAS;MAAgB,CAAA,CAC7E;;KAER,kBAAC,OAAD;MAAK,WAAW,EAAO;MAAkB;KAAc,CAAA;KAEtD,KACC,kBAAC,UAAD;MAAQ,WAAW,EAAO;gBACxB,kBAAC,OAAD;OAAK,WAAW,EAAO;iBAAkB;MAAa,CAAA;KAChD,CAAA;IAEL;;EACG,CAAA;CACJ,CAAA,EACM,CAAA;AAEtB"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
3
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  import './assets/EmptyStateDataDisplay.css';//#region src/components/EmptyStateDataDisplay/EmptyStateDataDisplay.module.css
@@ -43,4 +43,4 @@ function s({ label: s, paragraph: c, invertColors: l, variant: u = "regular" })
43
43
  //#endregion
44
44
  export { s as t };
45
45
 
46
- //# sourceMappingURL=EmptyStateDataDisplay-IT2P3ius.js.map
46
+ //# sourceMappingURL=EmptyStateDataDisplay-FBDAGO88.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyStateDataDisplay-IT2P3ius.js","names":[],"sources":["../src/components/EmptyStateDataDisplay/EmptyStateDataDisplay.module.css","../src/components/EmptyStateDataDisplay/EmptyStateDataDisplay.tsx"],"sourcesContent":[".empty-state-data-display_wrapper {\n align-items: center;\n background-color: var(--color-uva-white);\n display: flex;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.empty-state-data-display_icon-frame {\n align-items: center;\n background-color: var(--color-grey-200);\n border-radius: 50%;\n display: flex;\n justify-content: center;\n min-height: 4rem;\n min-width: 4rem;\n}\n\n.empty-state-data-display_wrapper--invert-colors {\n background-color: var(--color-grey-200);\n}\n\n.empty-state-data-display_wrapper--slim {\n gap: 1rem;\n padding: 1rem;\n}\n\n.empty-state-data-display_icon-frame--invert-colors {\n background-color: var(--color-uva-white);\n}\n\n.empty-state-data-display_icon-frame--slim {\n min-height: 2rem;\n min-width: 2rem;\n}\n\n.empty-state-data-display_text-content {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.empty-state-data-display_label {\n font-weight: var(--semibold);\n}\n\n.empty-state-data-display_paragraph {\n color: var(--color-grey-700);\n margin: 0;\n}\n","import { clsx } from 'clsx';\n\nimport type { UISizeVariant } from 'types/UserInterface';\n\nimport styles from './EmptyStateDataDisplay.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface EmptyStateDataDisplayProps {\n /** The main text to display. */\n label: string;\n /** The sub-text to display. */\n paragraph?: string;\n /** The colors of the wrapper and icon background are inverted. */\n invertColors?: boolean;\n /** The display variant. */\n variant?: UISizeVariant;\n}\n\nconst ICON_SIZE_REGULAR = 24;\nconst ICON_SIZE_SLIM = 16;\n\n/** Represents a component to indicate an empty state. */\nexport function EmptyStateDataDisplay({\n label,\n paragraph,\n invertColors,\n variant = 'regular',\n}: EmptyStateDataDisplayProps) {\n return (\n <div\n className={clsx(styles['empty-state-data-display_wrapper'], {\n [styles['empty-state-data-display_wrapper--invert-colors']]: invertColors,\n [styles['empty-state-data-display_wrapper--slim']]: variant === 'slim',\n })}\n >\n <div\n className={clsx(styles['empty-state-data-display_icon-frame'], {\n [styles['empty-state-data-display_icon-frame--invert-colors']]: invertColors,\n [styles['empty-state-data-display_icon-frame--slim']]: variant === 'slim',\n })}\n >\n <Icon name=\"CubeTransparent\" size={variant === 'regular' ? ICON_SIZE_REGULAR : ICON_SIZE_SLIM} />\n </div>\n <div className={styles['empty-state-data-display_text-content']}>\n <label className={styles['empty-state-data-display_label']}>{label}</label>\n {paragraph && <p className={styles['empty-state-data-display_paragraph']}>{paragraph}</p>}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;GCmBM,IAAoB,IACpB,IAAiB;AAGvB,SAAgB,EAAsB,EACpC,UACA,cACA,iBACA,aAAU,aACmB;CAC7B,OACE,kBAAC,OAAD;EACE,WAAW,EAAK,EAAO,qCAAqC;IACzD,EAAO,qDAAqD;IAC5D,EAAO,4CAA4C,MAAY;EAClE,CAAC;YAJH,CAME,kBAAC,OAAD;GACE,WAAW,EAAK,EAAO,wCAAwC;KAC5D,EAAO,wDAAwD;KAC/D,EAAO,+CAA+C,MAAY;GACrE,CAAC;aAED,kBAAC,GAAD;IAAM,MAAK;IAAkB,MAAM,MAAY,YAAY,IAAoB;GAAiB,CAAA;EAC7F,CAAA,GACL,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACE,kBAAC,SAAD;IAAO,WAAW,EAAO;cAAoC;GAAa,CAAA,GACzE,KAAa,kBAAC,KAAD;IAAG,WAAW,EAAO;cAAwC;GAAa,CAAA,CACrF;IACF;;AAET"}
1
+ {"version":3,"file":"EmptyStateDataDisplay-FBDAGO88.js","names":[],"sources":["../src/components/EmptyStateDataDisplay/EmptyStateDataDisplay.module.css","../src/components/EmptyStateDataDisplay/EmptyStateDataDisplay.tsx"],"sourcesContent":[".empty-state-data-display_wrapper {\n align-items: center;\n background-color: var(--color-uva-white);\n display: flex;\n gap: 1.5rem;\n padding: 1.5rem;\n}\n\n.empty-state-data-display_icon-frame {\n align-items: center;\n background-color: var(--color-grey-200);\n border-radius: 50%;\n display: flex;\n justify-content: center;\n min-height: 4rem;\n min-width: 4rem;\n}\n\n.empty-state-data-display_wrapper--invert-colors {\n background-color: var(--color-grey-200);\n}\n\n.empty-state-data-display_wrapper--slim {\n gap: 1rem;\n padding: 1rem;\n}\n\n.empty-state-data-display_icon-frame--invert-colors {\n background-color: var(--color-uva-white);\n}\n\n.empty-state-data-display_icon-frame--slim {\n min-height: 2rem;\n min-width: 2rem;\n}\n\n.empty-state-data-display_text-content {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n.empty-state-data-display_label {\n font-weight: var(--semibold);\n}\n\n.empty-state-data-display_paragraph {\n color: var(--color-grey-700);\n margin: 0;\n}\n","import { clsx } from 'clsx';\n\nimport type { UISizeVariant } from 'types/UserInterface';\n\nimport styles from './EmptyStateDataDisplay.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface EmptyStateDataDisplayProps {\n /** The main text to display. */\n label: string;\n /** The sub-text to display. */\n paragraph?: string;\n /** The colors of the wrapper and icon background are inverted. */\n invertColors?: boolean;\n /** The display variant. */\n variant?: UISizeVariant;\n}\n\nconst ICON_SIZE_REGULAR = 24;\nconst ICON_SIZE_SLIM = 16;\n\n/** Represents a component to indicate an empty state. */\nexport function EmptyStateDataDisplay({\n label,\n paragraph,\n invertColors,\n variant = 'regular',\n}: EmptyStateDataDisplayProps) {\n return (\n <div\n className={clsx(styles['empty-state-data-display_wrapper'], {\n [styles['empty-state-data-display_wrapper--invert-colors']]: invertColors,\n [styles['empty-state-data-display_wrapper--slim']]: variant === 'slim',\n })}\n >\n <div\n className={clsx(styles['empty-state-data-display_icon-frame'], {\n [styles['empty-state-data-display_icon-frame--invert-colors']]: invertColors,\n [styles['empty-state-data-display_icon-frame--slim']]: variant === 'slim',\n })}\n >\n <Icon name=\"CubeTransparent\" size={variant === 'regular' ? ICON_SIZE_REGULAR : ICON_SIZE_SLIM} />\n </div>\n <div className={styles['empty-state-data-display_text-content']}>\n <label className={styles['empty-state-data-display_label']}>{label}</label>\n {paragraph && <p className={styles['empty-state-data-display_paragraph']}>{paragraph}</p>}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;GCmBM,IAAoB,IACpB,IAAiB;AAGvB,SAAgB,EAAsB,EACpC,UACA,cACA,iBACA,aAAU,aACmB;CAC7B,OACE,kBAAC,OAAD;EACE,WAAW,EAAK,EAAO,qCAAqC;IACzD,EAAO,qDAAqD;IAC5D,EAAO,4CAA4C,MAAY;EAClE,CAAC;YAJH,CAME,kBAAC,OAAD;GACE,WAAW,EAAK,EAAO,wCAAwC;KAC5D,EAAO,wDAAwD;KAC/D,EAAO,+CAA+C,MAAY;GACrE,CAAC;aAED,kBAAC,GAAD;IAAM,MAAK;IAAkB,MAAM,MAAY,YAAY,IAAoB;GAAiB,CAAA;EAC7F,CAAA,GACL,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACE,kBAAC,SAAD;IAAO,WAAW,EAAO;cAAoC;GAAa,CAAA,GACzE,KAAa,kBAAC,KAAD;IAAG,WAAW,EAAO;cAAwC;GAAa,CAAA,CACrF;IACF;;AAET"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
3
  import { useId as n, useState as r } from "react";
4
4
  import { jsx as i, jsxs as a } from "react/jsx-runtime";
@@ -55,4 +55,4 @@ var o = {
55
55
  //#endregion
56
56
  export { s as t };
57
57
 
58
- //# sourceMappingURL=ExpandableInfoPanel-DMfcJFP3.js.map
58
+ //# sourceMappingURL=ExpandableInfoPanel-BmbgbAjf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpandableInfoPanel-DMfcJFP3.js","names":[],"sources":["../src/components/ExpandableInfoPanel/ExpandableInfoPanel.module.css","../src/components/ExpandableInfoPanel/ExpandableInfoPanel.tsx"],"sourcesContent":[".expandable-info-panel_wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.expandable-info-panel_header {\n align-items: center;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-bottom: 0.5rem;\n width: 100%;\n}\n\n.expandable-info-panel_trigger {\n align-items: center;\n appearance: none;\n background-color: transparent;\n border: none;\n border-radius: 0.25rem;\n display: flex;\n font: inherit;\n font-size: var(--font-size-default);\n gap: 0.5rem;\n height: 2.75rem;\n margin-bottom: 0;\n outline: none;\n padding: 0.5rem;\n position: relative;\n width: fit-content;\n cursor: pointer;\n}\n\n.expandable-info-panel_trigger:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n text-decoration: underline;\n}\n\n.expandable-info-panel_trigger:hover {\n background-color: var(--color-grey-200);\n text-decoration: underline;\n}\n\n.expandable-info-panel_trigger--active {\n background-color: var(--color-navy-200);\n border-radius: 0.25rem 0.25rem 0 0;\n}\n\n.expandable-info-panel_trigger--active:after {\n background-color: var(--color-navy-200);\n content: \"\";\n display: block;\n height: 0.5rem;\n left: 0;\n position: absolute;\n right: 0;\n top: 100%;\n z-index: -1;\n}\n\n.expandable-info-panel_trigger--active:hover,\n.expandable-info-panel_trigger--active:hover:after {\n background-color: var(--color-navy-300);\n}\n\n.expandable-info-panel_content-wrapper {\n align-items: start;\n background-color: var(--color-navy-200);\n display: grid;\n gap: 1rem;\n grid-template-columns: 1.5rem 1fr;\n padding: 1.5rem;\n}\n\n.expandable-info-panel_content-with-note-container {\n display: flex;\n gap: 0.5rem;\n justify-content: space-between;\n}\n\n.expandable-info-panel_note {\n background-color: var(--color-navy-100);\n padding: 1rem;\n /* both min and max width needed as not all react elements repect width */\n /* if react node contenct is placed next to \"note\" it may squish a pure \"width\" note */\n min-width: 15.875rem;\n max-width: 15.875rem;\n}\n","import { useState, type ReactNode } from 'react';\r\nimport { clsx } from 'clsx';\r\nimport { useId } from 'react';\r\n\r\nimport styles from './ExpandableInfoPanel.module.css';\r\n\r\nimport { Icon } from 'components/Icon';\r\n\r\nexport interface ExpandableInfoPanelProps {\r\n /** Label for the trigger button that toggles the expandable panel. */\r\n triggerLabel: string;\r\n /** Main header displayed inline left of the trigger button. */\r\n mainHeader?: ReactNode | string;\r\n /** Aria-label for the button when the panel is collapsed. */\r\n collapseLabel?: string;\r\n /** Aria-label for the button when the panel is expanded. */\r\n expandLabel?: string;\r\n /** Content to be displayed inside the expandable panel. */\r\n content: ReactNode | string;\r\n /** Optional content area on in seperate box on right side of expanded content. */\r\n note?: ReactNode | string;\r\n /** Optional state, if true; sets the expandable panel as 'open' by default. */\r\n defaultOpen?: boolean;\r\n}\r\n\r\nexport const ExpandableInfoPanel = ({\r\n triggerLabel,\r\n mainHeader,\r\n collapseLabel = '',\r\n expandLabel = '',\r\n content,\r\n note = '',\r\n defaultOpen = false,\r\n}: ExpandableInfoPanelProps) => {\r\n const [active, setActive] = useState(defaultOpen);\r\n const contentId = useId();\r\n\r\n return (\r\n <div className={styles['expandable-info-panel_wrapper']}>\r\n <div className={styles['expandable-info-panel_header']}>\r\n {mainHeader}\r\n <button\r\n className={clsx(styles['expandable-info-panel_trigger'], {\r\n [styles['expandable-info-panel_trigger--active']]: active,\r\n })}\r\n type=\"button\"\r\n aria-expanded={active}\r\n aria-controls={contentId}\r\n aria-label={`${triggerLabel} - ${active ? collapseLabel : expandLabel}`}\r\n onClick={() => setActive(!active)}\r\n >\r\n <Icon name={active ? 'SquareInfoSolid' : 'SquareInfo'} size={24} />\r\n {triggerLabel}\r\n <Icon name={active ? 'CheveronUp' : 'CheveronDown'} size={16} />\r\n </button>\r\n </div>\r\n {active && (\r\n <div id={contentId} className={styles['expandable-info-panel_content-wrapper']}>\r\n <Icon name=\"SquareInfo\" size={24} />\r\n {!note ? (\r\n <div>{content}</div>\r\n ) : (\r\n <div className={styles['expandable-info-panel_content-with-note-container']}>\r\n <div>{content}</div>\r\n <div className={styles['expandable-info-panel_note']}>{note}</div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"mappings":";;;;;;;;;;;;;GCyBa,KAAuB,EAClC,iBACA,eACA,mBAAgB,IAChB,iBAAc,IACd,YACA,UAAO,IACP,iBAAc,SACgB;CAC9B,IAAM,CAAC,GAAQ,KAAa,EAAS,CAAW,GAC1C,IAAY,EAAM;CAExB,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACG,GACD,kBAAC,UAAD;IACE,WAAW,EAAK,EAAO,kCAAkC,GACtD,EAAO,2CAA2C,EACrD,CAAC;IACD,MAAK;IACL,iBAAe;IACf,iBAAe;IACf,cAAY,GAAG,EAAa,KAAK,IAAS,IAAgB;IAC1D,eAAe,EAAU,CAAC,CAAM;cARlC;KAUE,kBAAC,GAAD;MAAM,MAAM,IAAS,oBAAoB;MAAc,MAAM;KAAK,CAAA;KACjE;KACD,kBAAC,GAAD;MAAM,MAAM,IAAS,eAAe;MAAgB,MAAM;KAAK,CAAA;IACzD;KACL;MACJ,KACC,kBAAC,OAAD;GAAK,IAAI;GAAW,WAAW,EAAO;aAAtC,CACE,kBAAC,GAAD;IAAM,MAAK;IAAa,MAAM;GAAK,CAAA,GACjC,IAGA,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB,CACE,kBAAC,OAAD,EAAA,UAAM,EAAa,CAAA,GACnB,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAgC;IAAU,CAAA,CAC9D;QALL,kBAAC,OAAD,EAAA,UAAM,EAAa,CAAA,CAOlB;IAEJ;;AAET"}
1
+ {"version":3,"file":"ExpandableInfoPanel-BmbgbAjf.js","names":[],"sources":["../src/components/ExpandableInfoPanel/ExpandableInfoPanel.module.css","../src/components/ExpandableInfoPanel/ExpandableInfoPanel.tsx"],"sourcesContent":[".expandable-info-panel_wrapper {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.expandable-info-panel_header {\n align-items: center;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-bottom: 0.5rem;\n width: 100%;\n}\n\n.expandable-info-panel_trigger {\n align-items: center;\n appearance: none;\n background-color: transparent;\n border: none;\n border-radius: 0.25rem;\n display: flex;\n font: inherit;\n font-size: var(--font-size-default);\n gap: 0.5rem;\n height: 2.75rem;\n margin-bottom: 0;\n outline: none;\n padding: 0.5rem;\n position: relative;\n width: fit-content;\n cursor: pointer;\n}\n\n.expandable-info-panel_trigger:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n text-decoration: underline;\n}\n\n.expandable-info-panel_trigger:hover {\n background-color: var(--color-grey-200);\n text-decoration: underline;\n}\n\n.expandable-info-panel_trigger--active {\n background-color: var(--color-navy-200);\n border-radius: 0.25rem 0.25rem 0 0;\n}\n\n.expandable-info-panel_trigger--active:after {\n background-color: var(--color-navy-200);\n content: \"\";\n display: block;\n height: 0.5rem;\n left: 0;\n position: absolute;\n right: 0;\n top: 100%;\n z-index: -1;\n}\n\n.expandable-info-panel_trigger--active:hover,\n.expandable-info-panel_trigger--active:hover:after {\n background-color: var(--color-navy-300);\n}\n\n.expandable-info-panel_content-wrapper {\n align-items: start;\n background-color: var(--color-navy-200);\n display: grid;\n gap: 1rem;\n grid-template-columns: 1.5rem 1fr;\n padding: 1.5rem;\n}\n\n.expandable-info-panel_content-with-note-container {\n display: flex;\n gap: 0.5rem;\n justify-content: space-between;\n}\n\n.expandable-info-panel_note {\n background-color: var(--color-navy-100);\n padding: 1rem;\n /* both min and max width needed as not all react elements repect width */\n /* if react node contenct is placed next to \"note\" it may squish a pure \"width\" note */\n min-width: 15.875rem;\n max-width: 15.875rem;\n}\n","import { useState, type ReactNode } from 'react';\r\nimport { clsx } from 'clsx';\r\nimport { useId } from 'react';\r\n\r\nimport styles from './ExpandableInfoPanel.module.css';\r\n\r\nimport { Icon } from 'components/Icon';\r\n\r\nexport interface ExpandableInfoPanelProps {\r\n /** Label for the trigger button that toggles the expandable panel. */\r\n triggerLabel: string;\r\n /** Main header displayed inline left of the trigger button. */\r\n mainHeader?: ReactNode | string;\r\n /** Aria-label for the button when the panel is collapsed. */\r\n collapseLabel?: string;\r\n /** Aria-label for the button when the panel is expanded. */\r\n expandLabel?: string;\r\n /** Content to be displayed inside the expandable panel. */\r\n content: ReactNode | string;\r\n /** Optional content area on in seperate box on right side of expanded content. */\r\n note?: ReactNode | string;\r\n /** Optional state, if true; sets the expandable panel as 'open' by default. */\r\n defaultOpen?: boolean;\r\n}\r\n\r\nexport const ExpandableInfoPanel = ({\r\n triggerLabel,\r\n mainHeader,\r\n collapseLabel = '',\r\n expandLabel = '',\r\n content,\r\n note = '',\r\n defaultOpen = false,\r\n}: ExpandableInfoPanelProps) => {\r\n const [active, setActive] = useState(defaultOpen);\r\n const contentId = useId();\r\n\r\n return (\r\n <div className={styles['expandable-info-panel_wrapper']}>\r\n <div className={styles['expandable-info-panel_header']}>\r\n {mainHeader}\r\n <button\r\n className={clsx(styles['expandable-info-panel_trigger'], {\r\n [styles['expandable-info-panel_trigger--active']]: active,\r\n })}\r\n type=\"button\"\r\n aria-expanded={active}\r\n aria-controls={contentId}\r\n aria-label={`${triggerLabel} - ${active ? collapseLabel : expandLabel}`}\r\n onClick={() => setActive(!active)}\r\n >\r\n <Icon name={active ? 'SquareInfoSolid' : 'SquareInfo'} size={24} />\r\n {triggerLabel}\r\n <Icon name={active ? 'CheveronUp' : 'CheveronDown'} size={16} />\r\n </button>\r\n </div>\r\n {active && (\r\n <div id={contentId} className={styles['expandable-info-panel_content-wrapper']}>\r\n <Icon name=\"SquareInfo\" size={24} />\r\n {!note ? (\r\n <div>{content}</div>\r\n ) : (\r\n <div className={styles['expandable-info-panel_content-with-note-container']}>\r\n <div>{content}</div>\r\n <div className={styles['expandable-info-panel_note']}>{note}</div>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"mappings":";;;;;;;;;;;;;GCyBa,KAAuB,EAClC,iBACA,eACA,mBAAgB,IAChB,iBAAc,IACd,YACA,UAAO,IACP,iBAAc,SACgB;CAC9B,IAAM,CAAC,GAAQ,KAAa,EAAS,CAAW,GAC1C,IAAY,EAAM;CAExB,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACG,GACD,kBAAC,UAAD;IACE,WAAW,EAAK,EAAO,kCAAkC,GACtD,EAAO,2CAA2C,EACrD,CAAC;IACD,MAAK;IACL,iBAAe;IACf,iBAAe;IACf,cAAY,GAAG,EAAa,KAAK,IAAS,IAAgB;IAC1D,eAAe,EAAU,CAAC,CAAM;cARlC;KAUE,kBAAC,GAAD;MAAM,MAAM,IAAS,oBAAoB;MAAc,MAAM;KAAK,CAAA;KACjE;KACD,kBAAC,GAAD;MAAM,MAAM,IAAS,eAAe;MAAgB,MAAM;KAAK,CAAA;IACzD;KACL;MACJ,KACC,kBAAC,OAAD;GAAK,IAAI;GAAW,WAAW,EAAO;aAAtC,CACE,kBAAC,GAAD;IAAM,MAAK;IAAa,MAAM;GAAK,CAAA,GACjC,IAGA,kBAAC,OAAD;IAAK,WAAW,EAAO;cAAvB,CACE,kBAAC,OAAD,EAAA,UAAM,EAAa,CAAA,GACnB,kBAAC,OAAD;KAAK,WAAW,EAAO;eAAgC;IAAU,CAAA,CAC9D;QALL,kBAAC,OAAD,EAAA,UAAM,EAAa,CAAA,CAOlB;IAEJ;;AAET"}
@@ -1,6 +1,6 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
- import { t as n } from "./Repeater-Bnoqqz0X.js";
3
+ import { t as n } from "./Repeater-BAEfOMZI.js";
4
4
  import { useEffect as r, useState as i } from "react";
5
5
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
6
  import './assets/FeedbackBar.css';//#region src/components/FeedbackBar/FeedbackBar.module.css
@@ -40,4 +40,4 @@ var s = {
40
40
  //#endregion
41
41
  export { c as t };
42
42
 
43
- //# sourceMappingURL=FeedbackBar-DRbJVniP.js.map
43
+ //# sourceMappingURL=FeedbackBar-DEDpoNy7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackBar-DRbJVniP.js","names":[],"sources":["../src/components/FeedbackBar/FeedbackBar.module.css","../src/components/FeedbackBar/FeedbackBar.tsx"],"sourcesContent":[".feedback-bar {\n background-color: var(--color-forest-100);\n border: 1px solid var(--color-forest-800);\n border-radius: 0.5rem;\n display: flex;\n font-weight: var(--semibold);\n gap: 0.5rem;\n justify-content: space-between;\n max-height: 0;\n opacity: 0;\n padding: 0 1rem;\n transition: all 0.5s;\n}\n\n.feedback-bar--visible {\n max-height: 6.625rem;\n opacity: 1;\n padding: 1rem;\n}\n\n.feedback-bar__icon {\n color: var(--color-forest-800);\n}\n\n.feedback-bar__close-button {\n align-items: center;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n color: var(--color-uva-black);\n display: inline-flex;\n height: 1.5rem;\n justify-content: center;\n transition: var(--transition-colors);\n width: 1.5rem;\n}\n\n.feedback-bar__close-button:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.feedback-bar__close-button:hover {\n background-color: var(--color-forest-600);\n cursor: pointer;\n outline: 0;\n}\n\n/* make the clickable area of the overlay close button 42x42px simmilar to a regular button */\n\n.feedback-bar__close-button::after {\n content: \" \";\n height: 2.625rem;\n position: absolute;\n width: 2.625rem;\n}\n","import classNames from 'clsx';\nimport { useEffect, useState, type PropsWithChildren } from 'react';\n\nimport styles from './FeedbackBar.module.css';\n\nimport { Icon } from 'components/Icon';\nimport { Repeater } from 'components/Repeater';\n\n/** Represents a component to show feedback within a Page. */\nexport const FeedbackBar = ({ children }: PropsWithChildren) => {\n const [isVisible, setIsVisible] = useState(false);\n\n useEffect(() => {\n setIsVisible(true);\n }, []);\n\n const close = () => {\n setIsVisible(false);\n };\n\n return (\n <div className={classNames(styles['feedback-bar'], { [styles['feedback-bar--visible']]: isVisible })} role=\"alert\">\n <Repeater flexDirection=\"row\">\n <Icon className={classNames(styles['feedback-bar__icon'])} name=\"CheckCircle\" />\n {children}\n </Repeater>\n <button className={classNames(styles['feedback-bar__close-button'])} type=\"button\" onClick={close}>\n <Icon name=\"Cross\" size={24} />\n </button>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;GCSa,KAAe,EAAE,kBAAkC;CAC9D,IAAM,CAAC,GAAW,KAAgB,EAAS,EAAK;CAEhD,QAAgB;EACd,EAAa,EAAI;CACnB,GAAG,CAAC,CAAC;CAEL,IAAM,UAAc;EAClB,EAAa,EAAK;CACpB;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,EAAW,EAAO,iBAAiB,GAAG,EAAO,2BAA2B,EAAU,CAAC;EAAG,MAAK;YAA3G,CACE,kBAAC,GAAD;GAAU,eAAc;aAAxB,CACE,kBAAC,GAAD;IAAM,WAAW,EAAW,EAAO,qBAAqB;IAAG,MAAK;GAAe,CAAA,GAC9E,CACO;MACV,kBAAC,UAAD;GAAQ,WAAW,EAAW,EAAO,6BAA6B;GAAG,MAAK;GAAS,SAAS;aAC1F,kBAAC,GAAD;IAAM,MAAK;IAAQ,MAAM;GAAK,CAAA;EACxB,CAAA,CACL;;AAET"}
1
+ {"version":3,"file":"FeedbackBar-DEDpoNy7.js","names":[],"sources":["../src/components/FeedbackBar/FeedbackBar.module.css","../src/components/FeedbackBar/FeedbackBar.tsx"],"sourcesContent":[".feedback-bar {\n background-color: var(--color-forest-100);\n border: 1px solid var(--color-forest-800);\n border-radius: 0.5rem;\n display: flex;\n font-weight: var(--semibold);\n gap: 0.5rem;\n justify-content: space-between;\n max-height: 0;\n opacity: 0;\n padding: 0 1rem;\n transition: all 0.5s;\n}\n\n.feedback-bar--visible {\n max-height: 6.625rem;\n opacity: 1;\n padding: 1rem;\n}\n\n.feedback-bar__icon {\n color: var(--color-forest-800);\n}\n\n.feedback-bar__close-button {\n align-items: center;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.25rem;\n color: var(--color-uva-black);\n display: inline-flex;\n height: 1.5rem;\n justify-content: center;\n transition: var(--transition-colors);\n width: 1.5rem;\n}\n\n.feedback-bar__close-button:focus-visible {\n outline: 0.125rem dotted var(--color-navy-600);\n outline-offset: 0.125rem;\n}\n\n.feedback-bar__close-button:hover {\n background-color: var(--color-forest-600);\n cursor: pointer;\n outline: 0;\n}\n\n/* make the clickable area of the overlay close button 42x42px simmilar to a regular button */\n\n.feedback-bar__close-button::after {\n content: \" \";\n height: 2.625rem;\n position: absolute;\n width: 2.625rem;\n}\n","import classNames from 'clsx';\nimport { useEffect, useState, type PropsWithChildren } from 'react';\n\nimport styles from './FeedbackBar.module.css';\n\nimport { Icon } from 'components/Icon';\nimport { Repeater } from 'components/Repeater';\n\n/** Represents a component to show feedback within a Page. */\nexport const FeedbackBar = ({ children }: PropsWithChildren) => {\n const [isVisible, setIsVisible] = useState(false);\n\n useEffect(() => {\n setIsVisible(true);\n }, []);\n\n const close = () => {\n setIsVisible(false);\n };\n\n return (\n <div className={classNames(styles['feedback-bar'], { [styles['feedback-bar--visible']]: isVisible })} role=\"alert\">\n <Repeater flexDirection=\"row\">\n <Icon className={classNames(styles['feedback-bar__icon'])} name=\"CheckCircle\" />\n {children}\n </Repeater>\n <button className={classNames(styles['feedback-bar__close-button'])} type=\"button\" onClick={close}>\n <Icon name=\"Cross\" size={24} />\n </button>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;GCSa,KAAe,EAAE,kBAAkC;CAC9D,IAAM,CAAC,GAAW,KAAgB,EAAS,EAAK;CAEhD,QAAgB;EACd,EAAa,EAAI;CACnB,GAAG,CAAC,CAAC;CAEL,IAAM,UAAc;EAClB,EAAa,EAAK;CACpB;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,EAAW,EAAO,iBAAiB,GAAG,EAAO,2BAA2B,EAAU,CAAC;EAAG,MAAK;YAA3G,CACE,kBAAC,GAAD;GAAU,eAAc;aAAxB,CACE,kBAAC,GAAD;IAAM,WAAW,EAAW,EAAO,qBAAqB;IAAG,MAAK;GAAe,CAAA,GAC9E,CACO;MACV,kBAAC,UAAD;GAAQ,WAAW,EAAW,EAAO,6BAA6B;GAAG,MAAK;GAAS,SAAS;aAC1F,kBAAC,GAAD;IAAM,MAAK;IAAQ,MAAM;GAAK,CAAA;EACxB,CAAA,CACL;;AAET"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
3
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  import './assets/FeedbackBox.css';//#region src/components/FeedbackBox/FeedbackBox.module.css
@@ -26,4 +26,4 @@ var i = {
26
26
  //#endregion
27
27
  export { o as t };
28
28
 
29
- //# sourceMappingURL=FeedbackBox-CaSxB4uc.js.map
29
+ //# sourceMappingURL=FeedbackBox-BpOf_dxg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedbackBox-CaSxB4uc.js","names":[],"sources":["../src/components/FeedbackBox/FeedbackBox.module.css","../src/components/FeedbackBox/FeedbackBox.tsx"],"sourcesContent":[".feedback-box {\n background-color: var(--color-uva-white);\n display: flex;\n gap: 0.5rem;\n padding: 0.75rem 1rem 0.75rem 0.5rem;\n}\n\n.feedback-box > svg {\n flex-shrink: 0;\n height: 1rem;\n margin-top: 0.25rem;\n width: 1rem;\n}\n\n.feedback-box__success {\n background-color: var(--color-forest-100);\n}\n\n.feedback-box__warning {\n background-color: var(--color-orange-100);\n}\n\n.feedback-box__error {\n background-color: var(--color-red-100);\n}\n","import { clsx } from 'clsx';\n\nimport type { ReactElement } from 'react';\nimport type { IconProps } from 'components/Icon';\n\nimport styles from './FeedbackBox.module.css';\n\nimport { Icon } from 'components/Icon';\n\ntype FeedbackLevel = 'success' | 'warning' | 'error';\n\nconst LEVEL_ICON_MAP: Record<FeedbackLevel, IconProps['name']> = {\n success: 'CheckCircle',\n warning: 'ExclamationCircle',\n error: 'ExclamationTriangleMini',\n};\n\nexport interface FeedbackBoxProps {\n /** The id of the element. */\n id?: string;\n /** The feedback level, indicates what icon is used. */\n level: FeedbackLevel;\n /** The feedback value. */\n feedback: string | ReactElement;\n}\n\n/** Represents a component to show feedback. */\nexport const FeedbackBox = ({ id, level, feedback }: FeedbackBoxProps) => (\n <div\n className={clsx(styles['feedback-box'], {\n [styles['feedback-box__success']]: level === 'success',\n [styles['feedback-box__warning']]: level === 'warning',\n [styles['feedback-box__error']]: level === 'error',\n })}\n id={id}\n >\n <Icon name={LEVEL_ICON_MAP[level]} size={16} />\n {feedback}\n </div>\n);\n"],"mappings":";;;;;;;;;GCWM,IAA2D;CAC/D,SAAS;CACT,SAAS;CACT,OAAO;AACT,GAYa,KAAe,EAAE,OAAI,UAAO,kBACvC,kBAAC,OAAD;CACE,WAAW,EAAK,EAAO,iBAAiB;GACrC,EAAO,2BAA2B,MAAU;GAC5C,EAAO,2BAA2B,MAAU;GAC5C,EAAO,yBAAyB,MAAU;CAC7C,CAAC;CACG;WANN,CAQE,kBAAC,GAAD;EAAM,MAAM,EAAe;EAAQ,MAAM;CAAK,CAAA,GAC7C,CACE"}
1
+ {"version":3,"file":"FeedbackBox-BpOf_dxg.js","names":[],"sources":["../src/components/FeedbackBox/FeedbackBox.module.css","../src/components/FeedbackBox/FeedbackBox.tsx"],"sourcesContent":[".feedback-box {\n background-color: var(--color-uva-white);\n display: flex;\n gap: 0.5rem;\n padding: 0.75rem 1rem 0.75rem 0.5rem;\n}\n\n.feedback-box > svg {\n flex-shrink: 0;\n height: 1rem;\n margin-top: 0.25rem;\n width: 1rem;\n}\n\n.feedback-box__success {\n background-color: var(--color-forest-100);\n}\n\n.feedback-box__warning {\n background-color: var(--color-orange-100);\n}\n\n.feedback-box__error {\n background-color: var(--color-red-100);\n}\n","import { clsx } from 'clsx';\n\nimport type { ReactElement } from 'react';\nimport type { IconProps } from 'components/Icon';\n\nimport styles from './FeedbackBox.module.css';\n\nimport { Icon } from 'components/Icon';\n\ntype FeedbackLevel = 'success' | 'warning' | 'error';\n\nconst LEVEL_ICON_MAP: Record<FeedbackLevel, IconProps['name']> = {\n success: 'CheckCircle',\n warning: 'ExclamationCircle',\n error: 'ExclamationTriangleMini',\n};\n\nexport interface FeedbackBoxProps {\n /** The id of the element. */\n id?: string;\n /** The feedback level, indicates what icon is used. */\n level: FeedbackLevel;\n /** The feedback value. */\n feedback: string | ReactElement;\n}\n\n/** Represents a component to show feedback. */\nexport const FeedbackBox = ({ id, level, feedback }: FeedbackBoxProps) => (\n <div\n className={clsx(styles['feedback-box'], {\n [styles['feedback-box__success']]: level === 'success',\n [styles['feedback-box__warning']]: level === 'warning',\n [styles['feedback-box__error']]: level === 'error',\n })}\n id={id}\n >\n <Icon name={LEVEL_ICON_MAP[level]} size={16} />\n {feedback}\n </div>\n);\n"],"mappings":";;;;;;;;;GCWM,IAA2D;CAC/D,SAAS;CACT,SAAS;CACT,OAAO;AACT,GAYa,KAAe,EAAE,OAAI,UAAO,kBACvC,kBAAC,OAAD;CACE,WAAW,EAAK,EAAO,iBAAiB;GACrC,EAAO,2BAA2B,MAAU;GAC5C,EAAO,2BAA2B,MAAU;GAC5C,EAAO,yBAAyB,MAAU;CAC7C,CAAC;CACG;WANN,CAQE,kBAAC,GAAD;EAAM,MAAM,EAAe;EAAQ,MAAM;CAAK,CAAA,GAC7C,CACE"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
3
  import './assets/Fieldset.css';var r = {
4
4
  fieldset: "_fieldset_1pmtm_1",
@@ -19,4 +19,4 @@ import './assets/Fieldset.css';var r = {
19
19
  //#endregion
20
20
  export { i as t };
21
21
 
22
- //# sourceMappingURL=Fieldset-D01_rj_p.js.map
22
+ //# sourceMappingURL=Fieldset-CgnLyAyS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Fieldset-D01_rj_p.js","names":[],"sources":["../src/components/Fieldset/Fieldset.module.css","../src/components/Fieldset/Fieldset.tsx"],"sourcesContent":[".fieldset {\n border: 0;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n margin: 0;\n padding: 0;\n}\n\n.fieldset--inline {\n column-gap: 1.5rem;\n flex-direction: row;\n}\n\n.fieldset__legend {\n font-weight: var(--semibold);\n padding: 0;\n}\n\n.fieldset__description {\n margin: 0;\n}\n","import { clsx } from 'clsx';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './Fieldset.module.css';\n\nexport interface FieldsetProps {\n /** The description to render. */\n description?: ReactNode;\n /** The id of the description element. Used together with the description property. */\n descriptionId?: string;\n /** true if the form fields should render inline; otherwise, false. The default is false. */\n inline?: boolean;\n /** The legend to render. */\n legend: string;\n}\n\n/** Represents a component to show a collection of form field elements. */\nexport const Fieldset = ({\n inline,\n legend,\n description,\n descriptionId,\n children,\n}: PropsWithChildren<FieldsetProps>) => (\n <fieldset\n className={clsx(styles['fieldset'], {\n [styles['fieldset--inline']]: inline,\n })}\n >\n <div>\n <legend className={styles['fieldset__legend']}>{legend}</legend>\n {description && (\n <p className={styles['fieldset__description']} id={descriptionId}>\n {description}\n </p>\n )}\n </div>\n {children}\n </fieldset>\n);\n"],"mappings":";;;;;;;GCkBa,KAAY,EACvB,WACA,WACA,gBACA,kBACA,kBAEA,kBAAC,YAAD;CACE,WAAW,EAAK,EAAO,UAAa,GACjC,EAAO,sBAAsB,EAChC,CAAC;WAHH,CAKE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,UAAD;EAAQ,WAAW,EAAO;YAAsB;CAAe,CAAA,GAC9D,KACC,kBAAC,KAAD;EAAG,WAAW,EAAO;EAA0B,IAAI;YAChD;CACA,CAAA,CAEF,EAAA,CAAA,GACJ,CACO"}
1
+ {"version":3,"file":"Fieldset-CgnLyAyS.js","names":[],"sources":["../src/components/Fieldset/Fieldset.module.css","../src/components/Fieldset/Fieldset.tsx"],"sourcesContent":[".fieldset {\n border: 0;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n margin: 0;\n padding: 0;\n}\n\n.fieldset--inline {\n column-gap: 1.5rem;\n flex-direction: row;\n}\n\n.fieldset__legend {\n font-weight: var(--semibold);\n padding: 0;\n}\n\n.fieldset__description {\n margin: 0;\n}\n","import { clsx } from 'clsx';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './Fieldset.module.css';\n\nexport interface FieldsetProps {\n /** The description to render. */\n description?: ReactNode;\n /** The id of the description element. Used together with the description property. */\n descriptionId?: string;\n /** true if the form fields should render inline; otherwise, false. The default is false. */\n inline?: boolean;\n /** The legend to render. */\n legend: string;\n}\n\n/** Represents a component to show a collection of form field elements. */\nexport const Fieldset = ({\n inline,\n legend,\n description,\n descriptionId,\n children,\n}: PropsWithChildren<FieldsetProps>) => (\n <fieldset\n className={clsx(styles['fieldset'], {\n [styles['fieldset--inline']]: inline,\n })}\n >\n <div>\n <legend className={styles['fieldset__legend']}>{legend}</legend>\n {description && (\n <p className={styles['fieldset__description']} id={descriptionId}>\n {description}\n </p>\n )}\n </div>\n {children}\n </fieldset>\n);\n"],"mappings":";;;;;;;GCkBa,KAAY,EACvB,WACA,WACA,gBACA,kBACA,kBAEA,kBAAC,YAAD;CACE,WAAW,EAAK,EAAO,UAAa,GACjC,EAAO,sBAAsB,EAChC,CAAC;WAHH,CAKE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,UAAD;EAAQ,WAAW,EAAO;YAAsB;CAAe,CAAA,GAC9D,KACC,kBAAC,KAAD;EAAG,WAAW,EAAO;EAA0B,IAAI;YAChD;CACA,CAAA,CAEF,EAAA,CAAA,GACJ,CACO"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  import './assets/FormField.css';//#region src/components/FormField/FormField.module.css
4
4
  var n = {
@@ -18,4 +18,4 @@ var n = {
18
18
  //#endregion
19
19
  export { r as t };
20
20
 
21
- //# sourceMappingURL=FormField-CcV84TfI.js.map
21
+ //# sourceMappingURL=FormField-ByjTkKKq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormField-CcV84TfI.js","names":[],"sources":["../src/components/FormField/FormField.module.css","../src/components/FormField/FormField.tsx"],"sourcesContent":[".form-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem 1rem;\n}\n\n.form-field--outerspace {\n margin: 1.5rem 0;\n}\n\n.form-field--inline {\n align-items: center;\n flex-direction: row;\n}\n\n.form-field--align-start {\n align-items: flex-start;\n}\n","import classNames from 'clsx';\n\nimport type { HTMLAttributes, PropsWithChildren } from 'react';\n\nimport styles from './FormField.module.css';\n\nexport interface FormFieldProps extends HTMLAttributes<HTMLDivElement> {\n /** true if a margin at the top and bottom should be added; otherwise, false. The default is false. */\n outerSpace?: boolean;\n /** true if the label and input field should be rendered on the same row; otherwise, false. The default is false. */\n inline?: boolean;\n /** to be used in combination with 'inline'; true if the label and input field should be rendered on start of the same row; otherwise, false. The default is false. */\n alignStart?: boolean;\n}\n\n/** Represents an element to wrap a label and input field. */\nexport const FormField = ({ children, outerSpace, inline, alignStart, ...rest }: PropsWithChildren<FormFieldProps>) => (\n <div\n className={classNames(styles['form-field'], {\n [styles['form-field--outerspace']]: outerSpace,\n [styles['form-field--inline']]: inline,\n [styles['form-field--align-start']]: alignStart,\n })}\n {...rest}\n >\n {children}\n </div>\n);\n"],"mappings":";;;;;;;;GCgBa,KAAa,EAAE,aAAU,eAAY,WAAQ,eAAY,GAAG,QACvE,kBAAC,OAAD;CACE,WAAW,EAAW,EAAO,eAAe;GACzC,EAAO,4BAA4B;GACnC,EAAO,wBAAwB;GAC/B,EAAO,6BAA6B;CACvC,CAAC;CACD,GAAI;CAEH;AACE,CAAA"}
1
+ {"version":3,"file":"FormField-ByjTkKKq.js","names":[],"sources":["../src/components/FormField/FormField.module.css","../src/components/FormField/FormField.tsx"],"sourcesContent":[".form-field {\n display: flex;\n flex-direction: column;\n gap: 0.5rem 1rem;\n}\n\n.form-field--outerspace {\n margin: 1.5rem 0;\n}\n\n.form-field--inline {\n align-items: center;\n flex-direction: row;\n}\n\n.form-field--align-start {\n align-items: flex-start;\n}\n","import classNames from 'clsx';\n\nimport type { HTMLAttributes, PropsWithChildren } from 'react';\n\nimport styles from './FormField.module.css';\n\nexport interface FormFieldProps extends HTMLAttributes<HTMLDivElement> {\n /** true if a margin at the top and bottom should be added; otherwise, false. The default is false. */\n outerSpace?: boolean;\n /** true if the label and input field should be rendered on the same row; otherwise, false. The default is false. */\n inline?: boolean;\n /** to be used in combination with 'inline'; true if the label and input field should be rendered on start of the same row; otherwise, false. The default is false. */\n alignStart?: boolean;\n}\n\n/** Represents an element to wrap a label and input field. */\nexport const FormField = ({ children, outerSpace, inline, alignStart, ...rest }: PropsWithChildren<FormFieldProps>) => (\n <div\n className={classNames(styles['form-field'], {\n [styles['form-field--outerspace']]: outerSpace,\n [styles['form-field--inline']]: inline,\n [styles['form-field--align-start']]: alignStart,\n })}\n {...rest}\n >\n {children}\n </div>\n);\n"],"mappings":";;;;;;;;GCgBa,KAAa,EAAE,aAAU,eAAY,WAAQ,eAAY,GAAG,QACvE,kBAAC,OAAD;CACE,WAAW,EAAW,EAAO,eAAe;GACzC,EAAO,4BAA4B;GACnC,EAAO,wBAAwB;GAC/B,EAAO,6BAA6B;CACvC,CAAC;CACD,GAAI;CAEH;AACE,CAAA"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { forwardRef as t } from "react";
3
3
  import { jsx as n } from "react/jsx-runtime";
4
4
  import './assets/IconButton.css';//#region src/components/IconButton/IconButton.module.css
@@ -21,4 +21,4 @@ var r = {
21
21
  //#endregion
22
22
  export { i as t };
23
23
 
24
- //# sourceMappingURL=IconButton-CSNMVEG1.js.map
24
+ //# sourceMappingURL=IconButton-BZVNomru.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IconButton-CSNMVEG1.js","names":[],"sources":["../src/components/IconButton/IconButton.module.css","../src/components/IconButton/IconButton.tsx"],"sourcesContent":[".icon-button {\n align-items: center;\n appearance: none;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.5rem;\n color: var(--color-uva-black);\n cursor: pointer;\n display: inline-flex;\n font-family: inherit;\n font-size: var(--font-size-default);\n gap: 0.25rem;\n height: 2.75rem;\n justify-content: center;\n margin: 0;\n outline: 0;\n padding: 0;\n position: relative;\n white-space: nowrap;\n width: 2.75rem;\n}\n\n.icon-button:focus-visible {\n border-color: currentcolor;\n}\n\n.icon-button--destructive {\n color: var(--color-red-600);\n}\n\n.icon-button:hover:not(:disabled) {\n border-color: currentcolor;\n}\n\n.icon-button--no-border:focus-visible,\n.icon-button--no-border:hover:not(:disabled) {\n background-color: var(--color-grey-300);\n}\n\n.icon-button--no-border:hover:not(:focus-visible, :disabled) {\n border-color: transparent;\n}\n\n.icon-button--wide {\n min-width: 2.75rem;\n padding: 0 0.75rem;\n width: unset;\n}\n\n.icon-button > svg {\n pointer-events: none;\n}\n\n.icon-button[disabled] {\n cursor: unset;\n opacity: 0.4;\n}\n\n/*\nOn displays without hover such as smart phones and tablets, make the tappable\narea 0.5rem (8px) bigger in all directions.\n*/\n@media (hover: none) {\n .icon-button::after {\n bottom: -0.5rem;\n content: \" \";\n left: -0.5rem;\n position: absolute;\n right: -0.5rem;\n top: -0.5rem;\n }\n}\n","import { clsx } from 'clsx';\nimport { forwardRef } from 'react';\n\nimport type { ButtonHTMLAttributes } from 'react';\n\nimport styles from './IconButton.module.css';\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'style'> {\n /** The value of the aria-label. */\n 'aria-label': string;\n /** The variant of the button. */\n variant?: 'destructive';\n /** true if the button should be rendered without a border; otherwise, false. The default is false. */\n noBorder?: boolean;\n /** true to render the button a bit wider; otherwise, false. The default is false. */\n wide?: boolean;\n}\n\n/** Represents a component for a button with an icon. */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ children, type = 'button', variant, noBorder, wide, ...restProps }: IconButtonProps, forwardedRef) => (\n <button\n {...restProps}\n className={clsx(styles['icon-button'], {\n [styles['icon-button--destructive']]: variant === 'destructive',\n [styles['icon-button--no-border']]: noBorder,\n [styles['icon-button--wide']]: wide,\n })}\n ref={forwardedRef}\n type={type}\n >\n {children}\n </button>\n )\n);\n"],"mappings":";;;;;;;;;GCmBa,IAAa,GACvB,EAAE,aAAU,UAAO,UAAU,YAAS,aAAU,SAAM,GAAG,KAA8B,MACtF,kBAAC,UAAD;CACE,GAAI;CACJ,WAAW,EAAK,EAAO,gBAAgB;GACpC,EAAO,8BAA8B,MAAY;GACjD,EAAO,4BAA4B;GACnC,EAAO,uBAAuB;CACjC,CAAC;CACD,KAAK;CACC;CAEL;AACK,CAAA,CAEZ"}
1
+ {"version":3,"file":"IconButton-BZVNomru.js","names":[],"sources":["../src/components/IconButton/IconButton.module.css","../src/components/IconButton/IconButton.tsx"],"sourcesContent":[".icon-button {\n align-items: center;\n appearance: none;\n background-color: transparent;\n border: 1px solid transparent;\n border-radius: 0.5rem;\n color: var(--color-uva-black);\n cursor: pointer;\n display: inline-flex;\n font-family: inherit;\n font-size: var(--font-size-default);\n gap: 0.25rem;\n height: 2.75rem;\n justify-content: center;\n margin: 0;\n outline: 0;\n padding: 0;\n position: relative;\n white-space: nowrap;\n width: 2.75rem;\n}\n\n.icon-button:focus-visible {\n border-color: currentcolor;\n}\n\n.icon-button--destructive {\n color: var(--color-red-600);\n}\n\n.icon-button:hover:not(:disabled) {\n border-color: currentcolor;\n}\n\n.icon-button--no-border:focus-visible,\n.icon-button--no-border:hover:not(:disabled) {\n background-color: var(--color-grey-300);\n}\n\n.icon-button--no-border:hover:not(:focus-visible, :disabled) {\n border-color: transparent;\n}\n\n.icon-button--wide {\n min-width: 2.75rem;\n padding: 0 0.75rem;\n width: unset;\n}\n\n.icon-button > svg {\n pointer-events: none;\n}\n\n.icon-button[disabled] {\n cursor: unset;\n opacity: 0.4;\n}\n\n/*\nOn displays without hover such as smart phones and tablets, make the tappable\narea 0.5rem (8px) bigger in all directions.\n*/\n@media (hover: none) {\n .icon-button::after {\n bottom: -0.5rem;\n content: \" \";\n left: -0.5rem;\n position: absolute;\n right: -0.5rem;\n top: -0.5rem;\n }\n}\n","import { clsx } from 'clsx';\nimport { forwardRef } from 'react';\n\nimport type { ButtonHTMLAttributes } from 'react';\n\nimport styles from './IconButton.module.css';\n\nexport interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'style'> {\n /** The value of the aria-label. */\n 'aria-label': string;\n /** The variant of the button. */\n variant?: 'destructive';\n /** true if the button should be rendered without a border; otherwise, false. The default is false. */\n noBorder?: boolean;\n /** true to render the button a bit wider; otherwise, false. The default is false. */\n wide?: boolean;\n}\n\n/** Represents a component for a button with an icon. */\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ children, type = 'button', variant, noBorder, wide, ...restProps }: IconButtonProps, forwardedRef) => (\n <button\n {...restProps}\n className={clsx(styles['icon-button'], {\n [styles['icon-button--destructive']]: variant === 'destructive',\n [styles['icon-button--no-border']]: noBorder,\n [styles['icon-button--wide']]: wide,\n })}\n ref={forwardedRef}\n type={type}\n >\n {children}\n </button>\n )\n);\n"],"mappings":";;;;;;;;;GCmBa,IAAa,GACvB,EAAE,aAAU,UAAO,UAAU,YAAS,aAAU,SAAM,GAAG,KAA8B,MACtF,kBAAC,UAAD;CACE,GAAI;CACJ,WAAW,EAAK,EAAO,gBAAgB;GACpC,EAAO,8BAA8B,MAAY;GACjD,EAAO,4BAA4B;GACnC,EAAO,uBAAuB;CACjC,CAAC;CACD,KAAK;CACC;CAEL;AACK,CAAA,CAEZ"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { Icon as t } from "./components/Icon/Icon.js";
3
3
  import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
4
  import './assets/InfoMessage.css';//#region src/components/InfoMessage/InfoMessage.module.css
@@ -16,4 +16,4 @@ var i = {
16
16
  //#endregion
17
17
  export { a as t };
18
18
 
19
- //# sourceMappingURL=InfoMessage-COywXu4O.js.map
19
+ //# sourceMappingURL=InfoMessage-CCEg222m.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InfoMessage-COywXu4O.js","names":[],"sources":["../src/components/InfoMessage/InfoMessage.module.css","../src/components/InfoMessage/InfoMessage.tsx"],"sourcesContent":[".info-message {\n display: flex;\n margin-top: 0.5rem;\n}\n\n.info-message__container {\n background-color: var(--color-uva-white);\n padding: 1.5rem;\n}\n\n.info-message__icon {\n color: var(--color-navy-600);\n margin-right: 0.25rem;\n}\n","import { clsx } from 'clsx';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './InfoMessage.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface InfoMessageProps {\n /** The message to show. */\n message: string | ReactNode;\n /** `true` if the info message should be wrapped in a container; otherwise, `false`. */\n hasOwnContainer?: boolean;\n}\n\n/** Represents a component to show an info message. */\nexport const InfoMessage = ({ message, hasOwnContainer = false }: PropsWithChildren<InfoMessageProps>) => (\n <div\n className={clsx(styles['info-message'], {\n [styles['info-message__container']]: hasOwnContainer,\n })}\n >\n <Icon name=\"InformationCircleFillMini\" className={styles['info-message__icon']} />\n {message}\n </div>\n);\n"],"mappings":";;;;;;;;GCgBa,KAAe,EAAE,YAAS,qBAAkB,SACvD,kBAAC,OAAD;CACE,WAAW,EAAK,EAAO,iBAAiB,GACrC,EAAO,6BAA6B,EACvC,CAAC;WAHH,CAKE,kBAAC,GAAD;EAAM,MAAK;EAA4B,WAAW,EAAO;CAAwB,CAAA,GAChF,CACE"}
1
+ {"version":3,"file":"InfoMessage-CCEg222m.js","names":[],"sources":["../src/components/InfoMessage/InfoMessage.module.css","../src/components/InfoMessage/InfoMessage.tsx"],"sourcesContent":[".info-message {\n display: flex;\n margin-top: 0.5rem;\n}\n\n.info-message__container {\n background-color: var(--color-uva-white);\n padding: 1.5rem;\n}\n\n.info-message__icon {\n color: var(--color-navy-600);\n margin-right: 0.25rem;\n}\n","import { clsx } from 'clsx';\n\nimport type { PropsWithChildren, ReactNode } from 'react';\n\nimport styles from './InfoMessage.module.css';\n\nimport { Icon } from 'components/Icon';\n\nexport interface InfoMessageProps {\n /** The message to show. */\n message: string | ReactNode;\n /** `true` if the info message should be wrapped in a container; otherwise, `false`. */\n hasOwnContainer?: boolean;\n}\n\n/** Represents a component to show an info message. */\nexport const InfoMessage = ({ message, hasOwnContainer = false }: PropsWithChildren<InfoMessageProps>) => (\n <div\n className={clsx(styles['info-message'], {\n [styles['info-message__container']]: hasOwnContainer,\n })}\n >\n <Icon name=\"InformationCircleFillMini\" className={styles['info-message__icon']} />\n {message}\n </div>\n);\n"],"mappings":";;;;;;;;GCgBa,KAAe,EAAE,YAAS,qBAAkB,SACvD,kBAAC,OAAD;CACE,WAAW,EAAK,EAAO,iBAAiB,GACrC,EAAO,6BAA6B,EACvC,CAAC;WAHH,CAKE,kBAAC,GAAD;EAAM,MAAK;EAA4B,WAAW,EAAO;CAAwB,CAAA,GAChF,CACE"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { forwardRef as t } from "react";
3
3
  import { jsx as n } from "react/jsx-runtime";
4
4
  import './assets/Input.css';var r = {
@@ -22,4 +22,4 @@ import './assets/Input.css';var r = {
22
22
  //#endregion
23
23
  export { i as t };
24
24
 
25
- //# sourceMappingURL=Input-BzKvzbzP.js.map
25
+ //# sourceMappingURL=Input-CF3dxqTC.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input-BzKvzbzP.js","names":[],"sources":["../src/components/Input/Input.module.css","../src/components/Input/Input.tsx"],"sourcesContent":[".input {\n appearance: none;\n background-color: transparent;\n border: 1px solid var(--color-uva-black);\n color: var(--color-uva-black);\n font-family: inherit;\n font-size: inherit;\n height: 2rem;\n margin: 0;\n padding: 0 0.5rem;\n}\n\n.input--numeric {\n text-align: right;\n width: 8rem;\n}\n\n.input--error,\n.input:invalid {\n border-color: var(--color-red-600);\n}\n\n.input--full-with {\n min-width: 100%;\n width: 0; /* Reset the default width of the input */\n}\n\n.input::placeholder {\n color: var(--color-grey-700);\n font-size: inherit;\n opacity: 1;\n}\n\n.input[type=\"file\"] {\n border: none;\n}\n\n.input:disabled {\n color: var(--color-grey-700);\n}\n","import { forwardRef } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { InputHTMLAttributes } from 'react';\n\nimport styles from './Input.module.css';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'style'> {\n /** The appearance of the element. Possible values: `error`. */\n appearance?: 'error';\n /** The type of the input element. */\n type?: 'text' | 'search' | 'password' | 'email' | 'file';\n /** `true` if the element should render at full width of its container; otherwise, `false`. The default is `false`. */\n fullWidth?: boolean;\n /** The id of the element. */\n id: string;\n /** `true` if the element is used for numeric values; otherwise, `false`. The default is `false`. */\n isNumeric?: boolean;\n}\n\n/** Represents a component for an input element. */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { id, appearance, type = 'text', isNumeric, fullWidth, ...restProps }: InputProps,\n forwardedRef\n) {\n return (\n <input\n {...restProps}\n ref={forwardedRef}\n id={id}\n className={clsx(styles['input'], {\n [styles['input--error']]: appearance === 'error',\n [styles['input--full-with']]: fullWidth,\n [styles['input--numeric']]: isNumeric,\n })}\n type={type}\n />\n );\n});\n"],"mappings":";;;;;;;;GCqBa,IAAQ,EAAyC,SAC5D,EAAE,OAAI,eAAY,UAAO,QAAQ,cAAW,cAAW,GAAG,KAC1D,GACA;CACA,OACE,kBAAC,SAAD;EACE,GAAI;EACJ,KAAK;EACD;EACJ,WAAW,EAAK,EAAO,OAAU;IAC9B,EAAO,kBAAkB,MAAe;IACxC,EAAO,sBAAsB;IAC7B,EAAO,oBAAoB;EAC9B,CAAC;EACK;CACP,CAAA;AAEL,CAAC"}
1
+ {"version":3,"file":"Input-CF3dxqTC.js","names":[],"sources":["../src/components/Input/Input.module.css","../src/components/Input/Input.tsx"],"sourcesContent":[".input {\n appearance: none;\n background-color: transparent;\n border: 1px solid var(--color-uva-black);\n color: var(--color-uva-black);\n font-family: inherit;\n font-size: inherit;\n height: 2rem;\n margin: 0;\n padding: 0 0.5rem;\n}\n\n.input--numeric {\n text-align: right;\n width: 8rem;\n}\n\n.input--error,\n.input:invalid {\n border-color: var(--color-red-600);\n}\n\n.input--full-with {\n min-width: 100%;\n width: 0; /* Reset the default width of the input */\n}\n\n.input::placeholder {\n color: var(--color-grey-700);\n font-size: inherit;\n opacity: 1;\n}\n\n.input[type=\"file\"] {\n border: none;\n}\n\n.input:disabled {\n color: var(--color-grey-700);\n}\n","import { forwardRef } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { InputHTMLAttributes } from 'react';\n\nimport styles from './Input.module.css';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'style'> {\n /** The appearance of the element. Possible values: `error`. */\n appearance?: 'error';\n /** The type of the input element. */\n type?: 'text' | 'search' | 'password' | 'email' | 'file';\n /** `true` if the element should render at full width of its container; otherwise, `false`. The default is `false`. */\n fullWidth?: boolean;\n /** The id of the element. */\n id: string;\n /** `true` if the element is used for numeric values; otherwise, `false`. The default is `false`. */\n isNumeric?: boolean;\n}\n\n/** Represents a component for an input element. */\nexport const Input = forwardRef<HTMLInputElement, InputProps>(function Input(\n { id, appearance, type = 'text', isNumeric, fullWidth, ...restProps }: InputProps,\n forwardedRef\n) {\n return (\n <input\n {...restProps}\n ref={forwardedRef}\n id={id}\n className={clsx(styles['input'], {\n [styles['input--error']]: appearance === 'error',\n [styles['input--full-with']]: fullWidth,\n [styles['input--numeric']]: isNumeric,\n })}\n type={type}\n />\n );\n});\n"],"mappings":";;;;;;;;GCqBa,IAAQ,EAAyC,SAC5D,EAAE,OAAI,eAAY,UAAO,QAAQ,cAAW,cAAW,GAAG,KAC1D,GACA;CACA,OACE,kBAAC,SAAD;EACE,GAAI;EACJ,KAAK;EACD;EACJ,WAAW,EAAK,EAAO,OAAU;IAC9B,EAAO,kBAAkB,MAAe;IACxC,EAAO,sBAAsB;IAC7B,EAAO,oBAAoB;EAC9B,CAAC;EACK;CACP,CAAA;AAEL,CAAC"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { forwardRef as t, useEffect as n, useRef as r, useState as i } from "react";
3
3
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
4
4
  import './assets/InputField.css';//#region src/components/InputField/InputField.module.css
@@ -48,4 +48,4 @@ var s = {
48
48
  //#endregion
49
49
  export { c as t };
50
50
 
51
- //# sourceMappingURL=InputField-T01uazlI.js.map
51
+ //# sourceMappingURL=InputField-asFsxHvx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputField-T01uazlI.js","names":[],"sources":["../src/components/InputField/InputField.module.css","../src/components/InputField/InputField.tsx"],"sourcesContent":[".input-field-wrapper {\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.input-field {\n appearance: none;\n background-color: transparent;\n border: 1px solid;\n border-radius: 0.5rem;\n color: var(--color-uva-black);\n flex: 1;\n font-family: inherit;\n font-size: inherit;\n height: 2.75rem;\n margin: 0;\n padding: 0 1rem;\n text-align: inherit;\n}\n\n.input-field--large {\n height: 3rem;\n}\n\n.input-field--small {\n max-width: 5.25rem;\n}\n\n.input-field--compact {\n max-width: 6.25rem;\n}\n\n.input-field--white {\n background-color: var(--color-uva-white);\n}\n\n.input-field--not-valid {\n border-color: var(--color-red-600);\n}\n\n.input-field:disabled {\n color: var(--color-grey-700);\n}\n\n.input-field__clear-button {\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n height: 100%;\n padding: 0 1rem 0 0.5rem;\n position: absolute;\n right: 0;\n}\n","import { forwardRef, useEffect, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { InputHTMLAttributes, ReactNode } from 'react';\n\nimport styles from './InputField.module.css';\n\nexport interface InputFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'style'> {\n /** The variant to render. */\n variant?: 'large';\n /** The width to render. */\n width?: 'small' | 'compact';\n /** The type of the input element. */\n type?: 'text' | 'password' | 'email';\n /** The background color of the input. InputField is by default transparent. */\n background?: 'white';\n /** The id of the input element. */\n id: string;\n /** An element that represents a clear button. */\n clearTrigger?: ReactNode;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n /** The callback that is invoked when the clear button is triggered. */\n onClear?: () => void;\n}\n\n/** Represents a component that renders an input field which can have a clear button. */\nexport const InputField = forwardRef<HTMLInputElement, InputFieldProps>(\n (\n {\n autoComplete = 'off',\n id,\n value,\n variant,\n width,\n type = 'text',\n background,\n clearTrigger,\n notValid = false,\n onClear,\n ...restProps\n }: InputFieldProps,\n forwardedRef\n ) => {\n const [clearButtonWidth, setClearButtonWidth] = useState<number>(0);\n const clearButtonRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (clearButtonRef.current) {\n setClearButtonWidth(clearButtonRef.current.offsetWidth);\n }\n }, [value]);\n\n const handleClearTriggerClick = () => {\n if (onClear && forwardedRef && 'current' in forwardedRef && forwardedRef.current) {\n onClear();\n forwardedRef.current.focus();\n }\n };\n\n return (\n <div className={styles['input-field-wrapper']}>\n <input\n {...restProps}\n autoComplete={autoComplete}\n ref={forwardedRef}\n id={id}\n className={clsx(styles['input-field'], {\n [styles['input-field--large']]: variant === 'large',\n [styles[`input-field--${width}`]]: width,\n [styles[`input-field--${background}`]]: background,\n [styles[`input-field--not-valid`]]: notValid,\n })}\n type={type}\n value={value}\n style={{ paddingRight: value && clearTrigger ? clearButtonWidth : undefined }}\n />\n {Boolean(value) && clearTrigger && (\n <button\n type=\"button\"\n className={styles['input-field__clear-button']}\n onClick={handleClearTriggerClick}\n ref={clearButtonRef}\n aria-label={`clear trigger for ${id}`}\n >\n {clearTrigger}\n </button>\n )}\n </div>\n );\n }\n);\n"],"mappings":";;;;;;;;;;;;;GC2Ba,IAAa,GAEtB,EACE,kBAAe,OACf,OACA,UACA,YACA,UACA,UAAO,QACP,eACA,iBACA,cAAW,IACX,YACA,GAAG,KAEL,MACG;CACH,IAAM,CAAC,GAAkB,KAAuB,EAAiB,CAAC,GAC5D,IAAiB,EAA0B,IAAI;CAErD,QAAgB;EACd,AAAI,EAAe,WACjB,EAAoB,EAAe,QAAQ,WAAW;CAE1D,GAAG,CAAC,CAAK,CAAC;CAEV,IAAM,UAAgC;EACpC,AAAI,KAAW,KAAgB,aAAa,KAAgB,EAAa,YACvE,EAAQ,GACR,EAAa,QAAQ,MAAM;CAE/B;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,SAAD;GACE,GAAI;GACU;GACd,KAAK;GACD;GACJ,WAAW,EAAK,EAAO,gBAAgB;KACpC,EAAO,wBAAwB,MAAY;KAC3C,EAAO,gBAAgB,OAAW;KAClC,EAAO,gBAAgB,OAAgB;KACvC,EAAO,4BAA4B;GACtC,CAAC;GACK;GACC;GACP,OAAO,EAAE,cAAc,KAAS,IAAe,IAAmB,KAAA,EAAU;EAC7E,CAAA,GACA,EAAQ,KAAU,KACjB,kBAAC,UAAD;GACE,MAAK;GACL,WAAW,EAAO;GAClB,SAAS;GACT,KAAK;GACL,cAAY,qBAAqB;aAEhC;EACK,CAAA,CAEP;;AAET,CACF"}
1
+ {"version":3,"file":"InputField-asFsxHvx.js","names":[],"sources":["../src/components/InputField/InputField.module.css","../src/components/InputField/InputField.tsx"],"sourcesContent":[".input-field-wrapper {\n align-items: center;\n display: flex;\n position: relative;\n}\n\n.input-field {\n appearance: none;\n background-color: transparent;\n border: 1px solid;\n border-radius: 0.5rem;\n color: var(--color-uva-black);\n flex: 1;\n font-family: inherit;\n font-size: inherit;\n height: 2.75rem;\n margin: 0;\n padding: 0 1rem;\n text-align: inherit;\n}\n\n.input-field--large {\n height: 3rem;\n}\n\n.input-field--small {\n max-width: 5.25rem;\n}\n\n.input-field--compact {\n max-width: 6.25rem;\n}\n\n.input-field--white {\n background-color: var(--color-uva-white);\n}\n\n.input-field--not-valid {\n border-color: var(--color-red-600);\n}\n\n.input-field:disabled {\n color: var(--color-grey-700);\n}\n\n.input-field__clear-button {\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n height: 100%;\n padding: 0 1rem 0 0.5rem;\n position: absolute;\n right: 0;\n}\n","import { forwardRef, useEffect, useRef, useState } from 'react';\nimport { clsx } from 'clsx';\n\nimport type { InputHTMLAttributes, ReactNode } from 'react';\n\nimport styles from './InputField.module.css';\n\nexport interface InputFieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'style'> {\n /** The variant to render. */\n variant?: 'large';\n /** The width to render. */\n width?: 'small' | 'compact';\n /** The type of the input element. */\n type?: 'text' | 'password' | 'email';\n /** The background color of the input. InputField is by default transparent. */\n background?: 'white';\n /** The id of the input element. */\n id: string;\n /** An element that represents a clear button. */\n clearTrigger?: ReactNode;\n /** `true` to color border red to show not valid; otherwise, `false`. */\n notValid?: boolean;\n /** The callback that is invoked when the clear button is triggered. */\n onClear?: () => void;\n}\n\n/** Represents a component that renders an input field which can have a clear button. */\nexport const InputField = forwardRef<HTMLInputElement, InputFieldProps>(\n (\n {\n autoComplete = 'off',\n id,\n value,\n variant,\n width,\n type = 'text',\n background,\n clearTrigger,\n notValid = false,\n onClear,\n ...restProps\n }: InputFieldProps,\n forwardedRef\n ) => {\n const [clearButtonWidth, setClearButtonWidth] = useState<number>(0);\n const clearButtonRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (clearButtonRef.current) {\n setClearButtonWidth(clearButtonRef.current.offsetWidth);\n }\n }, [value]);\n\n const handleClearTriggerClick = () => {\n if (onClear && forwardedRef && 'current' in forwardedRef && forwardedRef.current) {\n onClear();\n forwardedRef.current.focus();\n }\n };\n\n return (\n <div className={styles['input-field-wrapper']}>\n <input\n {...restProps}\n autoComplete={autoComplete}\n ref={forwardedRef}\n id={id}\n className={clsx(styles['input-field'], {\n [styles['input-field--large']]: variant === 'large',\n [styles[`input-field--${width}`]]: width,\n [styles[`input-field--${background}`]]: background,\n [styles[`input-field--not-valid`]]: notValid,\n })}\n type={type}\n value={value}\n style={{ paddingRight: value && clearTrigger ? clearButtonWidth : undefined }}\n />\n {Boolean(value) && clearTrigger && (\n <button\n type=\"button\"\n className={styles['input-field__clear-button']}\n onClick={handleClearTriggerClick}\n ref={clearButtonRef}\n aria-label={`clear trigger for ${id}`}\n >\n {clearTrigger}\n </button>\n )}\n </div>\n );\n }\n);\n"],"mappings":";;;;;;;;;;;;;GC2Ba,IAAa,GAEtB,EACE,kBAAe,OACf,OACA,UACA,YACA,UACA,UAAO,QACP,eACA,iBACA,cAAW,IACX,YACA,GAAG,KAEL,MACG;CACH,IAAM,CAAC,GAAkB,KAAuB,EAAiB,CAAC,GAC5D,IAAiB,EAA0B,IAAI;CAErD,QAAgB;EACd,AAAI,EAAe,WACjB,EAAoB,EAAe,QAAQ,WAAW;CAE1D,GAAG,CAAC,CAAK,CAAC;CAEV,IAAM,UAAgC;EACpC,AAAI,KAAW,KAAgB,aAAa,KAAgB,EAAa,YACvE,EAAQ,GACR,EAAa,QAAQ,MAAM;CAE/B;CAEA,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YAAvB,CACE,kBAAC,SAAD;GACE,GAAI;GACU;GACd,KAAK;GACD;GACJ,WAAW,EAAK,EAAO,gBAAgB;KACpC,EAAO,wBAAwB,MAAY;KAC3C,EAAO,gBAAgB,OAAW;KAClC,EAAO,gBAAgB,OAAgB;KACvC,EAAO,4BAA4B;GACtC,CAAC;GACK;GACC;GACP,OAAO,EAAE,cAAc,KAAS,IAAe,IAAmB,KAAA,EAAU;EAC7E,CAAA,GACA,EAAQ,KAAU,KACjB,kBAAC,UAAD;GACE,MAAK;GACL,WAAW,EAAO;GAClB,SAAS;GACT,KAAK;GACL,cAAY,qBAAqB;aAEhC;EACK,CAAA,CAEP;;AAET,CACF"}
@@ -1,4 +1,4 @@
1
- import { t as e } from "./clsx-BWCAbrjV.js";
1
+ import { t as e } from "./clsx-C67XSbzZ.js";
2
2
  import { jsx as t } from "react/jsx-runtime";
3
3
  import './assets/Label.css';var n = {
4
4
  label: "_label_i3lyd_1",
@@ -18,4 +18,4 @@ import './assets/Label.css';var n = {
18
18
  //#endregion
19
19
  export { r as t };
20
20
 
21
- //# sourceMappingURL=Label-D0ACrYG3.js.map
21
+ //# sourceMappingURL=Label-52ny6d06.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Label-D0ACrYG3.js","names":[],"sources":["../src/components/Label/Label.module.css","../src/components/Label/Label.tsx"],"sourcesContent":[".label {\n font-weight: var(--semibold);\n text-align: left;\n}\n\n.label--required::after {\n color: var(--color-red-600);\n content: \"\\2605\";\n font-size: 0.5rem;\n margin-left: 0.25rem;\n vertical-align: top;\n}\n\n.label--unset-font-weight {\n font-weight: unset;\n}\n\n.label--align-right {\n text-align: right;\n}\n","import { clsx } from 'clsx';\n\nimport type { LabelHTMLAttributes } from 'react';\n\nimport styles from './Label.module.css';\n\nexport interface LabelProps extends Omit<LabelHTMLAttributes<HTMLLabelElement>, 'className' | 'style'> {\n /** The id of the element for which the label is intended. */\n htmlFor: string;\n /** `true` if the font-weight needs to be unset; otherwise, `false`. The default is `false`. */\n noFontWeight?: boolean;\n /** `true` to show an asterisk to indicate an item is required; otherwise, `false`. */\n required?: boolean;\n /** `true` to align text right; otherwise, `false`. */\n alignRight?: boolean;\n}\n\n/** Represents a component that renders a label for an input element. */\nexport const Label = ({ children, htmlFor, noFontWeight, required = false, alignRight, ...restProps }: LabelProps) => (\n <label\n {...restProps}\n htmlFor={htmlFor}\n className={clsx(styles['label'], {\n [styles['label--unset-font-weight']]: noFontWeight,\n [styles['label--required']]: required,\n [styles['label--align-right']]: alignRight,\n })}\n >\n {children}\n </label>\n);\n"],"mappings":";;;;;;;GCkBa,KAAS,EAAE,aAAU,YAAS,iBAAc,cAAW,IAAO,eAAY,GAAG,QACxF,kBAAC,SAAD;CACE,GAAI;CACK;CACT,WAAW,EAAK,EAAO,OAAU;GAC9B,EAAO,8BAA8B;GACrC,EAAO,qBAAqB;GAC5B,EAAO,wBAAwB;CAClC,CAAC;CAEA;AACI,CAAA"}
1
+ {"version":3,"file":"Label-52ny6d06.js","names":[],"sources":["../src/components/Label/Label.module.css","../src/components/Label/Label.tsx"],"sourcesContent":[".label {\n font-weight: var(--semibold);\n text-align: left;\n}\n\n.label--required::after {\n color: var(--color-red-600);\n content: \"\\2605\";\n font-size: 0.5rem;\n margin-left: 0.25rem;\n vertical-align: top;\n}\n\n.label--unset-font-weight {\n font-weight: unset;\n}\n\n.label--align-right {\n text-align: right;\n}\n","import { clsx } from 'clsx';\n\nimport type { LabelHTMLAttributes } from 'react';\n\nimport styles from './Label.module.css';\n\nexport interface LabelProps extends Omit<LabelHTMLAttributes<HTMLLabelElement>, 'className' | 'style'> {\n /** The id of the element for which the label is intended. */\n htmlFor: string;\n /** `true` if the font-weight needs to be unset; otherwise, `false`. The default is `false`. */\n noFontWeight?: boolean;\n /** `true` to show an asterisk to indicate an item is required; otherwise, `false`. */\n required?: boolean;\n /** `true` to align text right; otherwise, `false`. */\n alignRight?: boolean;\n}\n\n/** Represents a component that renders a label for an input element. */\nexport const Label = ({ children, htmlFor, noFontWeight, required = false, alignRight, ...restProps }: LabelProps) => (\n <label\n {...restProps}\n htmlFor={htmlFor}\n className={clsx(styles['label'], {\n [styles['label--unset-font-weight']]: noFontWeight,\n [styles['label--required']]: required,\n [styles['label--align-right']]: alignRight,\n })}\n >\n {children}\n </label>\n);\n"],"mappings":";;;;;;;GCkBa,KAAS,EAAE,aAAU,YAAS,iBAAc,cAAW,IAAO,eAAY,GAAG,QACxF,kBAAC,SAAD;CACE,GAAI;CACK;CACT,WAAW,EAAK,EAAO,OAAU;GAC9B,EAAO,8BAA8B;GACrC,EAAO,qBAAqB;GAC5B,EAAO,wBAAwB;CAClC,CAAC;CAEA;AACI,CAAA"}
@@ -1,4 +1,4 @@
1
- //#region node_modules/lexical/Lexical.prod.mjs
1
+ //#region node_modules/.pnpm/lexical@0.44.0/node_modules/lexical/Lexical.prod.mjs
2
2
  function e(e, ...t) {
3
3
  let n = new URL("https://lexical.dev/docs/error"), r = new URLSearchParams();
4
4
  r.append("code", e);
@@ -5348,4 +5348,4 @@ function Fs(...e) {
5348
5348
  //#endregion
5349
5349
  export { Q as $, zr as $n, wt as $t, Xr as A, D as An, X as At, Qn as B, Uo as Bn, ws as Bt, nr as C, on as Cn, is as Ct, sn as D, Yr as Dn, vo as Dt, _o as E, wa as En, rr as Et, Lr as F, dr as Fn, $r as Ft, $o as G, At as Gn, Ki as Gt, Jt as H, Rt as Hn, Os as Ht, ao as I, Ce as In, bo as It, la as J, Zi as Jn, St as Jt, Vt as K, Ms as Kn, G as Kt, en as L, xo as Ln, As as Lt, qt as M, Ss as Mn, gs as Mt, Kn as N, _t as Nn, ar as Nt, fs as O, ho as On, an as Ot, ma as P, Do as Pn, W as Pt, Bt as Q, ga as Qn, ks as Qt, Ii as R, jo as Rn, Et as Rt, ps as S, Xi as Sn, z as St, Zr as T, er as Tn, ya as Tt, oo as U, Ar as Un, Ct as Ut, Y as V, Ja as Vn, we as Vt, Kt as W, Ps as Wn, No as Wt, It as X, S as Xn, Tt as Xt, j as Y, Wa as Yn, Mo as Yt, Z, Yt as Zn, yr as Zt, Qo as _, Eo as _n, rn as _t, Pi as a, Pt as an, hs as at, cn as b, js as bn, mo as bt, va as c, si as cn, Xt as ct, jt as d, kt as dn, Mt as dt, bs as en, so as er, ca as et, Ut as f, mi as fn, Le as ft, Gt as g, gt as gn, Li as gt, Si as h, xs as hn, nn as ht, Zt as i, $n as in, Ui as it, go as j, cr as jn, Wi as jt, tr as k, $ as kn, U as kt, lo as l, Oo as ln, ns as lt, zt as m, sr as mn, A as mt, Zn as n, tn as nn, Wt as nt, rs as o, k as on, N as ot, da as p, qi as pn, Wo as pt, Jo as q, Ot as qn, Ds as qt, Ht as r, B as rn, Zo as rt, Yn as s, Cs as sn, yo as st, as as t, ht as tn, $a as tt, Fs as u, Ns as un, _a as ut, M as v, ur as vn, V as vt, Ea as w, ds as wn, Xn as wt, Vi as x, Dt as xn, Qt as xt, ro as y, Se as yn, qr as yt, os as z, Nt as zn, kr as zt };
5350
5350
 
5351
- //# sourceMappingURL=Lexical.prod-8zZnpGo4.js.map
5351
+ //# sourceMappingURL=Lexical.prod-DApSVwEN.js.map