@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.
- package/dist/{Accordion-DaCqVof1.js → Accordion-DQNoRsg_.js} +2 -2
- package/dist/{Accordion-DaCqVof1.js.map → Accordion-DQNoRsg_.js.map} +1 -1
- package/dist/{AccordionCard-CD5H9gR1.js → AccordionCard-C4k8EI39.js} +2 -2
- package/dist/{AccordionCard-CD5H9gR1.js.map → AccordionCard-C4k8EI39.js.map} +1 -1
- package/dist/{ActionList-C0hD9noC.js → ActionList-D2GC2qPX.js} +2 -2
- package/dist/{ActionList-C0hD9noC.js.map → ActionList-D2GC2qPX.js.map} +1 -1
- package/dist/{AddCatalogueLinkForm-DNv2tEdF.js → AddCatalogueLinkForm-Di0xm7Ep.js} +5 -5
- package/dist/{AddCatalogueLinkForm-DNv2tEdF.js.map → AddCatalogueLinkForm-Di0xm7Ep.js.map} +1 -1
- package/dist/{AppStatusBar-BK0yaC4G.js → AppStatusBar-DW-w7Nzp.js} +2 -2
- package/dist/{AppStatusBar-BK0yaC4G.js.map → AppStatusBar-DW-w7Nzp.js.map} +1 -1
- package/dist/{ButtonGroup-ZqGGZ1rz.js → ButtonGroup-D2z5UWTR.js} +2 -2
- package/dist/{ButtonGroup-ZqGGZ1rz.js.map → ButtonGroup-D2z5UWTR.js.map} +1 -1
- package/dist/{Card-BH1ySOiP.js → Card-DENYj3eR.js} +3 -3
- package/dist/{Card-BH1ySOiP.js.map → Card-DENYj3eR.js.map} +1 -1
- package/dist/{CheckboxButtonBar-DpNnwLzI.js → CheckboxButtonBar-OrJSqUTN.js} +5 -5
- package/dist/{CheckboxButtonBar-DpNnwLzI.js.map → CheckboxButtonBar-OrJSqUTN.js.map} +1 -1
- package/dist/{Column-BwCVSZrG.js → Column-jJBZgP8m.js} +2 -2
- package/dist/{Column-BwCVSZrG.js.map → Column-jJBZgP8m.js.map} +1 -1
- package/dist/{Container-DK25h_-f.js → Container-DOcrVe7u.js} +2 -2
- package/dist/{Container-DK25h_-f.js.map → Container-DOcrVe7u.js.map} +1 -1
- package/dist/{ControlsButton-9uR_zW_F.js → ControlsButton-Byx4XQtB.js} +2 -2
- package/dist/{ControlsButton-9uR_zW_F.js.map → ControlsButton-Byx4XQtB.js.map} +1 -1
- package/dist/{CopyableText-hSqhyUWx.js → CopyableText-BKsM-TuS.js} +2 -2
- package/dist/{CopyableText-hSqhyUWx.js.map → CopyableText-BKsM-TuS.js.map} +1 -1
- package/dist/{DataTable-C46IkAmF.js → DataTable-Cgn_RKTA.js} +2 -2
- package/dist/{DataTable-C46IkAmF.js.map → DataTable-Cgn_RKTA.js.map} +1 -1
- package/dist/{Drawer-BbVJqFQI.js → Drawer-fUw0LEuj.js} +3 -3
- package/dist/{Drawer-BbVJqFQI.js.map → Drawer-fUw0LEuj.js.map} +1 -1
- package/dist/{EmptyStateDataDisplay-IT2P3ius.js → EmptyStateDataDisplay-FBDAGO88.js} +2 -2
- package/dist/{EmptyStateDataDisplay-IT2P3ius.js.map → EmptyStateDataDisplay-FBDAGO88.js.map} +1 -1
- package/dist/{ExpandableInfoPanel-DMfcJFP3.js → ExpandableInfoPanel-BmbgbAjf.js} +2 -2
- package/dist/{ExpandableInfoPanel-DMfcJFP3.js.map → ExpandableInfoPanel-BmbgbAjf.js.map} +1 -1
- package/dist/{FeedbackBar-DRbJVniP.js → FeedbackBar-DEDpoNy7.js} +3 -3
- package/dist/{FeedbackBar-DRbJVniP.js.map → FeedbackBar-DEDpoNy7.js.map} +1 -1
- package/dist/{FeedbackBox-CaSxB4uc.js → FeedbackBox-BpOf_dxg.js} +2 -2
- package/dist/{FeedbackBox-CaSxB4uc.js.map → FeedbackBox-BpOf_dxg.js.map} +1 -1
- package/dist/{Fieldset-D01_rj_p.js → Fieldset-CgnLyAyS.js} +2 -2
- package/dist/{Fieldset-D01_rj_p.js.map → Fieldset-CgnLyAyS.js.map} +1 -1
- package/dist/{FormField-CcV84TfI.js → FormField-ByjTkKKq.js} +2 -2
- package/dist/{FormField-CcV84TfI.js.map → FormField-ByjTkKKq.js.map} +1 -1
- package/dist/{IconButton-CSNMVEG1.js → IconButton-BZVNomru.js} +2 -2
- package/dist/{IconButton-CSNMVEG1.js.map → IconButton-BZVNomru.js.map} +1 -1
- package/dist/{InfoMessage-COywXu4O.js → InfoMessage-CCEg222m.js} +2 -2
- package/dist/{InfoMessage-COywXu4O.js.map → InfoMessage-CCEg222m.js.map} +1 -1
- package/dist/{Input-BzKvzbzP.js → Input-CF3dxqTC.js} +2 -2
- package/dist/{Input-BzKvzbzP.js.map → Input-CF3dxqTC.js.map} +1 -1
- package/dist/{InputField-T01uazlI.js → InputField-asFsxHvx.js} +2 -2
- package/dist/{InputField-T01uazlI.js.map → InputField-asFsxHvx.js.map} +1 -1
- package/dist/{Label-D0ACrYG3.js → Label-52ny6d06.js} +2 -2
- package/dist/{Label-D0ACrYG3.js.map → Label-52ny6d06.js.map} +1 -1
- package/dist/{Lexical.prod-8zZnpGo4.js → Lexical.prod-DApSVwEN.js} +2 -2
- package/dist/Lexical.prod-DApSVwEN.js.map +1 -0
- package/dist/{LexicalClipboard.prod-hbxbsROy.js → LexicalClipboard.prod--xxt8Vi4.js} +6 -6
- package/dist/LexicalClipboard.prod--xxt8Vi4.js.map +1 -0
- package/dist/{LexicalComposerContext.prod-y_BRxu3Z.js → LexicalComposerContext.prod-o3ynMZsi.js} +2 -2
- package/dist/LexicalComposerContext.prod-o3ynMZsi.js.map +1 -0
- package/dist/{LexicalExtension.prod-v8IpET5E.js → LexicalExtension.prod-efmFsltb.js} +4 -4
- package/dist/LexicalExtension.prod-efmFsltb.js.map +1 -0
- package/dist/{LexicalLink.prod-BVUv9-sZ.js → LexicalLink.prod-DCBvBDd1.js} +5 -5
- package/dist/LexicalLink.prod-DCBvBDd1.js.map +1 -0
- package/dist/{LexicalList.prod-CCPDDafy.js → LexicalList.prod-DA6gHLh6.js} +5 -5
- package/dist/LexicalList.prod-DA6gHLh6.js.map +1 -0
- package/dist/{LexicalTable.prod-D_9Dr3kL.js → LexicalTable.prod-Dw8vTvL0.js} +6 -6
- package/dist/LexicalTable.prod-Dw8vTvL0.js.map +1 -0
- package/dist/{LexicalUtils.prod-BWhWP8es.js → LexicalUtils.prod-DRNc5TMZ.js} +4 -4
- package/dist/LexicalUtils.prod-DRNc5TMZ.js.map +1 -0
- package/dist/{LinkContextMenu-CTu2nP2j.js → LinkContextMenu-Jna2w4Ob.js} +2 -2
- package/dist/{LinkContextMenu-CTu2nP2j.js.map → LinkContextMenu-Jna2w4Ob.js.map} +1 -1
- package/dist/{MenuLink-La_3ANEL.js → MenuLink-sK2_W2zs.js} +2 -2
- package/dist/{MenuLink-La_3ANEL.js.map → MenuLink-sK2_W2zs.js.map} +1 -1
- package/dist/{ModalDialog-J7xcPcnS.js → ModalDialog-4V70sxK_.js} +3 -3
- package/dist/{ModalDialog-J7xcPcnS.js.map → ModalDialog-4V70sxK_.js.map} +1 -1
- package/dist/{MultiSelectBox-BmBxa6PH.js → MultiSelectBox-D34qAgzc.js} +2 -2
- package/dist/{MultiSelectBox-BmBxa6PH.js.map → MultiSelectBox-D34qAgzc.js.map} +1 -1
- package/dist/{MultiSelectItem-6d8kQgFs.js → MultiSelectItem-hx3Y4Lmk.js} +2 -2
- package/dist/{MultiSelectItem-6d8kQgFs.js.map → MultiSelectItem-hx3Y4Lmk.js.map} +1 -1
- package/dist/{Notification-BAqCenxt.js → Notification-BhqWENfu.js} +2 -2
- package/dist/{Notification-BAqCenxt.js.map → Notification-BhqWENfu.js.map} +1 -1
- package/dist/{OverlayCloseButton-j-7mC4Zz.js → OverlayCloseButton-Dt6Yec8G.js} +2 -2
- package/dist/{OverlayCloseButton-j-7mC4Zz.js.map → OverlayCloseButton-Dt6Yec8G.js.map} +1 -1
- package/dist/{OverlayStepBar-Cj_-0waE.js → OverlayStepBar-BiC06Itd.js} +2 -2
- package/dist/{OverlayStepBar-Cj_-0waE.js.map → OverlayStepBar-BiC06Itd.js.map} +1 -1
- package/dist/{PageOverlay-DqwdG5ve.js → PageOverlay-BR9ypiar.js} +3 -3
- package/dist/{PageOverlay-DqwdG5ve.js.map → PageOverlay-BR9ypiar.js.map} +1 -1
- package/dist/{PasteHandlerPlugin-Bc6n-G35.js → PasteHandlerPlugin-IsbHaMUu.js} +6 -6
- package/dist/{PasteHandlerPlugin-Bc6n-G35.js.map → PasteHandlerPlugin-IsbHaMUu.js.map} +1 -1
- package/dist/{Periods-C5cxLlWt.js → Periods-B4ms3N24.js} +2 -2
- package/dist/{Periods-C5cxLlWt.js.map → Periods-B4ms3N24.js.map} +1 -1
- package/dist/{ProgrammeCard-CAAOSWKa.js → ProgrammeCard-DdCFNx0d.js} +2 -2
- package/dist/{ProgrammeCard-CAAOSWKa.js.map → ProgrammeCard-DdCFNx0d.js.map} +1 -1
- package/dist/{RadioButton-CKALsbBb.js → RadioButton-DmBpXwIS.js} +2 -2
- package/dist/{RadioButton-CKALsbBb.js.map → RadioButton-DmBpXwIS.js.map} +1 -1
- package/dist/{RadioGroup-DhnnBRJu.js → RadioGroup-DlQjMmpa.js} +3 -3
- package/dist/{RadioGroup-DhnnBRJu.js.map → RadioGroup-DlQjMmpa.js.map} +1 -1
- package/dist/{Repeater-Bnoqqz0X.js → Repeater-BAEfOMZI.js} +2 -2
- package/dist/{Repeater-Bnoqqz0X.js.map → Repeater-BAEfOMZI.js.map} +1 -1
- package/dist/{SectionNotification-BT0Z2edJ.js → SectionNotification-CN-NdGL8.js} +2 -2
- package/dist/{SectionNotification-BT0Z2edJ.js.map → SectionNotification-CN-NdGL8.js.map} +1 -1
- package/dist/{Slider-dCmT0VM2.js → Slider-Czd2xAGf.js} +2 -2
- package/dist/{Slider-dCmT0VM2.js.map → Slider-Czd2xAGf.js.map} +1 -1
- package/dist/{SortableProvider-DV6gWmq_.js → SortableProvider-D-6Ttz0h.js} +2 -2
- package/dist/{SortableProvider-DV6gWmq_.js.map → SortableProvider-D-6Ttz0h.js.map} +1 -1
- package/dist/{StatusBage-CfEIuIPa.js → StatusBage-hJmNPqtk.js} +2 -2
- package/dist/{StatusBage-CfEIuIPa.js.map → StatusBage-hJmNPqtk.js.map} +1 -1
- package/dist/{StatusPill-CbJV4t-V.js → StatusPill-vdqU92pW.js} +2 -2
- package/dist/{StatusPill-CbJV4t-V.js.map → StatusPill-vdqU92pW.js.map} +1 -1
- package/dist/{TableCellContextMenu-9V8mnPmU.js → TableCellContextMenu-Dm-UNfH8.js} +3 -3
- package/dist/{TableCellContextMenu-9V8mnPmU.js.map → TableCellContextMenu-Dm-UNfH8.js.map} +1 -1
- package/dist/{TableCellResizerPlugin-Djym940U.js → TableCellResizerPlugin-OgsG5jSq.js} +6 -6
- package/dist/TableCellResizerPlugin-OgsG5jSq.js.map +1 -0
- package/dist/{TextArea-GR2ZWwLh.js → TextArea-D_VoyGIO.js} +2 -2
- package/dist/{TextArea-GR2ZWwLh.js.map → TextArea-D_VoyGIO.js.map} +1 -1
- package/dist/{ToggleSwitch-b54K58vY.js → ToggleSwitch-ev4Jh4y-.js} +2 -2
- package/dist/{ToggleSwitch-b54K58vY.js.map → ToggleSwitch-ev4Jh4y-.js.map} +1 -1
- package/dist/{VarIndicator-DoMWwSUm.js → VarIndicator-D0cnlcIf.js} +2 -2
- package/dist/{VarIndicator-DoMWwSUm.js.map → VarIndicator-D0cnlcIf.js.map} +1 -1
- package/dist/{chunk-FON5IJBZ-BBb6rYhU.js → chunk-5WKL7XVT-3IraU-Ja.js} +19 -24
- package/dist/chunk-5WKL7XVT-3IraU-Ja.js.map +1 -0
- package/dist/{client-DJaPTT6C.js → client-BcEWjSJP.js} +2 -2
- package/dist/client-BcEWjSJP.js.map +1 -0
- package/dist/{clsx-BWCAbrjV.js → clsx-C67XSbzZ.js} +2 -2
- package/dist/clsx-C67XSbzZ.js.map +1 -0
- package/dist/components/Accordion/Accordion.js +1 -1
- package/dist/components/Accordion/Accordion.stories.js +2 -2
- package/dist/components/Accordion/Accordion.test.js +4 -4
- package/dist/components/Accordion/index.js +1 -1
- package/dist/components/AccordionCard/AccordionCard.js +1 -1
- package/dist/components/AccordionCard/AccordionCard.stories.js +2 -2
- package/dist/components/AccordionCard/AccordionCard.test.js +4 -4
- package/dist/components/AccordionCard/index.js +1 -1
- package/dist/components/ActionList/ActionList.js +1 -1
- package/dist/components/ActionList/ActionList.stories.js +1 -1
- package/dist/components/ActionList/ActionList.test.js +4 -4
- package/dist/components/ActionList/index.js +1 -1
- package/dist/components/AppStatusBar/AppStatusBar.js +1 -1
- package/dist/components/AppStatusBar/AppStatusBar.stories.js +1 -1
- package/dist/components/AppStatusBar/AppStatusBar.test.js +3 -3
- package/dist/components/AppStatusBar/index.js +1 -1
- package/dist/components/Attention/Attention.test.js +2 -2
- package/dist/components/Backdrop/Backdrop.stories.js +1 -1
- package/dist/components/Backdrop/Backdrop.test.js +2 -2
- package/dist/components/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/ButtonGroup/ButtonGroup.stories.js +2 -2
- package/dist/components/ButtonGroup/index.js +1 -1
- package/dist/components/Buttons/Button.js +1 -1
- package/dist/components/Buttons/Button.stories.js +1 -1
- package/dist/components/Buttons/Button.test.js +2 -2
- package/dist/components/Buttons/LinkButton.js +1 -1
- package/dist/components/Buttons/LinkButton.stories.js +1 -1
- package/dist/components/Buttons/LinkButton.test.js +2 -2
- package/dist/components/Buttons/MenuButton.js +1 -1
- package/dist/components/Buttons/MenuButton.stories.js +1 -1
- package/dist/components/Buttons/MenuButton.test.js +2 -2
- package/dist/components/Card/Card.js +1 -1
- package/dist/components/Card/Card.stories.js +1 -1
- package/dist/components/Card/Card.test.js +3 -3
- package/dist/components/Card/index.js +1 -1
- package/dist/components/Checkbox/Checkbox.stories.js +3 -3
- package/dist/components/Checkbox/Checkbox.test.js +3 -3
- package/dist/components/CheckboxButtonBar/CheckboxButtonBar.js +1 -1
- package/dist/components/CheckboxButtonBar/CheckboxButtonBar.stories.js +3 -3
- package/dist/components/CheckboxButtonBar/CheckboxButtonBar.test.js +3 -3
- package/dist/components/CheckboxButtonBar/index.js +1 -1
- package/dist/components/CheckboxTree/CheckboxTree.js +1 -1
- package/dist/components/CheckboxTree/CheckboxTree.stories.js +3 -3
- package/dist/components/CheckboxTree/index.js +1 -1
- package/dist/components/Chip/Chip.stories.js +1 -1
- package/dist/components/ControlsButton/ControlsButton.js +1 -1
- package/dist/components/ControlsButton/ControlsButton.stories.js +3 -3
- package/dist/components/ControlsButton/index.js +1 -1
- package/dist/components/CopyableText/CopyableText.js +1 -1
- package/dist/components/CopyableText/CopyableText.stories.js +1 -1
- package/dist/components/CopyableText/index.js +1 -1
- package/dist/components/DataTable/DataTable.js +1 -1
- package/dist/components/DataTable/DataTable.stories.js +1 -1
- package/dist/components/DataTable/index.js +1 -1
- package/dist/components/Drawer/Drawer.js +1 -1
- package/dist/components/Drawer/Drawer.stories.js +3 -3
- package/dist/components/Drawer/index.js +1 -1
- package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.js +1 -1
- package/dist/components/EmptyStateDataDisplay/EmptyStateDataDisplay.stories.js +1 -1
- package/dist/components/EmptyStateDataDisplay/index.js +1 -1
- package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.js +1 -1
- package/dist/components/ExpandableInfoPanel/ExpandableInfoPanel.stories.js +2 -2
- package/dist/components/ExpandableInfoPanel/index.js +1 -1
- package/dist/components/FeedbackBar/FeedbackBar.js +1 -1
- package/dist/components/FeedbackBar/FeedbackBar.stories.js +3 -3
- package/dist/components/FeedbackBar/FeedbackBar.test.js +3 -3
- package/dist/components/FeedbackBar/index.js +1 -1
- package/dist/components/FeedbackBox/FeedbackBox.js +1 -1
- package/dist/components/FeedbackBox/FeedbackBox.stories.js +3 -3
- package/dist/components/FeedbackBox/index.js +1 -1
- package/dist/components/Fieldset/Fieldset.js +1 -1
- package/dist/components/Fieldset/Fieldset.stories.js +5 -5
- package/dist/components/Fieldset/index.js +1 -1
- package/dist/components/FormField/FormField.js +1 -1
- package/dist/components/FormField/FormField.stories.js +4 -4
- package/dist/components/FormField/index.js +1 -1
- package/dist/components/FormInput/FormInput.js +1 -1
- package/dist/components/FormInput/FormInput.stories.js +2 -2
- package/dist/components/FormInput/index.js +1 -1
- package/dist/components/GridRow/Column/Column.js +1 -1
- package/dist/components/GridRow/Column/index.js +1 -1
- package/dist/components/GridRow/GridRow.js +2 -2
- package/dist/components/IconButton/IconButton.js +1 -1
- package/dist/components/IconButton/IconButton.stories.js +2 -2
- package/dist/components/IconButton/index.js +1 -1
- package/dist/components/InfoMessage/InfoMessage.js +1 -1
- package/dist/components/InfoMessage/InfoMessage.stories.js +1 -1
- package/dist/components/InfoMessage/index.js +1 -1
- package/dist/components/Input/Input.js +1 -1
- package/dist/components/Input/Input.stories.js +1 -1
- package/dist/components/Input/index.js +1 -1
- package/dist/components/InputField/InputField.js +1 -1
- package/dist/components/InputField/InputField.stories.js +3 -3
- package/dist/components/InputField/index.js +1 -1
- package/dist/components/Label/Label.js +1 -1
- package/dist/components/Label/Label.stories.js +1 -1
- package/dist/components/Label/Label.test.js +3 -3
- package/dist/components/Label/index.js +1 -1
- package/dist/components/MenuLink/MenuLink.js +1 -1
- package/dist/components/MenuLink/MenuLink.stories.js +1 -1
- package/dist/components/MenuLink/index.js +1 -1
- package/dist/components/MetaDataBar/MetaDataBar.test.js +1 -1
- package/dist/components/MetaDataList/MetaDataList.stories.js +1 -1
- package/dist/components/ModalDialog/ModalDialog.js +1 -1
- package/dist/components/ModalDialog/ModalDialog.stories.js +6 -6
- package/dist/components/ModalDialog/index.js +1 -1
- package/dist/components/MultiSelect/MultiSelect.js +1 -1
- package/dist/components/MultiSelect/MultiSelect.stories.js +3 -3
- package/dist/components/MultiSelect/components/MultiSelectHeader.js +1 -1
- package/dist/components/MultiSelect/components/MultiSelectItem.js +1 -1
- package/dist/components/MultiSelect/index.js +1 -1
- package/dist/components/MultiSelectBox/MultiSelectBox.js +1 -1
- package/dist/components/MultiSelectBox/MultiSelectBox.stories.js +2 -2
- package/dist/components/MultiSelectBox/MultiSelectBox.test.js +3 -3
- package/dist/components/MultiSelectBox/index.js +1 -1
- package/dist/components/Notification/Notification.js +1 -1
- package/dist/components/Notification/Notification.stories.js +2 -2
- package/dist/components/Notification/Notification.test.js +3 -3
- package/dist/components/Notification/index.js +1 -1
- package/dist/components/OverlayCloseButton/OverlayCloseButton.js +1 -1
- package/dist/components/OverlayCloseButton/OverlayCloseButton.stories.js +3 -3
- package/dist/components/OverlayCloseButton/index.js +1 -1
- package/dist/components/OverlayStepBar/OverlayStepBar.js +1 -1
- package/dist/components/OverlayStepBar/OverlayStepBar.stories.js +1 -1
- package/dist/components/OverlayStepBar/index.js +1 -1
- package/dist/components/PageOverlay/PageOverlay.js +1 -1
- package/dist/components/PageOverlay/PageOverlay.stories.js +6 -6
- package/dist/components/PageOverlay/PageOverlay.stories.js.map +1 -1
- package/dist/components/PageOverlay/index.js +1 -1
- package/dist/components/PeriodSelector/PeriodSelector.js +1 -1
- package/dist/components/PeriodSelector/PeriodSelector.stories.js +2 -2
- package/dist/components/PeriodSelector/index.js +1 -1
- package/dist/components/Periods/Periods.js +1 -1
- package/dist/components/Periods/Periods.stories.js +1 -1
- package/dist/components/Periods/index.js +1 -1
- package/dist/components/ProgrammeCard/ProgrammeCard.js +1 -1
- package/dist/components/ProgrammeCard/ProgrammeCard.stories.js +3 -3
- package/dist/components/ProgrammeCard/index.js +1 -1
- package/dist/components/RadioButton/RadioButton.js +1 -1
- package/dist/components/RadioButton/RadioButton.stories.js +1 -1
- package/dist/components/RadioButton/index.js +1 -1
- package/dist/components/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/RadioGroup/RadioGroup.stories.js +2 -2
- package/dist/components/RadioGroup/Radiogroup.test.js +3 -3
- package/dist/components/RadioGroup/index.js +1 -1
- package/dist/components/RadioTabSelector/RadioTabSelector.js +1 -1
- package/dist/components/RadioTabSelector/RadioTabSelector.stories.js +2 -2
- package/dist/components/RadioTabSelector/index.js +1 -1
- package/dist/components/Repeater/Repeater.js +1 -1
- package/dist/components/Repeater/Repeater.stories.js +2 -2
- package/dist/components/Repeater/index.js +1 -1
- package/dist/components/RteEditor/EditorHeader/EditorHeader.js +1 -1
- package/dist/components/RteEditor/EditorHeader/index.js +1 -1
- package/dist/components/RteEditor/Plugins/BlockFormatPlugin/BlockFormatPlugin.js +3 -3
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/AddCatalogueLinkForm.js +1 -1
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/AddCatalogueLinkForm/index.js +1 -1
- package/dist/components/RteEditor/Plugins/CourseCataloguePlugin/CourseCataloguePlugin.js +5 -5
- package/dist/components/RteEditor/Plugins/HistoryPlugin/HistoryPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/HistoryPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/AddLinkForm/AddLinkFrom.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/LinkPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/helpers.js +1 -1
- package/dist/components/RteEditor/Plugins/LinkPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/ListPlugin/ListPlugin.js +5 -5
- package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/PasteHandlerPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/PasteHandlerPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/TableCellResizerPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/TableCellResizerPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/AddTableFrom.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/TableCellContextMenu.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/TableCellContextMenu/index.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/TablePlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/TablePlugin/helpers.js +2 -2
- package/dist/components/RteEditor/Plugins/TablePlugin/index.js +2 -2
- package/dist/components/RteEditor/Plugins/ToolbarPlugin/ToolbarPlugin.js +1 -1
- package/dist/components/RteEditor/Plugins/ToolbarPlugin/index.js +1 -1
- package/dist/components/RteEditor/Plugins/index.js +4 -4
- package/dist/components/RteEditor/RteEditor.js +1 -1
- package/dist/components/RteEditor/RteEditor.stories.js +2 -2
- package/dist/components/RteEditor/helpers.js +4 -4
- package/dist/components/RteEditor/index.js +1 -1
- package/dist/components/RteEditor/nodes/CourseCatalogueNode/CourseCatalogueNode.js +3 -3
- package/dist/components/RteEditor/nodes/TableWrapperNode/TableWrapperNode.js +3 -3
- package/dist/components/SearchField/SearchField.js +1 -1
- package/dist/components/SectionNotification/SectionNotification.js +1 -1
- package/dist/components/SectionNotification/SectionNotification.stories.js +1 -1
- package/dist/components/SectionNotification/index.js +1 -1
- package/dist/components/SelectListbox/SelectListBox.stories.js +1 -1
- package/dist/components/SelectListbox/components/SelectButton.js +1 -1
- package/dist/components/SelectListbox/components/SelectOption.js +1 -1
- package/dist/components/Slider/Slider.js +1 -1
- package/dist/components/Slider/Slider.stories.js +1 -1
- package/dist/components/Slider/index.js +1 -1
- package/dist/components/Sortable/Sortable.js +1 -1
- package/dist/components/Sortable/Sortable.stories.js +2 -2
- package/dist/components/Sortable/SortableProvider.js +1 -1
- package/dist/components/Sortable/components/SortableContainer.js +1 -1
- package/dist/components/Sortable/components/SortableItem.js +2 -2
- package/dist/components/StatusBadge/StatusBadge.stories.js +1 -1
- package/dist/components/StatusBadge/StatusBadge.test.js +3 -3
- package/dist/components/StatusBadge/StatusBage.js +1 -1
- package/dist/components/StatusBadge/index.js +1 -1
- package/dist/components/StatusPill/StatusPill.js +1 -1
- package/dist/components/StatusPill/StatusPill.stories.js +2 -2
- package/dist/components/StatusPill/index.js +1 -1
- package/dist/components/TextArea/TextArea.js +1 -1
- package/dist/components/TextArea/TextArea.stories.js +2 -2
- package/dist/components/TextArea/TextArea.test.js +4 -4
- package/dist/components/TextArea/index.js +1 -1
- package/dist/components/ToggleSwitch/ToggleSwitch.js +1 -1
- package/dist/components/ToggleSwitch/ToggleSwitch.stories.js +2 -2
- package/dist/components/ToggleSwitch/index.js +1 -1
- package/dist/components/Tooltip/Tooltip.stories.js +1 -1
- package/dist/components/VarIndicator/VarIndicator.js +1 -1
- package/dist/components/VarIndicator/VarIndicator.stories.js +2 -2
- package/dist/components/VarIndicator/VarIndicator.test.js +4 -4
- package/dist/components/VarIndicator/index.js +1 -1
- package/dist/components/WeekSelector/components/WeekSelectorOption.js +1 -1
- package/dist/components/index.js +42 -42
- package/dist/{components-D6_Sx8Hs.js → components-DHB1OMJ8.js} +38 -38
- package/dist/components-DHB1OMJ8.js.map +1 -0
- package/dist/{lib-Do6N-CJR.js → dist-C6Ar8a59.js} +2799 -714
- package/dist/dist-C6Ar8a59.js.map +1 -0
- package/dist/{esm-BJhEQquH.js → esm-B6Pg-v2v.js} +89 -89
- package/dist/esm-B6Pg-v2v.js.map +1 -0
- package/dist/{helpers-z8cqBNoz.js → helpers-C3IJbMVf.js} +4 -4
- package/dist/helpers-C3IJbMVf.js.map +1 -0
- package/dist/index.js +42 -42
- package/dist/{react-18-BAudFSEM.js → react-18-DbbN8Pdb.js} +3 -3
- package/dist/react-18-DbbN8Pdb.js.map +1 -0
- package/dist/react.esm-56DGmlLk.js +8884 -0
- package/dist/react.esm-56DGmlLk.js.map +1 -0
- package/dist/setupTests.js +6 -1196
- package/dist/setupTests.js.map +1 -1
- package/dist/storyComponents/Container/Container.js +1 -1
- package/dist/storyComponents/Container/index.js +1 -1
- package/dist/storybook__react.d.js +17 -17
- package/dist/storybook__react.d.js.map +1 -1
- package/dist/{test-Bd7kXF_B.js → test-WxLxsxwA.js} +56 -57
- package/dist/test-WxLxsxwA.js.map +1 -0
- package/dist/{test-utils-DcI4ZXle.js → test-utils-CMrZ33U0.js} +2 -2
- package/dist/test-utils-CMrZ33U0.js.map +1 -0
- package/package.json +30 -17
- package/dist/Lexical.prod-8zZnpGo4.js.map +0 -1
- package/dist/LexicalClipboard.prod-hbxbsROy.js.map +0 -1
- package/dist/LexicalComposerContext.prod-y_BRxu3Z.js.map +0 -1
- package/dist/LexicalExtension.prod-v8IpET5E.js.map +0 -1
- package/dist/LexicalLink.prod-BVUv9-sZ.js.map +0 -1
- package/dist/LexicalList.prod-CCPDDafy.js.map +0 -1
- package/dist/LexicalTable.prod-D_9Dr3kL.js.map +0 -1
- package/dist/LexicalUtils.prod-BWhWP8es.js.map +0 -1
- package/dist/TableCellResizerPlugin-Djym940U.js.map +0 -1
- package/dist/chunk-FON5IJBZ-BBb6rYhU.js.map +0 -1
- package/dist/client-DJaPTT6C.js.map +0 -1
- package/dist/clsx-BWCAbrjV.js.map +0 -1
- package/dist/components-D6_Sx8Hs.js.map +0 -1
- package/dist/dist-Dlg0QxSO.js +0 -2225
- package/dist/dist-Dlg0QxSO.js.map +0 -1
- package/dist/esm-BJhEQquH.js.map +0 -1
- package/dist/helpers-z8cqBNoz.js.map +0 -1
- package/dist/lib-Do6N-CJR.js.map +0 -1
- package/dist/react-18-BAudFSEM.js.map +0 -1
- package/dist/react.esm-GvSawg5E.js +0 -3297
- package/dist/react.esm-GvSawg5E.js.map +0 -1
- package/dist/test-Bd7kXF_B.js.map +0 -1
- 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-
|
|
1
|
+
import { t as e } from "./clsx-C67XSbzZ.js";
|
|
2
2
|
import { t } from "./Backdrop-bQ8kXsge.js";
|
|
3
|
-
import { t as n } from "./OverlayCloseButton-
|
|
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-
|
|
76
|
+
//# sourceMappingURL=Drawer-fUw0LEuj.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer-
|
|
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-
|
|
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-
|
|
46
|
+
//# sourceMappingURL=EmptyStateDataDisplay-FBDAGO88.js.map
|
package/dist/{EmptyStateDataDisplay-IT2P3ius.js.map → EmptyStateDataDisplay-FBDAGO88.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyStateDataDisplay-
|
|
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-
|
|
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-
|
|
58
|
+
//# sourceMappingURL=ExpandableInfoPanel-BmbgbAjf.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpandableInfoPanel-
|
|
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-
|
|
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-
|
|
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-
|
|
43
|
+
//# sourceMappingURL=FeedbackBar-DEDpoNy7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackBar-
|
|
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-
|
|
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-
|
|
29
|
+
//# sourceMappingURL=FeedbackBox-BpOf_dxg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeedbackBox-
|
|
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-
|
|
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-
|
|
22
|
+
//# sourceMappingURL=Fieldset-CgnLyAyS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fieldset-
|
|
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-
|
|
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-
|
|
21
|
+
//# sourceMappingURL=FormField-ByjTkKKq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormField-
|
|
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-
|
|
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-
|
|
24
|
+
//# sourceMappingURL=IconButton-BZVNomru.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IconButton-
|
|
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-
|
|
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-
|
|
19
|
+
//# sourceMappingURL=InfoMessage-CCEg222m.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InfoMessage-
|
|
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-
|
|
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-
|
|
25
|
+
//# sourceMappingURL=Input-CF3dxqTC.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input-
|
|
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-
|
|
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-
|
|
51
|
+
//# sourceMappingURL=InputField-asFsxHvx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputField-
|
|
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-
|
|
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-
|
|
21
|
+
//# sourceMappingURL=Label-52ny6d06.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Label-
|
|
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-
|
|
5351
|
+
//# sourceMappingURL=Lexical.prod-DApSVwEN.js.map
|