@dsn-starter-kit/components-react 3.0.0 → 3.1.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/README.md +32 -4
- package/dist/ActionGroup/ActionGroup.d.mts +51 -0
- package/dist/ActionGroup/ActionGroup.d.mts.map +1 -0
- package/dist/ActionGroup/ActionGroup2.mjs +65 -0
- package/dist/ActionGroup/ActionGroup2.mjs.map +1 -0
- package/dist/ActionGroup/index.d.mts +2 -0
- package/dist/Alert/Alert.d.mts +85 -0
- package/dist/Alert/Alert.d.mts.map +1 -0
- package/dist/Alert/Alert2.mjs +102 -0
- package/dist/Alert/Alert2.mjs.map +1 -0
- package/dist/Alert/index.d.mts +2 -0
- package/dist/Backdrop/Backdrop.d.mts +28 -0
- package/dist/Backdrop/Backdrop.d.mts.map +1 -0
- package/dist/Backdrop/Backdrop2.mjs +32 -0
- package/dist/Backdrop/Backdrop2.mjs.map +1 -0
- package/dist/Backdrop/index.d.mts +2 -0
- package/dist/Body/Body.d.mts +29 -0
- package/dist/Body/Body.d.mts.map +1 -0
- package/dist/Body/Body2.mjs +36 -0
- package/dist/Body/Body2.mjs.map +1 -0
- package/dist/Body/index.d.mts +2 -0
- package/dist/BreadcrumbNavigation/BreadcrumbNavigation.d.mts +45 -0
- package/dist/BreadcrumbNavigation/BreadcrumbNavigation.d.mts.map +1 -0
- package/dist/BreadcrumbNavigation/BreadcrumbNavigation2.mjs +51 -0
- package/dist/BreadcrumbNavigation/BreadcrumbNavigation2.mjs.map +1 -0
- package/dist/BreadcrumbNavigation/BreadcrumbNavigationItem.d.mts +41 -0
- package/dist/BreadcrumbNavigation/BreadcrumbNavigationItem.d.mts.map +1 -0
- package/dist/BreadcrumbNavigation/BreadcrumbNavigationItem.mjs +48 -0
- package/dist/BreadcrumbNavigation/BreadcrumbNavigationItem.mjs.map +1 -0
- package/dist/BreadcrumbNavigation/index.d.mts +3 -0
- package/dist/BreakoutSection/BreakoutSection.d.mts +32 -0
- package/dist/BreakoutSection/BreakoutSection.d.mts.map +1 -0
- package/dist/BreakoutSection/BreakoutSection2.mjs +36 -0
- package/dist/BreakoutSection/BreakoutSection2.mjs.map +1 -0
- package/dist/BreakoutSection/index.d.mts +2 -0
- package/dist/Button/Button.d.mts +92 -0
- package/dist/Button/Button.d.mts.map +1 -0
- package/dist/Button/Button2.mjs +76 -0
- package/dist/Button/Button2.mjs.map +1 -0
- package/dist/Button/index.d.mts +2 -0
- package/dist/ButtonLink/ButtonLink.d.mts +94 -0
- package/dist/ButtonLink/ButtonLink.d.mts.map +1 -0
- package/dist/ButtonLink/ButtonLink2.mjs +70 -0
- package/dist/ButtonLink/ButtonLink2.mjs.map +1 -0
- package/dist/ButtonLink/index.d.mts +2 -0
- package/dist/Card/Card.d.mts +107 -0
- package/dist/Card/Card.d.mts.map +1 -0
- package/dist/Card/Card2.mjs +125 -0
- package/dist/Card/Card2.mjs.map +1 -0
- package/dist/Card/index.d.mts +2 -0
- package/dist/Checkbox/Checkbox.d.mts +20 -0
- package/dist/Checkbox/Checkbox.d.mts.map +1 -0
- package/dist/Checkbox/Checkbox2.mjs +43 -0
- package/dist/Checkbox/Checkbox2.mjs.map +1 -0
- package/dist/Checkbox/index.d.mts +2 -0
- package/dist/CheckboxGroup/CheckboxGroup.d.mts +39 -0
- package/dist/CheckboxGroup/CheckboxGroup.d.mts.map +1 -0
- package/dist/CheckboxGroup/CheckboxGroup2.mjs +46 -0
- package/dist/CheckboxGroup/CheckboxGroup2.mjs.map +1 -0
- package/dist/CheckboxGroup/index.d.mts +2 -0
- package/dist/CheckboxOption/CheckboxOption.d.mts +17 -0
- package/dist/CheckboxOption/CheckboxOption.d.mts.map +1 -0
- package/dist/CheckboxOption/CheckboxOption2.mjs +29 -0
- package/dist/CheckboxOption/CheckboxOption2.mjs.map +1 -0
- package/dist/CheckboxOption/index.d.mts +2 -0
- package/dist/Container/Container.d.mts +43 -0
- package/dist/Container/Container.d.mts.map +1 -0
- package/dist/Container/Container2.mjs +42 -0
- package/dist/Container/Container2.mjs.map +1 -0
- package/dist/Container/index.d.mts +2 -0
- package/dist/DateInput/DateInput.d.mts +38 -0
- package/dist/DateInput/DateInput.d.mts.map +1 -0
- package/dist/DateInput/DateInput2.mjs +69 -0
- package/dist/DateInput/DateInput2.mjs.map +1 -0
- package/dist/DateInput/index.d.mts +2 -0
- package/dist/DateInputGroup/DateInputGroup.d.mts +67 -0
- package/dist/DateInputGroup/DateInputGroup.d.mts.map +1 -0
- package/dist/DateInputGroup/DateInputGroup2.mjs +120 -0
- package/dist/DateInputGroup/DateInputGroup2.mjs.map +1 -0
- package/dist/DateInputGroup/index.d.mts +2 -0
- package/dist/Details/Details.d.mts +48 -0
- package/dist/Details/Details.d.mts.map +1 -0
- package/dist/Details/Details2.mjs +61 -0
- package/dist/Details/Details2.mjs.map +1 -0
- package/dist/Details/index.d.mts +2 -0
- package/dist/DotBadge/DotBadge.d.mts +44 -0
- package/dist/DotBadge/DotBadge.d.mts.map +1 -0
- package/dist/DotBadge/DotBadge2.mjs +42 -0
- package/dist/DotBadge/DotBadge2.mjs.map +1 -0
- package/dist/DotBadge/index.d.mts +2 -0
- package/dist/Drawer/Drawer.d.mts +111 -0
- package/dist/Drawer/Drawer.d.mts.map +1 -0
- package/dist/Drawer/Drawer2.mjs +156 -0
- package/dist/Drawer/Drawer2.mjs.map +1 -0
- package/dist/Drawer/index.d.mts +2 -0
- package/dist/EmailInput/EmailInput.d.mts +40 -0
- package/dist/EmailInput/EmailInput.d.mts.map +1 -0
- package/dist/EmailInput/EmailInput.mjs +39 -0
- package/dist/EmailInput/EmailInput.mjs.map +1 -0
- package/dist/EmailInput/index.d.mts +2 -0
- package/dist/File/File.d.mts +124 -0
- package/dist/File/File.d.mts.map +1 -0
- package/dist/File/File2.mjs +196 -0
- package/dist/File/File2.mjs.map +1 -0
- package/dist/File/index.d.mts +2 -0
- package/dist/FileInput/FileInput.d.mts +38 -0
- package/dist/FileInput/FileInput.d.mts.map +1 -0
- package/dist/FileInput/FileInput2.mjs +41 -0
- package/dist/FileInput/FileInput2.mjs.map +1 -0
- package/dist/FileInput/index.d.mts +2 -0
- package/dist/FormField/FormField.d.mts +103 -0
- package/dist/FormField/FormField.d.mts.map +1 -0
- package/dist/FormField/FormField2.mjs +101 -0
- package/dist/FormField/FormField2.mjs.map +1 -0
- package/dist/FormField/index.d.mts +2 -0
- package/dist/FormFieldDescription/FormFieldDescription.d.mts +53 -0
- package/dist/FormFieldDescription/FormFieldDescription.d.mts.map +1 -0
- package/dist/FormFieldDescription/FormFieldDescription2.mjs +49 -0
- package/dist/FormFieldDescription/FormFieldDescription2.mjs.map +1 -0
- package/dist/FormFieldDescription/index.d.mts +2 -0
- package/dist/FormFieldErrorMessage/FormFieldErrorMessage.d.mts +42 -0
- package/dist/FormFieldErrorMessage/FormFieldErrorMessage.d.mts.map +1 -0
- package/dist/FormFieldErrorMessage/FormFieldErrorMessage2.mjs +44 -0
- package/dist/FormFieldErrorMessage/FormFieldErrorMessage2.mjs.map +1 -0
- package/dist/FormFieldErrorMessage/index.d.mts +2 -0
- package/dist/FormFieldLabel/FormFieldLabel.d.mts +40 -0
- package/dist/FormFieldLabel/FormFieldLabel.d.mts.map +1 -0
- package/dist/FormFieldLabel/FormFieldLabel2.mjs +42 -0
- package/dist/FormFieldLabel/FormFieldLabel2.mjs.map +1 -0
- package/dist/FormFieldLabel/index.d.mts +2 -0
- package/dist/FormFieldLegend/FormFieldLegend.d.mts +41 -0
- package/dist/FormFieldLegend/FormFieldLegend.d.mts.map +1 -0
- package/dist/FormFieldLegend/FormFieldLegend2.mjs +43 -0
- package/dist/FormFieldLegend/FormFieldLegend2.mjs.map +1 -0
- package/dist/FormFieldLegend/index.d.mts +2 -0
- package/dist/FormFieldStatus/FormFieldStatus.d.mts +62 -0
- package/dist/FormFieldStatus/FormFieldStatus.d.mts.map +1 -0
- package/dist/FormFieldStatus/FormFieldStatus2.mjs +54 -0
- package/dist/FormFieldStatus/FormFieldStatus2.mjs.map +1 -0
- package/dist/FormFieldStatus/index.d.mts +2 -0
- package/dist/FormFieldset/FormFieldset.d.mts +100 -0
- package/dist/FormFieldset/FormFieldset.d.mts.map +1 -0
- package/dist/FormFieldset/FormFieldset2.mjs +100 -0
- package/dist/FormFieldset/FormFieldset2.mjs.map +1 -0
- package/dist/FormFieldset/index.d.mts +2 -0
- package/dist/Grid/Grid.d.mts +37 -0
- package/dist/Grid/Grid.d.mts.map +1 -0
- package/dist/Grid/Grid2.mjs +38 -0
- package/dist/Grid/Grid2.mjs.map +1 -0
- package/dist/Grid/GridItem.d.mts +87 -0
- package/dist/Grid/GridItem.d.mts.map +1 -0
- package/dist/Grid/GridItem.mjs +48 -0
- package/dist/Grid/GridItem.mjs.map +1 -0
- package/dist/Grid/index.d.mts +3 -0
- package/dist/Heading/Heading.d.mts +40 -0
- package/dist/Heading/Heading.d.mts.map +1 -0
- package/dist/Heading/Heading2.mjs +33 -0
- package/dist/Heading/Heading2.mjs.map +1 -0
- package/dist/Heading/index.d.mts +2 -0
- package/dist/HeadingGroup/HeadingGroup.d.mts +25 -0
- package/dist/HeadingGroup/HeadingGroup.d.mts.map +1 -0
- package/dist/HeadingGroup/HeadingGroup2.mjs +24 -0
- package/dist/HeadingGroup/HeadingGroup2.mjs.map +1 -0
- package/dist/HeadingGroup/index.d.mts +2 -0
- package/dist/Hero/Hero.d.mts +47 -0
- package/dist/Hero/Hero.d.mts.map +1 -0
- package/dist/Hero/Hero2.mjs +50 -0
- package/dist/Hero/Hero2.mjs.map +1 -0
- package/dist/Hero/index.d.mts +2 -0
- package/dist/Icon/Icon.d.mts +47 -0
- package/dist/Icon/Icon.d.mts.map +1 -0
- package/dist/Icon/Icon2.mjs +47 -0
- package/dist/Icon/Icon2.mjs.map +1 -0
- package/dist/Icon/icon-registry.generated.d.mts +8 -0
- package/dist/Icon/icon-registry.generated.d.mts.map +1 -0
- package/dist/Icon/icon-registry.generated.mjs +818 -0
- package/dist/Icon/icon-registry.generated.mjs.map +1 -0
- package/dist/Icon/index.d.mts +3 -0
- package/dist/IconList/IconList.d.mts +68 -0
- package/dist/IconList/IconList.d.mts.map +1 -0
- package/dist/IconList/IconList2.mjs +65 -0
- package/dist/IconList/IconList2.mjs.map +1 -0
- package/dist/IconList/index.d.mts +2 -0
- package/dist/Image/Image.d.mts +56 -0
- package/dist/Image/Image.d.mts.map +1 -0
- package/dist/Image/Image2.mjs +67 -0
- package/dist/Image/Image2.mjs.map +1 -0
- package/dist/Image/index.d.mts +2 -0
- package/dist/Link/Link.d.mts +82 -0
- package/dist/Link/Link.d.mts.map +1 -0
- package/dist/Link/Link2.mjs +73 -0
- package/dist/Link/Link2.mjs.map +1 -0
- package/dist/Link/index.d.mts +2 -0
- package/dist/LinkButton/LinkButton.d.mts +54 -0
- package/dist/LinkButton/LinkButton.d.mts.map +1 -0
- package/dist/LinkButton/LinkButton2.mjs +48 -0
- package/dist/LinkButton/LinkButton2.mjs.map +1 -0
- package/dist/LinkButton/index.d.mts +2 -0
- package/dist/Logo/Logo.d.mts +35 -0
- package/dist/Logo/Logo.d.mts.map +1 -0
- package/dist/Logo/Logo2.mjs +66 -0
- package/dist/Logo/Logo2.mjs.map +1 -0
- package/dist/Logo/index.d.mts +2 -0
- package/dist/Menu/Menu.d.mts +58 -0
- package/dist/Menu/Menu.d.mts.map +1 -0
- package/dist/Menu/Menu2.mjs +47 -0
- package/dist/Menu/Menu2.mjs.map +1 -0
- package/dist/Menu/index.d.mts +2 -0
- package/dist/MenuButton/MenuButton.d.mts +56 -0
- package/dist/MenuButton/MenuButton.d.mts.map +1 -0
- package/dist/MenuButton/MenuButton2.mjs +57 -0
- package/dist/MenuButton/MenuButton2.mjs.map +1 -0
- package/dist/MenuButton/index.d.mts +2 -0
- package/dist/MenuLink/MenuLink.d.mts +98 -0
- package/dist/MenuLink/MenuLink.d.mts.map +1 -0
- package/dist/MenuLink/MenuLink2.mjs +98 -0
- package/dist/MenuLink/MenuLink2.mjs.map +1 -0
- package/dist/MenuLink/index.d.mts +2 -0
- package/dist/ModalDialog/ModalDialog.d.mts +97 -0
- package/dist/ModalDialog/ModalDialog.d.mts.map +1 -0
- package/dist/ModalDialog/ModalDialog2.mjs +134 -0
- package/dist/ModalDialog/ModalDialog2.mjs.map +1 -0
- package/dist/ModalDialog/index.d.mts +2 -0
- package/dist/Note/Note.d.mts +95 -0
- package/dist/Note/Note.d.mts.map +1 -0
- package/dist/Note/Note2.mjs +116 -0
- package/dist/Note/Note2.mjs.map +1 -0
- package/dist/Note/index.d.mts +2 -0
- package/dist/NumberBadge/NumberBadge.d.mts +44 -0
- package/dist/NumberBadge/NumberBadge.d.mts.map +1 -0
- package/dist/NumberBadge/NumberBadge2.mjs +50 -0
- package/dist/NumberBadge/NumberBadge2.mjs.map +1 -0
- package/dist/NumberBadge/index.d.mts +2 -0
- package/dist/NumberInput/NumberInput.d.mts +47 -0
- package/dist/NumberInput/NumberInput.d.mts.map +1 -0
- package/dist/NumberInput/NumberInput.mjs +40 -0
- package/dist/NumberInput/NumberInput.mjs.map +1 -0
- package/dist/NumberInput/index.d.mts +2 -0
- package/dist/OptionLabel/OptionLabel.d.mts +15 -0
- package/dist/OptionLabel/OptionLabel.d.mts.map +1 -0
- package/dist/OptionLabel/OptionLabel2.mjs +22 -0
- package/dist/OptionLabel/OptionLabel2.mjs.map +1 -0
- package/dist/OptionLabel/index.d.mts +2 -0
- package/dist/OrderedList/OrderedList.d.mts +34 -0
- package/dist/OrderedList/OrderedList.d.mts.map +1 -0
- package/dist/OrderedList/OrderedList2.mjs +37 -0
- package/dist/OrderedList/OrderedList2.mjs.map +1 -0
- package/dist/OrderedList/index.d.mts +2 -0
- package/dist/PageBody/PageBody.d.mts +35 -0
- package/dist/PageBody/PageBody.d.mts.map +1 -0
- package/dist/PageBody/PageBody2.mjs +40 -0
- package/dist/PageBody/PageBody2.mjs.map +1 -0
- package/dist/PageBody/index.d.mts +2 -0
- package/dist/PageFooter/PageFooter.d.mts +57 -0
- package/dist/PageFooter/PageFooter.d.mts.map +1 -0
- package/dist/PageFooter/PageFooter2.mjs +78 -0
- package/dist/PageFooter/PageFooter2.mjs.map +1 -0
- package/dist/PageFooter/index.d.mts +2 -0
- package/dist/PageHeader/PageHeader.d.mts +192 -0
- package/dist/PageHeader/PageHeader.d.mts.map +1 -0
- package/dist/PageHeader/PageHeader2.mjs +275 -0
- package/dist/PageHeader/PageHeader2.mjs.map +1 -0
- package/dist/PageHeader/index.d.mts +2 -0
- package/dist/PageLayout/PageLayout.d.mts +40 -0
- package/dist/PageLayout/PageLayout.d.mts.map +1 -0
- package/dist/PageLayout/PageLayout2.mjs +42 -0
- package/dist/PageLayout/PageLayout2.mjs.map +1 -0
- package/dist/PageLayout/index.d.mts +2 -0
- package/dist/Paragraph/Paragraph.d.mts +37 -0
- package/dist/Paragraph/Paragraph.d.mts.map +1 -0
- package/dist/Paragraph/Paragraph2.mjs +34 -0
- package/dist/Paragraph/Paragraph2.mjs.map +1 -0
- package/dist/Paragraph/index.d.mts +2 -0
- package/dist/PasswordInput/PasswordInput.d.mts +54 -0
- package/dist/PasswordInput/PasswordInput.d.mts.map +1 -0
- package/dist/PasswordInput/PasswordInput.mjs +43 -0
- package/dist/PasswordInput/PasswordInput.mjs.map +1 -0
- package/dist/PasswordInput/index.d.mts +2 -0
- package/dist/Popover/Popover.d.mts +118 -0
- package/dist/Popover/Popover.d.mts.map +1 -0
- package/dist/Popover/Popover2.mjs +235 -0
- package/dist/Popover/Popover2.mjs.map +1 -0
- package/dist/Popover/index.d.mts +2 -0
- package/dist/PreHeading/PreHeading.d.mts +10 -0
- package/dist/PreHeading/PreHeading.d.mts.map +1 -0
- package/dist/PreHeading/PreHeading2.mjs +18 -0
- package/dist/PreHeading/PreHeading2.mjs.map +1 -0
- package/dist/PreHeading/index.d.mts +2 -0
- package/dist/ProgressBar/ProgressBar.d.mts +60 -0
- package/dist/ProgressBar/ProgressBar.d.mts.map +1 -0
- package/dist/ProgressBar/ProgressBar2.mjs +73 -0
- package/dist/ProgressBar/ProgressBar2.mjs.map +1 -0
- package/dist/ProgressBar/index.d.mts +2 -0
- package/dist/Radio/Radio.d.mts +16 -0
- package/dist/Radio/Radio.d.mts.map +1 -0
- package/dist/Radio/Radio2.mjs +31 -0
- package/dist/Radio/Radio2.mjs.map +1 -0
- package/dist/Radio/index.d.mts +2 -0
- package/dist/RadioGroup/RadioGroup.d.mts +39 -0
- package/dist/RadioGroup/RadioGroup.d.mts.map +1 -0
- package/dist/RadioGroup/RadioGroup2.mjs +46 -0
- package/dist/RadioGroup/RadioGroup2.mjs.map +1 -0
- package/dist/RadioGroup/index.d.mts +2 -0
- package/dist/RadioOption/RadioOption.d.mts +17 -0
- package/dist/RadioOption/RadioOption.d.mts.map +1 -0
- package/dist/RadioOption/RadioOption2.mjs +29 -0
- package/dist/RadioOption/RadioOption2.mjs.map +1 -0
- package/dist/RadioOption/index.d.mts +2 -0
- package/dist/SearchInput/SearchInput.d.mts +41 -0
- package/dist/SearchInput/SearchInput.d.mts.map +1 -0
- package/dist/SearchInput/SearchInput2.mjs +48 -0
- package/dist/SearchInput/SearchInput2.mjs.map +1 -0
- package/dist/SearchInput/index.d.mts +2 -0
- package/dist/Select/Select.d.mts +53 -0
- package/dist/Select/Select.d.mts.map +1 -0
- package/dist/Select/Select2.mjs +61 -0
- package/dist/Select/Select2.mjs.map +1 -0
- package/dist/Select/index.d.mts +2 -0
- package/dist/SkipLink/SkipLink.d.mts +37 -0
- package/dist/SkipLink/SkipLink.d.mts.map +1 -0
- package/dist/SkipLink/SkipLink2.mjs +33 -0
- package/dist/SkipLink/SkipLink2.mjs.map +1 -0
- package/dist/SkipLink/index.d.mts +2 -0
- package/dist/Spinner/Spinner.d.mts +45 -0
- package/dist/Spinner/Spinner.d.mts.map +1 -0
- package/dist/Spinner/Spinner2.mjs +58 -0
- package/dist/Spinner/Spinner2.mjs.map +1 -0
- package/dist/Spinner/index.d.mts +2 -0
- package/dist/Stack/Stack.d.mts +37 -0
- package/dist/Stack/Stack.d.mts.map +1 -0
- package/dist/Stack/Stack2.mjs +38 -0
- package/dist/Stack/Stack2.mjs.map +1 -0
- package/dist/Stack/index.d.mts +2 -0
- package/dist/StatusBadge/StatusBadge.d.mts +52 -0
- package/dist/StatusBadge/StatusBadge.d.mts.map +1 -0
- package/dist/StatusBadge/StatusBadge2.mjs +49 -0
- package/dist/StatusBadge/StatusBadge2.mjs.map +1 -0
- package/dist/StatusBadge/index.d.mts +2 -0
- package/dist/SummaryList/SummaryList.d.mts +51 -0
- package/dist/SummaryList/SummaryList.d.mts.map +1 -0
- package/dist/SummaryList/SummaryList2.mjs +66 -0
- package/dist/SummaryList/SummaryList2.mjs.map +1 -0
- package/dist/SummaryList/index.d.mts +2 -0
- package/dist/Table/Table.d.mts +63 -0
- package/dist/Table/Table.d.mts.map +1 -0
- package/dist/Table/Table2.mjs +54 -0
- package/dist/Table/Table2.mjs.map +1 -0
- package/dist/Table/index.d.mts +2 -0
- package/dist/TableOfContents/TableOfContents.d.mts +64 -0
- package/dist/TableOfContents/TableOfContents.d.mts.map +1 -0
- package/dist/TableOfContents/TableOfContents2.mjs +51 -0
- package/dist/TableOfContents/TableOfContents2.mjs.map +1 -0
- package/dist/TableOfContents/index.d.mts +2 -0
- package/dist/TelephoneInput/TelephoneInput.d.mts +40 -0
- package/dist/TelephoneInput/TelephoneInput.d.mts.map +1 -0
- package/dist/TelephoneInput/TelephoneInput.mjs +39 -0
- package/dist/TelephoneInput/TelephoneInput.mjs.map +1 -0
- package/dist/TelephoneInput/index.d.mts +2 -0
- package/dist/TextArea/TextArea.d.mts +46 -0
- package/dist/TextArea/TextArea.d.mts.map +1 -0
- package/dist/TextArea/TextArea2.mjs +43 -0
- package/dist/TextArea/TextArea2.mjs.map +1 -0
- package/dist/TextArea/index.d.mts +2 -0
- package/dist/TextInput/TextInput.d.mts +46 -0
- package/dist/TextInput/TextInput.d.mts.map +1 -0
- package/dist/TextInput/TextInput2.mjs +43 -0
- package/dist/TextInput/TextInput2.mjs.map +1 -0
- package/dist/TextInput/index.d.mts +2 -0
- package/dist/TimeInput/TimeInput.d.mts +38 -0
- package/dist/TimeInput/TimeInput.d.mts.map +1 -0
- package/dist/TimeInput/TimeInput2.mjs +69 -0
- package/dist/TimeInput/TimeInput2.mjs.map +1 -0
- package/dist/TimeInput/index.d.mts +2 -0
- package/dist/UnorderedList/UnorderedList.d.mts +28 -0
- package/dist/UnorderedList/UnorderedList.d.mts.map +1 -0
- package/dist/UnorderedList/UnorderedList2.mjs +31 -0
- package/dist/UnorderedList/UnorderedList2.mjs.map +1 -0
- package/dist/UnorderedList/index.d.mts +2 -0
- package/dist/index.css +3470 -3470
- package/dist/index.d.mts +150 -3874
- package/dist/index.mjs +76 -5006
- package/dist/utils/describeControl.mjs +25 -0
- package/dist/utils/describeControl.mjs.map +1 -0
- package/package.json +4 -3
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Icon } from "../Icon/Icon2.mjs";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import React from "react";
|
|
4
|
+
import { classNames } from "@dsn-starter-kit/core";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/MenuLink/MenuLink.tsx
|
|
7
|
+
/**
|
|
8
|
+
* MenuLink component
|
|
9
|
+
* Navigatielink met niveau-hiërarchie, actieve staat en uitklapbare subnavigatie.
|
|
10
|
+
* Semantisch een `<a>`, visueel consistent met MenuButton.
|
|
11
|
+
*
|
|
12
|
+
* Gebruik in een `<ul>`-element (het `<nav>`-element met lijst).
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* // Basisgebruik (level 1)
|
|
17
|
+
* <MenuLink href="/dashboard">Dashboard</MenuLink>
|
|
18
|
+
*
|
|
19
|
+
* // Actieve pagina
|
|
20
|
+
* <MenuLink href="/rapporten" current>Rapporten</MenuLink>
|
|
21
|
+
*
|
|
22
|
+
* // Level 2 (subpagina)
|
|
23
|
+
* <MenuLink href="/rapporten/maandelijks" level={2}>Maandelijks</MenuLink>
|
|
24
|
+
*
|
|
25
|
+
* // Met icoon en NumberBadge
|
|
26
|
+
* <MenuLink
|
|
27
|
+
* href="/inbox"
|
|
28
|
+
* iconStart={<Icon name="mail" aria-hidden />}
|
|
29
|
+
* numberBadge={<NumberBadge variant="negative">5</NumberBadge>}
|
|
30
|
+
* >
|
|
31
|
+
* Inbox
|
|
32
|
+
* </MenuLink>
|
|
33
|
+
*
|
|
34
|
+
* // Met uitklapknop
|
|
35
|
+
* <MenuLink
|
|
36
|
+
* href="/rapporten"
|
|
37
|
+
* subItems
|
|
38
|
+
* expanded={isExpanded}
|
|
39
|
+
* onExpandToggle={() => setIsExpanded(!isExpanded)}
|
|
40
|
+
* >
|
|
41
|
+
* Rapporten
|
|
42
|
+
* </MenuLink>
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
const MenuLink = React.forwardRef(({ href, level = 1, current = false, iconStart, iconEnd, numberBadge, subItems = false, expanded = false, onExpandToggle, className, children, ...props }, ref) => {
|
|
46
|
+
const liClasses = classNames("dsn-menu-link", level > 1 && `dsn-menu-link--level-${level}`, className);
|
|
47
|
+
const childrenText = typeof children === "string" ? children : void 0;
|
|
48
|
+
return /* @__PURE__ */ jsxs("li", {
|
|
49
|
+
className: liClasses,
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ jsxs("a", {
|
|
52
|
+
ref,
|
|
53
|
+
className: "dsn-menu-link__link",
|
|
54
|
+
href,
|
|
55
|
+
"aria-current": current ? "page" : void 0,
|
|
56
|
+
...props,
|
|
57
|
+
children: [
|
|
58
|
+
iconStart,
|
|
59
|
+
/* @__PURE__ */ jsx("span", {
|
|
60
|
+
className: "dsn-menu-link__label",
|
|
61
|
+
children
|
|
62
|
+
}),
|
|
63
|
+
numberBadge,
|
|
64
|
+
iconEnd
|
|
65
|
+
]
|
|
66
|
+
}),
|
|
67
|
+
subItems && /* @__PURE__ */ jsx("span", {
|
|
68
|
+
className: "dsn-menu-link__divider",
|
|
69
|
+
"aria-hidden": "true"
|
|
70
|
+
}),
|
|
71
|
+
subItems && /* @__PURE__ */ jsxs("button", {
|
|
72
|
+
type: "button",
|
|
73
|
+
className: "dsn-button dsn-button--subtle dsn-button--size-small dsn-button--icon-only dsn-menu-link__expand-button",
|
|
74
|
+
"aria-expanded": expanded,
|
|
75
|
+
onClick: onExpandToggle,
|
|
76
|
+
children: [/* @__PURE__ */ jsx(Icon, {
|
|
77
|
+
name: "chevron-down",
|
|
78
|
+
"aria-hidden": true
|
|
79
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
80
|
+
className: "dsn-button__label",
|
|
81
|
+
children: [expanded ? "Inklappen" : "Uitklappen", childrenText && /* @__PURE__ */ jsxs("span", {
|
|
82
|
+
className: "dsn-visually-hidden",
|
|
83
|
+
children: [
|
|
84
|
+
" ",
|
|
85
|
+
"voor ",
|
|
86
|
+
childrenText
|
|
87
|
+
]
|
|
88
|
+
})]
|
|
89
|
+
})]
|
|
90
|
+
})
|
|
91
|
+
]
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
MenuLink.displayName = "MenuLink";
|
|
95
|
+
//#endregion
|
|
96
|
+
export { MenuLink };
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=MenuLink2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MenuLink2.mjs","names":[],"sources":["../../src/MenuLink/MenuLink.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames } from '@dsn-starter-kit/core';\nimport { Icon } from '../Icon';\nimport './MenuLink.css';\n\nexport type MenuLinkLevel = 1 | 2 | 3 | 4;\n\nexport interface MenuLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * Navigatie-URL van de link\n */\n href?: string;\n\n /**\n * Hiërarchisch niveau — bepaalt de `padding-inline-start` inspringing\n * @default 1\n */\n level?: MenuLinkLevel;\n\n /**\n * Markeert de actieve/huidige pagina.\n * Voegt `aria-current=\"page\"` toe aan het `<a>`-element.\n * @default false\n */\n current?: boolean;\n\n /**\n * Icoon links van het label\n */\n iconStart?: React.ReactNode;\n\n /**\n * Icoon rechts van het label — gebruik hier bij voorkeur geen NumberBadge (zie `numberBadge`)\n */\n iconEnd?: React.ReactNode;\n\n /**\n * NumberBadge element rechts van het label (naast iconEnd)\n * Verwacht een `<NumberBadge>` component.\n */\n numberBadge?: React.ReactNode;\n\n /**\n * Toont een uitklapknop naast de link (voor subnavigatie).\n * @default false\n */\n subItems?: boolean;\n\n /**\n * Geeft aan of de subnavigatie momenteel uitgevouwen is.\n * Alleen relevant wanneer `subItems` true is.\n * @default false\n */\n expanded?: boolean;\n\n /**\n * Callback die aangeroepen wordt wanneer op de uitklapknop geklikt wordt.\n */\n onExpandToggle?: () => void;\n\n /**\n * Zichtbare linktekst — ook gebruikt voor de toegankelijke naam van de uitklapknop\n */\n children?: React.ReactNode;\n\n /**\n * Aanvullende CSS-klassen voor het `<li>`-element\n */\n className?: string;\n}\n\n/**\n * MenuLink component\n * Navigatielink met niveau-hiërarchie, actieve staat en uitklapbare subnavigatie.\n * Semantisch een `<a>`, visueel consistent met MenuButton.\n *\n * Gebruik in een `<ul>`-element (het `<nav>`-element met lijst).\n *\n * @example\n * ```tsx\n * // Basisgebruik (level 1)\n * <MenuLink href=\"/dashboard\">Dashboard</MenuLink>\n *\n * // Actieve pagina\n * <MenuLink href=\"/rapporten\" current>Rapporten</MenuLink>\n *\n * // Level 2 (subpagina)\n * <MenuLink href=\"/rapporten/maandelijks\" level={2}>Maandelijks</MenuLink>\n *\n * // Met icoon en NumberBadge\n * <MenuLink\n * href=\"/inbox\"\n * iconStart={<Icon name=\"mail\" aria-hidden />}\n * numberBadge={<NumberBadge variant=\"negative\">5</NumberBadge>}\n * >\n * Inbox\n * </MenuLink>\n *\n * // Met uitklapknop\n * <MenuLink\n * href=\"/rapporten\"\n * subItems\n * expanded={isExpanded}\n * onExpandToggle={() => setIsExpanded(!isExpanded)}\n * >\n * Rapporten\n * </MenuLink>\n * ```\n */\nexport const MenuLink = React.forwardRef<HTMLAnchorElement, MenuLinkProps>(\n (\n {\n href,\n level = 1,\n current = false,\n iconStart,\n iconEnd,\n numberBadge,\n subItems = false,\n expanded = false,\n onExpandToggle,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const liClasses = classNames(\n 'dsn-menu-link',\n level > 1 && `dsn-menu-link--level-${level}`,\n className\n );\n\n const childrenText = typeof children === 'string' ? children : undefined;\n\n return (\n <li className={liClasses}>\n <a\n ref={ref}\n className=\"dsn-menu-link__link\"\n href={href}\n aria-current={current ? 'page' : undefined}\n {...props}\n >\n {iconStart}\n <span className=\"dsn-menu-link__label\">{children}</span>\n {numberBadge}\n {iconEnd}\n </a>\n\n {subItems && (\n <span className=\"dsn-menu-link__divider\" aria-hidden=\"true\" />\n )}\n {subItems && (\n <button\n type=\"button\"\n className=\"dsn-button dsn-button--subtle dsn-button--size-small dsn-button--icon-only dsn-menu-link__expand-button\"\n aria-expanded={expanded}\n onClick={onExpandToggle}\n >\n <Icon name=\"chevron-down\" aria-hidden />\n <span className=\"dsn-button__label\">\n {expanded ? 'Inklappen' : 'Uitklappen'}\n {childrenText && (\n <span className=\"dsn-visually-hidden\">\n {' '}\n voor {childrenText}\n </span>\n )}\n </span>\n </button>\n )}\n </li>\n );\n }\n);\n\nMenuLink.displayName = 'MenuLink';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6GA,MAAa,WAAW,MAAM,YAE1B,EACE,MACA,QAAQ,GACR,UAAU,OACV,WACA,SACA,aACA,WAAW,OACX,WAAW,OACX,gBACA,WACA,UACA,GAAG,SAEL,QACG;CACH,MAAM,YAAY,WAChB,iBACA,QAAQ,KAAK,wBAAwB,SACrC,SACF;CAEA,MAAM,eAAe,OAAO,aAAa,WAAW,WAAW,KAAA;CAE/D,OACE,qBAAC,MAAD;EAAI,WAAW;EAAf,UAAA;GACE,qBAAC,KAAD;IACO;IACL,WAAU;IACJ;IACN,gBAAc,UAAU,SAAS,KAAA;IACjC,GAAI;IALN,UAAA;KAOG;KACD,oBAAC,QAAD;MAAM,WAAU;MAAwB;KAAe,CAAA;KACtD;KACA;IACA;;GAEF,YACC,oBAAC,QAAD;IAAM,WAAU;IAAyB,eAAY;GAAQ,CAAA;GAE9D,YACC,qBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,iBAAe;IACf,SAAS;IAJX,UAAA,CAME,oBAAC,MAAD;KAAM,MAAK;KAAe,eAAA;IAAa,CAAA,GACvC,qBAAC,QAAD;KAAM,WAAU;KAAhB,UAAA,CACG,WAAW,cAAc,cACzB,gBACC,qBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OACG;OAAI;OACC;MACF;KAEJ,CAAA,CAAA;IACA,CAAA,CAAA;;EAER;;AAER,CACF;AAEA,SAAS,cAAc"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
//#region src/ModalDialog/ModalDialog.d.ts
|
|
3
|
+
interface ModalDialogProps extends Omit<React.HTMLAttributes<HTMLDialogElement>, 'children'> {
|
|
4
|
+
/**
|
|
5
|
+
* Bepaalt of het dialoogvenster getoond wordt.
|
|
6
|
+
* Het dialoogvenster wordt via `.showModal()` geopend — nooit via `.show()`.
|
|
7
|
+
*/
|
|
8
|
+
isOpen: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Callback die wordt aangeroepen wanneer het dialoogvenster sluit
|
|
11
|
+
* (sluitknop, Escape-toets of klik buiten het venster).
|
|
12
|
+
*/
|
|
13
|
+
onClose?: () => void;
|
|
14
|
+
/**
|
|
15
|
+
* De subcomponenten van het dialoogvenster:
|
|
16
|
+
* `ModalDialogHeader`, `ModalDialogBody`, `ModalDialogFooter`
|
|
17
|
+
*/
|
|
18
|
+
children?: React.ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* ModalDialog component
|
|
22
|
+
* Modaal dialoogvenster gebaseerd op het native `<dialog>` element.
|
|
23
|
+
*
|
|
24
|
+
* Gebruik altijd `.showModal()` (intern afgehandeld via `isOpen` prop) — nooit `.show()`.
|
|
25
|
+
* Dit garandeert natieve focus-trap, aria-modal semantiek en inert-attribuut op de achtergrond.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```tsx
|
|
29
|
+
* <ModalDialog isOpen={isOpen} onClose={() => setIsOpen(false)}>
|
|
30
|
+
* <ModalDialogHeader>
|
|
31
|
+
* <ModalDialogHeading>Bevestig verwijderen</ModalDialogHeading>
|
|
32
|
+
* </ModalDialogHeader>
|
|
33
|
+
* <ModalDialogBody>
|
|
34
|
+
* <Paragraph>Weet u zeker dat u dit item wilt verwijderen?</Paragraph>
|
|
35
|
+
* </ModalDialogBody>
|
|
36
|
+
* <ModalDialogFooter>
|
|
37
|
+
* <ActionGroup>
|
|
38
|
+
* <Button variant="negative" onClick={() => setIsOpen(false)}>Verwijderen</Button>
|
|
39
|
+
* <Button variant="default" onClick={() => setIsOpen(false)}>Annuleren</Button>
|
|
40
|
+
* </ActionGroup>
|
|
41
|
+
* </ModalDialogFooter>
|
|
42
|
+
* </ModalDialog>
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
declare const ModalDialog: React.ForwardRefExoticComponent<ModalDialogProps & React.RefAttributes<HTMLDialogElement>>;
|
|
46
|
+
interface ModalDialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
47
|
+
/**
|
|
48
|
+
* Inhoud van de header — doorgaans een `ModalDialogHeading`
|
|
49
|
+
*/
|
|
50
|
+
children?: React.ReactNode;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* ModalDialogHeader
|
|
54
|
+
* De headerstrook van het dialoogvenster met heading en sluitknop.
|
|
55
|
+
*/
|
|
56
|
+
declare const ModalDialogHeader: React.ForwardRefExoticComponent<ModalDialogHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
57
|
+
interface ModalDialogHeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {
|
|
58
|
+
/**
|
|
59
|
+
* Semantisch heading-niveau. Kies op basis van documenthiërarchie, niet visuele grootte.
|
|
60
|
+
* @default 2
|
|
61
|
+
*/
|
|
62
|
+
level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
63
|
+
/**
|
|
64
|
+
* De zichtbare heading-tekst
|
|
65
|
+
*/
|
|
66
|
+
children?: React.ReactNode;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* ModalDialogHeading
|
|
70
|
+
* De heading van het dialoogvenster. ID wordt automatisch gegenereerd voor aria-labelledby.
|
|
71
|
+
*/
|
|
72
|
+
declare const ModalDialogHeading: React.ForwardRefExoticComponent<ModalDialogHeadingProps & React.RefAttributes<HTMLHeadingElement>>;
|
|
73
|
+
interface ModalDialogBodyProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
74
|
+
/**
|
|
75
|
+
* De hoofdinhoud van het dialoogvenster
|
|
76
|
+
*/
|
|
77
|
+
children?: React.ReactNode;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* ModalDialogBody
|
|
81
|
+
* De scrollbare inhoudssectie van het dialoogvenster met scroll-affordance schaduw.
|
|
82
|
+
*/
|
|
83
|
+
declare const ModalDialogBody: React.ForwardRefExoticComponent<ModalDialogBodyProps & React.RefAttributes<HTMLDivElement>>;
|
|
84
|
+
interface ModalDialogFooterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
85
|
+
/**
|
|
86
|
+
* De acties van het dialoogvenster — doorgaans een `ActionGroup` met knoppen
|
|
87
|
+
*/
|
|
88
|
+
children?: React.ReactNode;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* ModalDialogFooter
|
|
92
|
+
* De voettekst van het dialoogvenster met actieknoppen.
|
|
93
|
+
*/
|
|
94
|
+
declare const ModalDialogFooter: React.ForwardRefExoticComponent<ModalDialogFooterProps & React.RefAttributes<HTMLDivElement>>;
|
|
95
|
+
//#endregion
|
|
96
|
+
export { ModalDialog, ModalDialogBody, ModalDialogBodyProps, ModalDialogFooter, ModalDialogFooterProps, ModalDialogHeader, ModalDialogHeaderProps, ModalDialogHeading, ModalDialogHeadingProps, ModalDialogProps };
|
|
97
|
+
//# sourceMappingURL=ModalDialog.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalDialog.d.mts","names":[],"sources":["../../src/ModalDialog/ModalDialog.tsx"],"mappings":";;UAuBiB,yBAAyB,KACxC,MAAM,eAAe;;;;;EAOrB;;;;;EAMA;;;;;EAMA,WAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4BN,aAAW,MAAA,0BAAA,mBAAA,MAAA,cAAA;UA+CP,+BAA+B,MAAM,eAAe;;;;EAInE,WAAW,MAAM;;;;;;cAON,mBAAiB,MAAA,0BAAA,yBAAA,MAAA,cAAA;UAgCb,gCAAgC,MAAM,eAAe;;;;;EAKpE;;;;EAKA,WAAW,MAAM;;;;;;cAON,oBAAkB,MAAA,0BAAA,0BAAA,MAAA,cAAA;UAyBd,6BAA6B,MAAM,eAAe;;;;EAIjE,WAAW,MAAM;;;;;;cAON,iBAAe,MAAA,0BAAA,uBAAA,MAAA,cAAA;UAqBX,+BAA+B,MAAM,eAAe;;;;EAInE,WAAW,MAAM;;;;;;cAON,mBAAiB,MAAA,0BAAA,yBAAA,MAAA,cAAA"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { Icon } from "../Icon/Icon2.mjs";
|
|
2
|
+
import { Button } from "../Button/Button2.mjs";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { classNames } from "@dsn-starter-kit/core";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
//#region src/ModalDialog/ModalDialog.tsx
|
|
8
|
+
const ModalDialogContext = React.createContext({ headingId: "" });
|
|
9
|
+
/**
|
|
10
|
+
* ModalDialog component
|
|
11
|
+
* Modaal dialoogvenster gebaseerd op het native `<dialog>` element.
|
|
12
|
+
*
|
|
13
|
+
* Gebruik altijd `.showModal()` (intern afgehandeld via `isOpen` prop) — nooit `.show()`.
|
|
14
|
+
* Dit garandeert natieve focus-trap, aria-modal semantiek en inert-attribuut op de achtergrond.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```tsx
|
|
18
|
+
* <ModalDialog isOpen={isOpen} onClose={() => setIsOpen(false)}>
|
|
19
|
+
* <ModalDialogHeader>
|
|
20
|
+
* <ModalDialogHeading>Bevestig verwijderen</ModalDialogHeading>
|
|
21
|
+
* </ModalDialogHeader>
|
|
22
|
+
* <ModalDialogBody>
|
|
23
|
+
* <Paragraph>Weet u zeker dat u dit item wilt verwijderen?</Paragraph>
|
|
24
|
+
* </ModalDialogBody>
|
|
25
|
+
* <ModalDialogFooter>
|
|
26
|
+
* <ActionGroup>
|
|
27
|
+
* <Button variant="negative" onClick={() => setIsOpen(false)}>Verwijderen</Button>
|
|
28
|
+
* <Button variant="default" onClick={() => setIsOpen(false)}>Annuleren</Button>
|
|
29
|
+
* </ActionGroup>
|
|
30
|
+
* </ModalDialogFooter>
|
|
31
|
+
* </ModalDialog>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
const ModalDialog = React.forwardRef(({ className, isOpen, onClose, children, ...props }, ref) => {
|
|
35
|
+
const internalRef = React.useRef(null);
|
|
36
|
+
const dialogRef = ref ?? internalRef;
|
|
37
|
+
const headingId = React.useId();
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
const dialog = dialogRef.current;
|
|
40
|
+
if (!dialog) return;
|
|
41
|
+
if (isOpen && !dialog.open) dialog.showModal();
|
|
42
|
+
else if (!isOpen && dialog.open) dialog.close();
|
|
43
|
+
}, [isOpen, dialogRef]);
|
|
44
|
+
const handleCancel = (event) => {
|
|
45
|
+
event.preventDefault();
|
|
46
|
+
onClose?.();
|
|
47
|
+
};
|
|
48
|
+
const classes = classNames("dsn-modal-dialog", className);
|
|
49
|
+
return /* @__PURE__ */ jsx(ModalDialogContext.Provider, {
|
|
50
|
+
value: {
|
|
51
|
+
headingId,
|
|
52
|
+
onClose
|
|
53
|
+
},
|
|
54
|
+
children: /* @__PURE__ */ jsx("dialog", {
|
|
55
|
+
ref: dialogRef,
|
|
56
|
+
className: classes,
|
|
57
|
+
"aria-labelledby": headingId,
|
|
58
|
+
onCancel: handleCancel,
|
|
59
|
+
...props,
|
|
60
|
+
children
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
ModalDialog.displayName = "ModalDialog";
|
|
65
|
+
/**
|
|
66
|
+
* ModalDialogHeader
|
|
67
|
+
* De headerstrook van het dialoogvenster met heading en sluitknop.
|
|
68
|
+
*/
|
|
69
|
+
const ModalDialogHeader = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
70
|
+
const { onClose } = React.useContext(ModalDialogContext);
|
|
71
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
72
|
+
ref,
|
|
73
|
+
className: classNames("dsn-modal-dialog__header", className),
|
|
74
|
+
...props,
|
|
75
|
+
children: [children, /* @__PURE__ */ jsx(Button, {
|
|
76
|
+
variant: "subtle",
|
|
77
|
+
size: "small",
|
|
78
|
+
iconOnly: true,
|
|
79
|
+
onClick: onClose,
|
|
80
|
+
iconStart: /* @__PURE__ */ jsx(Icon, {
|
|
81
|
+
name: "x",
|
|
82
|
+
"aria-hidden": true
|
|
83
|
+
}),
|
|
84
|
+
children: "Sluiten"
|
|
85
|
+
})]
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
ModalDialogHeader.displayName = "ModalDialogHeader";
|
|
89
|
+
/**
|
|
90
|
+
* ModalDialogHeading
|
|
91
|
+
* De heading van het dialoogvenster. ID wordt automatisch gegenereerd voor aria-labelledby.
|
|
92
|
+
*/
|
|
93
|
+
const ModalDialogHeading = React.forwardRef(({ className, level = 2, children, ...props }, ref) => {
|
|
94
|
+
const { headingId } = React.useContext(ModalDialogContext);
|
|
95
|
+
const Tag = `h${level}`;
|
|
96
|
+
return /* @__PURE__ */ jsx(Tag, {
|
|
97
|
+
ref,
|
|
98
|
+
id: headingId,
|
|
99
|
+
className: classNames("dsn-modal-dialog-heading", className),
|
|
100
|
+
...props,
|
|
101
|
+
children
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
ModalDialogHeading.displayName = "ModalDialogHeading";
|
|
105
|
+
/**
|
|
106
|
+
* ModalDialogBody
|
|
107
|
+
* De scrollbare inhoudssectie van het dialoogvenster met scroll-affordance schaduw.
|
|
108
|
+
*/
|
|
109
|
+
const ModalDialogBody = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
110
|
+
return /* @__PURE__ */ jsx("div", {
|
|
111
|
+
ref,
|
|
112
|
+
className: classNames("dsn-modal-dialog__body", className),
|
|
113
|
+
...props,
|
|
114
|
+
children
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
ModalDialogBody.displayName = "ModalDialogBody";
|
|
118
|
+
/**
|
|
119
|
+
* ModalDialogFooter
|
|
120
|
+
* De voettekst van het dialoogvenster met actieknoppen.
|
|
121
|
+
*/
|
|
122
|
+
const ModalDialogFooter = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
123
|
+
return /* @__PURE__ */ jsx("div", {
|
|
124
|
+
ref,
|
|
125
|
+
className: classNames("dsn-modal-dialog__footer", className),
|
|
126
|
+
...props,
|
|
127
|
+
children
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
ModalDialogFooter.displayName = "ModalDialogFooter";
|
|
131
|
+
//#endregion
|
|
132
|
+
export { ModalDialog, ModalDialogBody, ModalDialogFooter, ModalDialogHeader, ModalDialogHeading };
|
|
133
|
+
|
|
134
|
+
//# sourceMappingURL=ModalDialog2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalDialog2.mjs","names":[],"sources":["../../src/ModalDialog/ModalDialog.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames } from '@dsn-starter-kit/core';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport './ModalDialog.css';\n\n// =============================================================================\n// Context\n// =============================================================================\n\ninterface ModalDialogContextValue {\n headingId: string;\n onClose?: () => void;\n}\n\nconst ModalDialogContext = React.createContext<ModalDialogContextValue>({\n headingId: '',\n});\n\n// =============================================================================\n// ModalDialog (root)\n// =============================================================================\n\nexport interface ModalDialogProps extends Omit<\n React.HTMLAttributes<HTMLDialogElement>,\n 'children'\n> {\n /**\n * Bepaalt of het dialoogvenster getoond wordt.\n * Het dialoogvenster wordt via `.showModal()` geopend — nooit via `.show()`.\n */\n isOpen: boolean;\n\n /**\n * Callback die wordt aangeroepen wanneer het dialoogvenster sluit\n * (sluitknop, Escape-toets of klik buiten het venster).\n */\n onClose?: () => void;\n\n /**\n * De subcomponenten van het dialoogvenster:\n * `ModalDialogHeader`, `ModalDialogBody`, `ModalDialogFooter`\n */\n children?: React.ReactNode;\n}\n\n/**\n * ModalDialog component\n * Modaal dialoogvenster gebaseerd op het native `<dialog>` element.\n *\n * Gebruik altijd `.showModal()` (intern afgehandeld via `isOpen` prop) — nooit `.show()`.\n * Dit garandeert natieve focus-trap, aria-modal semantiek en inert-attribuut op de achtergrond.\n *\n * @example\n * ```tsx\n * <ModalDialog isOpen={isOpen} onClose={() => setIsOpen(false)}>\n * <ModalDialogHeader>\n * <ModalDialogHeading>Bevestig verwijderen</ModalDialogHeading>\n * </ModalDialogHeader>\n * <ModalDialogBody>\n * <Paragraph>Weet u zeker dat u dit item wilt verwijderen?</Paragraph>\n * </ModalDialogBody>\n * <ModalDialogFooter>\n * <ActionGroup>\n * <Button variant=\"negative\" onClick={() => setIsOpen(false)}>Verwijderen</Button>\n * <Button variant=\"default\" onClick={() => setIsOpen(false)}>Annuleren</Button>\n * </ActionGroup>\n * </ModalDialogFooter>\n * </ModalDialog>\n * ```\n */\nexport const ModalDialog = React.forwardRef<\n HTMLDialogElement,\n ModalDialogProps\n>(({ className, isOpen, onClose, children, ...props }, ref) => {\n const internalRef = React.useRef<HTMLDialogElement>(null);\n const dialogRef = (ref as React.RefObject<HTMLDialogElement>) ?? internalRef;\n const headingId = React.useId();\n\n React.useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (isOpen && !dialog.open) {\n dialog.showModal();\n } else if (!isOpen && dialog.open) {\n dialog.close();\n }\n }, [isOpen, dialogRef]);\n\n const handleCancel = (event: React.SyntheticEvent<HTMLDialogElement>) => {\n event.preventDefault();\n onClose?.();\n };\n\n const classes = classNames('dsn-modal-dialog', className);\n\n return (\n <ModalDialogContext.Provider value={{ headingId, onClose }}>\n <dialog\n ref={dialogRef}\n className={classes}\n aria-labelledby={headingId}\n onCancel={handleCancel}\n {...props}\n >\n {children}\n </dialog>\n </ModalDialogContext.Provider>\n );\n});\n\nModalDialog.displayName = 'ModalDialog';\n\n// =============================================================================\n// ModalDialogHeader\n// =============================================================================\n\nexport interface ModalDialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Inhoud van de header — doorgaans een `ModalDialogHeading`\n */\n children?: React.ReactNode;\n}\n\n/**\n * ModalDialogHeader\n * De headerstrook van het dialoogvenster met heading en sluitknop.\n */\nexport const ModalDialogHeader = React.forwardRef<\n HTMLDivElement,\n ModalDialogHeaderProps\n>(({ className, children, ...props }, ref) => {\n const { onClose } = React.useContext(ModalDialogContext);\n\n return (\n <div\n ref={ref}\n className={classNames('dsn-modal-dialog__header', className)}\n {...props}\n >\n {children}\n <Button\n variant=\"subtle\"\n size=\"small\"\n iconOnly\n onClick={onClose}\n iconStart={<Icon name=\"x\" aria-hidden />}\n >\n Sluiten\n </Button>\n </div>\n );\n});\n\nModalDialogHeader.displayName = 'ModalDialogHeader';\n\n// =============================================================================\n// ModalDialogHeading\n// =============================================================================\n\nexport interface ModalDialogHeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n /**\n * Semantisch heading-niveau. Kies op basis van documenthiërarchie, niet visuele grootte.\n * @default 2\n */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n\n /**\n * De zichtbare heading-tekst\n */\n children?: React.ReactNode;\n}\n\n/**\n * ModalDialogHeading\n * De heading van het dialoogvenster. ID wordt automatisch gegenereerd voor aria-labelledby.\n */\nexport const ModalDialogHeading = React.forwardRef<\n HTMLHeadingElement,\n ModalDialogHeadingProps\n>(({ className, level = 2, children, ...props }, ref) => {\n const { headingId } = React.useContext(ModalDialogContext);\n const Tag = `h${level}` as React.ElementType;\n\n return (\n <Tag\n ref={ref}\n id={headingId}\n className={classNames('dsn-modal-dialog-heading', className)}\n {...props}\n >\n {children}\n </Tag>\n );\n});\n\nModalDialogHeading.displayName = 'ModalDialogHeading';\n\n// =============================================================================\n// ModalDialogBody\n// =============================================================================\n\nexport interface ModalDialogBodyProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * De hoofdinhoud van het dialoogvenster\n */\n children?: React.ReactNode;\n}\n\n/**\n * ModalDialogBody\n * De scrollbare inhoudssectie van het dialoogvenster met scroll-affordance schaduw.\n */\nexport const ModalDialogBody = React.forwardRef<\n HTMLDivElement,\n ModalDialogBodyProps\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={classNames('dsn-modal-dialog__body', className)}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nModalDialogBody.displayName = 'ModalDialogBody';\n\n// =============================================================================\n// ModalDialogFooter\n// =============================================================================\n\nexport interface ModalDialogFooterProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * De acties van het dialoogvenster — doorgaans een `ActionGroup` met knoppen\n */\n children?: React.ReactNode;\n}\n\n/**\n * ModalDialogFooter\n * De voettekst van het dialoogvenster met actieknoppen.\n */\nexport const ModalDialogFooter = React.forwardRef<\n HTMLDivElement,\n ModalDialogFooterProps\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={classNames('dsn-modal-dialog__footer', className)}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nModalDialogFooter.displayName = 'ModalDialogFooter';\n"],"mappings":";;;;;;;AAeA,MAAM,qBAAqB,MAAM,cAAuC,EACtE,WAAW,GACb,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDD,MAAa,cAAc,MAAM,YAG9B,EAAE,WAAW,QAAQ,SAAS,UAAU,GAAG,SAAS,QAAQ;CAC7D,MAAM,cAAc,MAAM,OAA0B,IAAI;CACxD,MAAM,YAAa,OAA8C;CACjE,MAAM,YAAY,MAAM,MAAM;CAE9B,MAAM,gBAAgB;EACpB,MAAM,SAAS,UAAU;EACzB,IAAI,CAAC,QAAQ;EAEb,IAAI,UAAU,CAAC,OAAO,MACpB,OAAO,UAAU;OACZ,IAAI,CAAC,UAAU,OAAO,MAC3B,OAAO,MAAM;CAEjB,GAAG,CAAC,QAAQ,SAAS,CAAC;CAEtB,MAAM,gBAAgB,UAAmD;EACvE,MAAM,eAAe;EACrB,UAAU;CACZ;CAEA,MAAM,UAAU,WAAW,oBAAoB,SAAS;CAExD,OACE,oBAAC,mBAAmB,UAApB;EAA6B,OAAO;GAAE;GAAW;EAAQ;EACvD,UAAA,oBAAC,UAAD;GACE,KAAK;GACL,WAAW;GACX,mBAAiB;GACjB,UAAU;GACV,GAAI;GAEH;EACK,CAAA;CACmB,CAAA;AAEjC,CAAC;AAED,YAAY,cAAc;;;;;AAiB1B,MAAa,oBAAoB,MAAM,YAGpC,EAAE,WAAW,UAAU,GAAG,SAAS,QAAQ;CAC5C,MAAM,EAAE,YAAY,MAAM,WAAW,kBAAkB;CAEvD,OACE,qBAAC,OAAD;EACO;EACL,WAAW,WAAW,4BAA4B,SAAS;EAC3D,GAAI;EAHN,UAAA,CAKG,UACD,oBAAC,QAAD;GACE,SAAQ;GACR,MAAK;GACL,UAAA;GACA,SAAS;GACT,WAAW,oBAAC,MAAD;IAAM,MAAK;IAAI,eAAA;GAAa,CAAA;GACxC,UAAA;EAEO,CAAA,CACL;;AAET,CAAC;AAED,kBAAkB,cAAc;;;;;AAuBhC,MAAa,qBAAqB,MAAM,YAGrC,EAAE,WAAW,QAAQ,GAAG,UAAU,GAAG,SAAS,QAAQ;CACvD,MAAM,EAAE,cAAc,MAAM,WAAW,kBAAkB;CACzD,MAAM,MAAM,IAAI;CAEhB,OACE,oBAAC,KAAD;EACO;EACL,IAAI;EACJ,WAAW,WAAW,4BAA4B,SAAS;EAC3D,GAAI;EAEH;CACE,CAAA;AAET,CAAC;AAED,mBAAmB,cAAc;;;;;AAiBjC,MAAa,kBAAkB,MAAM,YAGlC,EAAE,WAAW,UAAU,GAAG,SAAS,QAAQ;CAC5C,OACE,oBAAC,OAAD;EACO;EACL,WAAW,WAAW,0BAA0B,SAAS;EACzD,GAAI;EAEH;CACE,CAAA;AAET,CAAC;AAED,gBAAgB,cAAc;;;;;AAiB9B,MAAa,oBAAoB,MAAM,YAGpC,EAAE,WAAW,UAAU,GAAG,SAAS,QAAQ;CAC5C,OACE,oBAAC,OAAD;EACO;EACL,WAAW,WAAW,4BAA4B,SAAS;EAC3D,GAAI;EAEH;CACE,CAAA;AAET,CAAC;AAED,kBAAkB,cAAc"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { ModalDialog, ModalDialogBody, ModalDialogBodyProps, ModalDialogFooter, ModalDialogFooterProps, ModalDialogHeader, ModalDialogHeaderProps, ModalDialogHeading, ModalDialogHeadingProps, ModalDialogProps } from "./ModalDialog.mjs";
|
|
2
|
+
export { ModalDialog, ModalDialogBody, type ModalDialogBodyProps, ModalDialogFooter, type ModalDialogFooterProps, ModalDialogHeader, type ModalDialogHeaderProps, ModalDialogHeading, type ModalDialogHeadingProps, type ModalDialogProps };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
//#region src/Note/Note.d.ts
|
|
3
|
+
type NoteVariant = 'neutral' | 'info' | 'positive' | 'negative' | 'warning';
|
|
4
|
+
type NoteAs = 'div' | 'aside' | 'nav' | 'section';
|
|
5
|
+
interface NoteProps extends React.HTMLAttributes<HTMLElement> {
|
|
6
|
+
/**
|
|
7
|
+
* HTML-element — ontkoppelt semantiek van visuele stijl
|
|
8
|
+
* @default 'div'
|
|
9
|
+
*/
|
|
10
|
+
as?: NoteAs;
|
|
11
|
+
/**
|
|
12
|
+
* Semantische variant die de signaalkleur bepaalt
|
|
13
|
+
* @default 'neutral'
|
|
14
|
+
*/
|
|
15
|
+
variant?: NoteVariant;
|
|
16
|
+
/**
|
|
17
|
+
* Optionele heading-tekst (renders als `<Heading appearance="heading-3">`)
|
|
18
|
+
*/
|
|
19
|
+
heading?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Semantisch heading-niveau — bepaalt het HTML-element (h1–h6)
|
|
22
|
+
* @default 3
|
|
23
|
+
*/
|
|
24
|
+
headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
25
|
+
/**
|
|
26
|
+
* Icoon vóór de heading.
|
|
27
|
+
* - `undefined` (default) — aanbevolen icoon per variant
|
|
28
|
+
* - `null` — geen icoon
|
|
29
|
+
* - `ReactNode` — aangepast icoon
|
|
30
|
+
*/
|
|
31
|
+
iconStart?: React.ReactNode;
|
|
32
|
+
/**
|
|
33
|
+
* Visueel verborgen tekst die de variant benoemt voor screenreadergebruikers
|
|
34
|
+
* (inclusief scheidingsteken en spatie). Komt vóór de heading, of vóór de
|
|
35
|
+
* content als er geen heading is.
|
|
36
|
+
* - `undefined` (default) — standaardtekst per variant:
|
|
37
|
+
* `''` (neutral) / `'Informatie: '` / `'Succes: '` / `'Foutmelding: '` / `'Let op: '`
|
|
38
|
+
* - `''` — geen variant-label (bijv. als de heading de variant al benoemt)
|
|
39
|
+
* - `string` — eigen tekst, bijv. voor een andere taal
|
|
40
|
+
*/
|
|
41
|
+
variantLabel?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Body-content: tekst, lijst, links, etc.
|
|
44
|
+
*/
|
|
45
|
+
children?: React.ReactNode;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Note component
|
|
49
|
+
* Visueel uitgelicht bericht voor aanvullende of belangrijke informatie.
|
|
50
|
+
* Passieve tegenhanger van Alert — geen live region, wordt alleen voorgelezen bij navigatie.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```tsx
|
|
54
|
+
* // Neutral (default), inline tip
|
|
55
|
+
* <Note heading="Let op">
|
|
56
|
+
* <Paragraph>Aanvullende informatie over dit onderwerp.</Paragraph>
|
|
57
|
+
* </Note>
|
|
58
|
+
*
|
|
59
|
+
* // Info variant
|
|
60
|
+
* <Note variant="info" heading="Wist je dat...">
|
|
61
|
+
* <Paragraph>Extra context.</Paragraph>
|
|
62
|
+
* </Note>
|
|
63
|
+
*
|
|
64
|
+
* // Zonder heading — icoon overspant beide rijen
|
|
65
|
+
* <Note variant="warning">
|
|
66
|
+
* <Paragraph>Dit heeft gevolgen voor uw aanvraag.</Paragraph>
|
|
67
|
+
* </Note>
|
|
68
|
+
*
|
|
69
|
+
* // as="aside" — echt aanvullende content
|
|
70
|
+
* <Note as="aside" variant="info" heading="Achtergrondinformatie">
|
|
71
|
+
* <Paragraph>Meer context.</Paragraph>
|
|
72
|
+
* </Note>
|
|
73
|
+
*
|
|
74
|
+
* // as="nav" — eigenstandige navigatiesectie (niet voor een pagina-inhoudsopgave: gebruik TableOfContents)
|
|
75
|
+
* <Note as="nav" variant="neutral" heading="Gerelateerde pagina's" headingLevel={2}>
|
|
76
|
+
* <UnorderedList>
|
|
77
|
+
* <li><Link href="/gerelateerd-1">Gerelateerde pagina 1</Link></li>
|
|
78
|
+
* </UnorderedList>
|
|
79
|
+
* </Note>
|
|
80
|
+
*
|
|
81
|
+
* // Icoon weglaten
|
|
82
|
+
* <Note variant="info" heading="Opmerking" iconStart={null}>
|
|
83
|
+
* <Paragraph>Zonder icoon.</Paragraph>
|
|
84
|
+
* </Note>
|
|
85
|
+
*
|
|
86
|
+
* // Variant-label onderdrukken (heading benoemt de variant al)
|
|
87
|
+
* <Note variant="warning" heading="Waarschuwing" variantLabel="">
|
|
88
|
+
* <Paragraph>Dit heeft gevolgen voor uw aanvraag.</Paragraph>
|
|
89
|
+
* </Note>
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
declare const Note: React.ForwardRefExoticComponent<NoteProps & React.RefAttributes<HTMLElement>>;
|
|
93
|
+
//#endregion
|
|
94
|
+
export { Note, NoteAs, NoteProps, NoteVariant };
|
|
95
|
+
//# sourceMappingURL=Note.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Note.d.mts","names":[],"sources":["../../src/Note/Note.tsx"],"mappings":";;KAMY;KAMA;UAkBK,kBAAkB,MAAM,eAAe;;;;;EAKtD,KAAK;;;;;EAML,UAAU;;;;EAKV;;;;;EAMA;;;;;;;EAQA,YAAY,MAAM;;;;;;;;;;EAWlB;;;;EAKA,WAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgDN,MAAI,MAAA,0BAAA,YAAA,MAAA,cAAA"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Heading } from "../Heading/Heading2.mjs";
|
|
2
|
+
import { Icon } from "../Icon/Icon2.mjs";
|
|
3
|
+
/* empty css */
|
|
4
|
+
import React, { useId } from "react";
|
|
5
|
+
import { classNames } from "@dsn-starter-kit/core";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
//#region src/Note/Note.tsx
|
|
8
|
+
const PREFERRED_ICONS = {
|
|
9
|
+
neutral: "info-circle",
|
|
10
|
+
info: "info-circle",
|
|
11
|
+
positive: "circle-check",
|
|
12
|
+
negative: "exclamation-circle",
|
|
13
|
+
warning: "alert-triangle"
|
|
14
|
+
};
|
|
15
|
+
const VARIANT_LABELS = {
|
|
16
|
+
neutral: "",
|
|
17
|
+
info: "Informatie: ",
|
|
18
|
+
positive: "Succes: ",
|
|
19
|
+
negative: "Foutmelding: ",
|
|
20
|
+
warning: "Let op: "
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Note component
|
|
24
|
+
* Visueel uitgelicht bericht voor aanvullende of belangrijke informatie.
|
|
25
|
+
* Passieve tegenhanger van Alert — geen live region, wordt alleen voorgelezen bij navigatie.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```tsx
|
|
29
|
+
* // Neutral (default), inline tip
|
|
30
|
+
* <Note heading="Let op">
|
|
31
|
+
* <Paragraph>Aanvullende informatie over dit onderwerp.</Paragraph>
|
|
32
|
+
* </Note>
|
|
33
|
+
*
|
|
34
|
+
* // Info variant
|
|
35
|
+
* <Note variant="info" heading="Wist je dat...">
|
|
36
|
+
* <Paragraph>Extra context.</Paragraph>
|
|
37
|
+
* </Note>
|
|
38
|
+
*
|
|
39
|
+
* // Zonder heading — icoon overspant beide rijen
|
|
40
|
+
* <Note variant="warning">
|
|
41
|
+
* <Paragraph>Dit heeft gevolgen voor uw aanvraag.</Paragraph>
|
|
42
|
+
* </Note>
|
|
43
|
+
*
|
|
44
|
+
* // as="aside" — echt aanvullende content
|
|
45
|
+
* <Note as="aside" variant="info" heading="Achtergrondinformatie">
|
|
46
|
+
* <Paragraph>Meer context.</Paragraph>
|
|
47
|
+
* </Note>
|
|
48
|
+
*
|
|
49
|
+
* // as="nav" — eigenstandige navigatiesectie (niet voor een pagina-inhoudsopgave: gebruik TableOfContents)
|
|
50
|
+
* <Note as="nav" variant="neutral" heading="Gerelateerde pagina's" headingLevel={2}>
|
|
51
|
+
* <UnorderedList>
|
|
52
|
+
* <li><Link href="/gerelateerd-1">Gerelateerde pagina 1</Link></li>
|
|
53
|
+
* </UnorderedList>
|
|
54
|
+
* </Note>
|
|
55
|
+
*
|
|
56
|
+
* // Icoon weglaten
|
|
57
|
+
* <Note variant="info" heading="Opmerking" iconStart={null}>
|
|
58
|
+
* <Paragraph>Zonder icoon.</Paragraph>
|
|
59
|
+
* </Note>
|
|
60
|
+
*
|
|
61
|
+
* // Variant-label onderdrukken (heading benoemt de variant al)
|
|
62
|
+
* <Note variant="warning" heading="Waarschuwing" variantLabel="">
|
|
63
|
+
* <Paragraph>Dit heeft gevolgen voor uw aanvraag.</Paragraph>
|
|
64
|
+
* </Note>
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
const Note = React.forwardRef(({ as: As = "div", className, variant = "neutral", heading, headingLevel = 3, iconStart, variantLabel, children, ...props }, ref) => {
|
|
68
|
+
const headingId = useId();
|
|
69
|
+
const noIcon = iconStart === null;
|
|
70
|
+
const noHeading = !heading;
|
|
71
|
+
const resolvedVariantLabel = variantLabel ?? VARIANT_LABELS[variant];
|
|
72
|
+
const resolvedIcon = iconStart === void 0 ? /* @__PURE__ */ jsx(Icon, {
|
|
73
|
+
name: PREFERRED_ICONS[variant],
|
|
74
|
+
size: "xl",
|
|
75
|
+
"aria-hidden": true
|
|
76
|
+
}) : iconStart;
|
|
77
|
+
const classes = classNames("dsn-note", variant !== "neutral" && `dsn-note--${variant}`, noHeading && "dsn-note--no-heading", className);
|
|
78
|
+
const isLandmark = As === "nav" || As === "aside" || As === "section";
|
|
79
|
+
const labelledBy = isLandmark && heading && !props["aria-label"] && !props["aria-labelledby"] ? headingId : void 0;
|
|
80
|
+
return /* @__PURE__ */ jsxs(As, {
|
|
81
|
+
ref,
|
|
82
|
+
className: classes,
|
|
83
|
+
"aria-labelledby": labelledBy,
|
|
84
|
+
...props,
|
|
85
|
+
children: [
|
|
86
|
+
!noIcon && /* @__PURE__ */ jsx("span", {
|
|
87
|
+
className: "dsn-note__icon",
|
|
88
|
+
"aria-hidden": true,
|
|
89
|
+
children: resolvedIcon
|
|
90
|
+
}),
|
|
91
|
+
heading && /* @__PURE__ */ jsxs(Heading, {
|
|
92
|
+
level: headingLevel,
|
|
93
|
+
appearance: "heading-3",
|
|
94
|
+
className: "dsn-note__heading",
|
|
95
|
+
id: isLandmark ? headingId : void 0,
|
|
96
|
+
children: [resolvedVariantLabel && /* @__PURE__ */ jsx("span", {
|
|
97
|
+
className: "dsn-visually-hidden",
|
|
98
|
+
children: resolvedVariantLabel
|
|
99
|
+
}), heading]
|
|
100
|
+
}),
|
|
101
|
+
noHeading && resolvedVariantLabel && /* @__PURE__ */ jsx("span", {
|
|
102
|
+
className: "dsn-visually-hidden",
|
|
103
|
+
children: resolvedVariantLabel
|
|
104
|
+
}),
|
|
105
|
+
children && /* @__PURE__ */ jsx("div", {
|
|
106
|
+
className: "dsn-note__content",
|
|
107
|
+
children
|
|
108
|
+
})
|
|
109
|
+
]
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
Note.displayName = "Note";
|
|
113
|
+
//#endregion
|
|
114
|
+
export { Note };
|
|
115
|
+
|
|
116
|
+
//# sourceMappingURL=Note2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Note2.mjs","names":[],"sources":["../../src/Note/Note.tsx"],"sourcesContent":["import React, { useId } from 'react';\nimport { classNames } from '@dsn-starter-kit/core';\nimport { Icon } from '../Icon';\nimport { Heading } from '../Heading';\nimport './Note.css';\n\nexport type NoteVariant =\n | 'neutral'\n | 'info'\n | 'positive'\n | 'negative'\n | 'warning';\nexport type NoteAs = 'div' | 'aside' | 'nav' | 'section';\n\nconst PREFERRED_ICONS: Record<NoteVariant, string> = {\n neutral: 'info-circle',\n info: 'info-circle',\n positive: 'circle-check',\n negative: 'exclamation-circle',\n warning: 'alert-triangle',\n};\n\nconst VARIANT_LABELS: Record<NoteVariant, string> = {\n neutral: '',\n info: 'Informatie: ',\n positive: 'Succes: ',\n negative: 'Foutmelding: ',\n warning: 'Let op: ',\n};\n\nexport interface NoteProps extends React.HTMLAttributes<HTMLElement> {\n /**\n * HTML-element — ontkoppelt semantiek van visuele stijl\n * @default 'div'\n */\n as?: NoteAs;\n\n /**\n * Semantische variant die de signaalkleur bepaalt\n * @default 'neutral'\n */\n variant?: NoteVariant;\n\n /**\n * Optionele heading-tekst (renders als `<Heading appearance=\"heading-3\">`)\n */\n heading?: string;\n\n /**\n * Semantisch heading-niveau — bepaalt het HTML-element (h1–h6)\n * @default 3\n */\n headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;\n\n /**\n * Icoon vóór de heading.\n * - `undefined` (default) — aanbevolen icoon per variant\n * - `null` — geen icoon\n * - `ReactNode` — aangepast icoon\n */\n iconStart?: React.ReactNode;\n\n /**\n * Visueel verborgen tekst die de variant benoemt voor screenreadergebruikers\n * (inclusief scheidingsteken en spatie). Komt vóór de heading, of vóór de\n * content als er geen heading is.\n * - `undefined` (default) — standaardtekst per variant:\n * `''` (neutral) / `'Informatie: '` / `'Succes: '` / `'Foutmelding: '` / `'Let op: '`\n * - `''` — geen variant-label (bijv. als de heading de variant al benoemt)\n * - `string` — eigen tekst, bijv. voor een andere taal\n */\n variantLabel?: string;\n\n /**\n * Body-content: tekst, lijst, links, etc.\n */\n children?: React.ReactNode;\n}\n\n/**\n * Note component\n * Visueel uitgelicht bericht voor aanvullende of belangrijke informatie.\n * Passieve tegenhanger van Alert — geen live region, wordt alleen voorgelezen bij navigatie.\n *\n * @example\n * ```tsx\n * // Neutral (default), inline tip\n * <Note heading=\"Let op\">\n * <Paragraph>Aanvullende informatie over dit onderwerp.</Paragraph>\n * </Note>\n *\n * // Info variant\n * <Note variant=\"info\" heading=\"Wist je dat...\">\n * <Paragraph>Extra context.</Paragraph>\n * </Note>\n *\n * // Zonder heading — icoon overspant beide rijen\n * <Note variant=\"warning\">\n * <Paragraph>Dit heeft gevolgen voor uw aanvraag.</Paragraph>\n * </Note>\n *\n * // as=\"aside\" — echt aanvullende content\n * <Note as=\"aside\" variant=\"info\" heading=\"Achtergrondinformatie\">\n * <Paragraph>Meer context.</Paragraph>\n * </Note>\n *\n * // as=\"nav\" — eigenstandige navigatiesectie (niet voor een pagina-inhoudsopgave: gebruik TableOfContents)\n * <Note as=\"nav\" variant=\"neutral\" heading=\"Gerelateerde pagina's\" headingLevel={2}>\n * <UnorderedList>\n * <li><Link href=\"/gerelateerd-1\">Gerelateerde pagina 1</Link></li>\n * </UnorderedList>\n * </Note>\n *\n * // Icoon weglaten\n * <Note variant=\"info\" heading=\"Opmerking\" iconStart={null}>\n * <Paragraph>Zonder icoon.</Paragraph>\n * </Note>\n *\n * // Variant-label onderdrukken (heading benoemt de variant al)\n * <Note variant=\"warning\" heading=\"Waarschuwing\" variantLabel=\"\">\n * <Paragraph>Dit heeft gevolgen voor uw aanvraag.</Paragraph>\n * </Note>\n * ```\n */\nexport const Note = React.forwardRef<HTMLElement, NoteProps>(\n (\n {\n as: As = 'div',\n className,\n variant = 'neutral',\n heading,\n headingLevel = 3,\n iconStart,\n variantLabel,\n children,\n ...props\n },\n ref\n ) => {\n const headingId = useId();\n const noIcon = iconStart === null;\n const noHeading = !heading;\n const resolvedVariantLabel = variantLabel ?? VARIANT_LABELS[variant];\n\n const resolvedIcon =\n iconStart === undefined ? (\n <Icon\n name={PREFERRED_ICONS[variant] as Parameters<typeof Icon>[0]['name']}\n size=\"xl\"\n aria-hidden\n />\n ) : (\n iconStart\n );\n\n const classes = classNames(\n 'dsn-note',\n variant !== 'neutral' && `dsn-note--${variant}`,\n noHeading && 'dsn-note--no-heading',\n className\n );\n\n // For landmark elements with a heading, add aria-labelledby automatically\n const isLandmark = As === 'nav' || As === 'aside' || As === 'section';\n const labelledBy =\n isLandmark && heading && !props['aria-label'] && !props['aria-labelledby']\n ? headingId\n : undefined;\n\n return (\n <As\n ref={ref as React.Ref<HTMLDivElement>}\n className={classes}\n aria-labelledby={labelledBy}\n {...props}\n >\n {!noIcon && (\n <span className=\"dsn-note__icon\" aria-hidden>\n {resolvedIcon}\n </span>\n )}\n {heading && (\n <Heading\n level={headingLevel}\n appearance=\"heading-3\"\n className=\"dsn-note__heading\"\n id={isLandmark ? headingId : undefined}\n >\n {resolvedVariantLabel && (\n <span className=\"dsn-visually-hidden\">\n {resolvedVariantLabel}\n </span>\n )}\n {heading}\n </Heading>\n )}\n {noHeading && resolvedVariantLabel && (\n <span className=\"dsn-visually-hidden\">{resolvedVariantLabel}</span>\n )}\n {children && <div className=\"dsn-note__content\">{children}</div>}\n </As>\n );\n }\n);\n\nNote.displayName = 'Note';\n"],"mappings":";;;;;;;AAcA,MAAM,kBAA+C;CACnD,SAAS;CACT,MAAM;CACN,UAAU;CACV,UAAU;CACV,SAAS;AACX;AAEA,MAAM,iBAA8C;CAClD,SAAS;CACT,MAAM;CACN,UAAU;CACV,UAAU;CACV,SAAS;AACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgGA,MAAa,OAAO,MAAM,YAEtB,EACE,IAAI,KAAK,OACT,WACA,UAAU,WACV,SACA,eAAe,GACf,WACA,cACA,UACA,GAAG,SAEL,QACG;CACH,MAAM,YAAY,MAAM;CACxB,MAAM,SAAS,cAAc;CAC7B,MAAM,YAAY,CAAC;CACnB,MAAM,uBAAuB,gBAAgB,eAAe;CAE5D,MAAM,eACJ,cAAc,KAAA,IACZ,oBAAC,MAAD;EACE,MAAM,gBAAgB;EACtB,MAAK;EACL,eAAA;CACD,CAAA,IAED;CAGJ,MAAM,UAAU,WACd,YACA,YAAY,aAAa,aAAa,WACtC,aAAa,wBACb,SACF;CAGA,MAAM,aAAa,OAAO,SAAS,OAAO,WAAW,OAAO;CAC5D,MAAM,aACJ,cAAc,WAAW,CAAC,MAAM,iBAAiB,CAAC,MAAM,qBACpD,YACA,KAAA;CAEN,OACE,qBAAC,IAAD;EACO;EACL,WAAW;EACX,mBAAiB;EACjB,GAAI;EAJN,UAAA;GAMG,CAAC,UACA,oBAAC,QAAD;IAAM,WAAU;IAAiB,eAAA;IAC9B,UAAA;GACG,CAAA;GAEP,WACC,qBAAC,SAAD;IACE,OAAO;IACP,YAAW;IACX,WAAU;IACV,IAAI,aAAa,YAAY,KAAA;IAJ/B,UAAA,CAMG,wBACC,oBAAC,QAAD;KAAM,WAAU;KACb,UAAA;IACG,CAAA,GAEP,OACM;;GAEV,aAAa,wBACZ,oBAAC,QAAD;IAAM,WAAU;IAAuB,UAAA;GAA2B,CAAA;GAEnE,YAAY,oBAAC,OAAD;IAAK,WAAU;IAAqB;GAAc,CAAA;EAC7D;;AAER,CACF;AAEA,KAAK,cAAc"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
//#region src/NumberBadge/NumberBadge.d.ts
|
|
3
|
+
type NumberBadgeVariant = 'negative' | 'positive' | 'warning' | 'info' | 'neutral';
|
|
4
|
+
interface NumberBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
5
|
+
/**
|
|
6
|
+
* Signaalkleur van de badge
|
|
7
|
+
* @default 'negative'
|
|
8
|
+
*/
|
|
9
|
+
variant?: NumberBadgeVariant;
|
|
10
|
+
/**
|
|
11
|
+
* Als `children` als getal groter is dan `maxCount`, wordt `{maxCount}+` getoond.
|
|
12
|
+
* Heeft geen effect als `children` geen getal is.
|
|
13
|
+
*/
|
|
14
|
+
maxCount?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* NumberBadge component
|
|
18
|
+
* Compact inline-element dat een getal toont — zoals het aantal ongelezen berichten
|
|
19
|
+
* of openstaande taken. Geplaatst binnen een Button of Menu-item, naast het label.
|
|
20
|
+
*
|
|
21
|
+
* Altijd aria-hidden="true" — context via dsn-visually-hidden in de parent.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```tsx
|
|
25
|
+
* // Basis gebruik — inline in een Button
|
|
26
|
+
* <Button variant="subtle" iconStart={<Icon name="inbox" aria-hidden />}>
|
|
27
|
+
* Inbox
|
|
28
|
+
* <NumberBadge variant="negative">5</NumberBadge>
|
|
29
|
+
* </Button>
|
|
30
|
+
*
|
|
31
|
+
* // Afgekapt getal — toont "99+" als count > 99
|
|
32
|
+
* <Button variant="subtle" iconStart={<Icon name="inbox" aria-hidden />}>
|
|
33
|
+
* <span>
|
|
34
|
+
* Inbox
|
|
35
|
+
* <span className="dsn-visually-hidden">, 128 ongelezen berichten</span>
|
|
36
|
+
* </span>
|
|
37
|
+
* <NumberBadge variant="negative" maxCount={99}>128</NumberBadge>
|
|
38
|
+
* </Button>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
declare const NumberBadge: React.ForwardRefExoticComponent<NumberBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
42
|
+
//#endregion
|
|
43
|
+
export { NumberBadge, NumberBadgeProps, NumberBadgeVariant };
|
|
44
|
+
//# sourceMappingURL=NumberBadge.d.mts.map
|