@postenbring/hedwig-react 0.0.80 → 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-content.js +1 -1
- package/dist/accordion/accordion-content.js.map +1 -1
- package/dist/accordion/accordion-content.mjs +1 -1
- 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 +53 -54
- package/dist/accordion/index.js.map +1 -1
- package/dist/accordion/index.mjs +8 -8
- 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-GXYUJ5MA.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-2UWPZNXC.mjs → chunk-GLAEI3SD.mjs} +2 -2
- package/dist/{chunk-2UWPZNXC.mjs.map → chunk-GLAEI3SD.mjs.map} +1 -1
- 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 +80 -77
- package/dist/footer/footer.js.map +1 -1
- package/dist/footer/footer.mjs +5 -5
- package/dist/footer/index.d.ts +3 -7
- package/dist/footer/index.d.ts.map +1 -0
- package/dist/footer/index.js +81 -85
- package/dist/footer/index.js.map +1 -1
- package/dist/footer/index.mjs +8 -9
- 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 +373 -394
- 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 +373 -394
- 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 +11 -7
- 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-3NL3TOZF.mjs +0 -13
- package/dist/chunk-3NL3TOZF.mjs.map +0 -1
- package/dist/chunk-722MZPXO.mjs +0 -13
- package/dist/chunk-722MZPXO.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-GXYUJ5MA.mjs.map +0 -1
- package/dist/chunk-HBSDJAFF.mjs +0 -23
- package/dist/chunk-HBSDJAFF.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-MKVI42QR.mjs +0 -19
- package/dist/chunk-MKVI42QR.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,63 @@
|
|
|
1
|
+
import { clsx } from "@postenbring/hedwig-css/typed-classname";
|
|
2
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
|
|
5
|
+
export interface BadgeProps extends React.AnchorHTMLAttributes<HTMLSpanElement> {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Font size of the badge
|
|
10
|
+
*
|
|
11
|
+
* @default "small"
|
|
12
|
+
*/
|
|
13
|
+
size?: "small" | "smaller";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Change the default rendered element for the one passed as a child, merging their props and behavior.
|
|
17
|
+
*
|
|
18
|
+
* @default false
|
|
19
|
+
*/
|
|
20
|
+
asChild?: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const Badge = forwardRef<
|
|
24
|
+
HTMLSpanElement,
|
|
25
|
+
BadgeProps & { variant: "lighter" | "dark" | "white" | "warning" }
|
|
26
|
+
>(({ children, asChild, variant, size = "small", className, ...rest }, ref) => {
|
|
27
|
+
const Component = asChild ? Slot : "span";
|
|
28
|
+
return (
|
|
29
|
+
<Component
|
|
30
|
+
ref={ref}
|
|
31
|
+
className={clsx(
|
|
32
|
+
"hds-badge",
|
|
33
|
+
`hds-badge--${size}`,
|
|
34
|
+
`hds-badge--${variant}`,
|
|
35
|
+
className as undefined,
|
|
36
|
+
)}
|
|
37
|
+
{...rest}
|
|
38
|
+
>
|
|
39
|
+
{children}
|
|
40
|
+
</Component>
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
Badge.displayName = "Badge";
|
|
44
|
+
|
|
45
|
+
export const LighterBadge = forwardRef<HTMLSpanElement, BadgeProps>((props, ref) => {
|
|
46
|
+
return <Badge {...props} ref={ref} variant="lighter" />;
|
|
47
|
+
});
|
|
48
|
+
LighterBadge.displayName = "LighterBadge";
|
|
49
|
+
|
|
50
|
+
export const DarkBadge = forwardRef<HTMLSpanElement, BadgeProps>((props, ref) => {
|
|
51
|
+
return <Badge {...props} ref={ref} variant="dark" />;
|
|
52
|
+
});
|
|
53
|
+
DarkBadge.displayName = "DarkBadge";
|
|
54
|
+
|
|
55
|
+
export const WhiteBadge = forwardRef<HTMLSpanElement, BadgeProps>((props, ref) => {
|
|
56
|
+
return <Badge {...props} ref={ref} variant="white" />;
|
|
57
|
+
});
|
|
58
|
+
WhiteBadge.displayName = "WhiteBadge";
|
|
59
|
+
|
|
60
|
+
export const WarningBadge = forwardRef<HTMLSpanElement, BadgeProps>((props, ref) => {
|
|
61
|
+
return <Badge {...props} ref={ref} variant="warning" />;
|
|
62
|
+
});
|
|
63
|
+
WarningBadge.displayName = "WarningBadge";
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies -- storybook story */
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { Text } from "../text";
|
|
5
|
+
import { Link } from "../link";
|
|
6
|
+
import { Box } from ".";
|
|
7
|
+
|
|
8
|
+
const meta: Meta<typeof Box> = {
|
|
9
|
+
title: "Box",
|
|
10
|
+
component: Box,
|
|
11
|
+
args: {
|
|
12
|
+
closeable: false,
|
|
13
|
+
children: (
|
|
14
|
+
<>
|
|
15
|
+
<Text variant="h3-title" as="h2">
|
|
16
|
+
Box content
|
|
17
|
+
</Text>
|
|
18
|
+
<Text _unstableSpacing>
|
|
19
|
+
This is some body copy in a box, but you can basically add anything you want in here.
|
|
20
|
+
</Text>
|
|
21
|
+
<Link href="#a-link-for-whatever-reason">A link for whatever reason</Link>
|
|
22
|
+
</>
|
|
23
|
+
),
|
|
24
|
+
},
|
|
25
|
+
argTypes: {
|
|
26
|
+
variant: {
|
|
27
|
+
options: ["light-grey", "lighter", "white", "warning"],
|
|
28
|
+
control: {
|
|
29
|
+
type: "radio",
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export default meta;
|
|
36
|
+
|
|
37
|
+
type Story = StoryObj<typeof Box>;
|
|
38
|
+
export const LightGreyBox: Story = {
|
|
39
|
+
args: {
|
|
40
|
+
variant: "light-grey",
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export const LighterBox: Story = {
|
|
45
|
+
args: {
|
|
46
|
+
closeable: true,
|
|
47
|
+
variant: "lighter",
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const WhiteBox: Story = {
|
|
52
|
+
args: {
|
|
53
|
+
closeable: true,
|
|
54
|
+
variant: "white",
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const WarningBox: Story = {
|
|
59
|
+
args: {
|
|
60
|
+
closeable: true,
|
|
61
|
+
variant: "warning",
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export const AreYouSureDialog: Story = {
|
|
66
|
+
args: {
|
|
67
|
+
closeable: true,
|
|
68
|
+
variant: "warning",
|
|
69
|
+
// eslint-disable-next-line no-alert -- Storybook story
|
|
70
|
+
onClose: () => window.confirm("Are you sure you want to close?"),
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export const Custom: Story = {
|
|
75
|
+
render: function CustomBox() {
|
|
76
|
+
const [closeTimer, setCloseTimer] = useState<number | null>(null);
|
|
77
|
+
function countDownFrom(seconds: number) {
|
|
78
|
+
if (seconds > 0) {
|
|
79
|
+
setCloseTimer(seconds);
|
|
80
|
+
window.setTimeout(() => {
|
|
81
|
+
countDownFrom(seconds - 1);
|
|
82
|
+
}, 1000);
|
|
83
|
+
} else {
|
|
84
|
+
setCloseTimer(0);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Choosing to not render the box at all instead of hiding it with CSS
|
|
89
|
+
if (closeTimer === 0) {
|
|
90
|
+
// eslint-disable-next-line react/jsx-no-useless-fragment -- Typescript did not like it when I returned null in a story
|
|
91
|
+
return <></>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return (
|
|
95
|
+
<Box variant="lighter">
|
|
96
|
+
{/* Choosing to render the close button manually */}
|
|
97
|
+
<Box.CloseButton
|
|
98
|
+
onClick={() => {
|
|
99
|
+
closeTimer === null && countDownFrom(5);
|
|
100
|
+
}}
|
|
101
|
+
/>
|
|
102
|
+
<Text variant="h3-title" as="h2">
|
|
103
|
+
A customomized box
|
|
104
|
+
{closeTimer !== null && ` - closing in ${closeTimer} seconds`}
|
|
105
|
+
</Text>
|
|
106
|
+
<Text _unstableSpacing>
|
|
107
|
+
With a custom close button, and a custom content. The content can be anything you like.
|
|
108
|
+
</Text>
|
|
109
|
+
</Box>
|
|
110
|
+
);
|
|
111
|
+
},
|
|
112
|
+
};
|
package/src/box/box.tsx
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { forwardRef, useCallback, useState } from "react";
|
|
2
|
+
import { clsx } from "@postenbring/hedwig-css/typed-classname";
|
|
3
|
+
import { Slot, Slottable } from "@radix-ui/react-slot";
|
|
4
|
+
|
|
5
|
+
export type BoxCloseButtonProps = Omit<React.HTMLAttributes<HTMLButtonElement>, "children">;
|
|
6
|
+
export const BoxCloseButton = forwardRef<HTMLButtonElement, BoxCloseButtonProps>(
|
|
7
|
+
({ className, ...rest }, ref) => {
|
|
8
|
+
return (
|
|
9
|
+
<button
|
|
10
|
+
className={clsx("hds-box__close-button", className as undefined)}
|
|
11
|
+
ref={ref}
|
|
12
|
+
type="button"
|
|
13
|
+
{...rest}
|
|
14
|
+
/>
|
|
15
|
+
);
|
|
16
|
+
},
|
|
17
|
+
);
|
|
18
|
+
BoxCloseButton.displayName = "Box.CloseButton";
|
|
19
|
+
|
|
20
|
+
export interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
21
|
+
children?: React.ReactNode;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Color variant of the box
|
|
25
|
+
*
|
|
26
|
+
* @default "light-grey"
|
|
27
|
+
*/
|
|
28
|
+
variant?: "light-grey" | "lighter" | "white" | "warning";
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* If `true`, a close button will be shown.
|
|
32
|
+
* Use when you want to control the close button using the BoxCloseButton component.
|
|
33
|
+
*
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
closeable?: boolean;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Callback fired when the component requests to be closed.
|
|
40
|
+
* If not set, the component will be closed without any user interaction.
|
|
41
|
+
*
|
|
42
|
+
* If set, and the handler returns non-true value, the component will not be closed.
|
|
43
|
+
* Use this if you want to control the closing of the component, using the `closed` prop
|
|
44
|
+
*
|
|
45
|
+
* If set, and the handler returns the true, the component will be closed.
|
|
46
|
+
* Use this with `window.confirm()` to ask the user to confirm closing the component.
|
|
47
|
+
*/
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents -- It's fine, I want to have the boolean in the type
|
|
49
|
+
onClose?: () => boolean | unknown;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* If `true`, the box will be closed and hidden from view
|
|
53
|
+
*/
|
|
54
|
+
closed?: boolean;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Props applied to the close button element.
|
|
58
|
+
*/
|
|
59
|
+
closeButtonProps?: BoxCloseButtonProps;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Change the default rendered element for the one passed as a child, merging their props and behavior.
|
|
63
|
+
*
|
|
64
|
+
* @default false
|
|
65
|
+
*/
|
|
66
|
+
asChild?: boolean;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const Box = forwardRef<HTMLDivElement, BoxProps>(
|
|
70
|
+
(
|
|
71
|
+
{
|
|
72
|
+
asChild,
|
|
73
|
+
variant,
|
|
74
|
+
closeable = false,
|
|
75
|
+
onClose: onCloseProp,
|
|
76
|
+
closed: closedProp,
|
|
77
|
+
closeButtonProps,
|
|
78
|
+
children,
|
|
79
|
+
className,
|
|
80
|
+
...rest
|
|
81
|
+
},
|
|
82
|
+
ref,
|
|
83
|
+
) => {
|
|
84
|
+
const [closedState, setClosedState] = useState(false);
|
|
85
|
+
const onClose = useCallback(() => {
|
|
86
|
+
if (onCloseProp) {
|
|
87
|
+
const result = onCloseProp();
|
|
88
|
+
if (result === true) {
|
|
89
|
+
setClosedState(true);
|
|
90
|
+
}
|
|
91
|
+
} else {
|
|
92
|
+
setClosedState(true);
|
|
93
|
+
}
|
|
94
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- I know better
|
|
95
|
+
}, []);
|
|
96
|
+
const closed = closedProp ?? closedState;
|
|
97
|
+
const Component = asChild ? Slot : "div";
|
|
98
|
+
|
|
99
|
+
return (
|
|
100
|
+
<Component
|
|
101
|
+
className={clsx(
|
|
102
|
+
"hds-box",
|
|
103
|
+
variant && `hds-box--${variant}`,
|
|
104
|
+
{ "hds-box--closed": closed },
|
|
105
|
+
className as undefined,
|
|
106
|
+
)}
|
|
107
|
+
ref={ref}
|
|
108
|
+
{...rest}
|
|
109
|
+
>
|
|
110
|
+
{closeable ? <BoxCloseButton onClick={onClose} {...closeButtonProps} /> : null}
|
|
111
|
+
<Slottable>{children}</Slottable>
|
|
112
|
+
</Component>
|
|
113
|
+
);
|
|
114
|
+
},
|
|
115
|
+
) as BoxType;
|
|
116
|
+
Box.displayName = "Box";
|
|
117
|
+
|
|
118
|
+
Box.CloseButton = BoxCloseButton;
|
|
119
|
+
|
|
120
|
+
type BoxType = ReturnType<typeof forwardRef<HTMLDivElement, BoxProps>> & {
|
|
121
|
+
CloseButton: typeof BoxCloseButton;
|
|
122
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies -- storybook story */
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
import { Link } from "../link";
|
|
4
|
+
import { Breadcrumbs } from ".";
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof Breadcrumbs> = {
|
|
7
|
+
title: "Breadcrumbs",
|
|
8
|
+
component: Breadcrumbs,
|
|
9
|
+
args: {
|
|
10
|
+
children: (
|
|
11
|
+
<>
|
|
12
|
+
<li>
|
|
13
|
+
<Link href="https://www.posten.no">Home</Link>
|
|
14
|
+
</li>
|
|
15
|
+
<li>
|
|
16
|
+
<Link href="https://www.posten.no">Somewhere</Link>
|
|
17
|
+
</li>
|
|
18
|
+
<li>
|
|
19
|
+
<Link href="https://www.posten.no">Deep inside</Link>
|
|
20
|
+
</li>
|
|
21
|
+
<li>
|
|
22
|
+
<Link href="https://www.posten.no">Posten dot no</Link>
|
|
23
|
+
</li>
|
|
24
|
+
<li>You will find this page</li>
|
|
25
|
+
</>
|
|
26
|
+
),
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default meta;
|
|
31
|
+
|
|
32
|
+
type Story = StoryObj<typeof Breadcrumbs>;
|
|
33
|
+
|
|
34
|
+
export const Default: Story = {};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* You should have at minimum two levels in your hierarchy to use breadcrumbs.
|
|
38
|
+
*/
|
|
39
|
+
export const TwoElements: Story = {
|
|
40
|
+
args: {
|
|
41
|
+
children: (
|
|
42
|
+
<>
|
|
43
|
+
<li>
|
|
44
|
+
<Link href="https://www.posten.no">Track letters and parcels</Link>
|
|
45
|
+
</li>
|
|
46
|
+
<li>Shipment from SOMEONE YOU KNOW</li>
|
|
47
|
+
</>
|
|
48
|
+
),
|
|
49
|
+
},
|
|
50
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { forwardRef, type HTMLAttributes, type ReactElement, type ReactNode } from "react";
|
|
2
|
+
import { clsx } from "@postenbring/hedwig-css/typed-classname";
|
|
3
|
+
|
|
4
|
+
export interface BreadcrumbsProps extends HTMLAttributes<HTMLOListElement> {
|
|
5
|
+
children: ReactNode | ReactElement<HTMLLIElement> | ReactElement<HTMLLIElement>[];
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Props passed to the `ol` html element
|
|
9
|
+
*/
|
|
10
|
+
olProps?: HTMLAttributes<HTMLElement>;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A breadcrumbs navigation menu
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
*
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <Breadcrumbs data-testid="breadcrumbs">
|
|
20
|
+
* <li><Link href="../">Previous page</Link></li>
|
|
21
|
+
* <li aria-current="page">Current page</li>
|
|
22
|
+
* </Breadcrumbs>
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Outputs this html structure
|
|
26
|
+
*
|
|
27
|
+
* ```html
|
|
28
|
+
* <nav data-testid="breadcrumbs">
|
|
29
|
+
* <ol>
|
|
30
|
+
* <li><a href="../">Previous page</a></li>
|
|
31
|
+
* <li aria-current="page">Current page</li>
|
|
32
|
+
* </ol>
|
|
33
|
+
* </nav>
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export const Breadcrumbs = forwardRef<HTMLDivElement, BreadcrumbsProps>(
|
|
37
|
+
({ olProps, children, ...rest }, ref) => {
|
|
38
|
+
return (
|
|
39
|
+
<nav ref={ref} {...rest}>
|
|
40
|
+
<ol {...olProps} className={clsx("hds-breadcrumbs", olProps?.className as undefined)}>
|
|
41
|
+
{children}
|
|
42
|
+
</ol>
|
|
43
|
+
</nav>
|
|
44
|
+
);
|
|
45
|
+
},
|
|
46
|
+
);
|
|
47
|
+
Breadcrumbs.displayName = "Breadcrumbs";
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies -- storybook story */
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
import { HStack } from "../layout";
|
|
4
|
+
import type { ButtonProps } from ".";
|
|
5
|
+
import { PrimaryButton, SecondaryButton } from ".";
|
|
6
|
+
|
|
7
|
+
const meta: Meta<typeof PrimaryButton> = {
|
|
8
|
+
title: "Button",
|
|
9
|
+
component: PrimaryButton,
|
|
10
|
+
argTypes: {
|
|
11
|
+
fullWidth: { control: "radio", options: [false, true, "mobile"] },
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default meta;
|
|
16
|
+
|
|
17
|
+
type Story = StoryObj<typeof PrimaryButton>;
|
|
18
|
+
|
|
19
|
+
export const Primary: Story = {
|
|
20
|
+
args: {
|
|
21
|
+
children: "Primary button",
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const PrimaryOutline: Story = {
|
|
26
|
+
args: {
|
|
27
|
+
children: "Primary outline button",
|
|
28
|
+
fill: "outline",
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export const Secondary: Story = {
|
|
33
|
+
args: {
|
|
34
|
+
children: "Secondary button",
|
|
35
|
+
},
|
|
36
|
+
render: (props) => <SecondaryButton {...props} />,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const SecondaryOutline: Story = {
|
|
40
|
+
render: (props) => <SecondaryButton {...props} />,
|
|
41
|
+
args: {
|
|
42
|
+
children: "Secondary outline button",
|
|
43
|
+
fill: "outline",
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export const AsALink: Story = {
|
|
48
|
+
name: "As a link",
|
|
49
|
+
render: (args) => (
|
|
50
|
+
<HStack gap="16" wrap>
|
|
51
|
+
<PrimaryButton {...args} />
|
|
52
|
+
<PrimaryButton {...args} fill="outline" />
|
|
53
|
+
<SecondaryButton {...args} />
|
|
54
|
+
<SecondaryButton {...args} fill="outline" />
|
|
55
|
+
</HStack>
|
|
56
|
+
),
|
|
57
|
+
args: {
|
|
58
|
+
children: (
|
|
59
|
+
<a href="https://www.posten.no" target="_blank" rel="noopener">
|
|
60
|
+
Link button
|
|
61
|
+
</a>
|
|
62
|
+
),
|
|
63
|
+
asChild: true,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const createIconStory = (
|
|
68
|
+
Component: typeof PrimaryButton,
|
|
69
|
+
extraArgs: Partial<ButtonProps> = {},
|
|
70
|
+
): Story => ({
|
|
71
|
+
render: (args) => (
|
|
72
|
+
<HStack gap="16" wrap align="end">
|
|
73
|
+
<Component {...args} size="small" />
|
|
74
|
+
<Component {...args} size="medium" />
|
|
75
|
+
<Component {...args} size="large" />
|
|
76
|
+
</HStack>
|
|
77
|
+
),
|
|
78
|
+
args: {
|
|
79
|
+
lang: "en",
|
|
80
|
+
"aria-label": "Choose language",
|
|
81
|
+
icon: true,
|
|
82
|
+
children: (
|
|
83
|
+
<svg
|
|
84
|
+
aria-hidden
|
|
85
|
+
fill="none"
|
|
86
|
+
height="24"
|
|
87
|
+
viewBox="0 0 24 24"
|
|
88
|
+
width="24"
|
|
89
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
90
|
+
>
|
|
91
|
+
<path
|
|
92
|
+
d="M12 19.3125C12.2602 19.3125 12.9492 19.0594 13.6734 17.6109C13.9828 16.9887 14.25 16.2328 14.4469 15.375H9.55312C9.75 16.2328 10.0172 16.9887 10.3266 17.6109C11.0508 19.0594 11.7398 19.3125 12 19.3125ZM9.27539 13.6875H14.7246C14.7809 13.1496 14.8125 12.5836 14.8125 12C14.8125 11.4164 14.7809 10.8504 14.7246 10.3125H9.27539C9.21914 10.8504 9.1875 11.4164 9.1875 12C9.1875 12.5836 9.21914 13.1496 9.27539 13.6875ZM9.55312 8.625H14.4469C14.25 7.76719 13.9828 7.01133 13.6734 6.38906C12.9492 4.94063 12.2602 4.6875 12 4.6875C11.7398 4.6875 11.0508 4.94063 10.3266 6.38906C10.0172 7.01133 9.75 7.76719 9.55312 8.625ZM16.4191 10.3125C16.4719 10.8574 16.4965 11.4234 16.4965 12C16.4965 12.5766 16.4684 13.1426 16.4191 13.6875H19.1156C19.2422 13.1461 19.3125 12.5801 19.3125 12C19.3125 11.4199 19.2457 10.8539 19.1156 10.3125H16.4227H16.4191ZM18.4863 8.625C17.734 7.18008 16.5141 6.01992 15.027 5.34141C15.5227 6.24141 15.9164 7.36289 16.173 8.625H18.4898H18.4863ZM7.82344 8.625C8.08008 7.36289 8.47383 6.24492 8.96953 5.34141C7.48242 6.01992 6.2625 7.18008 5.51016 8.625H7.82695H7.82344ZM4.88437 10.3125C4.75781 10.8539 4.6875 11.4199 4.6875 12C4.6875 12.5801 4.7543 13.1461 4.88437 13.6875H7.58086C7.52813 13.1426 7.50352 12.5766 7.50352 12C7.50352 11.4234 7.53164 10.8574 7.58086 10.3125H4.88437ZM15.027 18.6586C16.5141 17.9801 17.734 16.8199 18.4863 15.375H16.173C15.9164 16.6371 15.5227 17.7551 15.027 18.6586ZM8.97305 18.6586C8.47734 17.7586 8.08359 16.6371 7.82695 15.375H5.51016C6.2625 16.8199 7.48242 17.9801 8.96953 18.6586H8.97305ZM12 21C9.61305 21 7.32387 20.0518 5.63604 18.364C3.94821 16.6761 3 14.3869 3 12C3 9.61305 3.94821 7.32387 5.63604 5.63604C7.32387 3.94821 9.61305 3 12 3C14.3869 3 16.6761 3.94821 18.364 5.63604C20.0518 7.32387 21 9.61305 21 12C21 14.3869 20.0518 16.6761 18.364 18.364C16.6761 20.0518 14.3869 21 12 21Z"
|
|
93
|
+
fill="currentColor"
|
|
94
|
+
/>
|
|
95
|
+
</svg>
|
|
96
|
+
),
|
|
97
|
+
...extraArgs,
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
export const IconPrimary: Story = createIconStory(PrimaryButton);
|
|
102
|
+
export const IconPrimaryOutline: Story = createIconStory(PrimaryButton, { fill: "outline" });
|
|
103
|
+
export const IconSecondary: Story = createIconStory(SecondaryButton);
|
|
104
|
+
export const IconSecondaryOutline: Story = createIconStory(SecondaryButton, { fill: "outline" });
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { forwardRef } from "react";
|
|
2
|
+
import { clsx } from "@postenbring/hedwig-css/typed-classname";
|
|
3
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
4
|
+
|
|
5
|
+
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
6
|
+
/**
|
|
7
|
+
* The height, font size and padding of the button
|
|
8
|
+
*/
|
|
9
|
+
size?: "small" | "medium" | "large";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The background fill of the button
|
|
13
|
+
*
|
|
14
|
+
* @default "contained"
|
|
15
|
+
*/
|
|
16
|
+
fill?: "contained" | "outline";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Make the button use 100% width available.
|
|
20
|
+
* Using the "mobile" it only stretch to full width on smaller screens
|
|
21
|
+
*/
|
|
22
|
+
fullWidth?: boolean | "mobile";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Use the button as an icon button
|
|
26
|
+
*
|
|
27
|
+
* Render the icon in `children`
|
|
28
|
+
*/
|
|
29
|
+
icon?: boolean;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Change the default rendered element for the one passed as a child, merging their props and behavior.
|
|
33
|
+
*
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
asChild?: boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const Button = forwardRef<HTMLButtonElement, ButtonProps & { variant: "primary" | "secondary" }>(
|
|
40
|
+
(
|
|
41
|
+
{
|
|
42
|
+
asChild,
|
|
43
|
+
children,
|
|
44
|
+
variant,
|
|
45
|
+
size = "medium",
|
|
46
|
+
fullWidth = false,
|
|
47
|
+
fill = "contained",
|
|
48
|
+
icon,
|
|
49
|
+
className,
|
|
50
|
+
...rest
|
|
51
|
+
},
|
|
52
|
+
ref,
|
|
53
|
+
) => {
|
|
54
|
+
const Component = asChild ? Slot : "button";
|
|
55
|
+
return (
|
|
56
|
+
<Component
|
|
57
|
+
className={clsx(
|
|
58
|
+
"hds-button",
|
|
59
|
+
`hds-button--${size}`,
|
|
60
|
+
{
|
|
61
|
+
[`hds-button--${variant}`]: fill === "contained",
|
|
62
|
+
[`hds-button--outline-${variant}`]: fill === "outline",
|
|
63
|
+
"hds-button--full": fullWidth === true,
|
|
64
|
+
"hds-button--mobile-full": fullWidth === "mobile",
|
|
65
|
+
"hds-button--icon-only": icon,
|
|
66
|
+
},
|
|
67
|
+
className as undefined,
|
|
68
|
+
)}
|
|
69
|
+
ref={ref}
|
|
70
|
+
{...rest}
|
|
71
|
+
>
|
|
72
|
+
{children}
|
|
73
|
+
</Component>
|
|
74
|
+
);
|
|
75
|
+
},
|
|
76
|
+
);
|
|
77
|
+
Button.displayName = "Button";
|
|
78
|
+
|
|
79
|
+
export const PrimaryButton = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => {
|
|
80
|
+
return <Button {...props} ref={ref} variant="primary" />;
|
|
81
|
+
});
|
|
82
|
+
PrimaryButton.displayName = "PrimaryButton";
|
|
83
|
+
|
|
84
|
+
export const SecondaryButton = forwardRef<HTMLButtonElement, ButtonProps>((props, ref) => {
|
|
85
|
+
return <Button {...props} ref={ref} variant="secondary" />;
|
|
86
|
+
});
|
|
87
|
+
SecondaryButton.displayName = "SecondaryButton";
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies -- storybook story */
|
|
2
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
import type { ReactNode } from "react";
|
|
4
|
+
import { Card } from ".";
|
|
5
|
+
|
|
6
|
+
const meta: Meta<typeof Card> = {
|
|
7
|
+
title: "Card",
|
|
8
|
+
component: Card,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export default meta;
|
|
12
|
+
|
|
13
|
+
type Story = StoryObj<typeof Card>;
|
|
14
|
+
|
|
15
|
+
export const CardStory: Story = {
|
|
16
|
+
name: "Card",
|
|
17
|
+
render: (props) => (
|
|
18
|
+
<Card {...props} as="div" style={{ maxWidth: "500px", ...props.style }}>
|
|
19
|
+
<Card.Media style={{ width: "100%" }}>
|
|
20
|
+
<Card.MediaImg
|
|
21
|
+
style={{ width: "100%", display: "block", aspectRatio: 16 / 9 }}
|
|
22
|
+
alt="posten-bring"
|
|
23
|
+
src="./posten-bring.jpg"
|
|
24
|
+
/>
|
|
25
|
+
</Card.Media>
|
|
26
|
+
<Card.Body>
|
|
27
|
+
<Card.BodyHeader as="h2">
|
|
28
|
+
<Card.BodyHeaderOverline>Theme</Card.BodyHeaderOverline>
|
|
29
|
+
<Card.BodyHeaderTitle asChild>
|
|
30
|
+
<a href="#article">Cool article</a>
|
|
31
|
+
</Card.BodyHeaderTitle>
|
|
32
|
+
</Card.BodyHeader>
|
|
33
|
+
<Card.BodyDescription>
|
|
34
|
+
This is a card which acts as a giant link. You can also use the hedwig provided{" "}
|
|
35
|
+
<code>Link</code> component, or a link component from your routing library. The link
|
|
36
|
+
component of your choice should be set with the <code>as</code> property on the body
|
|
37
|
+
header title. The card component provides a lot of flexibility.
|
|
38
|
+
</Card.BodyDescription>
|
|
39
|
+
<Card.BodyActionArrow />
|
|
40
|
+
</Card.Body>
|
|
41
|
+
</Card>
|
|
42
|
+
),
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
function Link({
|
|
46
|
+
to,
|
|
47
|
+
className,
|
|
48
|
+
children,
|
|
49
|
+
}: {
|
|
50
|
+
to: string;
|
|
51
|
+
className?: string;
|
|
52
|
+
children: ReactNode;
|
|
53
|
+
}) {
|
|
54
|
+
return (
|
|
55
|
+
<a className={className} href={to}>
|
|
56
|
+
{children}
|
|
57
|
+
</a>
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export const CardFullWidth: Story = {
|
|
62
|
+
render: (props) => (
|
|
63
|
+
<Card {...props} as="div">
|
|
64
|
+
<Card.Media>
|
|
65
|
+
<Card.MediaImg alt="posten-bring" src="./posten-bring.jpg" />
|
|
66
|
+
</Card.Media>
|
|
67
|
+
<Card.Body>
|
|
68
|
+
<Card.BodyHeader as="h2">
|
|
69
|
+
<Card.BodyHeaderOverline>Theme</Card.BodyHeaderOverline>
|
|
70
|
+
<Card.BodyHeaderTitle asChild>
|
|
71
|
+
<Link to="#article">Cool article</Link>
|
|
72
|
+
</Card.BodyHeaderTitle>
|
|
73
|
+
</Card.BodyHeader>
|
|
74
|
+
<Card.BodyDescription>
|
|
75
|
+
The card will take up all available space by default. It is the consumer's choice and
|
|
76
|
+
responsibility to limit the width if wanted.
|
|
77
|
+
</Card.BodyDescription>
|
|
78
|
+
<Card.BodyActionArrow />
|
|
79
|
+
</Card.Body>
|
|
80
|
+
</Card>
|
|
81
|
+
),
|
|
82
|
+
};
|