@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,37 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
//#region src/Paragraph/Paragraph.d.ts
|
|
3
|
+
type ParagraphVariant = 'default' | 'lead' | 'small-print';
|
|
4
|
+
interface ParagraphProps extends React.HTMLAttributes<HTMLParagraphElement> {
|
|
5
|
+
/**
|
|
6
|
+
* Paragraph visual style
|
|
7
|
+
* @default 'default'
|
|
8
|
+
*/
|
|
9
|
+
variant?: ParagraphVariant;
|
|
10
|
+
/**
|
|
11
|
+
* Additional CSS class names
|
|
12
|
+
*/
|
|
13
|
+
className?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Paragraph content
|
|
16
|
+
*/
|
|
17
|
+
children?: React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Paragraph component with multiple variants
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* // Basic usage
|
|
25
|
+
* <Paragraph>Body text content</Paragraph>
|
|
26
|
+
*
|
|
27
|
+
* // Lead paragraph
|
|
28
|
+
* <Paragraph variant="lead">Introductory text</Paragraph>
|
|
29
|
+
*
|
|
30
|
+
* // Small print
|
|
31
|
+
* <Paragraph variant="small-print">Terms and conditions apply.</Paragraph>
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
declare const Paragraph: React.ForwardRefExoticComponent<ParagraphProps & React.RefAttributes<HTMLParagraphElement>>;
|
|
35
|
+
//#endregion
|
|
36
|
+
export { Paragraph, ParagraphProps, ParagraphVariant };
|
|
37
|
+
//# sourceMappingURL=Paragraph.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Paragraph.d.mts","names":[],"sources":["../../src/Paragraph/Paragraph.tsx"],"mappings":";;KAIY;UAEK,uBAAuB,MAAM,eAAe;;;;;EAK3D,UAAU;;;;EAKV;;;;EAKA,WAAW,MAAM;;;;;;;;;;;;;;;;;cAkBN,WAAS,MAAA,0BAAA,iBAAA,MAAA,cAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "@dsn-starter-kit/core";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/Paragraph/Paragraph.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Paragraph component with multiple variants
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* // Basic usage
|
|
12
|
+
* <Paragraph>Body text content</Paragraph>
|
|
13
|
+
*
|
|
14
|
+
* // Lead paragraph
|
|
15
|
+
* <Paragraph variant="lead">Introductory text</Paragraph>
|
|
16
|
+
*
|
|
17
|
+
* // Small print
|
|
18
|
+
* <Paragraph variant="small-print">Terms and conditions apply.</Paragraph>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
const Paragraph = React.forwardRef(({ variant = "default", className, children, ...props }, ref) => {
|
|
22
|
+
const classes = classNames("dsn-paragraph", variant !== "default" && `dsn-paragraph--${variant}`, className);
|
|
23
|
+
return /* @__PURE__ */ jsx("p", {
|
|
24
|
+
ref,
|
|
25
|
+
className: classes,
|
|
26
|
+
...props,
|
|
27
|
+
children
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
Paragraph.displayName = "Paragraph";
|
|
31
|
+
//#endregion
|
|
32
|
+
export { Paragraph };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=Paragraph2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Paragraph2.mjs","names":[],"sources":["../../src/Paragraph/Paragraph.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames } from '@dsn-starter-kit/core';\nimport './Paragraph.css';\n\nexport type ParagraphVariant = 'default' | 'lead' | 'small-print';\n\nexport interface ParagraphProps extends React.HTMLAttributes<HTMLParagraphElement> {\n /**\n * Paragraph visual style\n * @default 'default'\n */\n variant?: ParagraphVariant;\n\n /**\n * Additional CSS class names\n */\n className?: string;\n\n /**\n * Paragraph content\n */\n children?: React.ReactNode;\n}\n\n/**\n * Paragraph component with multiple variants\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Paragraph>Body text content</Paragraph>\n *\n * // Lead paragraph\n * <Paragraph variant=\"lead\">Introductory text</Paragraph>\n *\n * // Small print\n * <Paragraph variant=\"small-print\">Terms and conditions apply.</Paragraph>\n * ```\n */\nexport const Paragraph = React.forwardRef<HTMLParagraphElement, ParagraphProps>(\n ({ variant = 'default', className, children, ...props }, ref) => {\n const classes = classNames(\n 'dsn-paragraph',\n variant !== 'default' && `dsn-paragraph--${variant}`,\n className\n );\n\n return (\n <p ref={ref} className={classes} {...props}>\n {children}\n </p>\n );\n }\n);\n\nParagraph.displayName = 'Paragraph';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuCA,MAAa,YAAY,MAAM,YAC5B,EAAE,UAAU,WAAW,WAAW,UAAU,GAAG,SAAS,QAAQ;CAC/D,MAAM,UAAU,WACd,iBACA,YAAY,aAAa,kBAAkB,WAC3C,SACF;CAEA,OACE,oBAAC,KAAD;EAAQ;EAAK,WAAW;EAAS,GAAI;EAClC;CACA,CAAA;AAEP,CACF;AAEA,UAAU,cAAc"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { FormControlWidth } from "@dsn-starter-kit/core";
|
|
3
|
+
//#region src/PasswordInput/PasswordInput.d.ts
|
|
4
|
+
type PasswordAutocomplete = 'current-password' | 'new-password' | 'off';
|
|
5
|
+
interface PasswordInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {
|
|
6
|
+
/**
|
|
7
|
+
* Autocomplete hint for password managers
|
|
8
|
+
* - 'current-password': voor inlogformulieren (default)
|
|
9
|
+
* - 'new-password': voor registratie- en wachtwoord wijzigformulieren
|
|
10
|
+
* - 'off': autocomplete uitschakelen
|
|
11
|
+
* @default 'current-password'
|
|
12
|
+
*/
|
|
13
|
+
passwordAutocomplete?: PasswordAutocomplete;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the input is in an invalid state
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
invalid?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Width variant for the input
|
|
21
|
+
* @default undefined (uses default max-width from form-control)
|
|
22
|
+
*/
|
|
23
|
+
width?: FormControlWidth;
|
|
24
|
+
/**
|
|
25
|
+
* Additional CSS class names
|
|
26
|
+
*/
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Password Input component
|
|
31
|
+
* Uses type="password" for secure text entry.
|
|
32
|
+
* Het tonen/verbergen van het wachtwoord is bewust niet ingebouwd in dit component —
|
|
33
|
+
* dat patroon wordt separaat gedefinieerd via een Button naast het invoerveld.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* // Login form (current password)
|
|
38
|
+
* <PasswordInput placeholder="Wachtwoord" />
|
|
39
|
+
*
|
|
40
|
+
* // Registration form (new password)
|
|
41
|
+
* <PasswordInput passwordAutocomplete="new-password" placeholder="Nieuw wachtwoord" />
|
|
42
|
+
*
|
|
43
|
+
* // With label
|
|
44
|
+
* <FormFieldLabel htmlFor="password">Wachtwoord</FormFieldLabel>
|
|
45
|
+
* <PasswordInput id="password" />
|
|
46
|
+
*
|
|
47
|
+
* // Invalid state
|
|
48
|
+
* <PasswordInput invalid aria-invalid="true" aria-describedby="error" />
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
declare const PasswordInput: React.ForwardRefExoticComponent<PasswordInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
52
|
+
//#endregion
|
|
53
|
+
export { PasswordAutocomplete, PasswordInput, PasswordInputProps };
|
|
54
|
+
//# sourceMappingURL=PasswordInput.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasswordInput.d.mts","names":[],"sources":["../../src/PasswordInput/PasswordInput.tsx"],"mappings":";;;KAIY;UAEK,2BAA2B,KAC1C,MAAM,oBAAoB;;;;;;;;EAU1B,uBAAuB;;;;;EAMvB;;;;;EAMA,QAAQ;;;;EAKR;;;;;;;;;;;;;;;;;;;;;;;;cAyBW,eAAa,MAAA,0BAAA,qBAAA,MAAA,cAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "@dsn-starter-kit/core";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/PasswordInput/PasswordInput.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Password Input component
|
|
8
|
+
* Uses type="password" for secure text entry.
|
|
9
|
+
* Het tonen/verbergen van het wachtwoord is bewust niet ingebouwd in dit component —
|
|
10
|
+
* dat patroon wordt separaat gedefinieerd via een Button naast het invoerveld.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* // Login form (current password)
|
|
15
|
+
* <PasswordInput placeholder="Wachtwoord" />
|
|
16
|
+
*
|
|
17
|
+
* // Registration form (new password)
|
|
18
|
+
* <PasswordInput passwordAutocomplete="new-password" placeholder="Nieuw wachtwoord" />
|
|
19
|
+
*
|
|
20
|
+
* // With label
|
|
21
|
+
* <FormFieldLabel htmlFor="password">Wachtwoord</FormFieldLabel>
|
|
22
|
+
* <PasswordInput id="password" />
|
|
23
|
+
*
|
|
24
|
+
* // Invalid state
|
|
25
|
+
* <PasswordInput invalid aria-invalid="true" aria-describedby="error" />
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
const PasswordInput = React.forwardRef(({ passwordAutocomplete = "current-password", className, invalid, width, autoComplete, ...props }, ref) => {
|
|
29
|
+
const classes = classNames("dsn-text-input", width && `dsn-text-input--width-${width}`, className);
|
|
30
|
+
return /* @__PURE__ */ jsx("input", {
|
|
31
|
+
ref,
|
|
32
|
+
type: "password",
|
|
33
|
+
className: classes,
|
|
34
|
+
autoComplete: autoComplete || passwordAutocomplete,
|
|
35
|
+
"aria-invalid": invalid || void 0,
|
|
36
|
+
...props
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
PasswordInput.displayName = "PasswordInput";
|
|
40
|
+
//#endregion
|
|
41
|
+
export { PasswordInput };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=PasswordInput.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasswordInput.mjs","names":[],"sources":["../../src/PasswordInput/PasswordInput.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames, FormControlWidth } from '@dsn-starter-kit/core';\nimport '../TextInput/TextInput.css';\n\nexport type PasswordAutocomplete = 'current-password' | 'new-password' | 'off';\n\nexport interface PasswordInputProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n 'type'\n> {\n /**\n * Autocomplete hint for password managers\n * - 'current-password': voor inlogformulieren (default)\n * - 'new-password': voor registratie- en wachtwoord wijzigformulieren\n * - 'off': autocomplete uitschakelen\n * @default 'current-password'\n */\n passwordAutocomplete?: PasswordAutocomplete;\n\n /**\n * Whether the input is in an invalid state\n * @default false\n */\n invalid?: boolean;\n\n /**\n * Width variant for the input\n * @default undefined (uses default max-width from form-control)\n */\n width?: FormControlWidth;\n\n /**\n * Additional CSS class names\n */\n className?: string;\n}\n\n/**\n * Password Input component\n * Uses type=\"password\" for secure text entry.\n * Het tonen/verbergen van het wachtwoord is bewust niet ingebouwd in dit component —\n * dat patroon wordt separaat gedefinieerd via een Button naast het invoerveld.\n *\n * @example\n * ```tsx\n * // Login form (current password)\n * <PasswordInput placeholder=\"Wachtwoord\" />\n *\n * // Registration form (new password)\n * <PasswordInput passwordAutocomplete=\"new-password\" placeholder=\"Nieuw wachtwoord\" />\n *\n * // With label\n * <FormFieldLabel htmlFor=\"password\">Wachtwoord</FormFieldLabel>\n * <PasswordInput id=\"password\" />\n *\n * // Invalid state\n * <PasswordInput invalid aria-invalid=\"true\" aria-describedby=\"error\" />\n * ```\n */\nexport const PasswordInput = React.forwardRef<\n HTMLInputElement,\n PasswordInputProps\n>(\n (\n {\n passwordAutocomplete = 'current-password',\n className,\n invalid,\n width,\n autoComplete,\n ...props\n },\n ref\n ) => {\n const classes = classNames(\n 'dsn-text-input',\n width && `dsn-text-input--width-${width}`,\n className\n );\n\n return (\n <input\n ref={ref}\n type=\"password\"\n className={classes}\n autoComplete={autoComplete || passwordAutocomplete}\n aria-invalid={invalid || undefined}\n {...props}\n />\n );\n }\n);\n\nPasswordInput.displayName = 'PasswordInput';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DA,MAAa,gBAAgB,MAAM,YAK/B,EACE,uBAAuB,oBACvB,WACA,SACA,OACA,cACA,GAAG,SAEL,QACG;CACH,MAAM,UAAU,WACd,kBACA,SAAS,yBAAyB,SAClC,SACF;CAEA,OACE,oBAAC,SAAD;EACO;EACL,MAAK;EACL,WAAW;EACX,cAAc,gBAAgB;EAC9B,gBAAc,WAAW,KAAA;EACzB,GAAI;CACL,CAAA;AAEL,CACF;AAEA,cAAc,cAAc"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
//#region src/Popover/Popover.d.ts
|
|
3
|
+
declare module 'react' {
|
|
4
|
+
interface HTMLAttributes<T> {
|
|
5
|
+
popover?: 'auto' | 'manual' | '' | undefined;
|
|
6
|
+
popoverTarget?: string | undefined;
|
|
7
|
+
popoverTargetAction?: 'hide' | 'show' | 'toggle' | undefined;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
declare global {
|
|
11
|
+
interface HTMLElement {
|
|
12
|
+
showPopover(): void;
|
|
13
|
+
hidePopover(): void;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
type Placement = 'top' | 'bottom' | 'start' | 'end';
|
|
17
|
+
interface PopoverProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
18
|
+
/**
|
|
19
|
+
* Bepaalt of de popover getoond wordt.
|
|
20
|
+
*/
|
|
21
|
+
isOpen: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Callback bij sluiten (Escape, klik buiten, sluitknop in header).
|
|
24
|
+
*/
|
|
25
|
+
onClose?: () => void;
|
|
26
|
+
/**
|
|
27
|
+
* Referentie naar het triggerelement voor positionering en focus-herstel.
|
|
28
|
+
*/
|
|
29
|
+
triggerRef: React.RefObject<HTMLElement>;
|
|
30
|
+
/**
|
|
31
|
+
* Gewenste plaatsing relatief aan het triggerelement.
|
|
32
|
+
* @default 'bottom'
|
|
33
|
+
*/
|
|
34
|
+
placement?: Placement;
|
|
35
|
+
/**
|
|
36
|
+
* Toegankelijke naam voor popovers zonder `PopoverHeader`/`PopoverHeading`.
|
|
37
|
+
* Gebruik `aria-labelledby` via context wanneer er wél een heading is.
|
|
38
|
+
*/
|
|
39
|
+
label?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Subcomponenten: `PopoverHeader`, `PopoverBody`, `PopoverFooter`
|
|
42
|
+
*/
|
|
43
|
+
children?: React.ReactNode;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Popover component
|
|
47
|
+
* Lichtgewicht, contextgebonden overlay verankerd aan een triggerelement.
|
|
48
|
+
*
|
|
49
|
+
* Gebaseerd op de HTML Popover API (`popover="auto"`) voor ingebakken
|
|
50
|
+
* light-dismiss en top-layer gedrag. Positionering via JavaScript.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```tsx
|
|
54
|
+
* const triggerRef = useRef<HTMLButtonElement>(null);
|
|
55
|
+
* const [isOpen, setIsOpen] = useState(false);
|
|
56
|
+
*
|
|
57
|
+
* <Button ref={triggerRef} onClick={() => setIsOpen(true)}>Opties</Button>
|
|
58
|
+
* <Popover isOpen={isOpen} onClose={() => setIsOpen(false)} triggerRef={triggerRef} label="Opties">
|
|
59
|
+
* <PopoverBody>
|
|
60
|
+
* <Menu>...</Menu>
|
|
61
|
+
* </PopoverBody>
|
|
62
|
+
* </Popover>
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
declare const Popover: React.ForwardRefExoticComponent<PopoverProps & React.RefAttributes<HTMLDivElement>>;
|
|
66
|
+
interface PopoverHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
67
|
+
/**
|
|
68
|
+
* Inhoud van de header — doorgaans een `PopoverHeading`.
|
|
69
|
+
* De sluitknop wordt automatisch geïnjecteerd.
|
|
70
|
+
*/
|
|
71
|
+
children?: React.ReactNode;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* PopoverHeader
|
|
75
|
+
* De headerstrook van de popover met heading en sluitknop.
|
|
76
|
+
*/
|
|
77
|
+
declare const PopoverHeader: React.ForwardRefExoticComponent<PopoverHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
78
|
+
interface PopoverHeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {
|
|
79
|
+
/**
|
|
80
|
+
* Semantisch heading-niveau. Kies op basis van documenthiërarchie.
|
|
81
|
+
* @default 2
|
|
82
|
+
*/
|
|
83
|
+
level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
84
|
+
/**
|
|
85
|
+
* De zichtbare heading-tekst.
|
|
86
|
+
*/
|
|
87
|
+
children?: React.ReactNode;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* PopoverHeading
|
|
91
|
+
* De heading van de popover. ID wordt automatisch gegenereerd voor aria-labelledby.
|
|
92
|
+
*/
|
|
93
|
+
declare const PopoverHeading: React.ForwardRefExoticComponent<PopoverHeadingProps & React.RefAttributes<HTMLHeadingElement>>;
|
|
94
|
+
interface PopoverBodyProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
95
|
+
/**
|
|
96
|
+
* De hoofdinhoud van de popover — willekeurige slot-content.
|
|
97
|
+
*/
|
|
98
|
+
children?: React.ReactNode;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* PopoverBody
|
|
102
|
+
* De inhoudssectie van de popover.
|
|
103
|
+
*/
|
|
104
|
+
declare const PopoverBody: React.ForwardRefExoticComponent<PopoverBodyProps & React.RefAttributes<HTMLDivElement>>;
|
|
105
|
+
interface PopoverFooterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
106
|
+
/**
|
|
107
|
+
* Actieknoppen of slotzin van de popover.
|
|
108
|
+
*/
|
|
109
|
+
children?: React.ReactNode;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* PopoverFooter
|
|
113
|
+
* De voettekst van de popover met actieknoppen.
|
|
114
|
+
*/
|
|
115
|
+
declare const PopoverFooter: React.ForwardRefExoticComponent<PopoverFooterProps & React.RefAttributes<HTMLDivElement>>;
|
|
116
|
+
//#endregion
|
|
117
|
+
export { Popover, PopoverBody, PopoverBodyProps, PopoverFooter, PopoverFooterProps, PopoverHeader, PopoverHeaderProps, PopoverHeading, PopoverHeadingProps, PopoverProps };
|
|
118
|
+
//# sourceMappingURL=Popover.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popover.d.mts","names":[],"sources":["../../src/Popover/Popover.tsx"],"mappings":";;;YAYY,eAAe;IACvB;IACA;IACA;;;QAQI;YACI;IACR;IACA;;;KAQC;UAwGY,qBAAqB,KACpC,MAAM,eAAe;;;;EAMrB;;;;EAKA;;;;EAKA,YAAY,MAAM,UAAU;;;;;EAM5B,YAAY;;;;;EAMZ;;;;EAKA,WAAW,MAAM;;;;;;;;;;;;;;;;;;;;;;cAuBN,SAAO,MAAA,0BAAA,eAAA,MAAA,cAAA;UAmIH,2BAA2B,MAAM,eAAe;;;;;EAK/D,WAAW,MAAM;;;;;;cAON,eAAa,MAAA,0BAAA,qBAAA,MAAA,cAAA;UAgCT,4BAA4B,MAAM,eAAe;;;;;EAKhE;;;;EAKA,WAAW,MAAM;;;;;;cAON,gBAAc,MAAA,0BAAA,sBAAA,MAAA,cAAA;UAyBV,yBAAyB,MAAM,eAAe;;;;EAI7D,WAAW,MAAM;;;;;;cAON,aAAW,MAAA,0BAAA,mBAAA,MAAA,cAAA;UAoBP,2BAA2B,MAAM,eAAe;;;;EAI/D,WAAW,MAAM;;;;;;cAON,eAAa,MAAA,0BAAA,qBAAA,MAAA,cAAA"}
|
|
@@ -0,0 +1,235 @@
|
|
|
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/Popover/Popover.tsx
|
|
8
|
+
const GAP = 4;
|
|
9
|
+
function positionPopover(popover, trigger, placement) {
|
|
10
|
+
const triggerRect = trigger.getBoundingClientRect();
|
|
11
|
+
const popoverRect = {
|
|
12
|
+
width: popover.offsetWidth,
|
|
13
|
+
height: popover.offsetHeight
|
|
14
|
+
};
|
|
15
|
+
const isRTL = document.documentElement.dir === "rtl" || getComputedStyle(trigger).direction === "rtl";
|
|
16
|
+
let top;
|
|
17
|
+
let left;
|
|
18
|
+
switch (placement) {
|
|
19
|
+
case "bottom":
|
|
20
|
+
top = triggerRect.bottom + GAP;
|
|
21
|
+
left = isRTL ? triggerRect.right - popoverRect.width : triggerRect.left;
|
|
22
|
+
break;
|
|
23
|
+
case "top":
|
|
24
|
+
top = triggerRect.top - popoverRect.height - GAP;
|
|
25
|
+
left = isRTL ? triggerRect.right - popoverRect.width : triggerRect.left;
|
|
26
|
+
break;
|
|
27
|
+
case "end":
|
|
28
|
+
top = triggerRect.top;
|
|
29
|
+
left = isRTL ? triggerRect.left - popoverRect.width - GAP : triggerRect.right + GAP;
|
|
30
|
+
break;
|
|
31
|
+
case "start":
|
|
32
|
+
top = triggerRect.top;
|
|
33
|
+
left = isRTL ? triggerRect.right + GAP : triggerRect.left - popoverRect.width - GAP;
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
top = triggerRect.bottom + GAP;
|
|
37
|
+
left = triggerRect.left;
|
|
38
|
+
}
|
|
39
|
+
const margin = 8;
|
|
40
|
+
left = Math.max(margin, Math.min(left, window.innerWidth - popoverRect.width - margin));
|
|
41
|
+
top = Math.max(margin, Math.min(top, window.innerHeight - popoverRect.height - margin));
|
|
42
|
+
popover.style.top = `${top}px`;
|
|
43
|
+
popover.style.left = `${left}px`;
|
|
44
|
+
popover.style.right = "auto";
|
|
45
|
+
popover.style.bottom = "auto";
|
|
46
|
+
}
|
|
47
|
+
function focusFirstInteractive(container) {
|
|
48
|
+
const selector = [
|
|
49
|
+
"button:not(:disabled)",
|
|
50
|
+
"a[href]",
|
|
51
|
+
"input:not(:disabled)",
|
|
52
|
+
"select:not(:disabled)",
|
|
53
|
+
"textarea:not(:disabled)",
|
|
54
|
+
"[tabindex]:not([tabindex=\"-1\"])"
|
|
55
|
+
].join(", ");
|
|
56
|
+
const first = container.querySelector(selector);
|
|
57
|
+
if (first) first.focus();
|
|
58
|
+
else container.focus();
|
|
59
|
+
}
|
|
60
|
+
const PopoverContext = React.createContext({ headingId: "" });
|
|
61
|
+
/**
|
|
62
|
+
* Popover component
|
|
63
|
+
* Lichtgewicht, contextgebonden overlay verankerd aan een triggerelement.
|
|
64
|
+
*
|
|
65
|
+
* Gebaseerd op de HTML Popover API (`popover="auto"`) voor ingebakken
|
|
66
|
+
* light-dismiss en top-layer gedrag. Positionering via JavaScript.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```tsx
|
|
70
|
+
* const triggerRef = useRef<HTMLButtonElement>(null);
|
|
71
|
+
* const [isOpen, setIsOpen] = useState(false);
|
|
72
|
+
*
|
|
73
|
+
* <Button ref={triggerRef} onClick={() => setIsOpen(true)}>Opties</Button>
|
|
74
|
+
* <Popover isOpen={isOpen} onClose={() => setIsOpen(false)} triggerRef={triggerRef} label="Opties">
|
|
75
|
+
* <PopoverBody>
|
|
76
|
+
* <Menu>...</Menu>
|
|
77
|
+
* </PopoverBody>
|
|
78
|
+
* </Popover>
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
const Popover = React.forwardRef(({ className, isOpen, onClose, triggerRef, placement = "bottom", label, children, ...props }, ref) => {
|
|
82
|
+
const internalRef = React.useRef(null);
|
|
83
|
+
const popoverRef = ref ?? internalRef;
|
|
84
|
+
const headingId = React.useId();
|
|
85
|
+
React.useEffect(() => {
|
|
86
|
+
const el = popoverRef.current;
|
|
87
|
+
if (!el) return;
|
|
88
|
+
if (isOpen) {
|
|
89
|
+
el.showPopover();
|
|
90
|
+
const trigger = triggerRef.current;
|
|
91
|
+
if (trigger) positionPopover(el, trigger, placement);
|
|
92
|
+
focusFirstInteractive(el);
|
|
93
|
+
} else try {
|
|
94
|
+
el.hidePopover();
|
|
95
|
+
} catch {}
|
|
96
|
+
}, [
|
|
97
|
+
isOpen,
|
|
98
|
+
placement,
|
|
99
|
+
triggerRef,
|
|
100
|
+
popoverRef
|
|
101
|
+
]);
|
|
102
|
+
React.useEffect(() => {
|
|
103
|
+
const trigger = triggerRef.current;
|
|
104
|
+
if (!trigger) return;
|
|
105
|
+
trigger.setAttribute("aria-expanded", isOpen ? "true" : "false");
|
|
106
|
+
return () => {
|
|
107
|
+
trigger.setAttribute("aria-expanded", "false");
|
|
108
|
+
};
|
|
109
|
+
}, [isOpen, triggerRef]);
|
|
110
|
+
const onCloseRef = React.useRef(onClose);
|
|
111
|
+
onCloseRef.current = onClose;
|
|
112
|
+
React.useEffect(() => {
|
|
113
|
+
const el = popoverRef.current;
|
|
114
|
+
if (!el) return;
|
|
115
|
+
const handleToggle = (event) => {
|
|
116
|
+
if (event.newState === "closed") {
|
|
117
|
+
onCloseRef.current?.();
|
|
118
|
+
triggerRef.current?.focus();
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
el.addEventListener("toggle", handleToggle);
|
|
122
|
+
return () => {
|
|
123
|
+
el.removeEventListener("toggle", handleToggle);
|
|
124
|
+
};
|
|
125
|
+
}, [triggerRef, popoverRef]);
|
|
126
|
+
React.useEffect(() => {
|
|
127
|
+
if (!isOpen) return;
|
|
128
|
+
const el = popoverRef.current;
|
|
129
|
+
if (!el) return;
|
|
130
|
+
const handlePointerDown = (event) => {
|
|
131
|
+
const target = event.target;
|
|
132
|
+
if (el.contains(target) || triggerRef.current?.contains(target)) return;
|
|
133
|
+
onCloseRef.current?.();
|
|
134
|
+
triggerRef.current?.focus();
|
|
135
|
+
};
|
|
136
|
+
document.addEventListener("pointerdown", handlePointerDown);
|
|
137
|
+
return () => {
|
|
138
|
+
document.removeEventListener("pointerdown", handlePointerDown);
|
|
139
|
+
};
|
|
140
|
+
}, [
|
|
141
|
+
isOpen,
|
|
142
|
+
triggerRef,
|
|
143
|
+
popoverRef
|
|
144
|
+
]);
|
|
145
|
+
const classes = classNames("dsn-popover", `dsn-popover--placement-${placement}`, className);
|
|
146
|
+
const ariaProps = label ? { "aria-label": label } : { "aria-labelledby": headingId };
|
|
147
|
+
return /* @__PURE__ */ jsx(PopoverContext.Provider, {
|
|
148
|
+
value: {
|
|
149
|
+
headingId,
|
|
150
|
+
onClose
|
|
151
|
+
},
|
|
152
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
153
|
+
ref: popoverRef,
|
|
154
|
+
popover: "auto",
|
|
155
|
+
className: classes,
|
|
156
|
+
role: "dialog",
|
|
157
|
+
"aria-modal": "false",
|
|
158
|
+
tabIndex: -1,
|
|
159
|
+
...ariaProps,
|
|
160
|
+
...props,
|
|
161
|
+
children
|
|
162
|
+
})
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
Popover.displayName = "Popover";
|
|
166
|
+
/**
|
|
167
|
+
* PopoverHeader
|
|
168
|
+
* De headerstrook van de popover met heading en sluitknop.
|
|
169
|
+
*/
|
|
170
|
+
const PopoverHeader = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
171
|
+
const { onClose } = React.useContext(PopoverContext);
|
|
172
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
173
|
+
ref,
|
|
174
|
+
className: classNames("dsn-popover__header", className),
|
|
175
|
+
...props,
|
|
176
|
+
children: [children, /* @__PURE__ */ jsx(Button, {
|
|
177
|
+
variant: "subtle",
|
|
178
|
+
size: "small",
|
|
179
|
+
iconOnly: true,
|
|
180
|
+
onClick: onClose,
|
|
181
|
+
iconStart: /* @__PURE__ */ jsx(Icon, {
|
|
182
|
+
name: "x",
|
|
183
|
+
"aria-hidden": true
|
|
184
|
+
}),
|
|
185
|
+
children: "Sluiten"
|
|
186
|
+
})]
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
PopoverHeader.displayName = "PopoverHeader";
|
|
190
|
+
/**
|
|
191
|
+
* PopoverHeading
|
|
192
|
+
* De heading van de popover. ID wordt automatisch gegenereerd voor aria-labelledby.
|
|
193
|
+
*/
|
|
194
|
+
const PopoverHeading = React.forwardRef(({ className, level = 2, children, ...props }, ref) => {
|
|
195
|
+
const { headingId } = React.useContext(PopoverContext);
|
|
196
|
+
const Tag = `h${level}`;
|
|
197
|
+
return /* @__PURE__ */ jsx(Tag, {
|
|
198
|
+
ref,
|
|
199
|
+
id: headingId,
|
|
200
|
+
className: classNames("dsn-popover-heading", className),
|
|
201
|
+
...props,
|
|
202
|
+
children
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
PopoverHeading.displayName = "PopoverHeading";
|
|
206
|
+
/**
|
|
207
|
+
* PopoverBody
|
|
208
|
+
* De inhoudssectie van de popover.
|
|
209
|
+
*/
|
|
210
|
+
const PopoverBody = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
211
|
+
return /* @__PURE__ */ jsx("div", {
|
|
212
|
+
ref,
|
|
213
|
+
className: classNames("dsn-popover__body", className),
|
|
214
|
+
...props,
|
|
215
|
+
children
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
PopoverBody.displayName = "PopoverBody";
|
|
219
|
+
/**
|
|
220
|
+
* PopoverFooter
|
|
221
|
+
* De voettekst van de popover met actieknoppen.
|
|
222
|
+
*/
|
|
223
|
+
const PopoverFooter = React.forwardRef(({ className, children, ...props }, ref) => {
|
|
224
|
+
return /* @__PURE__ */ jsx("div", {
|
|
225
|
+
ref,
|
|
226
|
+
className: classNames("dsn-popover__footer", className),
|
|
227
|
+
...props,
|
|
228
|
+
children
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
PopoverFooter.displayName = "PopoverFooter";
|
|
232
|
+
//#endregion
|
|
233
|
+
export { Popover, PopoverBody, PopoverFooter, PopoverHeader, PopoverHeading };
|
|
234
|
+
|
|
235
|
+
//# sourceMappingURL=Popover2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Popover2.mjs","names":["toggleEvent"],"sources":["../../src/Popover/Popover.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames } from '@dsn-starter-kit/core';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport './Popover.css';\n\n/*\n * React 18 ondersteunt het `popover`-attribuut en `onToggle` niet natively in de\n * JSX-types. Module-uitbreiding voegt de ontbrekende types toe.\n */\ndeclare module 'react' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface HTMLAttributes<T> {\n popover?: 'auto' | 'manual' | '' | undefined;\n popoverTarget?: string | undefined;\n popoverTargetAction?: 'hide' | 'show' | 'toggle' | undefined;\n }\n}\n\n/*\n * HTMLElement.showPopover / hidePopover zijn nog niet in alle TypeScript DOM-libs.\n * Declaratie toegevoegd voor veilig gebruik.\n */\ndeclare global {\n interface HTMLElement {\n showPopover(): void;\n hidePopover(): void;\n }\n}\n\n// =============================================================================\n// Types\n// =============================================================================\n\ntype Placement = 'top' | 'bottom' | 'start' | 'end';\n\n// =============================================================================\n// Positioneringshelper\n// =============================================================================\n\nconst GAP = 4; // px afstand tussen trigger en popover\n\nfunction positionPopover(\n popover: HTMLElement,\n trigger: HTMLElement,\n placement: Placement\n): void {\n const triggerRect = trigger.getBoundingClientRect();\n // offsetWidth/offsetHeight — onaangepast door CSS transforms (zoals @starting-style scale).\n // getBoundingClientRect geeft de getransformeerde afmetingen, wat leidt tot onjuiste clamping.\n const popoverWidth = popover.offsetWidth;\n const popoverHeight = popover.offsetHeight;\n const popoverRect = { width: popoverWidth, height: popoverHeight };\n const isRTL =\n document.documentElement.dir === 'rtl' ||\n getComputedStyle(trigger).direction === 'rtl';\n\n let top: number;\n let left: number;\n\n switch (placement) {\n case 'bottom':\n top = triggerRect.bottom + GAP;\n left = isRTL ? triggerRect.right - popoverRect.width : triggerRect.left;\n break;\n case 'top':\n top = triggerRect.top - popoverRect.height - GAP;\n left = isRTL ? triggerRect.right - popoverRect.width : triggerRect.left;\n break;\n case 'end':\n top = triggerRect.top;\n left = isRTL\n ? triggerRect.left - popoverRect.width - GAP\n : triggerRect.right + GAP;\n break;\n case 'start':\n top = triggerRect.top;\n left = isRTL\n ? triggerRect.right + GAP\n : triggerRect.left - popoverRect.width - GAP;\n break;\n default:\n top = triggerRect.bottom + GAP;\n left = triggerRect.left;\n }\n\n // Klamp binnen het viewport (8px marge)\n const margin = 8;\n left = Math.max(\n margin,\n Math.min(left, window.innerWidth - popoverRect.width - margin)\n );\n top = Math.max(\n margin,\n Math.min(top, window.innerHeight - popoverRect.height - margin)\n );\n\n popover.style.top = `${top}px`;\n popover.style.left = `${left}px`;\n popover.style.right = 'auto';\n popover.style.bottom = 'auto';\n}\n\n// Zet focus op het eerste interactieve element in de popover\nfunction focusFirstInteractive(container: HTMLElement): void {\n const selector = [\n 'button:not(:disabled)',\n 'a[href]',\n 'input:not(:disabled)',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]:not([tabindex=\"-1\"])',\n ].join(', ');\n const first = container.querySelector<HTMLElement>(selector);\n if (first) {\n first.focus();\n } else {\n container.focus();\n }\n}\n\n// =============================================================================\n// Context\n// =============================================================================\n\ninterface PopoverContextValue {\n headingId: string;\n onClose?: () => void;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue>({\n headingId: '',\n});\n\n// =============================================================================\n// Popover (root)\n// =============================================================================\n\nexport interface PopoverProps extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'children'\n> {\n /**\n * Bepaalt of de popover getoond wordt.\n */\n isOpen: boolean;\n\n /**\n * Callback bij sluiten (Escape, klik buiten, sluitknop in header).\n */\n onClose?: () => void;\n\n /**\n * Referentie naar het triggerelement voor positionering en focus-herstel.\n */\n triggerRef: React.RefObject<HTMLElement>;\n\n /**\n * Gewenste plaatsing relatief aan het triggerelement.\n * @default 'bottom'\n */\n placement?: Placement;\n\n /**\n * Toegankelijke naam voor popovers zonder `PopoverHeader`/`PopoverHeading`.\n * Gebruik `aria-labelledby` via context wanneer er wél een heading is.\n */\n label?: string;\n\n /**\n * Subcomponenten: `PopoverHeader`, `PopoverBody`, `PopoverFooter`\n */\n children?: React.ReactNode;\n}\n\n/**\n * Popover component\n * Lichtgewicht, contextgebonden overlay verankerd aan een triggerelement.\n *\n * Gebaseerd op de HTML Popover API (`popover=\"auto\"`) voor ingebakken\n * light-dismiss en top-layer gedrag. Positionering via JavaScript.\n *\n * @example\n * ```tsx\n * const triggerRef = useRef<HTMLButtonElement>(null);\n * const [isOpen, setIsOpen] = useState(false);\n *\n * <Button ref={triggerRef} onClick={() => setIsOpen(true)}>Opties</Button>\n * <Popover isOpen={isOpen} onClose={() => setIsOpen(false)} triggerRef={triggerRef} label=\"Opties\">\n * <PopoverBody>\n * <Menu>...</Menu>\n * </PopoverBody>\n * </Popover>\n * ```\n */\nexport const Popover = React.forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n className,\n isOpen,\n onClose,\n triggerRef,\n placement = 'bottom',\n label,\n children,\n ...props\n },\n ref\n ) => {\n const internalRef = React.useRef<HTMLDivElement>(null);\n const popoverRef = (ref as React.RefObject<HTMLDivElement>) ?? internalRef;\n const headingId = React.useId();\n\n // Toon/verberg popover via de Popover API\n React.useEffect(() => {\n const el = popoverRef.current;\n if (!el) return;\n\n if (isOpen) {\n el.showPopover();\n const trigger = triggerRef.current;\n if (trigger) {\n positionPopover(el, trigger, placement);\n }\n focusFirstInteractive(el);\n } else {\n // hidePopover gooit een fout als de popover al gesloten is\n try {\n el.hidePopover();\n } catch {\n // popover was al gesloten — geen actie nodig\n }\n }\n }, [isOpen, placement, triggerRef, popoverRef]);\n\n // Synchroniseer aria-expanded op het triggerelement\n React.useEffect(() => {\n const trigger = triggerRef.current;\n if (!trigger) return;\n trigger.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n return () => {\n trigger.setAttribute('aria-expanded', 'false');\n };\n }, [isOpen, triggerRef]);\n\n // Verwerk het toggle-event van de Popover API (Escape / klik buiten binnen hetzelfde document)\n // onToggle is niet beschikbaar als JSX-prop op div in React 18 — gebruik addEventListener.\n // Gebruik een ref voor onClose zodat de listener stabiel blijft en nooit stale is.\n const onCloseRef = React.useRef(onClose);\n onCloseRef.current = onClose;\n\n React.useEffect(() => {\n const el = popoverRef.current;\n if (!el) return;\n\n const handleToggle = (event: Event) => {\n const toggleEvent = event as Event & { newState?: string };\n if (toggleEvent.newState === 'closed') {\n onCloseRef.current?.();\n triggerRef.current?.focus();\n }\n };\n\n el.addEventListener('toggle', handleToggle);\n return () => {\n el.removeEventListener('toggle', handleToggle);\n };\n }, [triggerRef, popoverRef]);\n\n // Fallback light-dismiss via pointerdown — vangt klikken buiten het popover op\n // in contexten waar de Popover API's native light-dismiss niet bereikbaar is\n // (bijv. iframe-grenzen, of oudere browsers zonder Popover API).\n React.useEffect(() => {\n if (!isOpen) return;\n const el = popoverRef.current;\n if (!el) return;\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node;\n // Sluit niet als er op de popover zelf of het triggerelement geklikt wordt\n if (el.contains(target) || triggerRef.current?.contains(target)) return;\n onCloseRef.current?.();\n triggerRef.current?.focus();\n };\n\n document.addEventListener('pointerdown', handlePointerDown);\n return () => {\n document.removeEventListener('pointerdown', handlePointerDown);\n };\n }, [isOpen, triggerRef, popoverRef]);\n\n const classes = classNames(\n 'dsn-popover',\n `dsn-popover--placement-${placement}`,\n className\n );\n\n const ariaProps = label\n ? { 'aria-label': label }\n : { 'aria-labelledby': headingId };\n\n return (\n <PopoverContext.Provider value={{ headingId, onClose }}>\n <div\n ref={popoverRef}\n popover=\"auto\"\n className={classes}\n role=\"dialog\"\n aria-modal=\"false\"\n tabIndex={-1}\n {...ariaProps}\n {...props}\n >\n {children}\n </div>\n </PopoverContext.Provider>\n );\n }\n);\n\nPopover.displayName = 'Popover';\n\n// =============================================================================\n// PopoverHeader\n// =============================================================================\n\nexport interface PopoverHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Inhoud van de header — doorgaans een `PopoverHeading`.\n * De sluitknop wordt automatisch geïnjecteerd.\n */\n children?: React.ReactNode;\n}\n\n/**\n * PopoverHeader\n * De headerstrook van de popover met heading en sluitknop.\n */\nexport const PopoverHeader = React.forwardRef<\n HTMLDivElement,\n PopoverHeaderProps\n>(({ className, children, ...props }, ref) => {\n const { onClose } = React.useContext(PopoverContext);\n\n return (\n <div\n ref={ref}\n className={classNames('dsn-popover__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\nPopoverHeader.displayName = 'PopoverHeader';\n\n// =============================================================================\n// PopoverHeading\n// =============================================================================\n\nexport interface PopoverHeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n /**\n * Semantisch heading-niveau. Kies op basis van documenthiërarchie.\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 * PopoverHeading\n * De heading van de popover. ID wordt automatisch gegenereerd voor aria-labelledby.\n */\nexport const PopoverHeading = React.forwardRef<\n HTMLHeadingElement,\n PopoverHeadingProps\n>(({ className, level = 2, children, ...props }, ref) => {\n const { headingId } = React.useContext(PopoverContext);\n const Tag = `h${level}` as React.ElementType;\n\n return (\n <Tag\n ref={ref}\n id={headingId}\n className={classNames('dsn-popover-heading', className)}\n {...props}\n >\n {children}\n </Tag>\n );\n});\n\nPopoverHeading.displayName = 'PopoverHeading';\n\n// =============================================================================\n// PopoverBody\n// =============================================================================\n\nexport interface PopoverBodyProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * De hoofdinhoud van de popover — willekeurige slot-content.\n */\n children?: React.ReactNode;\n}\n\n/**\n * PopoverBody\n * De inhoudssectie van de popover.\n */\nexport const PopoverBody = React.forwardRef<HTMLDivElement, PopoverBodyProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={classNames('dsn-popover__body', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nPopoverBody.displayName = 'PopoverBody';\n\n// =============================================================================\n// PopoverFooter\n// =============================================================================\n\nexport interface PopoverFooterProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Actieknoppen of slotzin van de popover.\n */\n children?: React.ReactNode;\n}\n\n/**\n * PopoverFooter\n * De voettekst van de popover met actieknoppen.\n */\nexport const PopoverFooter = React.forwardRef<\n HTMLDivElement,\n PopoverFooterProps\n>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={classNames('dsn-popover__footer', className)}\n {...props}\n >\n {children}\n </div>\n );\n});\n\nPopoverFooter.displayName = 'PopoverFooter';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { Popover, PopoverBody, PopoverBodyProps, PopoverFooter, PopoverFooterProps, PopoverHeader, PopoverHeaderProps, PopoverHeading, PopoverHeadingProps, PopoverProps } from "./Popover.mjs";
|
|
2
|
+
export { Popover, PopoverBody, type PopoverBodyProps, PopoverFooter, type PopoverFooterProps, PopoverHeader, type PopoverHeaderProps, PopoverHeading, type PopoverHeadingProps, type PopoverProps };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
//#region src/PreHeading/PreHeading.d.ts
|
|
3
|
+
interface PreHeadingProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
declare const PreHeading: React.ForwardRefExoticComponent<PreHeadingProps & React.RefAttributes<HTMLSpanElement>>;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { PreHeading, PreHeadingProps };
|
|
10
|
+
//# sourceMappingURL=PreHeading.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreHeading.d.mts","names":[],"sources":["../../src/PreHeading/PreHeading.tsx"],"mappings":";;UAIiB,wBAAwB,MAAM,eAAe;EAC5D,WAAW,MAAM;EACjB;;cAGW,YAAU,MAAA,0BAAA,kBAAA,MAAA,cAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* empty css */
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { classNames } from "@dsn-starter-kit/core";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
//#region src/PreHeading/PreHeading.tsx
|
|
6
|
+
const PreHeading = React.forwardRef(({ children, className, ...props }, ref) => {
|
|
7
|
+
return /* @__PURE__ */ jsx("span", {
|
|
8
|
+
ref,
|
|
9
|
+
className: classNames("dsn-pre-heading", className),
|
|
10
|
+
...props,
|
|
11
|
+
children
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
PreHeading.displayName = "PreHeading";
|
|
15
|
+
//#endregion
|
|
16
|
+
export { PreHeading };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=PreHeading2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreHeading2.mjs","names":[],"sources":["../../src/PreHeading/PreHeading.tsx"],"sourcesContent":["import React from 'react';\nimport { classNames } from '@dsn-starter-kit/core';\nimport './PreHeading.css';\n\nexport interface PreHeadingProps extends React.HTMLAttributes<HTMLSpanElement> {\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const PreHeading = React.forwardRef<HTMLSpanElement, PreHeadingProps>(\n ({ children, className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={classNames('dsn-pre-heading', className)}\n {...props}\n >\n {children}\n </span>\n );\n }\n);\n\nPreHeading.displayName = 'PreHeading';\n"],"mappings":";;;;;AASA,MAAa,aAAa,MAAM,YAC7B,EAAE,UAAU,WAAW,GAAG,SAAS,QAAQ;CAC1C,OACE,oBAAC,QAAD;EACO;EACL,WAAW,WAAW,mBAAmB,SAAS;EAClD,GAAI;EAEH;CACG,CAAA;AAEV,CACF;AAEA,WAAW,cAAc"}
|