@boostdev/design-system-components 2.7.1 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +54 -46
- package/README.md +34 -20
- package/dist/client.cjs +1317 -779
- package/dist/client.css +1029 -812
- package/dist/client.d.cts +88 -26
- package/dist/client.d.ts +88 -26
- package/dist/client.js +1278 -732
- package/dist/index.cjs +1317 -779
- package/dist/index.css +1029 -812
- package/dist/index.d.cts +88 -26
- package/dist/index.d.ts +88 -26
- package/dist/index.js +1278 -732
- package/dist/web-components/chunk-2OLVQUBU.js +193 -0
- package/dist/web-components/chunk-3AY2YKCM.js +223 -0
- package/dist/web-components/chunk-3WAV6MDN.js +212 -0
- package/dist/web-components/{chunk-CZBIVR4V.js → chunk-47AT5KZD.js} +88 -16
- package/dist/web-components/chunk-4A2YYTYN.js +93 -0
- package/dist/web-components/{chunk-Q4T5BJT6.js → chunk-62NK3ZSC.js} +18 -3
- package/dist/web-components/chunk-66M6ETWD.js +77 -0
- package/dist/web-components/{chunk-NCPQ7AF3.js → chunk-6G22I2CK.js} +18 -3
- package/dist/web-components/{chunk-QDST57JC.js → chunk-7ZOJ7N4E.js} +14 -4
- package/dist/web-components/{chunk-5R6IFELV.js → chunk-AIBOHNDU.js} +11 -1
- package/dist/web-components/{chunk-ITHLKR7Q.js → chunk-AP4RDUL2.js} +16 -5
- package/dist/web-components/{chunk-QWPACK5L.js → chunk-BPYKZVDK.js} +11 -1
- package/dist/web-components/{chunk-YLVTEY23.js → chunk-BTCMJQKB.js} +53 -21
- package/dist/web-components/chunk-CUKQ2L5B.js +245 -0
- package/dist/web-components/chunk-DIZDCL7Z.js +14 -0
- package/dist/web-components/{chunk-PC3IOQAH.js → chunk-DV5T43ZC.js} +27 -7
- package/dist/web-components/{chunk-2QA62WCQ.js → chunk-EF7IVYTY.js} +10 -0
- package/dist/web-components/{chunk-L3XHOMN6.js → chunk-F3ZDNHZZ.js} +26 -1
- package/dist/web-components/chunk-FEDABOR5.js +248 -0
- package/dist/web-components/{chunk-6I2DBFQ7.js → chunk-HGFCJXOQ.js} +36 -5
- package/dist/web-components/{chunk-SOQQ7RVJ.js → chunk-IPGHUCJT.js} +23 -8
- package/dist/web-components/chunk-ITD2MV5K.js +392 -0
- package/dist/web-components/{chunk-CM3KYZ6Z.js → chunk-JH6LQKLK.js} +78 -6
- package/dist/web-components/chunk-JMCXAAFK.js +120 -0
- package/dist/web-components/{chunk-KUI55GFB.js → chunk-JUPCZVVW.js} +50 -18
- package/dist/web-components/chunk-JV5QT2OU.js +146 -0
- package/dist/web-components/{chunk-3GFWLSLS.js → chunk-KA3VPKMY.js} +29 -6
- package/dist/web-components/{chunk-CR5PGUHV.js → chunk-KJGRFDFI.js} +26 -11
- package/dist/web-components/{chunk-PY62FTRW.js → chunk-KZPRFY5P.js} +68 -33
- package/dist/web-components/{chunk-X46KL5BK.js → chunk-LDIPCTRN.js} +18 -1
- package/dist/web-components/chunk-M3ECULRH.js +174 -0
- package/dist/web-components/chunk-NBN2ENWJ.js +90 -0
- package/dist/web-components/chunk-NIN3JO6Q.js +189 -0
- package/dist/web-components/{chunk-2FGATTGT.js → chunk-NTQ4TCUT.js} +76 -55
- package/dist/web-components/chunk-OY74D4X6.js +302 -0
- package/dist/web-components/{chunk-3S42DZ7W.js → chunk-P24JYC5V.js} +7 -0
- package/dist/web-components/{chunk-BKIHQYJR.js → chunk-PXPPKCLT.js} +17 -2
- package/dist/web-components/{chunk-TQ7IQ4GZ.js → chunk-QEF2IRID.js} +71 -29
- package/dist/web-components/chunk-QZAIRJ75.js +111 -0
- package/dist/web-components/{chunk-6I3CFC26.js → chunk-RSZ3BWBK.js} +20 -5
- package/dist/web-components/chunk-RVF7W653.js +101 -0
- package/dist/web-components/chunk-SEO2F5KJ.js +234 -0
- package/dist/web-components/{chunk-VMMVWLXL.js → chunk-SFZ6Q4BP.js} +10 -0
- package/dist/web-components/{chunk-LY62SAVN.js → chunk-SYNLFKD3.js} +12 -2
- package/dist/web-components/chunk-TMWXRHGF.js +192 -0
- package/dist/web-components/{chunk-65JXQOBA.js → chunk-U3YZE6R6.js} +51 -7
- package/dist/web-components/chunk-UO7ROSHD.js +424 -0
- package/dist/web-components/chunk-VANAKB6D.js +152 -0
- package/dist/web-components/{chunk-PXZWYO6Z.js → chunk-VED2DFJ6.js} +108 -29
- package/dist/web-components/chunk-W6H5ID2U.js +161 -0
- package/dist/web-components/{chunk-57TRNCWQ.js → chunk-WFVKU4GX.js} +22 -11
- package/dist/web-components/{chunk-OQTRTMAB.js → chunk-WIBAN7KP.js} +10 -0
- package/dist/web-components/chunk-XI7KRAH7.js +54 -0
- package/dist/web-components/{chunk-F5E3IT7G.js → chunk-XIZWAWMJ.js} +50 -11
- package/dist/web-components/{chunk-FXURM6D5.js → chunk-YFAXGRPR.js} +10 -0
- package/dist/web-components/globals.js +1 -1
- package/dist/web-components/index.d.ts +77 -707
- package/dist/web-components/index.js +339 -2066
- package/dist/web-components/interaction/bds-accordion-item.js +1 -1
- package/dist/web-components/interaction/bds-accordion.js +1 -1
- package/dist/web-components/interaction/bds-button.d.ts +10 -2
- package/dist/web-components/interaction/bds-button.js +1 -1
- package/dist/web-components/interaction/bds-collapsible.d.ts +7 -2
- package/dist/web-components/interaction/bds-collapsible.js +1 -1
- package/dist/web-components/interaction/bds-dialog.d.ts +11 -3
- package/dist/web-components/interaction/bds-dialog.js +1 -1
- package/dist/web-components/interaction/bds-drawer.d.ts +7 -1
- package/dist/web-components/interaction/bds-drawer.js +1 -1
- package/dist/web-components/interaction/bds-dropdown-menu-item.d.ts +51 -0
- package/dist/web-components/interaction/bds-dropdown-menu-item.js +7 -0
- package/dist/web-components/interaction/bds-dropdown-menu.d.ts +70 -0
- package/dist/web-components/interaction/bds-dropdown-menu.js +7 -0
- package/dist/web-components/interaction/bds-popover.d.ts +14 -3
- package/dist/web-components/interaction/bds-popover.js +1 -1
- package/dist/web-components/interaction/bds-skip-link.js +1 -1
- package/dist/web-components/interaction/bds-tab-panel.js +1 -1
- package/dist/web-components/interaction/bds-tab.js +1 -1
- package/dist/web-components/interaction/bds-tabs.d.ts +1 -0
- package/dist/web-components/interaction/bds-tabs.js +1 -1
- package/dist/web-components/interaction/bds-toast-provider.js +1 -1
- package/dist/web-components/interaction/bds-tooltip.d.ts +19 -3
- package/dist/web-components/interaction/bds-tooltip.js +1 -1
- package/dist/web-components/interaction/form/bds-checkbox-group.d.ts +83 -0
- package/dist/web-components/interaction/form/bds-checkbox-group.js +7 -0
- package/dist/web-components/interaction/form/bds-checkbox.d.ts +6 -0
- package/dist/web-components/interaction/form/bds-checkbox.js +1 -1
- package/dist/web-components/interaction/form/bds-combobox.d.ts +18 -0
- package/dist/web-components/interaction/form/bds-combobox.js +1 -1
- package/dist/web-components/interaction/form/bds-field-group.d.ts +89 -0
- package/dist/web-components/interaction/form/bds-field-group.js +7 -0
- package/dist/web-components/interaction/form/bds-file-input.d.ts +1 -1
- package/dist/web-components/interaction/form/bds-file-input.js +1 -1
- package/dist/web-components/interaction/form/bds-form-input.d.ts +92 -0
- package/dist/web-components/interaction/form/bds-form-input.js +7 -0
- package/dist/web-components/interaction/form/bds-number-input.d.ts +18 -1
- package/dist/web-components/interaction/form/bds-number-input.js +1 -1
- package/dist/web-components/interaction/form/bds-radio-group.d.ts +81 -0
- package/dist/web-components/interaction/form/bds-radio-group.js +7 -0
- package/dist/web-components/interaction/form/bds-radio.d.ts +34 -6
- package/dist/web-components/interaction/form/bds-radio.js +1 -1
- package/dist/web-components/interaction/form/bds-segmented-control.d.ts +4 -4
- package/dist/web-components/interaction/form/bds-segmented-control.js +1 -1
- package/dist/web-components/interaction/form/bds-select.d.ts +22 -1
- package/dist/web-components/interaction/form/bds-select.js +1 -1
- package/dist/web-components/interaction/form/bds-slider.d.ts +42 -10
- package/dist/web-components/interaction/form/bds-slider.js +1 -1
- package/dist/web-components/interaction/form/bds-switch.d.ts +20 -0
- package/dist/web-components/interaction/form/bds-switch.js +1 -1
- package/dist/web-components/interaction/form/bds-textarea.d.ts +23 -3
- package/dist/web-components/interaction/form/bds-textarea.js +1 -1
- package/dist/web-components/layout/bds-grid-item.d.ts +63 -0
- package/dist/web-components/layout/bds-grid-item.js +7 -0
- package/dist/web-components/layout/bds-grid.d.ts +108 -0
- package/dist/web-components/layout/bds-grid.js +7 -0
- package/dist/web-components/ui/bds-alert.d.ts +16 -2
- package/dist/web-components/ui/bds-alert.js +1 -1
- package/dist/web-components/ui/bds-avatar.d.ts +2 -1
- package/dist/web-components/ui/bds-avatar.js +1 -1
- package/dist/web-components/ui/bds-badge.js +1 -1
- package/dist/web-components/ui/bds-breadcrumb.d.ts +3 -1
- package/dist/web-components/ui/bds-breadcrumb.js +1 -1
- package/dist/web-components/ui/bds-button-container.d.ts +52 -0
- package/dist/web-components/ui/bds-button-container.js +7 -0
- package/dist/web-components/ui/bds-button-group.d.ts +21 -0
- package/dist/web-components/ui/bds-button-group.js +8 -0
- package/dist/web-components/ui/bds-calendar.d.ts +121 -0
- package/dist/web-components/ui/bds-calendar.js +7 -0
- package/dist/web-components/ui/bds-card.d.ts +12 -3
- package/dist/web-components/ui/bds-card.js +1 -1
- package/dist/web-components/ui/bds-carousel.d.ts +98 -0
- package/dist/web-components/ui/bds-carousel.js +7 -0
- package/dist/web-components/ui/bds-description-list.js +1 -1
- package/dist/web-components/ui/bds-icon-wrapper.d.ts +0 -9
- package/dist/web-components/ui/bds-icon-wrapper.js +1 -1
- package/dist/web-components/ui/bds-link.js +1 -1
- package/dist/web-components/ui/bds-loading.js +1 -1
- package/dist/web-components/ui/bds-notification-banner.js +1 -1
- package/dist/web-components/ui/bds-pagination.d.ts +47 -0
- package/dist/web-components/ui/bds-pagination.js +7 -0
- package/dist/web-components/ui/bds-progress-circle.d.ts +3 -1
- package/dist/web-components/ui/bds-progress-circle.js +1 -1
- package/dist/web-components/ui/bds-progress.d.ts +3 -1
- package/dist/web-components/ui/bds-progress.js +1 -1
- package/dist/web-components/ui/bds-rating.js +1 -1
- package/dist/web-components/ui/bds-section-header.d.ts +18 -4
- package/dist/web-components/ui/bds-section-header.js +1 -1
- package/dist/web-components/ui/bds-separator.js +1 -1
- package/dist/web-components/ui/bds-skeleton.js +1 -1
- package/dist/web-components/ui/bds-table.d.ts +52 -0
- package/dist/web-components/ui/bds-table.js +7 -0
- package/dist/web-components/ui/bds-typography.d.ts +1 -0
- package/dist/web-components/ui/bds-typography.js +1 -1
- package/package.json +60 -3
- package/src/components/interaction/Button/Button.module.css +23 -14
- package/src/components/interaction/Button/Button.spec.tsx +20 -0
- package/src/components/interaction/Button/Button.tsx +2 -2
- package/src/components/interaction/Command/Command.mdx +5 -2
- package/src/components/interaction/Command/Command.module.css +23 -7
- package/src/components/interaction/Command/Command.spec.tsx +35 -0
- package/src/components/interaction/Command/Command.tsx +15 -4
- package/src/components/interaction/Command/index.ts +1 -1
- package/src/components/interaction/Dialog/Dialog.mdx +4 -4
- package/src/components/interaction/Dialog/Dialog.module.css +20 -0
- package/src/components/interaction/Dialog/Dialog.spec.tsx +20 -0
- package/src/components/interaction/Dialog/Dialog.tsx +8 -3
- package/src/components/interaction/Dialog/index.ts +1 -0
- package/src/components/interaction/Drawer/Drawer.mdx +5 -2
- package/src/components/interaction/Drawer/Drawer.module.css +34 -3
- package/src/components/interaction/Drawer/Drawer.spec.tsx +67 -1
- package/src/components/interaction/Drawer/Drawer.tsx +30 -12
- package/src/components/interaction/Drawer/index.ts +1 -0
- package/src/components/interaction/DropdownMenu/DropdownMenu.mdx +2 -0
- package/src/components/interaction/DropdownMenu/DropdownMenu.spec.tsx +34 -0
- package/src/components/interaction/DropdownMenu/DropdownMenu.tsx +15 -5
- package/src/components/interaction/DropdownMenu/index.ts +1 -0
- package/src/components/interaction/Popover/Popover.mdx +6 -2
- package/src/components/interaction/Popover/Popover.module.css +26 -18
- package/src/components/interaction/Popover/Popover.spec.tsx +38 -0
- package/src/components/interaction/Popover/Popover.tsx +19 -5
- package/src/components/interaction/Popover/index.ts +1 -0
- package/src/components/interaction/Rating/Rating.mdx +1 -1
- package/src/components/interaction/Rating/Rating.module.css +2 -2
- package/src/components/interaction/Rating/Rating.tsx +1 -1
- package/src/components/interaction/Rating/index.ts +1 -0
- package/src/components/interaction/Toast/Toast.mdx +3 -0
- package/src/components/interaction/Toast/Toast.module.css +35 -5
- package/src/components/interaction/Toast/Toast.spec.tsx +69 -1
- package/src/components/interaction/Toast/Toast.tsx +15 -9
- package/src/components/interaction/form/Checkbox/Checkbox.mdx +3 -0
- package/src/components/interaction/form/Checkbox/Checkbox.module.css +13 -6
- package/src/components/interaction/form/Checkbox/Checkbox.spec.tsx +6 -0
- package/src/components/interaction/form/Checkbox/Checkbox.tsx +1 -1
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.mdx +16 -1
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css +24 -8
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.spec.tsx +32 -2
- package/src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx +14 -2
- package/src/components/interaction/form/Combobox/Combobox.mdx +11 -4
- package/src/components/interaction/form/Combobox/Combobox.module.css +6 -6
- package/src/components/interaction/form/Combobox/Combobox.spec.tsx +47 -0
- package/src/components/interaction/form/Combobox/Combobox.tsx +10 -5
- package/src/components/interaction/form/FieldGroup/FieldGroup.mdx +9 -10
- package/src/components/interaction/form/FieldGroup/FieldGroup.module.css +57 -23
- package/src/components/interaction/form/FieldGroup/FieldGroup.spec.tsx +129 -7
- package/src/components/interaction/form/FieldGroup/FieldGroup.tsx +72 -12
- package/src/components/interaction/form/FileInput/FileInput.mdx +9 -1
- package/src/components/interaction/form/FileInput/FileInput.module.css +8 -8
- package/src/components/interaction/form/FileInput/FileInput.spec.tsx +89 -1
- package/src/components/interaction/form/FileInput/FileInput.tsx +6 -2
- package/src/components/interaction/form/FormInput/FormInput.mdx +9 -5
- package/src/components/interaction/form/FormInput/FormInput.module.css +17 -8
- package/src/components/interaction/form/FormInput/FormInput.spec.tsx +20 -0
- package/src/components/interaction/form/FormInput/FormInput.tsx +7 -2
- package/src/components/interaction/form/NumberInput/NumberInput.mdx +5 -1
- package/src/components/interaction/form/NumberInput/NumberInput.module.css +6 -6
- package/src/components/interaction/form/NumberInput/NumberInput.spec.tsx +51 -0
- package/src/components/interaction/form/NumberInput/NumberInput.tsx +36 -8
- package/src/components/interaction/form/Radio/Radio.mdx +8 -1
- package/src/components/interaction/form/Radio/Radio.module.css +20 -7
- package/src/components/interaction/form/Radio/Radio.spec.tsx +15 -0
- package/src/components/interaction/form/Radio/Radio.tsx +10 -4
- package/src/components/interaction/form/RadioGroup/RadioGroup.mdx +16 -1
- package/src/components/interaction/form/RadioGroup/RadioGroup.module.css +24 -8
- package/src/components/interaction/form/RadioGroup/RadioGroup.spec.tsx +32 -2
- package/src/components/interaction/form/RadioGroup/RadioGroup.tsx +14 -2
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.mdx +9 -3
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.module.css +25 -12
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.spec.tsx +86 -5
- package/src/components/interaction/form/SegmentedControl/SegmentedControl.tsx +44 -4
- package/src/components/interaction/form/Select/Select.mdx +10 -4
- package/src/components/interaction/form/Select/Select.module.css +4 -4
- package/src/components/interaction/form/Select/Select.spec.tsx +34 -0
- package/src/components/interaction/form/Select/Select.tsx +21 -9
- package/src/components/interaction/form/Slider/Slider.mdx +4 -1
- package/src/components/interaction/form/Slider/Slider.module.css +32 -8
- package/src/components/interaction/form/Slider/Slider.spec.tsx +29 -0
- package/src/components/interaction/form/Slider/Slider.tsx +9 -7
- package/src/components/interaction/form/Switch/Switch.mdx +2 -2
- package/src/components/interaction/form/Switch/Switch.module.css +12 -13
- package/src/components/interaction/form/Switch/Switch.spec.tsx +20 -0
- package/src/components/interaction/form/Switch/Switch.tsx +2 -1
- package/src/components/interaction/form/Textarea/Textarea.mdx +5 -0
- package/src/components/interaction/form/Textarea/Textarea.module.css +5 -5
- package/src/components/interaction/form/Textarea/Textarea.spec.tsx +13 -0
- package/src/components/interaction/form/Textarea/Textarea.tsx +3 -1
- package/src/components/interaction/form/atoms/Message.module.css +1 -1
- package/src/components/interaction/form/atoms/Message.spec.tsx +29 -0
- package/src/components/interaction/form/atoms/Message.tsx +1 -1
- package/src/components/layout/ButtonGroup/ButtonGroup.mdx +11 -0
- package/src/components/layout/ButtonGroup/ButtonGroup.module.css +1 -5
- package/src/components/layout/ButtonGroup/ButtonGroup.stories.tsx +14 -0
- package/src/components/layout/Card/Card.mdx +6 -1
- package/src/components/layout/Card/Card.module.css +26 -5
- package/src/components/layout/Card/Card.spec.tsx +7 -0
- package/src/components/layout/Card/Card.tsx +4 -3
- package/src/components/layout/Grid/Grid.spec.tsx +44 -0
- package/src/components/layout/Grid/Grid.tsx +5 -5
- package/src/components/layout/Grid/GridItem.tsx +6 -6
- package/src/components/layout/Grid/masonry.ts +31 -5
- package/src/components/layout/Grid/useIsomorphicLayoutEffect.ts +11 -0
- package/src/components/layout/IconWrapper/IconWrapper.mdx +8 -2
- package/src/components/layout/IconWrapper/IconWrapper.module.css +9 -6
- package/src/components/layout/SectionHeader/SectionHeader.mdx +4 -1
- package/src/components/layout/SectionHeader/SectionHeader.module.css +10 -9
- package/src/components/ui/Accordion/Accordion.mdx +4 -1
- package/src/components/ui/Accordion/Accordion.module.css +2 -1
- package/src/components/ui/Alert/Alert.mdx +21 -4
- package/src/components/ui/Alert/Alert.module.css +9 -4
- package/src/components/ui/Alert/Alert.spec.tsx +20 -0
- package/src/components/ui/Avatar/Avatar.mdx +8 -3
- package/src/components/ui/Avatar/Avatar.module.css +13 -8
- package/src/components/ui/Badge/Badge.mdx +3 -1
- package/src/components/ui/Breadcrumb/Breadcrumb.mdx +3 -0
- package/src/components/ui/Breadcrumb/Breadcrumb.module.css +4 -0
- package/src/components/ui/Breadcrumb/Breadcrumb.spec.tsx +12 -0
- package/src/components/ui/Breadcrumb/Breadcrumb.tsx +11 -3
- package/src/components/ui/Calendar/Calendar.mdx +6 -0
- package/src/components/ui/Calendar/Calendar.module.css +68 -19
- package/src/components/ui/Calendar/Calendar.spec.tsx +139 -24
- package/src/components/ui/Calendar/Calendar.stories.tsx +14 -0
- package/src/components/ui/Calendar/Calendar.tsx +143 -154
- package/src/components/ui/Calendar/CalendarRange.mdx +39 -0
- package/src/components/ui/Calendar/CalendarRange.spec.tsx +119 -0
- package/src/components/ui/Calendar/CalendarRange.stories.tsx +51 -0
- package/src/components/ui/Calendar/CalendarRange.tsx +213 -0
- package/src/components/ui/Calendar/MonthGrid.tsx +141 -0
- package/src/components/ui/Calendar/calendar-core.spec.ts +176 -0
- package/src/components/ui/Calendar/calendar-core.ts +164 -0
- package/src/components/ui/Calendar/index.ts +1 -0
- package/src/components/ui/Carousel/Carousel.mdx +8 -3
- package/src/components/ui/Carousel/Carousel.module.css +7 -5
- package/src/components/ui/Carousel/Carousel.spec.tsx +67 -0
- package/src/components/ui/Carousel/Carousel.tsx +19 -7
- package/src/components/ui/Collapsible/Collapsible.mdx +17 -6
- package/src/components/ui/Collapsible/Collapsible.module.css +7 -2
- package/src/components/ui/Collapsible/Collapsible.spec.tsx +40 -0
- package/src/components/ui/Collapsible/Collapsible.tsx +19 -2
- package/src/components/ui/DescriptionList/DescriptionList.mdx +2 -0
- package/src/components/ui/Link/Link.mdx +4 -2
- package/src/components/ui/Loading/Loading.mdx +6 -3
- package/src/components/ui/Loading/Loading.module.css +7 -7
- package/src/components/ui/Loading/Loading.spec.tsx +12 -0
- package/src/components/ui/Loading/Loading.tsx +8 -3
- package/src/components/ui/NotificationBanner/NotificationBanner.mdx +4 -0
- package/src/components/ui/NotificationBanner/NotificationBanner.module.css +5 -0
- package/src/components/ui/NotificationBanner/NotificationBanner.spec.tsx +20 -0
- package/src/components/ui/Pagination/Pagination.mdx +29 -7
- package/src/components/ui/Pagination/Pagination.module.css +15 -14
- package/src/components/ui/Progress/Progress.mdx +6 -2
- package/src/components/ui/Progress/Progress.module.css +1 -1
- package/src/components/ui/Progress/Progress.spec.tsx +17 -0
- package/src/components/ui/Progress/Progress.tsx +2 -2
- package/src/components/ui/ProgressCircle/ProgressCircle.mdx +8 -4
- package/src/components/ui/ProgressCircle/ProgressCircle.module.css +2 -2
- package/src/components/ui/ProgressCircle/ProgressCircle.spec.tsx +11 -1
- package/src/components/ui/ProgressCircle/ProgressCircle.tsx +1 -1
- package/src/components/ui/Separator/Separator.mdx +7 -0
- package/src/components/ui/Separator/Separator.module.css +1 -0
- package/src/components/ui/Skeleton/Skeleton.mdx +17 -0
- package/src/components/ui/Skeleton/Skeleton.module.css +12 -5
- package/src/components/ui/SkipLink/SkipLink.mdx +19 -0
- package/src/components/ui/SkipLink/SkipLink.module.css +8 -7
- package/src/components/ui/SkipLink/SkipLink.spec.tsx +28 -0
- package/src/components/ui/Table/Table.mdx +14 -0
- package/src/components/ui/Table/Table.module.css +13 -8
- package/src/components/ui/Table/Table.spec.tsx +56 -0
- package/src/components/ui/Table/Table.tsx +44 -6
- package/src/components/ui/Tabs/Tabs.mdx +16 -0
- package/src/components/ui/Tabs/Tabs.module.css +3 -3
- package/src/components/ui/Tabs/Tabs.spec.tsx +20 -0
- package/src/components/ui/Tabs/Tabs.tsx +5 -1
- package/src/components/ui/Tooltip/Tooltip.mdx +9 -0
- package/src/components/ui/Tooltip/Tooltip.module.css +32 -12
- package/src/components/ui/Tooltip/Tooltip.spec.tsx +56 -0
- package/src/components/ui/Tooltip/Tooltip.tsx +26 -7
- package/src/components/ui/Typography/Typography.mdx +7 -0
- package/src/components/ui/Typography/Typography.module.css +5 -5
- package/src/index.ts +7 -3
- package/src/stories/DesignSystem/Borders.mdx +14 -9
- package/src/stories/DesignSystem/Colors.mdx +43 -41
- package/src/stories/DesignSystem/Overview.mdx +4 -3
- package/src/stories/Introduction.mdx +5 -5
- package/src/web-components/globals.ts +7 -0
- package/src/web-components/index.ts +2 -0
- package/src/web-components/interaction/BdsAccordion.mdx +10 -1
- package/src/web-components/interaction/BdsButton.mdx +15 -4
- package/src/web-components/interaction/BdsButton.stories.tsx +1 -1
- package/src/web-components/interaction/BdsCollapsible.mdx +3 -3
- package/src/web-components/interaction/BdsDialog.mdx +12 -7
- package/src/web-components/interaction/BdsDialog.stories.tsx +2 -2
- package/src/web-components/interaction/BdsDrawer.mdx +9 -6
- package/src/web-components/interaction/BdsDropdownMenu.mdx +20 -1
- package/src/web-components/interaction/BdsPopover.mdx +7 -3
- package/src/web-components/interaction/BdsSkipLink.mdx +14 -1
- package/src/web-components/interaction/BdsTabs.mdx +18 -1
- package/src/web-components/interaction/BdsToastProvider.mdx +21 -3
- package/src/web-components/interaction/BdsTooltip.mdx +4 -4
- package/src/web-components/interaction/bds-accordion-item.ts +10 -0
- package/src/web-components/interaction/bds-accordion.spec.ts +41 -0
- package/src/web-components/interaction/bds-accordion.ts +28 -2
- package/src/web-components/interaction/bds-button.spec.ts +81 -0
- package/src/web-components/interaction/bds-button.ts +60 -13
- package/src/web-components/interaction/bds-collapsible.spec.ts +93 -2
- package/src/web-components/interaction/bds-collapsible.ts +49 -7
- package/src/web-components/interaction/bds-dialog.spec.ts +49 -0
- package/src/web-components/interaction/bds-dialog.ts +68 -11
- package/src/web-components/interaction/bds-drawer.spec.ts +93 -4
- package/src/web-components/interaction/bds-drawer.ts +54 -21
- package/src/web-components/interaction/bds-dropdown-menu-item.ts +12 -1
- package/src/web-components/interaction/bds-dropdown-menu.spec.ts +63 -0
- package/src/web-components/interaction/bds-dropdown-menu.ts +45 -7
- package/src/web-components/interaction/bds-popover.spec.ts +80 -6
- package/src/web-components/interaction/bds-popover.ts +83 -32
- package/src/web-components/interaction/bds-skip-link.spec.ts +18 -0
- package/src/web-components/interaction/bds-skip-link.ts +29 -8
- package/src/web-components/interaction/bds-tab-panel.ts +10 -0
- package/src/web-components/interaction/bds-tab.spec.ts +25 -0
- package/src/web-components/interaction/bds-tab.ts +20 -5
- package/src/web-components/interaction/bds-tabs.spec.ts +92 -5
- package/src/web-components/interaction/bds-tabs.ts +42 -1
- package/src/web-components/interaction/bds-toast-provider.spec.ts +43 -0
- package/src/web-components/interaction/bds-toast-provider.ts +50 -21
- package/src/web-components/interaction/bds-tooltip.spec.ts +71 -0
- package/src/web-components/interaction/bds-tooltip.ts +100 -5
- package/src/web-components/interaction/form/BdsCheckbox.mdx +20 -1
- package/src/web-components/interaction/form/BdsCheckbox.stories.tsx +8 -0
- package/src/web-components/interaction/form/BdsCheckboxGroup.mdx +4 -3
- package/src/web-components/interaction/form/BdsCombobox.mdx +39 -2
- package/src/web-components/interaction/form/BdsCombobox.stories.tsx +31 -0
- package/src/web-components/interaction/form/BdsFieldGroup.mdx +8 -3
- package/src/web-components/interaction/form/BdsFieldGroup.stories.tsx +1 -1
- package/src/web-components/interaction/form/BdsFileInput.mdx +26 -5
- package/src/web-components/interaction/form/BdsFormInput.mdx +16 -1
- package/src/web-components/interaction/form/BdsNumberInput.mdx +34 -2
- package/src/web-components/interaction/form/BdsNumberInput.stories.tsx +27 -3
- package/src/web-components/interaction/form/BdsRadio.mdx +39 -12
- package/src/web-components/interaction/form/BdsRadio.stories.tsx +26 -0
- package/src/web-components/interaction/form/BdsRadioGroup.mdx +9 -4
- package/src/web-components/interaction/form/BdsSegmentedControl.mdx +37 -11
- package/src/web-components/interaction/form/BdsSelect.mdx +22 -4
- package/src/web-components/interaction/form/BdsSelect.stories.tsx +33 -0
- package/src/web-components/interaction/form/BdsSlider.mdx +36 -19
- package/src/web-components/interaction/form/BdsSlider.stories.tsx +24 -0
- package/src/web-components/interaction/form/BdsSwitch.mdx +38 -11
- package/src/web-components/interaction/form/BdsSwitch.stories.tsx +16 -0
- package/src/web-components/interaction/form/BdsTextarea.mdx +42 -16
- package/src/web-components/interaction/form/BdsTextarea.stories.tsx +21 -0
- package/src/web-components/interaction/form/bds-checkbox-group.spec.ts +99 -0
- package/src/web-components/interaction/form/bds-checkbox-group.ts +95 -9
- package/src/web-components/interaction/form/bds-checkbox.spec.ts +55 -0
- package/src/web-components/interaction/form/bds-checkbox.ts +30 -5
- package/src/web-components/interaction/form/bds-combobox.spec.ts +79 -0
- package/src/web-components/interaction/form/bds-combobox.ts +102 -17
- package/src/web-components/interaction/form/bds-field-group.spec.ts +158 -0
- package/src/web-components/interaction/form/bds-field-group.ts +167 -23
- package/src/web-components/interaction/form/bds-file-input.spec.ts +73 -5
- package/src/web-components/interaction/form/bds-file-input.ts +71 -34
- package/src/web-components/interaction/form/bds-form-input.spec.ts +22 -0
- package/src/web-components/interaction/form/bds-form-input.ts +27 -16
- package/src/web-components/interaction/form/bds-number-input.spec.ts +49 -0
- package/src/web-components/interaction/form/bds-number-input.ts +118 -29
- package/src/web-components/interaction/form/bds-radio-group.spec.ts +57 -0
- package/src/web-components/interaction/form/bds-radio-group.ts +60 -12
- package/src/web-components/interaction/form/bds-radio.spec.ts +123 -0
- package/src/web-components/interaction/form/bds-radio.ts +136 -23
- package/src/web-components/interaction/form/bds-segmented-control.spec.ts +55 -0
- package/src/web-components/interaction/form/bds-segmented-control.ts +81 -59
- package/src/web-components/interaction/form/bds-select.spec.ts +57 -0
- package/src/web-components/interaction/form/bds-select.ts +96 -8
- package/src/web-components/interaction/form/bds-slider.spec.ts +83 -0
- package/src/web-components/interaction/form/bds-slider.ts +181 -33
- package/src/web-components/interaction/form/bds-switch.spec.ts +68 -0
- package/src/web-components/interaction/form/bds-switch.ts +142 -41
- package/src/web-components/interaction/form/bds-textarea.spec.ts +71 -0
- package/src/web-components/interaction/form/bds-textarea.ts +109 -8
- package/src/web-components/layout/BdsGrid.mdx +6 -2
- package/src/web-components/layout/BdsGrid.stories.tsx +4 -0
- package/src/web-components/layout/bds-grid-item.spec.ts +21 -0
- package/src/web-components/layout/bds-grid-item.ts +17 -3
- package/src/web-components/layout/bds-grid.spec.ts +98 -0
- package/src/web-components/layout/bds-grid.ts +139 -19
- package/src/web-components/ui/BdsAlert.mdx +6 -5
- package/src/web-components/ui/BdsAlert.stories.tsx +6 -6
- package/src/web-components/ui/BdsAvatar.mdx +4 -2
- package/src/web-components/ui/BdsBreadcrumb.mdx +3 -2
- package/src/web-components/ui/BdsButtonContainer.mdx +64 -0
- package/src/web-components/ui/BdsButtonContainer.stories.tsx +84 -0
- package/src/web-components/ui/BdsCalendar.mdx +29 -4
- package/src/web-components/ui/BdsCalendar.stories.tsx +16 -18
- package/src/web-components/ui/BdsCalendarRange.mdx +71 -0
- package/src/web-components/ui/BdsCalendarRange.stories.tsx +31 -0
- package/src/web-components/ui/BdsCard.mdx +7 -3
- package/src/web-components/ui/BdsCard.stories.tsx +17 -1
- package/src/web-components/ui/BdsCarousel.mdx +40 -12
- package/src/web-components/ui/BdsDescriptionList.mdx +6 -1
- package/src/web-components/ui/BdsIconWrapper.mdx +3 -2
- package/src/web-components/ui/BdsLink.mdx +14 -2
- package/src/web-components/ui/BdsNotificationBanner.mdx +18 -0
- package/src/web-components/ui/BdsPagination.mdx +40 -1
- package/src/web-components/ui/BdsProgress.mdx +8 -2
- package/src/web-components/ui/BdsProgressCircle.mdx +5 -2
- package/src/web-components/ui/BdsRating.mdx +7 -0
- package/src/web-components/ui/BdsSectionHeader.mdx +22 -3
- package/src/web-components/ui/BdsSectionHeader.stories.tsx +15 -13
- package/src/web-components/ui/BdsTable.mdx +23 -2
- package/src/web-components/ui/BdsTable.stories.tsx +8 -2
- package/src/web-components/ui/BdsTypography.mdx +17 -1
- package/src/web-components/ui/bds-alert.spec.ts +17 -2
- package/src/web-components/ui/bds-alert.ts +31 -5
- package/src/web-components/ui/bds-avatar.spec.ts +29 -0
- package/src/web-components/ui/bds-avatar.ts +30 -12
- package/src/web-components/ui/bds-badge.spec.ts +5 -0
- package/src/web-components/ui/bds-badge.ts +11 -1
- package/src/web-components/ui/bds-breadcrumb.spec.ts +30 -0
- package/src/web-components/ui/bds-breadcrumb.ts +26 -4
- package/src/web-components/ui/bds-button-container.spec.ts +39 -0
- package/src/web-components/ui/bds-button-container.ts +123 -0
- package/src/web-components/ui/bds-button-group.spec.ts +14 -20
- package/src/web-components/ui/bds-button-group.ts +13 -64
- package/src/web-components/ui/bds-calendar-range.spec.ts +123 -0
- package/src/web-components/ui/bds-calendar-range.ts +307 -0
- package/src/web-components/ui/bds-calendar.spec.ts +176 -0
- package/src/web-components/ui/bds-calendar.ts +186 -344
- package/src/web-components/ui/bds-card.spec.ts +32 -0
- package/src/web-components/ui/bds-card.ts +34 -9
- package/src/web-components/ui/bds-carousel.spec.ts +147 -0
- package/src/web-components/ui/bds-carousel.ts +113 -36
- package/src/web-components/ui/bds-description-list.spec.ts +15 -0
- package/src/web-components/ui/bds-description-list.ts +37 -3
- package/src/web-components/ui/bds-icon-wrapper.spec.ts +12 -0
- package/src/web-components/ui/bds-icon-wrapper.ts +16 -15
- package/src/web-components/ui/bds-link.spec.ts +17 -0
- package/src/web-components/ui/bds-link.ts +26 -11
- package/src/web-components/ui/bds-loading.ts +11 -1
- package/src/web-components/ui/bds-notification-banner.spec.ts +13 -0
- package/src/web-components/ui/bds-notification-banner.ts +18 -1
- package/src/web-components/ui/bds-pagination.spec.ts +44 -0
- package/src/web-components/ui/bds-pagination.ts +39 -19
- package/src/web-components/ui/bds-progress-circle.spec.ts +21 -0
- package/src/web-components/ui/bds-progress-circle.ts +17 -5
- package/src/web-components/ui/bds-progress.spec.ts +21 -0
- package/src/web-components/ui/bds-progress.ts +19 -6
- package/src/web-components/ui/bds-rating.spec.ts +6 -0
- package/src/web-components/ui/bds-rating.ts +12 -2
- package/src/web-components/ui/bds-section-header.spec.ts +39 -8
- package/src/web-components/ui/bds-section-header.ts +47 -13
- package/src/web-components/ui/bds-separator.ts +10 -0
- package/src/web-components/ui/bds-skeleton.ts +10 -0
- package/src/web-components/ui/bds-table.spec.ts +63 -0
- package/src/web-components/ui/bds-table.ts +88 -28
- package/src/web-components/ui/bds-typography.spec.ts +47 -0
- package/src/web-components/ui/bds-typography.ts +28 -10
- package/src/web-components/ui/calendar-styles.ts +94 -0
- package/dist/web-components/chunk-5TFWOPLH.js +0 -49
- package/dist/web-components/chunk-7FMR53BW.js +0 -127
- package/dist/web-components/chunk-AGKJTMJI.js +0 -56
- package/dist/web-components/chunk-BQLZ7I4G.js +0 -56
- package/dist/web-components/chunk-IYGF6CD5.js +0 -118
- package/dist/web-components/chunk-QBB6ZX4R.js +0 -107
- package/dist/web-components/chunk-Y3POAKGS.js +0 -133
- package/dist/web-components/chunk-Y4MAXTMA.js +0 -80
- package/dist/web-components/chunk-Y7V7LM6R.js +0 -98
- package/src/web-components/ui/BdsButtonGroup.mdx +0 -69
- package/src/web-components/ui/BdsButtonGroup.stories.tsx +0 -66
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Meta, Canvas, ArgTypes } from '@storybook/blocks';
|
|
2
|
+
import * as Stories from './BdsCalendarRange.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={Stories} />
|
|
5
|
+
|
|
6
|
+
# <bds-calendar-range>
|
|
7
|
+
|
|
8
|
+
Form-associated range date picker custom element. Two-click selection with
|
|
9
|
+
hover/focus preview; value is an ISO range `"YYYY-MM-DD/YYYY-MM-DD"`.
|
|
10
|
+
|
|
11
|
+
> **Status: experimental** — API may change before stable release.
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
```js
|
|
16
|
+
import '@boostdev/design-system-components/web-components';
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Examples
|
|
20
|
+
|
|
21
|
+
### Default
|
|
22
|
+
<Canvas of={Stories.Default} />
|
|
23
|
+
|
|
24
|
+
### With a preselected range
|
|
25
|
+
<Canvas of={Stories.WithValue} />
|
|
26
|
+
|
|
27
|
+
### Two months
|
|
28
|
+
<Canvas of={Stories.TwoMonths} />
|
|
29
|
+
|
|
30
|
+
## Attributes
|
|
31
|
+
|
|
32
|
+
| Attribute | Type | Default | Description |
|
|
33
|
+
|-----------|------|---------|-------------|
|
|
34
|
+
| `name` | string | — | Form field name |
|
|
35
|
+
| `value` | string | — | Selected range, `"YYYY-MM-DD/YYYY-MM-DD"` |
|
|
36
|
+
| `disabled` | boolean | `false` | Disables all interaction |
|
|
37
|
+
| `min` / `max` | string | — | Selectable bounds (ISO 8601) |
|
|
38
|
+
| `months` | number | `1` | Number of months shown side by side |
|
|
39
|
+
| `page-by` | `"months"` \| `"single"` | `"months"` | Pagination step |
|
|
40
|
+
| `first-day-of-week` | number (0–6) | `1` | First weekday column (Monday) |
|
|
41
|
+
| `locale` | string | runtime default | `Intl` locale for date text |
|
|
42
|
+
| `previous-label` / `next-label` | string | English | Nav button aria-labels |
|
|
43
|
+
|
|
44
|
+
## Properties (JS only)
|
|
45
|
+
|
|
46
|
+
`isDateDisallowed(date) => boolean`, `formatWeekday(date)`, `formatMonth(date)`,
|
|
47
|
+
`formatDay(date)` — set on the element instance to override defaults.
|
|
48
|
+
|
|
49
|
+
## Events
|
|
50
|
+
|
|
51
|
+
| Event | Detail | Description |
|
|
52
|
+
|-------|--------|-------------|
|
|
53
|
+
| `bds-range-select` | `{ start: string, end: string }` | Fired when both ends are chosen (sorted) |
|
|
54
|
+
| `bds-range-start` | `{ start: string }` | Fired on the first click |
|
|
55
|
+
|
|
56
|
+
## Keyboard Navigation
|
|
57
|
+
|
|
58
|
+
| Key | Action |
|
|
59
|
+
|-----|--------|
|
|
60
|
+
| Arrow keys | Move focus between days |
|
|
61
|
+
| Home / End | Start / end of week |
|
|
62
|
+
| Page Up / Down | Previous / next month |
|
|
63
|
+
| Shift + Page Up / Down | Previous / next year |
|
|
64
|
+
| Enter / Space | Pick start, then end |
|
|
65
|
+
| Escape | Cancel an in-progress range |
|
|
66
|
+
|
|
67
|
+
## Accessibility
|
|
68
|
+
|
|
69
|
+
- Full ARIA grid pattern with roving tabindex, matching `<bds-calendar>`
|
|
70
|
+
- Range start and end carry `aria-selected="true"` on their gridcell
|
|
71
|
+
- Respects `disabled`, `formDisabledCallback`, and `prefers-reduced-motion`
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
+
import '../index'; // auto-registers all custom elements
|
|
4
|
+
|
|
5
|
+
function BdsCalendarRange({
|
|
6
|
+
name, value, min, max, months,
|
|
7
|
+
}: {
|
|
8
|
+
name?: string; value?: string; min?: string; max?: string; months?: number;
|
|
9
|
+
}) {
|
|
10
|
+
return React.createElement('bds-calendar-range', { name, value, min, max, months });
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const meta = {
|
|
14
|
+
title: 'Web Components/UI/CalendarRange',
|
|
15
|
+
component: BdsCalendarRange,
|
|
16
|
+
tags: ['!stable', 'experimental'],
|
|
17
|
+
parameters: { layout: 'centered' },
|
|
18
|
+
argTypes: {
|
|
19
|
+
value: { control: 'text' },
|
|
20
|
+
min: { control: 'text' },
|
|
21
|
+
max: { control: 'text' },
|
|
22
|
+
months: { control: 'number' },
|
|
23
|
+
},
|
|
24
|
+
} satisfies Meta<typeof BdsCalendarRange>;
|
|
25
|
+
|
|
26
|
+
export default meta;
|
|
27
|
+
type Story = StoryObj<typeof meta>;
|
|
28
|
+
|
|
29
|
+
export const Default: Story = { args: {} };
|
|
30
|
+
export const WithValue: Story = { args: { value: '2026-04-10/2026-04-16' } };
|
|
31
|
+
export const TwoMonths: Story = { args: { value: '2026-04-10/2026-04-16', months: 2 } };
|
|
@@ -5,7 +5,7 @@ import * as Stories from './BdsCard.stories';
|
|
|
5
5
|
|
|
6
6
|
# <bds-card>
|
|
7
7
|
|
|
8
|
-
Framework-agnostic Card layout custom element. A versatile container with three visual variants, text alignment, and an optional clickable mode.
|
|
8
|
+
Framework-agnostic Card layout custom element. A versatile container with three visual variants, five padding variants, text alignment, and an optional clickable mode. Each padding variant's resolved value can be overridden via the `--card_padding` CSS custom property.
|
|
9
9
|
|
|
10
10
|
> **Status: experimental** — API may change before stable release.
|
|
11
11
|
|
|
@@ -25,6 +25,9 @@ import '@boostdev/design-system-components/web-components';
|
|
|
25
25
|
### All variants
|
|
26
26
|
<Canvas of={Stories.AllVariants} />
|
|
27
27
|
|
|
28
|
+
### All padding variants
|
|
29
|
+
<Canvas of={Stories.AllPaddingVariants} />
|
|
30
|
+
|
|
28
31
|
### Default
|
|
29
32
|
<Canvas of={Stories.Default} />
|
|
30
33
|
|
|
@@ -46,6 +49,7 @@ import '@boostdev/design-system-components/web-components';
|
|
|
46
49
|
| Attribute | Type | Default | Description |
|
|
47
50
|
|-----------|------|---------|-------------|
|
|
48
51
|
| `variant` | `"default" \| "elevated" \| "outlined"` | `"default"` | Shadow and border style |
|
|
52
|
+
| `padding` | `"none" \| "small" \| "medium" \| "large" \| "extra-large"` | `"medium"` | Inner padding scale |
|
|
49
53
|
| `text-align` | `"start" \| "center" \| "end"` | `"start"` | Text alignment |
|
|
50
54
|
| `clickable` | boolean | `false` | Renders the card as a `<button>` with hover/active effects |
|
|
51
55
|
| `aria-label` | string | — | Accessible label (recommended when `clickable` is set) |
|
|
@@ -66,7 +70,7 @@ import '@boostdev/design-system-components/web-components';
|
|
|
66
70
|
|
|
67
71
|
| Property | Description |
|
|
68
72
|
|----------|-------------|
|
|
69
|
-
| `--card_padding` |
|
|
73
|
+
| `--card_padding` | Overrides the resolved padding value for the active `padding` variant (default: the variant's scale token — `0`, `--bds-space_s`, `--bds-space_m`, `--bds-space_l`, or `--bds-space_xl`) |
|
|
70
74
|
| `--card_color` | Card background colour |
|
|
71
75
|
| `--card_on-color` | Card text/foreground colour |
|
|
72
76
|
| `--card_border` | Border on outlined variant (default: `none`) |
|
|
@@ -74,7 +78,7 @@ import '@boostdev/design-system-components/web-components';
|
|
|
74
78
|
## Usage in plain HTML
|
|
75
79
|
|
|
76
80
|
```html
|
|
77
|
-
<bds-card variant="elevated"
|
|
81
|
+
<bds-card variant="elevated" padding="large">
|
|
78
82
|
<p>Card content</p>
|
|
79
83
|
</bds-card>
|
|
80
84
|
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
-
import type { CardVariant, CardTextAlign } from './bds-card';
|
|
3
|
+
import type { CardVariant, CardPadding, CardTextAlign } from './bds-card';
|
|
4
4
|
import '../index'; // auto-registers all custom elements
|
|
5
5
|
|
|
6
6
|
function BdsCard({
|
|
7
7
|
variant = 'default',
|
|
8
|
+
padding = 'medium',
|
|
8
9
|
textAlign = 'start',
|
|
9
10
|
clickable,
|
|
10
11
|
ariaLabel,
|
|
11
12
|
children,
|
|
12
13
|
}: {
|
|
13
14
|
variant?: CardVariant;
|
|
15
|
+
padding?: CardPadding;
|
|
14
16
|
textAlign?: CardTextAlign;
|
|
15
17
|
clickable?: boolean;
|
|
16
18
|
ariaLabel?: string;
|
|
@@ -20,6 +22,7 @@ function BdsCard({
|
|
|
20
22
|
'bds-card',
|
|
21
23
|
{
|
|
22
24
|
variant,
|
|
25
|
+
padding,
|
|
23
26
|
'text-align': textAlign,
|
|
24
27
|
clickable: clickable || undefined,
|
|
25
28
|
'aria-label': ariaLabel,
|
|
@@ -35,6 +38,7 @@ const meta = {
|
|
|
35
38
|
parameters: { layout: 'centered' },
|
|
36
39
|
argTypes: {
|
|
37
40
|
variant: { control: 'select', options: ['default', 'elevated', 'outlined'] },
|
|
41
|
+
padding: { control: 'select', options: ['none', 'small', 'medium', 'large', 'extra-large'] },
|
|
38
42
|
textAlign: { control: 'select', options: ['start', 'center', 'end'] },
|
|
39
43
|
clickable: { control: 'boolean' },
|
|
40
44
|
},
|
|
@@ -61,3 +65,15 @@ export const AllVariants: Story = {
|
|
|
61
65
|
</div>
|
|
62
66
|
),
|
|
63
67
|
};
|
|
68
|
+
|
|
69
|
+
export const AllPaddingVariants: Story = {
|
|
70
|
+
render: () => (
|
|
71
|
+
<div style={{ display: 'flex', gap: 16, flexWrap: 'wrap', maxWidth: 700 }}>
|
|
72
|
+
{(['none', 'small', 'medium', 'large', 'extra-large'] as const).map(p =>
|
|
73
|
+
React.createElement('bds-card', { key: p, variant: 'outlined', padding: p, style: { width: 160 } },
|
|
74
|
+
React.createElement('p', { style: { margin: 0 } }, p),
|
|
75
|
+
),
|
|
76
|
+
)}
|
|
77
|
+
</div>
|
|
78
|
+
),
|
|
79
|
+
};
|
|
@@ -40,23 +40,34 @@ import '@boostdev/design-system-components/web-components';
|
|
|
40
40
|
|
|
41
41
|
| Attribute | Type | Default | Description |
|
|
42
42
|
|-----------|------|---------|-------------|
|
|
43
|
-
| `current-index` | number | `0` | Active slide index (0-based) |
|
|
43
|
+
| `current-index` | number | `0` | Active slide index (0-based). Setting this attribute/property scrolls the track to that slide. |
|
|
44
44
|
| `indicators` | boolean | `false` | Shows dot indicator buttons below the slides |
|
|
45
45
|
| `loop` | boolean | `false` | Wraps from last slide to first and vice versa |
|
|
46
|
+
| `label` | string | `"Carousel"` | Accessible name for the slide region |
|
|
47
|
+
| `prev-label` | string | `"Previous slide"` | Accessible name for the built-in previous button |
|
|
48
|
+
| `next-label` | string | `"Next slide"` | Accessible name for the built-in next button |
|
|
46
49
|
|
|
47
50
|
## Slots
|
|
48
51
|
|
|
49
52
|
| Slot | Description |
|
|
50
53
|
|------|-------------|
|
|
51
|
-
| `(default)` | Slide content — each direct child is one slide |
|
|
52
|
-
| `prev` | Custom previous button (replaces the built-in button) |
|
|
53
|
-
| `next` | Custom next button (replaces the built-in button) |
|
|
54
|
+
| `(default)` | Slide content — each direct child with no `slot` attribute is one slide |
|
|
55
|
+
| `prev` | Custom previous button (replaces the built-in button). Clicks anywhere inside this slot navigate to the previous slide. |
|
|
56
|
+
| `next` | Custom next button (replaces the built-in button). Clicks anywhere inside this slot navigate to the next slide. |
|
|
57
|
+
|
|
58
|
+
## Methods
|
|
59
|
+
|
|
60
|
+
| Method | Description |
|
|
61
|
+
|--------|-------------|
|
|
62
|
+
| `goTo(index: number)` | Navigate to a specific slide (clamped, or wrapped when `loop` is set) |
|
|
63
|
+
| `next()` | Navigate to the next slide |
|
|
64
|
+
| `prev()` | Navigate to the previous slide |
|
|
54
65
|
|
|
55
66
|
## Events
|
|
56
67
|
|
|
57
68
|
| Event | Detail | Description |
|
|
58
69
|
|-------|--------|-------------|
|
|
59
|
-
| `bds-slide-change` | `{ index: number }` | Fired when the active slide changes |
|
|
70
|
+
| `bds-slide-change` | `{ index: number }` | Fired when the active slide changes, via navigation (`goTo`/`next`/`prev`, the nav buttons, or a dot) or via manual scroll/swipe |
|
|
60
71
|
|
|
61
72
|
## Usage in plain HTML
|
|
62
73
|
|
|
@@ -68,16 +79,33 @@ import '@boostdev/design-system-components/web-components';
|
|
|
68
79
|
</bds-carousel>
|
|
69
80
|
|
|
70
81
|
<script>
|
|
71
|
-
document.querySelector('bds-carousel')
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
82
|
+
const carousel = document.querySelector('bds-carousel');
|
|
83
|
+
carousel.addEventListener('bds-slide-change', e => {
|
|
84
|
+
console.log('Active slide:', e.detail.index);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// Public navigation API
|
|
88
|
+
carousel.next();
|
|
89
|
+
carousel.prev();
|
|
90
|
+
carousel.goTo(2);
|
|
75
91
|
</script>
|
|
76
92
|
```
|
|
77
93
|
|
|
94
|
+
### Custom prev/next buttons
|
|
95
|
+
|
|
96
|
+
```html
|
|
97
|
+
<bds-carousel>
|
|
98
|
+
<div>Slide 1</div>
|
|
99
|
+
<div>Slide 2</div>
|
|
100
|
+
<button slot="prev">◀</button>
|
|
101
|
+
<button slot="next">▶</button>
|
|
102
|
+
</bds-carousel>
|
|
103
|
+
```
|
|
104
|
+
|
|
78
105
|
## Accessibility
|
|
79
106
|
|
|
80
|
-
- The slide track has `role="region"` with `aria-label
|
|
81
|
-
- Dot indicators
|
|
82
|
-
-
|
|
107
|
+
- The slide track has `role="region"` with a consumer-supplied `aria-label` (via the `label` attribute, defaulting to "Carousel")
|
|
108
|
+
- Dot indicators are plain buttons with `aria-current="true"` on the active slide (no incomplete ARIA tabs pattern); the indicator group has `role="group"`
|
|
109
|
+
- Dot indicators keep an 8px visual size but expose a larger invisible hit area (~24px) to meet the WCAG 2.5.8 minimum touch-target size
|
|
110
|
+
- Navigation buttons have descriptive, overridable `aria-label` values (`prev-label`/`next-label`) and are disabled at boundaries (unless `loop` is set)
|
|
83
111
|
- Smooth scroll is suppressed when `prefers-reduced-motion: reduce` is set
|
|
@@ -18,7 +18,12 @@ import '@boostdev/design-system-components/web-components';
|
|
|
18
18
|
## When to use
|
|
19
19
|
|
|
20
20
|
- Displaying key–value data such as user profiles, settings summaries, or metadata panels
|
|
21
|
-
- Use `layout="inline"` to place term and value side-by-side
|
|
21
|
+
- Use `layout="inline"` to place term and value side-by-side in a two-column grid (term column: `minmax(8rem, 1fr)`, value column: `2fr`)
|
|
22
|
+
|
|
23
|
+
## Layout behaviour
|
|
24
|
+
|
|
25
|
+
- **Stacked** (default): each `<dt>` sits directly above its `<dd>` with a tight gap (`--bds-space_xxs`); a looser gap (`--bds-space_s`) separates one term/detail pair from the next.
|
|
26
|
+
- **Inline**: `<dt>`/`<dd>` pairs are laid out side by side as grid rows — the term in a `minmax(8rem, 1fr)` column, the detail in a `2fr` column, `align-items: baseline`.
|
|
22
27
|
|
|
23
28
|
## Examples
|
|
24
29
|
|
|
@@ -51,8 +51,9 @@ import '@boostdev/design-system-components/web-components';
|
|
|
51
51
|
|
|
52
52
|
| Property | Description |
|
|
53
53
|
|----------|-------------|
|
|
54
|
-
| `--icon-
|
|
55
|
-
| `--bds-
|
|
54
|
+
| `--icon-wrapper_radius` | Border radius of the circular container (default `var(--bds-border_radius--circle)`); `--icon-wrapper-radius` (hyphen-delimited) is a deprecated alias |
|
|
55
|
+
| `--icon-wrapper_color` | Background fill of the circular container (default `var(--bds-color_bg)`); `--icon-wrapper-color` (hyphen-delimited) is a deprecated alias |
|
|
56
|
+
| `--icon-wrapper_on-color` | Icon/foreground colour inside the wrapper (default `var(--bds-color_on-bg)`) |
|
|
56
57
|
|
|
57
58
|
## Usage in plain HTML
|
|
58
59
|
|
|
@@ -60,10 +60,22 @@ import '@boostdev/design-system-components/web-components';
|
|
|
60
60
|
|
|
61
61
|
## CSS Custom Properties
|
|
62
62
|
|
|
63
|
+
Resting and hover colours are independent, layered overrides: a top-level
|
|
64
|
+
override (e.g. `--link_color`) wins over the per-variant default for that
|
|
65
|
+
same state (e.g. `--link_color--default`), which falls back to the design
|
|
66
|
+
token. Setting `--link_color` on an ancestor themes only the resting state
|
|
67
|
+
across all variants; setting `--link_color-hover` themes only hover.
|
|
68
|
+
|
|
63
69
|
| Property | Description |
|
|
64
70
|
|----------|-------------|
|
|
65
|
-
| `--link_color` | Link colour |
|
|
66
|
-
| `--link_color-hover` | Link hover colour |
|
|
71
|
+
| `--link_color` | Link colour override (all variants, resting state) |
|
|
72
|
+
| `--link_color-hover` | Link hover colour override (all variants) |
|
|
73
|
+
| `--link_color--default` | Resting colour override for `variant="default"` |
|
|
74
|
+
| `--link_color-hover--default` | Hover colour override for `variant="default"` |
|
|
75
|
+
| `--link_color--subtle` | Resting colour override for `variant="subtle"` |
|
|
76
|
+
| `--link_color-hover--subtle` | Hover colour override for `variant="subtle"` |
|
|
77
|
+
| `--link_color--standalone` | Resting colour override for `variant="standalone"` |
|
|
78
|
+
| `--link_color-hover--standalone` | Hover colour override for `variant="standalone"` |
|
|
67
79
|
|
|
68
80
|
## Usage in plain HTML
|
|
69
81
|
|
|
@@ -63,6 +63,23 @@ import '@boostdev/design-system-components/web-components';
|
|
|
63
63
|
| `(default)` | Banner body text or HTML |
|
|
64
64
|
| `action` | Optional action area (e.g. a `<button>` or `<a>`) |
|
|
65
65
|
|
|
66
|
+
## CSS Custom Properties
|
|
67
|
+
|
|
68
|
+
| Property | Description |
|
|
69
|
+
|----------|-------------|
|
|
70
|
+
| `--banner_bg` | Banner background colour (all variants) |
|
|
71
|
+
| `--banner_text` | Banner text colour (all variants) |
|
|
72
|
+
| `--banner_border` | Banner bottom border colour (all variants) |
|
|
73
|
+
| `--banner_bg--info` / `--banner_text--info` / `--banner_border--info` | Info variant colours |
|
|
74
|
+
| `--banner_bg--success` / `--banner_text--success` / `--banner_border--success` | Success variant colours |
|
|
75
|
+
| `--banner_bg--warning` / `--banner_text--warning` / `--banner_border--warning` | Warning variant colours |
|
|
76
|
+
| `--banner_bg--error` / `--banner_text--error` / `--banner_border--error` | Error variant colours |
|
|
77
|
+
| `--banner_dismiss-size` | Dismiss button minimum touch target (default `2.75rem`, WCAG 2.5.5); the visible icon stays 1rem |
|
|
78
|
+
| `--banner_dismiss-radius` | Dismiss button border radius |
|
|
79
|
+
| `--banner_dismiss-border` | Dismiss button border |
|
|
80
|
+
| `--banner_dismiss-border-color` | Dismiss button inset-border colour (default `currentcolor`). `--notification-banner_dismiss-border-color` is a deprecated alias for the same hook. |
|
|
81
|
+
| `--banner_dismiss-opacity--hover` | Dismiss button opacity on hover |
|
|
82
|
+
|
|
66
83
|
## Events
|
|
67
84
|
|
|
68
85
|
| Event | Detail | Description |
|
|
@@ -83,3 +100,4 @@ import '@boostdev/design-system-components/web-components';
|
|
|
83
100
|
- `error` and `warning` variants render `role="alert"` with `aria-live="assertive"`
|
|
84
101
|
- `info` and `success` variants render `role="status"` with `aria-live="polite"`
|
|
85
102
|
- The dismiss button has a configurable `aria-label` via `dismiss-label`
|
|
103
|
+
- The dismiss button's interactive hit area meets the WCAG 2.5.5 44×44px minimum (`--banner_dismiss-size`), even though the visible icon stays 1rem
|
|
@@ -54,6 +54,44 @@ import '@boostdev/design-system-components/web-components';
|
|
|
54
54
|
|-------|--------|-------------|
|
|
55
55
|
| `bds-page-change` | `{ page: number }` | Fired when the user navigates to a different page |
|
|
56
56
|
|
|
57
|
+
## CSS variables
|
|
58
|
+
|
|
59
|
+
The override surface is **layered**. Setting `--pagination_item-bg` / `--pagination_item-color` / `--pagination_item-border` on the element (or any ancestor) wins in every state — resting, hover, and active. Setting a per-state token targets only that one state.
|
|
60
|
+
|
|
61
|
+
### Public override tokens (win over per-state defaults)
|
|
62
|
+
|
|
63
|
+
| Variable | Default | Description |
|
|
64
|
+
|----------|---------|-------------|
|
|
65
|
+
| `--pagination_radius` | `var(--bds-border_radius--full)` | Page button border radius |
|
|
66
|
+
| `--pagination_item-bg` | `transparent` (per state) | Button background — themes every state at once |
|
|
67
|
+
| `--pagination_item-color` | per state | Button text colour |
|
|
68
|
+
| `--pagination_item-border` | per state | Button border colour (bdc inset border) |
|
|
69
|
+
|
|
70
|
+
### Per-state overrides
|
|
71
|
+
|
|
72
|
+
| State | Background | Text | Border |
|
|
73
|
+
|-------|-----------|------|--------|
|
|
74
|
+
| resting | (`transparent`) | (`var(--bds-color_on-bg)`) | (`var(--bds-color_bg--subtle)`) |
|
|
75
|
+
| hover | `--pagination_item-bg--hover` | `--pagination_item-color--hover` | — |
|
|
76
|
+
| active (current page) | `--pagination_item-bg--active` | `--pagination_item-color--active` | `--pagination_item-border--active` |
|
|
77
|
+
|
|
78
|
+
Defaults: hover resolves to `--bds-color_bg--subtle` / `--bds-color_interactive_on-bg`; active resolves through the shared `--bdc-color_active` / `--bdc-color_on-active` hooks (`--bds-color_interactive` / `--bds-color_on-interactive` by default), so a global active-state theme override also re-colours the current page.
|
|
79
|
+
|
|
80
|
+
### Deprecated aliases
|
|
81
|
+
|
|
82
|
+
The original `--btn_*` token names are still read as a fallback layer beneath the `--pagination_item-*` names above, so existing overrides keep working. Prefer the new names for new code.
|
|
83
|
+
|
|
84
|
+
| Deprecated | Use instead |
|
|
85
|
+
|------------|-------------|
|
|
86
|
+
| `--btn_bg` | `--pagination_item-bg` |
|
|
87
|
+
| `--btn_color` | `--pagination_item-color` |
|
|
88
|
+
| `--btn_border` | `--pagination_item-border` |
|
|
89
|
+
| `--btn_bg--hover` | `--pagination_item-bg--hover` |
|
|
90
|
+
| `--btn_color--hover` | `--pagination_item-color--hover` |
|
|
91
|
+
| `--btn_bg--active` | `--pagination_item-bg--active` |
|
|
92
|
+
| `--btn_color--active` | `--pagination_item-color--active` |
|
|
93
|
+
| `--btn_border--active` | `--pagination_item-border--active` |
|
|
94
|
+
|
|
57
95
|
## Usage in plain HTML
|
|
58
96
|
|
|
59
97
|
```html
|
|
@@ -70,5 +108,6 @@ import '@boostdev/design-system-components/web-components';
|
|
|
70
108
|
## Accessibility
|
|
71
109
|
|
|
72
110
|
- Wrapped in `<nav aria-label="Pagination">` with an `<ul>` list structure
|
|
73
|
-
-
|
|
111
|
+
- Numbered page buttons carry `aria-label="Page N"`; the active page button additionally carries `aria-current="page"` (non-active buttons omit `aria-current` entirely rather than emitting `aria-current="false"`)
|
|
74
112
|
- Previous/Next buttons have descriptive `aria-label` values and are `disabled` at the boundaries
|
|
113
|
+
- Page buttons meet the 44×44px (2.75rem) WCAG 2.5.5 minimum touch target
|
|
@@ -55,7 +55,10 @@ import '@boostdev/design-system-components/web-components';
|
|
|
55
55
|
|
|
56
56
|
| Property | Description |
|
|
57
57
|
|----------|-------------|
|
|
58
|
-
| `--progress_color-active` | Fill colour of the progress bar |
|
|
58
|
+
| `--progress_color-active` | Fill colour of the progress bar (defaults to `var(--bdc-color_active)`) |
|
|
59
|
+
| `--progress_color-track` | Empty track colour (defaults to `var(--bds-color_bg--subtle)`) |
|
|
60
|
+
| `--progress_radius` | Track and fill corner radius (defaults to `var(--bds-border_radius--full)`) |
|
|
61
|
+
| `--progress_height` | Track block-size (defaults per `size`: `--bds-space_xxs`/`--bds-space_xs`/`--bds-space_s`) |
|
|
59
62
|
|
|
60
63
|
## Usage in plain HTML
|
|
61
64
|
|
|
@@ -67,4 +70,7 @@ import '@boostdev/design-system-components/web-components';
|
|
|
67
70
|
## Accessibility
|
|
68
71
|
|
|
69
72
|
- Renders with `role="progressbar"`, `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`
|
|
70
|
-
- Always provide a `label` to give the bar a meaningful accessible name
|
|
73
|
+
- Always provide a `label` to give the bar a meaningful accessible name — when `label` is
|
|
74
|
+
unset, `aria-label` is omitted entirely (not rendered as an empty string), so the
|
|
75
|
+
progressbar falls back to having **no** accessible name
|
|
76
|
+
- `aria-valuenow` is clamped to the `0`–`max` range, matching the visual fill
|
|
@@ -47,7 +47,7 @@ import '@boostdev/design-system-components/web-components';
|
|
|
47
47
|
|-----------|------|---------|-------------|
|
|
48
48
|
| `value` | number | `0` | Current progress value |
|
|
49
49
|
| `max` | number | `100` | Maximum value |
|
|
50
|
-
| `label` | string | — | Accessible label for the progress bar |
|
|
50
|
+
| `label` | string | — | Accessible label for the progress bar (required — see Accessibility) |
|
|
51
51
|
| `show-value` | boolean | `false` | Displays the rounded percentage in the centre of the ring |
|
|
52
52
|
| `size` | `"small" \| "medium" \| "large"` | `"medium"` | Diameter (`40px` / `64px` / `96px`) |
|
|
53
53
|
|
|
@@ -56,6 +56,8 @@ import '@boostdev/design-system-components/web-components';
|
|
|
56
56
|
| Property | Description |
|
|
57
57
|
|----------|-------------|
|
|
58
58
|
| `--progressCircle_color-active` | Stroke colour of the filled arc |
|
|
59
|
+
| `--progressCircle_color-track` | Stroke colour of the background track (default: `--bds-color_bg--subtle`) |
|
|
60
|
+
| `--progressCircle_font-size--small` | Font size of the centred value label at `size="small"` (default: `--bds-font_size--body--s`) |
|
|
59
61
|
|
|
60
62
|
## Usage in plain HTML
|
|
61
63
|
|
|
@@ -67,4 +69,5 @@ import '@boostdev/design-system-components/web-components';
|
|
|
67
69
|
## Accessibility
|
|
68
70
|
|
|
69
71
|
- Renders with `role="progressbar"`, `aria-valuenow`, `aria-valuemin`, and `aria-valuemax`
|
|
70
|
-
-
|
|
72
|
+
- `label` is required — without it the host renders `role="progressbar"` with no accessible name. When `label` is unset, `aria-label` is omitted entirely (never rendered empty) so assistive technology falls back correctly instead of announcing a nameless control.
|
|
73
|
+
- `aria-valuenow` is clamped to the `0`–`max` range, matching the visual fill, even if `value` is passed out of range
|
|
@@ -55,6 +55,13 @@ import '@boostdev/design-system-components/web-components';
|
|
|
55
55
|
<bds-rating value="4" max="10"></bds-rating>
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
## CSS Custom Properties
|
|
59
|
+
|
|
60
|
+
| Variable | Default | Description |
|
|
61
|
+
|----------|---------|--------------|
|
|
62
|
+
| `--rating_color` | `var(--bds-color_bg)` | Colour of unfilled stars |
|
|
63
|
+
| `--rating_color--filled` | `var(--bds-color_warning)` | Colour of filled stars |
|
|
64
|
+
|
|
58
65
|
## Accessibility
|
|
59
66
|
|
|
60
67
|
- Renders `role="img"` with `aria-label` set to `"{value} out of {max} stars"`
|
|
@@ -29,6 +29,9 @@ import '@boostdev/design-system-components/web-components';
|
|
|
29
29
|
### Default
|
|
30
30
|
<Canvas of={Stories.Default} />
|
|
31
31
|
|
|
32
|
+
### Extra small
|
|
33
|
+
<Canvas of={Stories.ExtraSmall} />
|
|
34
|
+
|
|
32
35
|
### Small
|
|
33
36
|
<Canvas of={Stories.Small} />
|
|
34
37
|
|
|
@@ -49,17 +52,18 @@ import '@boostdev/design-system-components/web-components';
|
|
|
49
52
|
|
|
50
53
|
| Attribute | Type | Default | Description |
|
|
51
54
|
|-----------|------|---------|-------------|
|
|
52
|
-
| `
|
|
55
|
+
| `heading` | string | — | Heading text (required) |
|
|
56
|
+
| `title` | string | — | **Deprecated** — alias for `heading`. Sharing the name with the global HTML `title` attribute triggers a native browser tooltip on hover; kept working as a fallback when `heading` is unset, will be removed in a later major. Use `heading` instead. |
|
|
53
57
|
| `subtitle` | string | — | Optional subheading text |
|
|
54
58
|
| `alignment` | `"start" \| "center" \| "end"` | `"start"` | Text and flex alignment |
|
|
55
|
-
| `size` | `"small" \| "medium" \| "large"` | `"medium"` | Font size scale for title and subtitle |
|
|
59
|
+
| `size` | `"xs" \| "small" \| "medium" \| "large"` | `"medium"` | Font size scale for title and subtitle |
|
|
56
60
|
| `title-as` | string | `"h2"` | Override the HTML element rendered for the title |
|
|
57
61
|
|
|
58
62
|
## Usage in plain HTML
|
|
59
63
|
|
|
60
64
|
```html
|
|
61
65
|
<bds-section-header
|
|
62
|
-
|
|
66
|
+
heading="Our Products"
|
|
63
67
|
subtitle="Browse the full range"
|
|
64
68
|
size="large"
|
|
65
69
|
alignment="center">
|
|
@@ -70,3 +74,18 @@ import '@boostdev/design-system-components/web-components';
|
|
|
70
74
|
|
|
71
75
|
- The title renders as `h2` by default; use `title-as` to match the page heading hierarchy
|
|
72
76
|
- Avoid skipping heading levels when changing `title-as`
|
|
77
|
+
|
|
78
|
+
## CSS custom properties
|
|
79
|
+
|
|
80
|
+
| Token | Default | Description |
|
|
81
|
+
|-------|---------|--------------|
|
|
82
|
+
| `--sectionHeader_gap` | `--bds-space_m` | Gap between title and subtitle |
|
|
83
|
+
| `--sectionHeader_title-color` | `--bds-color_on-bg` | Title text color (`--sectionHeader-title-color`, kebab-delimited, is a deprecated alias) |
|
|
84
|
+
| `--sectionHeader_subtitle-color` | `--bds-color_grey--strong` | Subtitle text color |
|
|
85
|
+
| `--sectionHeader_title-size` | Size-variant font-size token (e.g. `--bds-font_size--display` for medium/large) | Title font size |
|
|
86
|
+
| `--sectionHeader_title-line-height` | Size-variant line-height token | Title line height |
|
|
87
|
+
| `--sectionHeader_title-weight` | `--bds-font_weight--bold` | Title font weight |
|
|
88
|
+
| `--sectionHeader_subtitle-size` | Size-variant font-size token | Subtitle font size |
|
|
89
|
+
| `--sectionHeader_subtitle-line-height` | `1.3` (medium/large) or `1.4` (xs/small) | Subtitle line height |
|
|
90
|
+
|
|
91
|
+
The host also sets `grid-column: var(--bds-grid_span-100)` so the header spans the full row when placed inside `<bds-grid>`.
|
|
@@ -3,19 +3,19 @@ import type { Meta, StoryObj } from '@storybook/react';
|
|
|
3
3
|
import '../index'; // auto-registers all custom elements
|
|
4
4
|
|
|
5
5
|
function BdsSectionHeader({
|
|
6
|
-
|
|
6
|
+
heading = '',
|
|
7
7
|
subtitle,
|
|
8
8
|
alignment = 'start',
|
|
9
9
|
size = 'medium',
|
|
10
10
|
titleAs,
|
|
11
11
|
}: {
|
|
12
|
-
|
|
12
|
+
heading?: string;
|
|
13
13
|
subtitle?: string;
|
|
14
14
|
alignment?: 'start' | 'center' | 'end';
|
|
15
|
-
size?: 'small' | 'medium' | 'large';
|
|
15
|
+
size?: 'xs' | 'small' | 'medium' | 'large';
|
|
16
16
|
titleAs?: string;
|
|
17
17
|
}) {
|
|
18
|
-
return React.createElement('bds-section-header', {
|
|
18
|
+
return React.createElement('bds-section-header', { heading, subtitle, alignment, size, 'title-as': titleAs });
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
const meta = {
|
|
@@ -25,7 +25,7 @@ const meta = {
|
|
|
25
25
|
parameters: { layout: 'padded' },
|
|
26
26
|
argTypes: {
|
|
27
27
|
alignment: { control: 'select', options: ['start', 'center', 'end'] },
|
|
28
|
-
size: { control: 'select', options: ['small', 'medium', 'large'] },
|
|
28
|
+
size: { control: 'select', options: ['xs', 'small', 'medium', 'large'] },
|
|
29
29
|
titleAs: { control: 'text' },
|
|
30
30
|
},
|
|
31
31
|
} satisfies Meta<typeof BdsSectionHeader>;
|
|
@@ -34,21 +34,23 @@ export default meta;
|
|
|
34
34
|
type Story = StoryObj<typeof meta>;
|
|
35
35
|
|
|
36
36
|
export const Default: Story = {
|
|
37
|
-
args: {
|
|
37
|
+
args: { heading: 'Our Products', subtitle: 'Browse the full range', size: 'medium', alignment: 'start' },
|
|
38
38
|
};
|
|
39
|
-
export const
|
|
40
|
-
export const
|
|
39
|
+
export const ExtraSmall: Story = { args: { heading: 'Filters', subtitle: 'Refine the results', size: 'xs' } };
|
|
40
|
+
export const Small: Story = { args: { heading: 'Recent Activity', subtitle: 'Last 30 days', size: 'small' } };
|
|
41
|
+
export const Large: Story = { args: { heading: 'Welcome Back', subtitle: 'Here is what happened today', size: 'large' } };
|
|
41
42
|
export const Centered: Story = {
|
|
42
|
-
args: {
|
|
43
|
+
args: { heading: 'Our Mission', subtitle: 'We are building something great', alignment: 'center' },
|
|
43
44
|
};
|
|
44
|
-
export const TitleOnly: Story = { args: {
|
|
45
|
+
export const TitleOnly: Story = { args: { heading: 'Settings', size: 'small' } };
|
|
45
46
|
|
|
46
47
|
export const AllSizes: Story = {
|
|
47
48
|
render: () => (
|
|
48
49
|
<div style={{ display: 'flex', flexDirection: 'column', gap: 32 }}>
|
|
49
|
-
{React.createElement('bds-section-header', {
|
|
50
|
-
{React.createElement('bds-section-header', {
|
|
51
|
-
{React.createElement('bds-section-header', {
|
|
50
|
+
{React.createElement('bds-section-header', { heading: 'Extra Small Heading', subtitle: 'Subtitle text', size: 'xs' })}
|
|
51
|
+
{React.createElement('bds-section-header', { heading: 'Small Heading', subtitle: 'Subtitle text', size: 'small' })}
|
|
52
|
+
{React.createElement('bds-section-header', { heading: 'Medium Heading', subtitle: 'Subtitle text', size: 'medium' })}
|
|
53
|
+
{React.createElement('bds-section-header', { heading: 'Large Heading', subtitle: 'Subtitle text', size: 'large' })}
|
|
52
54
|
</div>
|
|
53
55
|
),
|
|
54
56
|
};
|
|
@@ -9,6 +9,13 @@ Framework-agnostic scrollable Table wrapper custom element. Apply design-system
|
|
|
9
9
|
|
|
10
10
|
> **Status: experimental** — API may change before stable release.
|
|
11
11
|
|
|
12
|
+
> **Light-DOM styling contract:** `::slotted()` can only match the node placed directly into
|
|
13
|
+
> the slot (the `<table>` itself), never its descendants. `<thead>`/`<th>`/`<td>` styling is
|
|
14
|
+
> therefore shipped as a document-level stylesheet scoped to the `bds-table > table …` selector
|
|
15
|
+
> (adopted once, the first time any `<bds-table>` module is imported). This means the slotted
|
|
16
|
+
> `<table>` must be a **direct child** of `<bds-table>` for cell styling and `sticky-header` to
|
|
17
|
+
> apply — don't wrap it in an intermediate element.
|
|
18
|
+
|
|
12
19
|
## Installation
|
|
13
20
|
|
|
14
21
|
```js
|
|
@@ -37,12 +44,21 @@ import '@boostdev/design-system-components/web-components';
|
|
|
37
44
|
| Attribute | Type | Default | Description |
|
|
38
45
|
|-----------|------|---------|-------------|
|
|
39
46
|
| `sticky-header` | boolean | `false` | Freezes `<thead>` at the top when the table overflows vertically |
|
|
47
|
+
| `aria-label` | string | — | Accessible name for the scrollable region; also enables `role="region"` on the wrapper |
|
|
40
48
|
|
|
41
49
|
## Slots
|
|
42
50
|
|
|
43
51
|
| Slot | Description |
|
|
44
52
|
|------|-------------|
|
|
45
|
-
| `(default)` | A standard `<table>` element
|
|
53
|
+
| `(default)` | A standard `<table>` element (must be a direct child — see the light-DOM styling contract above) |
|
|
54
|
+
|
|
55
|
+
## CSS Custom Properties
|
|
56
|
+
|
|
57
|
+
| Property | Description |
|
|
58
|
+
|----------|-------------|
|
|
59
|
+
| `--table_border` | Wrapper border (default: `none`) |
|
|
60
|
+
| `--table_radius` | Wrapper corner radius (default: `var(--bdc-outline_radius)`, itself set to `var(--bds-border_radius--s)` on the wrapper) |
|
|
61
|
+
| `--table_row-bg--hover` | Row background on hover, pointer devices only (default: `var(--bds-color_bg--subtle)`) |
|
|
46
62
|
|
|
47
63
|
## Usage in plain HTML
|
|
48
64
|
|
|
@@ -78,4 +94,9 @@ import '@boostdev/design-system-components/web-components';
|
|
|
78
94
|
|
|
79
95
|
- Use a standard `<table>` with proper `<thead>` / `<tbody>` structure
|
|
80
96
|
- Column headers (`<th>`) are automatically styled; add `scope="col"` for complex tables
|
|
81
|
-
- The wrapper is horizontally scrollable (`overflow-inline: auto`) on small viewports
|
|
97
|
+
- The wrapper is horizontally scrollable (`overflow-inline: auto`) on small viewports and is
|
|
98
|
+
keyboard-focusable (`tabindex="0"`) with a `:focus-visible` outline, so it can be scrolled
|
|
99
|
+
without a mouse in browsers that don't auto-focus scroll containers
|
|
100
|
+
- Set `aria-label` on `<bds-table>` to give the scrollable region an accessible name — this also
|
|
101
|
+
adds `role="region"` on the wrapper; without it, the wrapper stays unlabelled and roleless to
|
|
102
|
+
avoid a nameless landmark
|