@postenbring/hedwig-react 0.0.81 → 0.0.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion/accordion-content.d.ts +6 -2
- package/dist/accordion/accordion-content.d.ts.map +1 -0
- package/dist/accordion/accordion-header.d.ts +6 -2
- package/dist/accordion/accordion-header.d.ts.map +1 -0
- package/dist/accordion/accordion-item.d.ts +24 -3
- package/dist/accordion/accordion-item.d.ts.map +1 -0
- package/dist/accordion/accordion.d.ts +44 -2
- package/dist/accordion/accordion.d.ts.map +1 -0
- package/dist/accordion/accordion.js +102 -4
- package/dist/accordion/accordion.js.map +1 -1
- package/dist/accordion/accordion.mjs +5 -1
- package/dist/accordion/context.d.ts +7 -2
- package/dist/accordion/context.d.ts.map +1 -0
- package/dist/accordion/index.d.ts +9 -9
- package/dist/accordion/index.d.ts.map +1 -0
- package/dist/accordion/index.js +52 -53
- package/dist/accordion/index.js.map +1 -1
- package/dist/accordion/index.mjs +7 -7
- package/dist/badge/badge.d.ts +21 -5
- package/dist/badge/badge.d.ts.map +1 -0
- package/dist/badge/index.d.ts +3 -6
- package/dist/badge/index.d.ts.map +1 -0
- package/dist/box/box.d.ts +50 -4
- package/dist/box/box.d.ts.map +1 -0
- package/dist/box/box.js +15 -14
- package/dist/box/box.js.map +1 -1
- package/dist/box/box.mjs +1 -1
- package/dist/box/index.d.ts +3 -4
- package/dist/box/index.d.ts.map +1 -0
- package/dist/box/index.js +16 -19
- package/dist/box/index.js.map +1 -1
- package/dist/box/index.mjs +4 -5
- package/dist/breadcrumbs/breadcrumbs.d.ts +33 -2
- package/dist/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/breadcrumbs/index.d.ts +3 -2
- package/dist/breadcrumbs/index.d.ts.map +1 -0
- package/dist/button/button.d.ts +33 -3
- package/dist/button/button.d.ts.map +1 -0
- package/dist/button/index.d.ts +3 -3
- package/dist/button/index.d.ts.map +1 -0
- package/dist/card/card.d.ts +69 -12
- package/dist/card/card.d.ts.map +1 -0
- package/dist/card/card.js +17 -6
- package/dist/card/card.js.map +1 -1
- package/dist/card/card.mjs +1 -1
- package/dist/card/index.d.ts +3 -12
- package/dist/card/index.d.ts.map +1 -0
- package/dist/card/index.js +18 -19
- package/dist/card/index.js.map +1 -1
- package/dist/card/index.mjs +4 -5
- package/dist/{chunk-XC3UHH2U.mjs → chunk-3WVRY6CC.mjs} +4 -4
- package/dist/{chunk-XC3UHH2U.mjs.map → chunk-3WVRY6CC.mjs.map} +1 -1
- package/dist/{chunk-GSJPTZT3.mjs → chunk-6AGDK5V3.mjs} +34 -19
- package/dist/chunk-6AGDK5V3.mjs.map +1 -0
- package/dist/{chunk-3MQKXNZ6.mjs → chunk-7UD72WOC.mjs} +13 -1
- package/dist/chunk-7UD72WOC.mjs.map +1 -0
- package/dist/chunk-7YWW46R3.mjs +1 -0
- package/dist/chunk-7YWW46R3.mjs.map +1 -0
- package/dist/{chunk-ENKVTAJB.mjs → chunk-AJWSQEDP.mjs} +18 -17
- package/dist/chunk-AJWSQEDP.mjs.map +1 -0
- package/dist/chunk-ARHJZUZG.mjs +1 -0
- package/dist/chunk-ARHJZUZG.mjs.map +1 -0
- package/dist/chunk-BCFV6VOE.mjs +1 -0
- package/dist/chunk-BCFV6VOE.mjs.map +1 -0
- package/dist/{chunk-7JRS4WEB.mjs → chunk-C34HEQXO.mjs} +33 -29
- package/dist/chunk-C34HEQXO.mjs.map +1 -0
- package/dist/{chunk-PLXB3TNA.mjs → chunk-D7QPJIUZ.mjs} +5 -5
- package/dist/{chunk-PLXB3TNA.mjs.map → chunk-D7QPJIUZ.mjs.map} +1 -1
- package/dist/chunk-FYFJ75NX.mjs +1 -0
- package/dist/chunk-FYFJ75NX.mjs.map +1 -0
- package/dist/chunk-G65EYZFQ.mjs +1 -0
- package/dist/chunk-G65EYZFQ.mjs.map +1 -0
- package/dist/chunk-H3E546OT.mjs +1 -0
- package/dist/chunk-H3E546OT.mjs.map +1 -0
- package/dist/chunk-HQVL3ZJ2.mjs +1 -0
- package/dist/chunk-HQVL3ZJ2.mjs.map +1 -0
- package/dist/{chunk-XUWZ4HGD.mjs → chunk-LCJSUBCZ.mjs} +48 -45
- package/dist/chunk-LCJSUBCZ.mjs.map +1 -0
- package/dist/{chunk-KPGSRU4I.mjs → chunk-M3Y3XOGC.mjs} +13 -1
- package/dist/chunk-M3Y3XOGC.mjs.map +1 -0
- package/dist/{chunk-CIHZDFSQ.mjs → chunk-NU6OSFAU.mjs} +20 -9
- package/dist/chunk-NU6OSFAU.mjs.map +1 -0
- package/dist/chunk-RC76SXBP.mjs +1 -0
- package/dist/chunk-RC76SXBP.mjs.map +1 -0
- package/dist/{chunk-TQDUBRCZ.mjs → chunk-SQ63E7KM.mjs} +24 -22
- package/dist/chunk-SQ63E7KM.mjs.map +1 -0
- package/dist/{chunk-ES6ISHOV.mjs → chunk-UP3M3NEZ.mjs} +14 -13
- package/dist/{chunk-ES6ISHOV.mjs.map → chunk-UP3M3NEZ.mjs.map} +1 -1
- package/dist/chunk-ZKMFJZSH.mjs +1 -0
- package/dist/chunk-ZKMFJZSH.mjs.map +1 -0
- package/dist/description-list/description-list.d.ts +42 -2
- package/dist/description-list/description-list.d.ts.map +1 -0
- package/dist/description-list/index.d.ts +3 -2
- package/dist/description-list/index.d.ts.map +1 -0
- package/dist/footer/footer.d.ts +67 -7
- package/dist/footer/footer.d.ts.map +1 -0
- package/dist/footer/footer.js +79 -76
- package/dist/footer/footer.js.map +1 -1
- package/dist/footer/footer.mjs +4 -4
- package/dist/footer/index.d.ts +3 -7
- package/dist/footer/index.d.ts.map +1 -0
- package/dist/footer/index.js +80 -84
- package/dist/footer/index.js.map +1 -1
- package/dist/footer/index.mjs +7 -8
- package/dist/form/checkbox/checkbox.d.ts +28 -2
- package/dist/form/checkbox/checkbox.d.ts.map +1 -0
- package/dist/form/checkbox/index.d.ts +3 -2
- package/dist/form/checkbox/index.d.ts.map +1 -0
- package/dist/form/date-picker/date-picker.d.ts +33 -2
- package/dist/form/date-picker/date-picker.d.ts.map +1 -0
- package/dist/form/date-picker/index.d.ts +3 -2
- package/dist/form/date-picker/index.d.ts.map +1 -0
- package/dist/form/error-message/error-message.d.ts +8 -2
- package/dist/form/error-message/error-message.d.ts.map +1 -0
- package/dist/form/error-message/index.d.ts +3 -2
- package/dist/form/error-message/index.d.ts.map +1 -0
- package/dist/form/fieldset/fieldset.d.ts +22 -3
- package/dist/form/fieldset/fieldset.d.ts.map +1 -0
- package/dist/form/fieldset/index.d.ts +3 -3
- package/dist/form/fieldset/index.d.ts.map +1 -0
- package/dist/form/index.d.ts +9 -20
- package/dist/form/index.d.ts.map +1 -0
- package/dist/form/input/index.d.ts +3 -2
- package/dist/form/input/index.d.ts.map +1 -0
- package/dist/form/input/input.d.ts +5 -2
- package/dist/form/input/input.d.ts.map +1 -0
- package/dist/form/input-group/index.d.ts +3 -2
- package/dist/form/input-group/index.d.ts.map +1 -0
- package/dist/form/input-group/input-group.d.ts +27 -2
- package/dist/form/input-group/input-group.d.ts.map +1 -0
- package/dist/form/radiobutton/index.d.ts +5 -5
- package/dist/form/radiobutton/index.d.ts.map +1 -0
- package/dist/form/radiobutton/radiobutton.d.ts +17 -2
- package/dist/form/radiobutton/radiobutton.d.ts.map +1 -0
- package/dist/form/radiobutton/radiogroup.d.ts +24 -3
- package/dist/form/radiobutton/radiogroup.d.ts.map +1 -0
- package/dist/form/select/index.d.ts +3 -2
- package/dist/form/select/index.d.ts.map +1 -0
- package/dist/form/select/select.d.ts +9 -2
- package/dist/form/select/select.d.ts.map +1 -0
- package/dist/form/textarea/index.d.ts +3 -2
- package/dist/form/textarea/index.d.ts.map +1 -0
- package/dist/form/textarea/textarea.d.ts +5 -2
- package/dist/form/textarea/textarea.d.ts.map +1 -0
- package/dist/help-text/help-text.d.ts +51 -1
- package/dist/help-text/help-text.d.ts.map +1 -0
- package/dist/help-text/help-text.js +17 -20
- package/dist/help-text/help-text.js.map +1 -1
- package/dist/help-text/help-text.mjs +3 -3
- package/dist/help-text/index.d.ts +3 -1
- package/dist/help-text/index.d.ts.map +1 -0
- package/dist/help-text/index.js +17 -20
- package/dist/help-text/index.js.map +1 -1
- package/dist/help-text/index.mjs +3 -3
- package/dist/index-no-css.d.ts +26 -128
- package/dist/index-no-css.d.ts.map +1 -0
- package/dist/index-no-css.js +372 -393
- package/dist/index-no-css.js.map +1 -1
- package/dist/index-no-css.mjs +50 -57
- package/dist/index.d.ts +11 -128
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +372 -393
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +50 -57
- package/dist/index.mjs.map +1 -1
- package/dist/layout/container/container.d.ts +23 -2
- package/dist/layout/container/container.d.ts.map +1 -0
- package/dist/layout/grid/grid.d.ts +101 -4
- package/dist/layout/grid/grid.d.ts.map +1 -0
- package/dist/layout/grid/grid.js +11 -10
- package/dist/layout/grid/grid.js.map +1 -1
- package/dist/layout/grid/grid.mjs +1 -1
- package/dist/layout/grid/index.d.ts +3 -4
- package/dist/layout/grid/index.d.ts.map +1 -0
- package/dist/layout/grid/index.js +12 -15
- package/dist/layout/grid/index.js.map +1 -1
- package/dist/layout/grid/index.mjs +4 -5
- package/dist/layout/index.d.ts +4 -10
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +12 -15
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/index.mjs +4 -5
- package/dist/layout/responsive.d.ts +10 -2
- package/dist/layout/responsive.d.ts.map +1 -0
- package/dist/layout/spacing.d.ts +33 -3
- package/dist/layout/spacing.d.ts.map +1 -0
- package/dist/layout/stack/index.d.ts +3 -4
- package/dist/layout/stack/index.d.ts.map +1 -0
- package/dist/layout/stack/stack.d.ts +62 -4
- package/dist/layout/stack/stack.d.ts.map +1 -0
- package/dist/link/index.d.ts +3 -2
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link/link.d.ts +20 -2
- package/dist/link/link.d.ts.map +1 -0
- package/dist/list/index.d.ts +5 -5
- package/dist/list/index.d.ts.map +1 -0
- package/dist/list/link-list.d.ts +12 -2
- package/dist/list/link-list.d.ts.map +1 -0
- package/dist/list/list.d.ts +40 -3
- package/dist/list/list.d.ts.map +1 -0
- package/dist/message/index.d.ts +3 -3
- package/dist/message/index.d.ts.map +1 -0
- package/dist/message/index.js +36 -38
- package/dist/message/index.js.map +1 -1
- package/dist/message/index.mjs +5 -6
- package/dist/message/message.d.ts +36 -4
- package/dist/message/message.d.ts.map +1 -0
- package/dist/message/message.js +35 -32
- package/dist/message/message.js.map +1 -1
- package/dist/message/message.mjs +2 -2
- package/dist/modal/index.d.ts +3 -5
- package/dist/modal/index.d.ts.map +1 -0
- package/dist/modal/index.js +60 -62
- package/dist/modal/index.js.map +1 -1
- package/dist/modal/index.mjs +5 -6
- package/dist/modal/modal.d.ts +81 -5
- package/dist/modal/modal.d.ts.map +1 -0
- package/dist/modal/modal.js +59 -55
- package/dist/modal/modal.js.map +1 -1
- package/dist/modal/modal.mjs +2 -2
- package/dist/navbar/icons.d.ts +3 -2
- package/dist/navbar/icons.d.ts.map +1 -0
- package/dist/navbar/index.d.ts +4 -13
- package/dist/navbar/index.d.ts.map +1 -0
- package/dist/navbar/index.js +144 -145
- package/dist/navbar/index.js.map +1 -1
- package/dist/navbar/index.mjs +4 -5
- package/dist/navbar/navbar-expandable-menu.d.ts +35 -7
- package/dist/navbar/navbar-expandable-menu.d.ts.map +1 -0
- package/dist/navbar/navbar.d.ts +130 -9
- package/dist/navbar/navbar.d.ts.map +1 -0
- package/dist/navbar/navbar.js +237 -28
- package/dist/navbar/navbar.js.map +1 -1
- package/dist/navbar/navbar.mjs +4 -1
- package/dist/show-more/index.d.ts +5 -4
- package/dist/show-more/index.d.ts.map +1 -0
- package/dist/show-more/show-more.d.ts +42 -2
- package/dist/show-more/show-more.d.ts.map +1 -0
- package/dist/skeleton/index.d.ts +3 -2
- package/dist/skeleton/index.d.ts.map +1 -0
- package/dist/skeleton/skeleton.d.ts +67 -2
- package/dist/skeleton/skeleton.d.ts.map +1 -0
- package/dist/step-indicator/index.d.ts +3 -1
- package/dist/step-indicator/index.d.ts.map +1 -0
- package/dist/step-indicator/step-indicator.d.ts +36 -1
- package/dist/step-indicator/step-indicator.d.ts.map +1 -0
- package/dist/styled-html/index.d.ts +3 -2
- package/dist/styled-html/index.d.ts.map +1 -0
- package/dist/styled-html/styled-html.d.ts +36 -2
- package/dist/styled-html/styled-html.d.ts.map +1 -0
- package/dist/table/index.d.ts +3 -1
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/table.d.ts +25 -1
- package/dist/table/table.d.ts.map +1 -0
- package/dist/tabs/context.d.ts +8 -3
- package/dist/tabs/context.d.ts.map +1 -0
- package/dist/tabs/index.d.ts +7 -10
- package/dist/tabs/index.d.ts.map +1 -0
- package/dist/tabs/index.js +34 -37
- package/dist/tabs/index.js.map +1 -1
- package/dist/tabs/index.mjs +4 -4
- package/dist/tabs/tabs-content.d.ts +26 -4
- package/dist/tabs/tabs-content.d.ts.map +1 -0
- package/dist/tabs/tabs-list.d.ts +21 -4
- package/dist/tabs/tabs-list.d.ts.map +1 -0
- package/dist/tabs/tabs.d.ts +26 -2
- package/dist/tabs/tabs.d.ts.map +1 -0
- package/dist/tabs/tabs.js +205 -8
- package/dist/tabs/tabs.js.map +1 -1
- package/dist/tabs/tabs.mjs +4 -1
- package/dist/text/index.d.ts +4 -2
- package/dist/text/index.d.ts.map +1 -0
- package/dist/text/text.d.ts +58 -2
- package/dist/text/text.d.ts.map +1 -0
- package/dist/utilities/auto-animate-height.d.ts +33 -2
- package/dist/utilities/auto-animate-height.d.ts.map +1 -0
- package/dist/utilities/index.d.ts +3 -2
- package/dist/utilities/index.d.ts.map +1 -0
- package/dist/utils.d.ts +28 -5
- package/dist/utils.d.ts.map +1 -0
- package/dist/warning-banner/index.d.ts +3 -2
- package/dist/warning-banner/index.d.ts.map +1 -0
- package/dist/warning-banner/index.js +16 -19
- package/dist/warning-banner/index.js.map +1 -1
- package/dist/warning-banner/index.mjs +3 -3
- package/dist/warning-banner/warning-banner.d.ts +8 -2
- package/dist/warning-banner/warning-banner.d.ts.map +1 -0
- package/dist/warning-banner/warning-banner.js +16 -19
- package/dist/warning-banner/warning-banner.js.map +1 -1
- package/dist/warning-banner/warning-banner.mjs +3 -3
- package/package.json +9 -5
- package/src/accordion/accordion-content.tsx +31 -0
- package/src/accordion/accordion-header.tsx +36 -0
- package/src/accordion/accordion-item.tsx +62 -0
- package/src/accordion/accordion.stories.tsx +154 -0
- package/src/accordion/accordion.tsx +68 -0
- package/src/accordion/context.ts +8 -0
- package/src/accordion/index.tsx +9 -0
- package/src/badge/badge.stories.tsx +44 -0
- package/src/badge/badge.tsx +63 -0
- package/src/badge/index.tsx +3 -0
- package/src/box/box.stories.tsx +112 -0
- package/src/box/box.tsx +122 -0
- package/src/box/index.tsx +3 -0
- package/src/breadcrumbs/breadcrumbs.stories.tsx +50 -0
- package/src/breadcrumbs/breadcrumbs.tsx +47 -0
- package/src/breadcrumbs/index.tsx +3 -0
- package/src/button/button.stories.tsx +104 -0
- package/src/button/button.tsx +87 -0
- package/src/button/index.tsx +3 -0
- package/src/card/card.stories.tsx +82 -0
- package/src/card/card.tsx +222 -0
- package/src/card/index.tsx +14 -0
- package/src/description-list/description-list.stories.tsx +95 -0
- package/src/description-list/description-list.tsx +61 -0
- package/src/description-list/index.tsx +2 -0
- package/src/footer/footer.tsx +169 -0
- package/src/footer/index.tsx +9 -0
- package/src/form/checkbox/checkbox.stories.tsx +104 -0
- package/src/form/checkbox/checkbox.tsx +82 -0
- package/src/form/checkbox/index.tsx +2 -0
- package/src/form/date-picker/date-picker.stories.tsx +27 -0
- package/src/form/date-picker/date-picker.tsx +85 -0
- package/src/form/date-picker/index.tsx +2 -0
- package/src/form/error-message/error-message.stories.tsx +19 -0
- package/src/form/error-message/error-message.tsx +25 -0
- package/src/form/error-message/index.tsx +2 -0
- package/src/form/fieldset/fieldset.stories.tsx +86 -0
- package/src/form/fieldset/fieldset.tsx +64 -0
- package/src/form/fieldset/index.tsx +2 -0
- package/src/form/index.tsx +8 -0
- package/src/form/input/index.tsx +2 -0
- package/src/form/input/input.stories.tsx +166 -0
- package/src/form/input/input.tsx +30 -0
- package/src/form/input-group/index.tsx +2 -0
- package/src/form/input-group/input-group.tsx +106 -0
- package/src/form/radiobutton/index.tsx +4 -0
- package/src/form/radiobutton/radiobutton.stories.tsx +93 -0
- package/src/form/radiobutton/radiobutton.tsx +85 -0
- package/src/form/radiobutton/radiogroup.stories.tsx +39 -0
- package/src/form/radiobutton/radiogroup.tsx +52 -0
- package/src/form/select/index.tsx +2 -0
- package/src/form/select/select.stories.tsx +93 -0
- package/src/form/select/select.tsx +33 -0
- package/src/form/textarea/index.tsx +2 -0
- package/src/form/textarea/textarea.stories.tsx +106 -0
- package/src/form/textarea/textarea.tsx +33 -0
- package/src/help-text/help-text.tsx +98 -0
- package/src/help-text/index.ts +2 -0
- package/src/index-no-css.tsx +25 -0
- package/src/index.tsx +11 -0
- package/src/layout/container/container.stories.tsx +62 -0
- package/src/layout/container/container.tsx +47 -0
- package/src/layout/grid/grid.tsx +163 -0
- package/src/layout/grid/index.tsx +3 -0
- package/src/layout/index.tsx +3 -0
- package/src/layout/responsive.ts +26 -0
- package/src/layout/spacing.ts +37 -0
- package/src/layout/stack/index.tsx +2 -0
- package/src/layout/stack/stack.tsx +128 -0
- package/src/link/index.tsx +3 -0
- package/src/link/link.stories.tsx +64 -0
- package/src/link/link.tsx +46 -0
- package/src/list/index.tsx +5 -0
- package/src/list/link-list.stories.tsx +38 -0
- package/src/list/link-list.tsx +26 -0
- package/src/list/list.stories.tsx +71 -0
- package/src/list/list.tsx +65 -0
- package/src/message/index.tsx +2 -0
- package/src/message/message.stories.tsx +93 -0
- package/src/message/message.tsx +89 -0
- package/src/modal/index.tsx +3 -0
- package/src/modal/modal.stories.tsx +147 -0
- package/src/modal/modal.tsx +199 -0
- package/src/navbar/icons.tsx +21 -0
- package/src/navbar/index.tsx +18 -0
- package/src/navbar/navbar-expandable-menu.tsx +176 -0
- package/src/navbar/navbar.stories.tsx +99 -0
- package/src/navbar/navbar.tsx +264 -0
- package/src/show-more/index.ts +5 -0
- package/src/show-more/show-more.stories.tsx +119 -0
- package/src/show-more/show-more.tsx +66 -0
- package/src/skeleton/index.ts +2 -0
- package/src/skeleton/skeleton.stories.tsx +152 -0
- package/src/skeleton/skeleton.tsx +114 -0
- package/src/step-indicator/index.ts +2 -0
- package/src/step-indicator/step-indicator.stories.tsx +50 -0
- package/src/step-indicator/step-indicator.tsx +116 -0
- package/src/styled-html/index.ts +2 -0
- package/src/styled-html/styled-html.stories.tsx +189 -0
- package/src/styled-html/styled-html.tsx +59 -0
- package/src/table/index.ts +2 -0
- package/src/table/table.tsx +59 -0
- package/src/tabs/context.ts +18 -0
- package/src/tabs/index.tsx +7 -0
- package/src/tabs/tabs-content.tsx +62 -0
- package/src/tabs/tabs-list.tsx +129 -0
- package/src/tabs/tabs.stories.tsx +138 -0
- package/src/tabs/tabs.tsx +50 -0
- package/src/text/index.tsx +4 -0
- package/src/text/text.stories.tsx +112 -0
- package/src/text/text.tsx +129 -0
- package/src/utilities/auto-animate-height.tsx +139 -0
- package/src/utilities/index.ts +2 -0
- package/src/utils.ts +110 -0
- package/src/warning-banner/index.tsx +2 -0
- package/src/warning-banner/warning-banner.stories.tsx +43 -0
- package/src/warning-banner/warning-banner.tsx +79 -0
- package/dist/_tsup-dts-rollup.d.mts +0 -2600
- package/dist/_tsup-dts-rollup.d.ts +0 -2600
- package/dist/accordion/accordion-content.d.mts +0 -2
- package/dist/accordion/accordion-header.d.mts +0 -2
- package/dist/accordion/accordion-item.d.mts +0 -3
- package/dist/accordion/accordion.d.mts +0 -2
- package/dist/accordion/context.d.mts +0 -2
- package/dist/accordion/index.d.mts +0 -9
- package/dist/badge/badge.d.mts +0 -5
- package/dist/badge/index.d.mts +0 -6
- package/dist/box/box.d.mts +0 -4
- package/dist/box/index.d.mts +0 -4
- package/dist/breadcrumbs/breadcrumbs.d.mts +0 -2
- package/dist/breadcrumbs/index.d.mts +0 -2
- package/dist/button/button.d.mts +0 -3
- package/dist/button/index.d.mts +0 -3
- package/dist/card/card.d.mts +0 -12
- package/dist/card/index.d.mts +0 -12
- package/dist/chunk-3MQKXNZ6.mjs.map +0 -1
- package/dist/chunk-3NDUE23B.mjs +0 -19
- package/dist/chunk-3NDUE23B.mjs.map +0 -1
- package/dist/chunk-3NL3TOZF.mjs +0 -13
- package/dist/chunk-3NL3TOZF.mjs.map +0 -1
- package/dist/chunk-3ZFEUABU.mjs +0 -23
- package/dist/chunk-3ZFEUABU.mjs.map +0 -1
- package/dist/chunk-722MZPXO.mjs +0 -13
- package/dist/chunk-722MZPXO.mjs.map +0 -1
- package/dist/chunk-7JRS4WEB.mjs.map +0 -1
- package/dist/chunk-CIHZDFSQ.mjs.map +0 -1
- package/dist/chunk-CYEYGPRH.mjs +0 -17
- package/dist/chunk-CYEYGPRH.mjs.map +0 -1
- package/dist/chunk-ENKVTAJB.mjs.map +0 -1
- package/dist/chunk-GSJPTZT3.mjs.map +0 -1
- package/dist/chunk-IJAX6APL.mjs +0 -23
- package/dist/chunk-IJAX6APL.mjs.map +0 -1
- package/dist/chunk-IKJJWKXM.mjs +0 -15
- package/dist/chunk-IKJJWKXM.mjs.map +0 -1
- package/dist/chunk-KPGSRU4I.mjs.map +0 -1
- package/dist/chunk-PT5H3QV6.mjs +0 -29
- package/dist/chunk-PT5H3QV6.mjs.map +0 -1
- package/dist/chunk-TQDUBRCZ.mjs.map +0 -1
- package/dist/chunk-V6UKKHKD.mjs +0 -33
- package/dist/chunk-V6UKKHKD.mjs.map +0 -1
- package/dist/chunk-XUWZ4HGD.mjs.map +0 -1
- package/dist/description-list/description-list.d.mts +0 -2
- package/dist/description-list/index.d.mts +0 -2
- package/dist/footer/footer.d.mts +0 -7
- package/dist/footer/index.d.mts +0 -7
- package/dist/form/checkbox/checkbox.d.mts +0 -2
- package/dist/form/checkbox/index.d.mts +0 -2
- package/dist/form/date-picker/date-picker.d.mts +0 -2
- package/dist/form/date-picker/index.d.mts +0 -2
- package/dist/form/error-message/error-message.d.mts +0 -2
- package/dist/form/error-message/index.d.mts +0 -2
- package/dist/form/fieldset/fieldset.d.mts +0 -3
- package/dist/form/fieldset/index.d.mts +0 -3
- package/dist/form/index.d.mts +0 -20
- package/dist/form/input/index.d.mts +0 -2
- package/dist/form/input/input.d.mts +0 -2
- package/dist/form/input-group/index.d.mts +0 -2
- package/dist/form/input-group/input-group.d.mts +0 -2
- package/dist/form/radiobutton/index.d.mts +0 -5
- package/dist/form/radiobutton/radiobutton.d.mts +0 -2
- package/dist/form/radiobutton/radiogroup.d.mts +0 -3
- package/dist/form/select/index.d.mts +0 -2
- package/dist/form/select/select.d.mts +0 -2
- package/dist/form/textarea/index.d.mts +0 -2
- package/dist/form/textarea/textarea.d.mts +0 -2
- package/dist/help-text/help-text.d.mts +0 -1
- package/dist/help-text/index.d.mts +0 -1
- package/dist/index-no-css.d.mts +0 -128
- package/dist/index.d.mts +0 -128
- package/dist/layout/container/container.d.mts +0 -2
- package/dist/layout/grid/grid.d.mts +0 -4
- package/dist/layout/grid/index.d.mts +0 -4
- package/dist/layout/index.d.mts +0 -10
- package/dist/layout/responsive.d.mts +0 -2
- package/dist/layout/spacing.d.mts +0 -3
- package/dist/layout/stack/index.d.mts +0 -4
- package/dist/layout/stack/stack.d.mts +0 -4
- package/dist/link/index.d.mts +0 -2
- package/dist/link/link.d.mts +0 -2
- package/dist/list/index.d.mts +0 -5
- package/dist/list/link-list.d.mts +0 -2
- package/dist/list/list.d.mts +0 -3
- package/dist/message/index.d.mts +0 -3
- package/dist/message/message.d.mts +0 -4
- package/dist/modal/index.d.mts +0 -5
- package/dist/modal/modal.d.mts +0 -5
- package/dist/navbar/icons.d.mts +0 -2
- package/dist/navbar/index.d.mts +0 -13
- package/dist/navbar/navbar-expandable-menu.d.mts +0 -7
- package/dist/navbar/navbar.d.mts +0 -9
- package/dist/show-more/index.d.mts +0 -4
- package/dist/show-more/show-more.d.mts +0 -2
- package/dist/skeleton/index.d.mts +0 -2
- package/dist/skeleton/skeleton.d.mts +0 -2
- package/dist/step-indicator/index.d.mts +0 -1
- package/dist/step-indicator/step-indicator.d.mts +0 -1
- package/dist/styled-html/index.d.mts +0 -2
- package/dist/styled-html/styled-html.d.mts +0 -2
- package/dist/table/index.d.mts +0 -1
- package/dist/table/table.d.mts +0 -1
- package/dist/tabs/context.d.mts +0 -3
- package/dist/tabs/index.d.mts +0 -10
- package/dist/tabs/tabs-content.d.mts +0 -4
- package/dist/tabs/tabs-list.d.mts +0 -4
- package/dist/tabs/tabs.d.mts +0 -2
- package/dist/text/index.d.mts +0 -2
- package/dist/text/text.d.mts +0 -2
- package/dist/utilities/auto-animate-height.d.mts +0 -2
- package/dist/utilities/index.d.mts +0 -2
- package/dist/utils.d.mts +0 -5
- package/dist/warning-banner/index.d.mts +0 -2
- package/dist/warning-banner/warning-banner.d.mts +0 -2
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { forwardRef, useId, type InputHTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
import { clsx } from "@postenbring/hedwig-css/typed-classname";
|
|
3
|
+
import { ErrorMessage } from "../error-message";
|
|
4
|
+
import { useFieldsetContext } from "../fieldset";
|
|
5
|
+
|
|
6
|
+
export type CheckboxProps = Omit<InputHTMLAttributes<HTMLInputElement>, "defaultValue"> & {
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
variant?: "plain" | "bounding-box";
|
|
9
|
+
title?: string;
|
|
10
|
+
} & (
|
|
11
|
+
| {
|
|
12
|
+
/**
|
|
13
|
+
* Set to `true` to add error styling. The component will take care of aria to indicate invalid state.
|
|
14
|
+
*
|
|
15
|
+
* Normally you don't need this, as you should wrap your Checkboxes in the Fieldset component.
|
|
16
|
+
* When providing an errorMessage to Fieldset, all contained Checkboxes will get correct hasError state.
|
|
17
|
+
*
|
|
18
|
+
* You can use this when your checkbox is part of a non-HDS fieldset which shows an error message.
|
|
19
|
+
*/
|
|
20
|
+
hasError?: boolean;
|
|
21
|
+
errorMessage?: never;
|
|
22
|
+
}
|
|
23
|
+
| {
|
|
24
|
+
hasError?: never;
|
|
25
|
+
/**
|
|
26
|
+
* Set an error message to add error styling, and display the error message.
|
|
27
|
+
* The component will take care of aria to connect the error message to the checkbox.
|
|
28
|
+
*
|
|
29
|
+
* Use this when your checkbox is standalone (not part of a fieldset).
|
|
30
|
+
*/
|
|
31
|
+
errorMessage?: ReactNode;
|
|
32
|
+
}
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(
|
|
36
|
+
(
|
|
37
|
+
{
|
|
38
|
+
variant = "plain",
|
|
39
|
+
hasError: hasErrorProp,
|
|
40
|
+
errorMessage,
|
|
41
|
+
title,
|
|
42
|
+
children,
|
|
43
|
+
className,
|
|
44
|
+
...rest
|
|
45
|
+
},
|
|
46
|
+
ref,
|
|
47
|
+
) => {
|
|
48
|
+
const errorMessageId = useId();
|
|
49
|
+
const { hasError: hasFieldsetError } = useFieldsetContext();
|
|
50
|
+
const hasError = !!errorMessage || hasFieldsetError || hasErrorProp;
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<div className={clsx("hds-checkbox-wrapper")}>
|
|
54
|
+
<div
|
|
55
|
+
className={clsx(
|
|
56
|
+
"hds-checkbox",
|
|
57
|
+
{
|
|
58
|
+
[`hds-checkbox--${variant}`]: variant === "bounding-box",
|
|
59
|
+
"hds-checkbox--error": hasError,
|
|
60
|
+
},
|
|
61
|
+
className as undefined,
|
|
62
|
+
)}
|
|
63
|
+
>
|
|
64
|
+
<label>
|
|
65
|
+
<input
|
|
66
|
+
{...rest}
|
|
67
|
+
aria-invalid={hasError ? true : undefined}
|
|
68
|
+
aria-describedby={errorMessage ? errorMessageId : undefined}
|
|
69
|
+
ref={ref}
|
|
70
|
+
type="checkbox"
|
|
71
|
+
/>
|
|
72
|
+
<span aria-hidden className="hds-checkbox__checkmark" />
|
|
73
|
+
{title ? <p className="hds-checkbox__title">{title}</p> : children}
|
|
74
|
+
</label>
|
|
75
|
+
{title ? children : null}
|
|
76
|
+
</div>
|
|
77
|
+
{errorMessage ? <ErrorMessage id={errorMessageId}>{errorMessage}</ErrorMessage> : null}
|
|
78
|
+
</div>
|
|
79
|
+
);
|
|
80
|
+
},
|
|
81
|
+
);
|
|
82
|
+
Checkbox.displayName = "Checkbox";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies -- storybook story */
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
import { DatePicker } from ".";
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof DatePicker> = {
|
|
6
|
+
title: "Form/DatePicker",
|
|
7
|
+
component: DatePicker,
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof DatePicker>;
|
|
13
|
+
|
|
14
|
+
export const PlainDatePicker: Story = {
|
|
15
|
+
args: {
|
|
16
|
+
label: "Some kind of date picker",
|
|
17
|
+
errorMessage: "",
|
|
18
|
+
readOnly: false,
|
|
19
|
+
variant: "default",
|
|
20
|
+
min: "2024-04-05",
|
|
21
|
+
max: "2026-04-04",
|
|
22
|
+
calendarButtonTitle: "Åpne kalender",
|
|
23
|
+
},
|
|
24
|
+
argTypes: {
|
|
25
|
+
variant: { control: "inline-radio", options: ["default", "white"] },
|
|
26
|
+
},
|
|
27
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { forwardRef, useRef, type InputHTMLAttributes } from "react";
|
|
2
|
+
import { clsx } from "@postenbring/hedwig-css/typed-classname";
|
|
3
|
+
import { InputGroup, type InputGroupProps } from "../input-group";
|
|
4
|
+
import { useMergeRefs } from "../../utils";
|
|
5
|
+
|
|
6
|
+
export type DatePickerProps = Omit<
|
|
7
|
+
InputGroupProps & InputHTMLAttributes<HTMLInputElement>,
|
|
8
|
+
"children" | "type"
|
|
9
|
+
> & {
|
|
10
|
+
/**
|
|
11
|
+
* Accessible title for the calendar button
|
|
12
|
+
*
|
|
13
|
+
* This button currently only shows in Chrome.
|
|
14
|
+
*
|
|
15
|
+
* @defaultValue "Åpne kalender"
|
|
16
|
+
*/
|
|
17
|
+
calendarButtonTitle?: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* A basic implementation of a date picker
|
|
22
|
+
*
|
|
23
|
+
* This date picker is an implementation of native date picker, as you get
|
|
24
|
+
* with `<input type="date" />`, where the input field is dressed in Hedwig styling.
|
|
25
|
+
*
|
|
26
|
+
* Due to accessibility concerns you will only see the appropriate Hedwig calendar
|
|
27
|
+
* icon in Chrome. Firefox will show built in icon and Safari will show no icon.
|
|
28
|
+
* Not tested in Edge.
|
|
29
|
+
*/
|
|
30
|
+
export const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(function DatePicker(
|
|
31
|
+
{
|
|
32
|
+
className,
|
|
33
|
+
variant,
|
|
34
|
+
errorMessage,
|
|
35
|
+
labelProps,
|
|
36
|
+
label,
|
|
37
|
+
id,
|
|
38
|
+
style,
|
|
39
|
+
disabled,
|
|
40
|
+
readOnly,
|
|
41
|
+
calendarButtonTitle = "Åpne kalender",
|
|
42
|
+
...rest
|
|
43
|
+
},
|
|
44
|
+
ref,
|
|
45
|
+
) {
|
|
46
|
+
const inputRef = useRef<HTMLInputElement>(null);
|
|
47
|
+
const mergedRef = useMergeRefs([inputRef, ref]);
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<InputGroup
|
|
51
|
+
className={clsx("hds-date-picker", className as undefined)}
|
|
52
|
+
disabled={disabled}
|
|
53
|
+
errorMessage={errorMessage}
|
|
54
|
+
id={id}
|
|
55
|
+
label={label}
|
|
56
|
+
labelProps={labelProps}
|
|
57
|
+
readOnly={readOnly}
|
|
58
|
+
style={style}
|
|
59
|
+
variant={variant}
|
|
60
|
+
>
|
|
61
|
+
{(inputProps) => (
|
|
62
|
+
<>
|
|
63
|
+
<input
|
|
64
|
+
{...rest}
|
|
65
|
+
{...inputProps}
|
|
66
|
+
disabled={disabled}
|
|
67
|
+
readOnly={readOnly}
|
|
68
|
+
ref={mergedRef}
|
|
69
|
+
type="date"
|
|
70
|
+
/>
|
|
71
|
+
<button
|
|
72
|
+
className={clsx("hds-date-picker__calendar-button")}
|
|
73
|
+
type="button"
|
|
74
|
+
title={calendarButtonTitle}
|
|
75
|
+
onClick={() => {
|
|
76
|
+
inputRef.current?.showPicker();
|
|
77
|
+
}}
|
|
78
|
+
/>
|
|
79
|
+
</>
|
|
80
|
+
)}
|
|
81
|
+
</InputGroup>
|
|
82
|
+
);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
DatePicker.displayName = "DatePicker";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies -- storybook story */
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
import { ErrorMessage } from ".";
|
|
4
|
+
|
|
5
|
+
const meta: Meta<typeof ErrorMessage> = {
|
|
6
|
+
title: "Form/ErrorMessage",
|
|
7
|
+
component: ErrorMessage,
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default meta;
|
|
11
|
+
|
|
12
|
+
type Story = StoryObj<typeof ErrorMessage>;
|
|
13
|
+
|
|
14
|
+
export const Default: Story = {
|
|
15
|
+
args: {
|
|
16
|
+
id: "id",
|
|
17
|
+
children: "This is an error message for use with form input components",
|
|
18
|
+
},
|
|
19
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { clsx } from "@postenbring/hedwig-css/typed-classname";
|
|
2
|
+
import { forwardRef, type ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
export interface ErrorMessageProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
id: string;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const ErrorMessage = forwardRef<HTMLDivElement, ErrorMessageProps>(
|
|
11
|
+
({ children, id, className, ...rest }, ref) => {
|
|
12
|
+
return (
|
|
13
|
+
<div
|
|
14
|
+
aria-live="assertive"
|
|
15
|
+
className={clsx("hds-error-message", className as undefined)}
|
|
16
|
+
id={id}
|
|
17
|
+
ref={ref}
|
|
18
|
+
{...rest}
|
|
19
|
+
>
|
|
20
|
+
{children}
|
|
21
|
+
</div>
|
|
22
|
+
);
|
|
23
|
+
},
|
|
24
|
+
);
|
|
25
|
+
ErrorMessage.displayName = "ErrorMessage";
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies -- storybook story */
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
import { Checkbox } from "../checkbox";
|
|
4
|
+
import { Radiobutton } from "../radiobutton";
|
|
5
|
+
import { Fieldset } from ".";
|
|
6
|
+
|
|
7
|
+
const meta: Meta<typeof Fieldset> = {
|
|
8
|
+
title: "Form/Fieldset",
|
|
9
|
+
component: Fieldset,
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export default meta;
|
|
13
|
+
|
|
14
|
+
type Story = StoryObj<typeof Fieldset>;
|
|
15
|
+
|
|
16
|
+
export const Default: Story = {
|
|
17
|
+
args: {
|
|
18
|
+
legend: "Default fieldset",
|
|
19
|
+
errorMessage: "",
|
|
20
|
+
},
|
|
21
|
+
render: (props) => (
|
|
22
|
+
<Fieldset {...props}>
|
|
23
|
+
<Checkbox defaultChecked value="Hello">
|
|
24
|
+
Hello
|
|
25
|
+
</Checkbox>
|
|
26
|
+
<Checkbox value="Hello">Hello</Checkbox>
|
|
27
|
+
<Checkbox value="Hello">Hello</Checkbox>
|
|
28
|
+
</Fieldset>
|
|
29
|
+
),
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const LargeLegend: Story = {
|
|
33
|
+
args: {
|
|
34
|
+
legend: "Fieldset with large legend",
|
|
35
|
+
legendProps: { size: "large" },
|
|
36
|
+
},
|
|
37
|
+
render: (props) => (
|
|
38
|
+
<Fieldset {...props}>
|
|
39
|
+
<Checkbox defaultChecked value="Hello">
|
|
40
|
+
Hello
|
|
41
|
+
</Checkbox>
|
|
42
|
+
<Checkbox value="Hello">Hello</Checkbox>
|
|
43
|
+
<Checkbox value="Hello">Hello</Checkbox>
|
|
44
|
+
</Fieldset>
|
|
45
|
+
),
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export const FieldsetErrorCheckboxes: Story = {
|
|
49
|
+
args: {
|
|
50
|
+
legend: "Checkboxes wrapped in Fieldset will get error styling when Fieldset has errorMessage",
|
|
51
|
+
errorMessage: "Something's wrong",
|
|
52
|
+
},
|
|
53
|
+
render: (props) => (
|
|
54
|
+
<Fieldset {...props}>
|
|
55
|
+
<Checkbox value="Hello">Hello</Checkbox>
|
|
56
|
+
<Checkbox value="Hello">Hello</Checkbox>
|
|
57
|
+
<Checkbox value="Hello">Hello</Checkbox>
|
|
58
|
+
</Fieldset>
|
|
59
|
+
),
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export const FieldsetErrorRadiobuttons: Story = {
|
|
63
|
+
args: {
|
|
64
|
+
legend: (
|
|
65
|
+
<>
|
|
66
|
+
Radiobuttons wrapped in Fieldset will get error styling when Fieldset has errorMessage
|
|
67
|
+
<br />
|
|
68
|
+
However, you should probably use RadioGroup instead of Fieldset for Radiobuttons
|
|
69
|
+
</>
|
|
70
|
+
),
|
|
71
|
+
errorMessage: "Something's wrong",
|
|
72
|
+
},
|
|
73
|
+
render: (props) => (
|
|
74
|
+
<Fieldset {...props}>
|
|
75
|
+
<Radiobutton value="Hello" name="radiogroup">
|
|
76
|
+
Hello
|
|
77
|
+
</Radiobutton>
|
|
78
|
+
<Radiobutton value="Hello" name="radiogroup">
|
|
79
|
+
Hello
|
|
80
|
+
</Radiobutton>
|
|
81
|
+
<Radiobutton value="Hello" name="radiogroup">
|
|
82
|
+
Hello
|
|
83
|
+
</Radiobutton>
|
|
84
|
+
</Fieldset>
|
|
85
|
+
),
|
|
86
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useId, forwardRef, createContext, useContext } from "react";
|
|
2
|
+
import type { FieldsetHTMLAttributes, HTMLAttributes, ReactNode, CSSProperties } from "react";
|
|
3
|
+
import { clsx } from "@postenbring/hedwig-css/typed-classname";
|
|
4
|
+
import { ErrorMessage } from "../error-message";
|
|
5
|
+
|
|
6
|
+
export interface FieldsetProps extends FieldsetHTMLAttributes<HTMLFieldSetElement> {
|
|
7
|
+
className?: string;
|
|
8
|
+
style?: CSSProperties;
|
|
9
|
+
/**
|
|
10
|
+
* Providing an errorMessage will also give contained Checkboxes or Radiobuttons
|
|
11
|
+
* error styling and aria to indicate invalid state.
|
|
12
|
+
*
|
|
13
|
+
* For Radiobuttons you are even better off using RadioGroup.
|
|
14
|
+
*/
|
|
15
|
+
errorMessage?: ReactNode;
|
|
16
|
+
legendProps?: HTMLAttributes<HTMLElement> & { size: "default" | "large" };
|
|
17
|
+
legend: ReactNode;
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const FieldsetContext = createContext<{ hasError: boolean }>({ hasError: false });
|
|
22
|
+
|
|
23
|
+
export const useFieldsetContext = () => useContext(FieldsetContext);
|
|
24
|
+
|
|
25
|
+
export const Fieldset = forwardRef<HTMLFieldSetElement, FieldsetProps>(function Fieldset(
|
|
26
|
+
{
|
|
27
|
+
className,
|
|
28
|
+
style,
|
|
29
|
+
errorMessage,
|
|
30
|
+
legendProps: { size: legendSize = "default", className: legendClassName, ...legendProps } = {},
|
|
31
|
+
legend,
|
|
32
|
+
children,
|
|
33
|
+
...rest
|
|
34
|
+
},
|
|
35
|
+
ref,
|
|
36
|
+
) {
|
|
37
|
+
const errorMessageId = useId();
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<fieldset
|
|
41
|
+
aria-describedby={errorMessage ? errorMessageId : undefined}
|
|
42
|
+
aria-invalid={errorMessage ? true : undefined}
|
|
43
|
+
className={clsx("hds-fieldset", className as undefined)}
|
|
44
|
+
ref={ref}
|
|
45
|
+
style={style}
|
|
46
|
+
{...rest}
|
|
47
|
+
>
|
|
48
|
+
<legend
|
|
49
|
+
className={clsx(
|
|
50
|
+
"hds-fieldset__legend",
|
|
51
|
+
{ [`hds-fieldset__legend--${legendSize}`]: legendSize },
|
|
52
|
+
legendClassName as undefined,
|
|
53
|
+
)}
|
|
54
|
+
{...legendProps}
|
|
55
|
+
>
|
|
56
|
+
{legend}
|
|
57
|
+
</legend>
|
|
58
|
+
<FieldsetContext.Provider value={{ hasError: Boolean(errorMessage) }}>
|
|
59
|
+
{children}
|
|
60
|
+
</FieldsetContext.Provider>
|
|
61
|
+
<ErrorMessage id={errorMessageId}>{errorMessage}</ErrorMessage>
|
|
62
|
+
</fieldset>
|
|
63
|
+
);
|
|
64
|
+
});
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies -- storybook story */
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { PrimaryButton, SecondaryButton } from "../../button";
|
|
5
|
+
import { HStack, VStack } from "../../layout";
|
|
6
|
+
import { Input } from ".";
|
|
7
|
+
|
|
8
|
+
const meta: Meta<typeof Input> = {
|
|
9
|
+
title: "Form/Input",
|
|
10
|
+
component: Input,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default meta;
|
|
14
|
+
|
|
15
|
+
type Story = StoryObj<typeof Input>;
|
|
16
|
+
|
|
17
|
+
export const PlainInput: Story = {
|
|
18
|
+
args: {
|
|
19
|
+
label: "Some kind of input",
|
|
20
|
+
placeholder: "I am a placeholder",
|
|
21
|
+
errorMessage: "",
|
|
22
|
+
readOnly: false,
|
|
23
|
+
variant: "default",
|
|
24
|
+
},
|
|
25
|
+
argTypes: {
|
|
26
|
+
variant: { control: "inline-radio", options: ["default", "white"] },
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const PlainInputWithError: Story = {
|
|
31
|
+
args: {
|
|
32
|
+
label: "Some kind of input with error",
|
|
33
|
+
errorMessage: "This is invalid",
|
|
34
|
+
placeholder: "I am a placeholder",
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const ReadonlyInput: Story = {
|
|
39
|
+
args: {
|
|
40
|
+
label: "Some kind of readonly input",
|
|
41
|
+
readOnly: true,
|
|
42
|
+
value: "This is a read-only value",
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export const ReadonlyInputWithError: Story = {
|
|
47
|
+
args: {
|
|
48
|
+
label: "Some kind of readonly input",
|
|
49
|
+
readOnly: true,
|
|
50
|
+
value: "This is a read-only value",
|
|
51
|
+
errorMessage: "This is invalid",
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const WhiteInput: Story = {
|
|
56
|
+
args: {
|
|
57
|
+
label: "Some kind of white input",
|
|
58
|
+
variant: "white",
|
|
59
|
+
placeholder: "I am a placeholder",
|
|
60
|
+
},
|
|
61
|
+
render: (props) => (
|
|
62
|
+
<div style={{ background: "var(--hds-ui-colors-light-grey-fill)", padding: "1em" }}>
|
|
63
|
+
<Input {...props} />
|
|
64
|
+
</div>
|
|
65
|
+
),
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export const WhiteInputWithError: Story = {
|
|
69
|
+
args: {
|
|
70
|
+
label: "Some kind of white input",
|
|
71
|
+
variant: "white",
|
|
72
|
+
placeholder: "I am a placeholder",
|
|
73
|
+
errorMessage: "This is invalid",
|
|
74
|
+
},
|
|
75
|
+
render: (props) => (
|
|
76
|
+
<div style={{ background: "var(--hds-ui-colors-light-grey-fill)", padding: "1em" }}>
|
|
77
|
+
<Input {...props} />
|
|
78
|
+
</div>
|
|
79
|
+
),
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export const WhiteReadonlyInput: Story = {
|
|
83
|
+
args: {
|
|
84
|
+
label: "Some kind of readonly input",
|
|
85
|
+
variant: "white",
|
|
86
|
+
readOnly: true,
|
|
87
|
+
value: "This is a read-only value",
|
|
88
|
+
},
|
|
89
|
+
render: (props) => (
|
|
90
|
+
<div style={{ background: "var(--hds-ui-colors-light-grey-fill)", padding: "1em" }}>
|
|
91
|
+
<Input {...props} />
|
|
92
|
+
</div>
|
|
93
|
+
),
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export const WhiteReadonlyInputWithError: Story = {
|
|
97
|
+
args: {
|
|
98
|
+
label: "Some kind of readonly input",
|
|
99
|
+
variant: "white",
|
|
100
|
+
readOnly: true,
|
|
101
|
+
value: "This is a read-only value",
|
|
102
|
+
errorMessage: "This is invalid",
|
|
103
|
+
},
|
|
104
|
+
render: (props) => (
|
|
105
|
+
<div style={{ background: "var(--hds-ui-colors-light-grey-fill)", padding: "1em" }}>
|
|
106
|
+
<Input {...props} />
|
|
107
|
+
</div>
|
|
108
|
+
),
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export const TrackingNumberSearch: Story = {
|
|
112
|
+
render: () => (
|
|
113
|
+
<HStack
|
|
114
|
+
gap="4"
|
|
115
|
+
align="end"
|
|
116
|
+
style={{
|
|
117
|
+
maxWidth: 556,
|
|
118
|
+
}}
|
|
119
|
+
>
|
|
120
|
+
<Input label="Sporingsnummer" style={{ width: "100%" }} />
|
|
121
|
+
<PrimaryButton size="large">Spor</PrimaryButton>
|
|
122
|
+
</HStack>
|
|
123
|
+
),
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export const FormWithErrorsOnSubmit: Story = {
|
|
127
|
+
render: () => {
|
|
128
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks -- It's ok
|
|
129
|
+
const [errors, setErrors] = useState<Record<string, string>>({});
|
|
130
|
+
return (
|
|
131
|
+
<VStack gap="16" asChild>
|
|
132
|
+
<form
|
|
133
|
+
lang="en"
|
|
134
|
+
onSubmit={(e) => {
|
|
135
|
+
e.preventDefault();
|
|
136
|
+
const formData = new FormData(e.currentTarget);
|
|
137
|
+
const newErrors: Record<string, string> = {};
|
|
138
|
+
for (const [key, value] of formData) {
|
|
139
|
+
if (!value) {
|
|
140
|
+
newErrors[key] = `${key} is required`;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
setErrors(newErrors);
|
|
144
|
+
}}
|
|
145
|
+
>
|
|
146
|
+
<p>Fields without input will give an error</p>
|
|
147
|
+
<Input errorMessage={errors.One} label="One" name="One" />
|
|
148
|
+
<Input errorMessage={errors.Two} label="Two" name="Two" />
|
|
149
|
+
<Input errorMessage={errors.Three} label="Three" name="Three" />
|
|
150
|
+
<VStack gap="4">
|
|
151
|
+
<PrimaryButton type="submit">Submit</PrimaryButton>
|
|
152
|
+
<SecondaryButton
|
|
153
|
+
fill="outline"
|
|
154
|
+
onClick={() => {
|
|
155
|
+
setErrors({});
|
|
156
|
+
}}
|
|
157
|
+
type="reset"
|
|
158
|
+
>
|
|
159
|
+
Reset
|
|
160
|
+
</SecondaryButton>
|
|
161
|
+
</VStack>
|
|
162
|
+
</form>
|
|
163
|
+
</VStack>
|
|
164
|
+
);
|
|
165
|
+
},
|
|
166
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import type { InputHTMLAttributes } from "react";
|
|
3
|
+
import { clsx } from "@postenbring/hedwig-css/typed-classname";
|
|
4
|
+
import { InputGroup } from "../input-group";
|
|
5
|
+
import type { InputGroupProps } from "../input-group";
|
|
6
|
+
|
|
7
|
+
export type InputProps = Omit<InputGroupProps & InputHTMLAttributes<HTMLInputElement>, "children">;
|
|
8
|
+
|
|
9
|
+
export const Input = forwardRef<HTMLInputElement, InputProps>(function Input(
|
|
10
|
+
{ className, variant, errorMessage, labelProps, label, id, style, disabled, readOnly, ...rest },
|
|
11
|
+
ref,
|
|
12
|
+
) {
|
|
13
|
+
return (
|
|
14
|
+
<InputGroup
|
|
15
|
+
className={clsx("hds-input", className as undefined)}
|
|
16
|
+
disabled={disabled}
|
|
17
|
+
errorMessage={errorMessage}
|
|
18
|
+
id={id}
|
|
19
|
+
label={label}
|
|
20
|
+
labelProps={labelProps}
|
|
21
|
+
readOnly={readOnly}
|
|
22
|
+
style={style}
|
|
23
|
+
variant={variant}
|
|
24
|
+
>
|
|
25
|
+
<input {...rest} disabled={disabled} readOnly={readOnly} ref={ref} />
|
|
26
|
+
</InputGroup>
|
|
27
|
+
);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
Input.displayName = "Input";
|