@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
package/dist/index.cjs
CHANGED
|
@@ -39,6 +39,7 @@ __export(index_exports, {
|
|
|
39
39
|
ButtonContainer: () => ButtonContainer,
|
|
40
40
|
ButtonGroup: () => ButtonGroup,
|
|
41
41
|
Calendar: () => Calendar,
|
|
42
|
+
CalendarRange: () => CalendarRange,
|
|
42
43
|
Card: () => Card,
|
|
43
44
|
Carousel: () => Carousel,
|
|
44
45
|
Checkbox: () => Checkbox,
|
|
@@ -82,7 +83,7 @@ __export(index_exports, {
|
|
|
82
83
|
ToastProvider: () => ToastProvider,
|
|
83
84
|
Tooltip: () => Tooltip,
|
|
84
85
|
Typography: () => Typography,
|
|
85
|
-
cn: () =>
|
|
86
|
+
cn: () => import_design_system_foundation56.cn,
|
|
86
87
|
useToast: () => useToast
|
|
87
88
|
});
|
|
88
89
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -91,7 +92,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
91
92
|
var import_react = require("react");
|
|
92
93
|
|
|
93
94
|
// src/components/ui/Accordion/Accordion.module.css
|
|
94
|
-
var Accordion_default = {"component":"
|
|
95
|
+
var Accordion_default = {"component":"bds2110Accordion-component","accordion":"bds2110Accordion-accordion","item":"bds2110Accordion-item","heading":"bds2110Accordion-heading","trigger":"bds2110Accordion-trigger","triggerLabel":"bds2110Accordion-triggerLabel","chevron":"bds2110Accordion-chevron","--open":"bds2110Accordion---open","panel":"bds2110Accordion-panel","panelContent":"bds2110Accordion-panelContent"};
|
|
95
96
|
|
|
96
97
|
// src/components/ui/Accordion/Accordion.tsx
|
|
97
98
|
var import_design_system_foundation = require("@boostdev/design-system-foundation");
|
|
@@ -160,7 +161,7 @@ function Accordion({
|
|
|
160
161
|
}
|
|
161
162
|
|
|
162
163
|
// src/components/ui/Alert/Alert.module.css
|
|
163
|
-
var Alert_default = {"component":"
|
|
164
|
+
var Alert_default = {"component":"bds2110Alert-component","alert":"bds2110Alert-alert","--variant_info":"bds2110Alert---variant_info","--variant_success":"bds2110Alert---variant_success","--variant_warning":"bds2110Alert---variant_warning","--variant_error":"bds2110Alert---variant_error","icon":"bds2110Alert-icon","content":"bds2110Alert-content","title":"bds2110Alert-title","dismiss":"bds2110Alert-dismiss"};
|
|
164
165
|
|
|
165
166
|
// src/components/ui/Alert/Alert.tsx
|
|
166
167
|
var import_design_system_foundation2 = require("@boostdev/design-system-foundation");
|
|
@@ -205,7 +206,7 @@ function Alert({
|
|
|
205
206
|
}
|
|
206
207
|
|
|
207
208
|
// src/components/ui/Avatar/Avatar.module.css
|
|
208
|
-
var Avatar_default = {"component":"
|
|
209
|
+
var Avatar_default = {"component":"bds2110Avatar-component","avatar":"bds2110Avatar-avatar","--fallback":"bds2110Avatar---fallback","--size_small":"bds2110Avatar---size_small","--size_medium":"bds2110Avatar---size_medium","--size_large":"bds2110Avatar---size_large","image":"bds2110Avatar-image","initials":"bds2110Avatar-initials"};
|
|
209
210
|
|
|
210
211
|
// src/components/ui/Avatar/Avatar.tsx
|
|
211
212
|
var import_design_system_foundation3 = require("@boostdev/design-system-foundation");
|
|
@@ -232,7 +233,7 @@ function Avatar({ src, alt, name, size = "medium", className, ...rest }) {
|
|
|
232
233
|
}
|
|
233
234
|
|
|
234
235
|
// src/components/ui/Badge/Badge.module.css
|
|
235
|
-
var Badge_default = {"component":"
|
|
236
|
+
var Badge_default = {"component":"bds2110Badge-component","badge":"bds2110Badge-badge","--variant_primary":"bds2110Badge---variant_primary","--variant_secondary":"bds2110Badge---variant_secondary","--variant_success":"bds2110Badge---variant_success","--variant_error":"bds2110Badge---variant_error","--variant_warning":"bds2110Badge---variant_warning"};
|
|
236
237
|
|
|
237
238
|
// src/components/ui/Badge/Badge.tsx
|
|
238
239
|
var import_design_system_foundation4 = require("@boostdev/design-system-foundation");
|
|
@@ -242,7 +243,7 @@ function Badge({ children, variant = "primary", className, ...rest }) {
|
|
|
242
243
|
}
|
|
243
244
|
|
|
244
245
|
// src/components/ui/Breadcrumb/Breadcrumb.module.css
|
|
245
|
-
var Breadcrumb_default = {"component":"
|
|
246
|
+
var Breadcrumb_default = {"component":"bds2110Breadcrumb-component","breadcrumb":"bds2110Breadcrumb-breadcrumb","list":"bds2110Breadcrumb-list","item":"bds2110Breadcrumb-item","link":"bds2110Breadcrumb-link","separator":"bds2110Breadcrumb-separator","text":"bds2110Breadcrumb-text","current":"bds2110Breadcrumb-current"};
|
|
246
247
|
|
|
247
248
|
// src/components/ui/Breadcrumb/Breadcrumb.tsx
|
|
248
249
|
var import_design_system_foundation5 = require("@boostdev/design-system-foundation");
|
|
@@ -251,14 +252,14 @@ function Breadcrumb({ items, className, ...rest }) {
|
|
|
251
252
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("nav", { ...rest, "aria-label": "Breadcrumb", className: (0, import_design_system_foundation5.cn)(Breadcrumb_default.breadcrumb, className), children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("ol", { className: Breadcrumb_default.list, children: items.map((item, index) => {
|
|
252
253
|
const isLast = index === items.length - 1;
|
|
253
254
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("li", { className: Breadcrumb_default.item, children: isLast ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { "aria-current": "page", className: Breadcrumb_default.current, children: item.label }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
254
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("a", { href: item.href, className: Breadcrumb_default.link, children: item.label }),
|
|
255
|
+
item.href ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("a", { href: item.href, className: Breadcrumb_default.link, children: item.label }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: Breadcrumb_default.text, children: item.label }),
|
|
255
256
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: Breadcrumb_default.separator, "aria-hidden": "true", children: "\u203A" })
|
|
256
257
|
] }) }, index);
|
|
257
258
|
}) }) });
|
|
258
259
|
}
|
|
259
260
|
|
|
260
261
|
// src/components/ui/Collapsible/Collapsible.module.css
|
|
261
|
-
var Collapsible_default = {"component":"
|
|
262
|
+
var Collapsible_default = {"component":"bds2110Collapsible-component","collapsible":"bds2110Collapsible-collapsible","summary":"bds2110Collapsible-summary","summaryContent":"bds2110Collapsible-summaryContent","icon":"bds2110Collapsible-icon","content":"bds2110Collapsible-content"};
|
|
262
263
|
|
|
263
264
|
// src/components/ui/Collapsible/Collapsible.tsx
|
|
264
265
|
var import_design_system_foundation6 = require("@boostdev/design-system-foundation");
|
|
@@ -273,9 +274,16 @@ function Collapsible({
|
|
|
273
274
|
className,
|
|
274
275
|
...rest
|
|
275
276
|
}) {
|
|
277
|
+
const isControlled = open !== void 0;
|
|
276
278
|
const handleToggle = (e) => {
|
|
279
|
+
if (isControlled) return;
|
|
277
280
|
onToggle?.(e.currentTarget.open);
|
|
278
281
|
};
|
|
282
|
+
const handleSummaryClick = (e) => {
|
|
283
|
+
if (!isControlled) return;
|
|
284
|
+
e.preventDefault();
|
|
285
|
+
onToggle?.(!open);
|
|
286
|
+
};
|
|
279
287
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
280
288
|
"details",
|
|
281
289
|
{
|
|
@@ -285,7 +293,7 @@ function Collapsible({
|
|
|
285
293
|
onToggle: handleToggle,
|
|
286
294
|
...rest,
|
|
287
295
|
children: [
|
|
288
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("summary", { className: Collapsible_default.summary, children: [
|
|
296
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("summary", { className: Collapsible_default.summary, onClick: handleSummaryClick, children: [
|
|
289
297
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: Collapsible_default.summaryContent, children: summary }),
|
|
290
298
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: Collapsible_default.icon, "aria-hidden": "true" })
|
|
291
299
|
] }),
|
|
@@ -297,254 +305,574 @@ function Collapsible({
|
|
|
297
305
|
|
|
298
306
|
// src/components/ui/Calendar/Calendar.tsx
|
|
299
307
|
var import_react2 = require("react");
|
|
308
|
+
var import_design_system_foundation8 = require("@boostdev/design-system-foundation");
|
|
300
309
|
|
|
301
310
|
// src/components/ui/Calendar/Calendar.module.css
|
|
302
|
-
var Calendar_default = {"component":"
|
|
311
|
+
var Calendar_default = {"component":"bds2110Calendar-component","calendar":"bds2110Calendar-calendar","months":"bds2110Calendar-months","month":"bds2110Calendar-month","monthHeader":"bds2110Calendar-monthHeader","navSlot":"bds2110Calendar-navSlot","monthYear":"bds2110Calendar-monthYear","navBtn":"bds2110Calendar-navBtn","grid":"bds2110Calendar-grid","row":"bds2110Calendar-row","weekday":"bds2110Calendar-weekday","cell":"bds2110Calendar-cell","day":"bds2110Calendar-day","disabled":"bds2110Calendar-disabled","selected":"bds2110Calendar-selected","rangeStart":"bds2110Calendar-rangeStart","rangeEnd":"bds2110Calendar-rangeEnd","outside":"bds2110Calendar-outside","today":"bds2110Calendar-today","inRange":"bds2110Calendar-inRange"};
|
|
303
312
|
|
|
304
|
-
// src/components/ui/Calendar/
|
|
313
|
+
// src/components/ui/Calendar/MonthGrid.tsx
|
|
305
314
|
var import_design_system_foundation7 = require("@boostdev/design-system-foundation");
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
315
|
+
|
|
316
|
+
// src/components/ui/Calendar/calendar-core.ts
|
|
317
|
+
function toISO(date) {
|
|
318
|
+
const y = date.getFullYear();
|
|
319
|
+
const m = String(date.getMonth() + 1).padStart(2, "0");
|
|
320
|
+
const d = String(date.getDate()).padStart(2, "0");
|
|
321
|
+
return `${y}-${m}-${d}`;
|
|
322
|
+
}
|
|
323
|
+
function parseISO(iso) {
|
|
324
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(iso);
|
|
325
|
+
if (!m) return null;
|
|
326
|
+
const year = Number(m[1]);
|
|
327
|
+
const month = Number(m[2]) - 1;
|
|
328
|
+
const day = Number(m[3]);
|
|
329
|
+
const date = new Date(year, month, day);
|
|
330
|
+
date.setFullYear(year);
|
|
331
|
+
if (isNaN(date.getTime())) return null;
|
|
332
|
+
if (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) return null;
|
|
333
|
+
return date;
|
|
334
|
+
}
|
|
335
|
+
function addDays(date, n) {
|
|
336
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + n);
|
|
337
|
+
}
|
|
338
|
+
function addMonths(date, n) {
|
|
339
|
+
const firstOfTarget = new Date(date.getFullYear(), date.getMonth() + n, 1);
|
|
340
|
+
const daysInTarget = new Date(firstOfTarget.getFullYear(), firstOfTarget.getMonth() + 1, 0).getDate();
|
|
341
|
+
return new Date(firstOfTarget.getFullYear(), firstOfTarget.getMonth(), Math.min(date.getDate(), daysInTarget));
|
|
342
|
+
}
|
|
331
343
|
function isSameDay(a, b) {
|
|
332
344
|
return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
333
345
|
}
|
|
334
|
-
function
|
|
335
|
-
|
|
346
|
+
function compareDay(a, b) {
|
|
347
|
+
const am = new Date(a.getFullYear(), a.getMonth(), a.getDate()).getTime();
|
|
348
|
+
const bm = new Date(b.getFullYear(), b.getMonth(), b.getDate()).getTime();
|
|
349
|
+
return am < bm ? -1 : am > bm ? 1 : 0;
|
|
350
|
+
}
|
|
351
|
+
function sortRange(a, b) {
|
|
352
|
+
return compareDay(a, b) <= 0 ? [a, b] : [b, a];
|
|
353
|
+
}
|
|
354
|
+
function isInRange(date, start, end) {
|
|
355
|
+
const [lo, hi] = sortRange(start, end);
|
|
356
|
+
return compareDay(date, lo) >= 0 && compareDay(date, hi) <= 0;
|
|
357
|
+
}
|
|
358
|
+
function isDisabled(date, opts) {
|
|
359
|
+
if (opts.min && compareDay(date, opts.min) < 0) return true;
|
|
360
|
+
if (opts.max && compareDay(date, opts.max) > 0) return true;
|
|
361
|
+
return !!opts.isDateDisallowed?.(date);
|
|
362
|
+
}
|
|
363
|
+
function buildMonthGrid(year, month, firstDayOfWeek) {
|
|
364
|
+
const firstOfMonth = new Date(year, month, 1);
|
|
365
|
+
const lead = (firstOfMonth.getDay() - firstDayOfWeek + 7) % 7;
|
|
366
|
+
const start = addDays(firstOfMonth, -lead);
|
|
367
|
+
return Array.from({ length: 42 }, (_, i) => {
|
|
368
|
+
const date = addDays(start, i);
|
|
369
|
+
return { iso: toISO(date), date, day: date.getDate(), outside: date.getMonth() !== month };
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
function getMonthLabel(year, month, locale) {
|
|
373
|
+
return new Intl.DateTimeFormat(locale, { month: "long", year: "numeric" }).format(new Date(year, month, 1));
|
|
374
|
+
}
|
|
375
|
+
function getDayLabel(date, locale) {
|
|
376
|
+
return new Intl.DateTimeFormat(locale, { year: "numeric", month: "long", day: "numeric" }).format(date);
|
|
377
|
+
}
|
|
378
|
+
function getWeekdayNames(locale, firstDayOfWeek) {
|
|
379
|
+
const fmt = new Intl.DateTimeFormat(locale, { weekday: "short" });
|
|
380
|
+
return Array.from({ length: 7 }, (_, i) => fmt.format(new Date(2023, 0, 1 + (firstDayOfWeek + i) % 7)));
|
|
381
|
+
}
|
|
382
|
+
function nextFocusDate(current, key, opts) {
|
|
383
|
+
const offsetInWeek = (current.getDay() - opts.firstDayOfWeek + 7) % 7;
|
|
384
|
+
switch (key) {
|
|
385
|
+
case "ArrowRight":
|
|
386
|
+
return addDays(current, 1);
|
|
387
|
+
case "ArrowLeft":
|
|
388
|
+
return addDays(current, -1);
|
|
389
|
+
case "ArrowDown":
|
|
390
|
+
return addDays(current, 7);
|
|
391
|
+
case "ArrowUp":
|
|
392
|
+
return addDays(current, -7);
|
|
393
|
+
case "Home":
|
|
394
|
+
return addDays(current, -offsetInWeek);
|
|
395
|
+
case "End":
|
|
396
|
+
return addDays(current, 6 - offsetInWeek);
|
|
397
|
+
case "PageUp":
|
|
398
|
+
return addMonths(current, opts.shiftKey ? -12 : -1);
|
|
399
|
+
case "PageDown":
|
|
400
|
+
return addMonths(current, opts.shiftKey ? 12 : 1);
|
|
401
|
+
default:
|
|
402
|
+
return null;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// src/components/ui/Calendar/MonthGrid.tsx
|
|
407
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
408
|
+
var ChevronLeft = () => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" }) });
|
|
409
|
+
var ChevronRight = () => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) });
|
|
410
|
+
function MonthGrid(props) {
|
|
411
|
+
const {
|
|
412
|
+
year,
|
|
413
|
+
month,
|
|
414
|
+
firstDayOfWeek,
|
|
415
|
+
weekdayNames,
|
|
416
|
+
monthLabel,
|
|
417
|
+
headingId,
|
|
418
|
+
showPrev,
|
|
419
|
+
showNext,
|
|
420
|
+
onPrev,
|
|
421
|
+
onNext,
|
|
422
|
+
prevLabel,
|
|
423
|
+
nextLabel,
|
|
424
|
+
classifyDay,
|
|
425
|
+
formatDay,
|
|
426
|
+
registerRef,
|
|
427
|
+
onSelect,
|
|
428
|
+
onKeyDown,
|
|
429
|
+
onDayPointerEnter
|
|
430
|
+
} = props;
|
|
431
|
+
const cells = buildMonthGrid(year, month, firstDayOfWeek);
|
|
432
|
+
const rows = Array.from({ length: 6 }, (_, r) => cells.slice(r * 7, r * 7 + 7));
|
|
433
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: Calendar_default.month, children: [
|
|
434
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: Calendar_default.monthHeader, children: [
|
|
435
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: Calendar_default.navSlot, children: showPrev && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { type: "button", className: Calendar_default.navBtn, "aria-label": prevLabel, onClick: onPrev, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ChevronLeft, {}) }) }),
|
|
436
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { id: headingId, className: Calendar_default.monthYear, "aria-live": "polite", children: monthLabel }),
|
|
437
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: Calendar_default.navSlot, children: showNext && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { type: "button", className: Calendar_default.navBtn, "aria-label": nextLabel, onClick: onNext, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ChevronRight, {}) }) })
|
|
438
|
+
] }),
|
|
439
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: Calendar_default.grid, role: "grid", "aria-labelledby": headingId, children: [
|
|
440
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: Calendar_default.row, role: "row", children: weekdayNames.map((name, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { role: "columnheader", className: Calendar_default.weekday, "aria-label": name, children: name }, i)) }),
|
|
441
|
+
rows.map((week, r) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: Calendar_default.row, role: "row", children: week.map((cell) => {
|
|
442
|
+
const s = cell.outside ? { today: false, selected: false, rangeStart: false, rangeEnd: false, inRange: false, disabled: true, tabbable: false } : classifyDay(cell.date);
|
|
443
|
+
const isEndpoint = s.selected || s.rangeStart || s.rangeEnd;
|
|
444
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
445
|
+
"span",
|
|
446
|
+
{
|
|
447
|
+
role: "gridcell",
|
|
448
|
+
"aria-selected": isEndpoint,
|
|
449
|
+
className: Calendar_default.cell,
|
|
450
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
451
|
+
"button",
|
|
452
|
+
{
|
|
453
|
+
ref: (el) => registerRef(cell.iso, el),
|
|
454
|
+
type: "button",
|
|
455
|
+
"data-date": cell.iso,
|
|
456
|
+
"data-outside": cell.outside || void 0,
|
|
457
|
+
"data-today": s.today || void 0,
|
|
458
|
+
"data-selected": s.selected || void 0,
|
|
459
|
+
"data-range-start": s.rangeStart || void 0,
|
|
460
|
+
"data-range-end": s.rangeEnd || void 0,
|
|
461
|
+
"data-in-range": s.inRange || void 0,
|
|
462
|
+
className: (0, import_design_system_foundation7.cn)(
|
|
463
|
+
Calendar_default.day,
|
|
464
|
+
cell.outside && Calendar_default.outside,
|
|
465
|
+
s.today && !isEndpoint && Calendar_default.today,
|
|
466
|
+
s.selected && Calendar_default.selected,
|
|
467
|
+
s.rangeStart && Calendar_default.rangeStart,
|
|
468
|
+
s.rangeEnd && Calendar_default.rangeEnd,
|
|
469
|
+
s.inRange && Calendar_default.inRange,
|
|
470
|
+
s.disabled && Calendar_default.disabled
|
|
471
|
+
),
|
|
472
|
+
"aria-label": formatDay(cell.date),
|
|
473
|
+
"aria-current": s.today ? "date" : void 0,
|
|
474
|
+
"aria-disabled": s.disabled || void 0,
|
|
475
|
+
disabled: s.disabled || cell.outside,
|
|
476
|
+
tabIndex: s.tabbable ? 0 : -1,
|
|
477
|
+
onClick: () => onSelect(cell.date),
|
|
478
|
+
onKeyDown: (e) => onKeyDown(e, cell.date),
|
|
479
|
+
onPointerEnter: onDayPointerEnter ? () => onDayPointerEnter(cell.date) : void 0,
|
|
480
|
+
children: cell.day
|
|
481
|
+
}
|
|
482
|
+
)
|
|
483
|
+
},
|
|
484
|
+
cell.iso
|
|
485
|
+
);
|
|
486
|
+
}) }, r))
|
|
487
|
+
] })
|
|
488
|
+
] });
|
|
336
489
|
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
490
|
+
|
|
491
|
+
// src/components/ui/Calendar/Calendar.tsx
|
|
492
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
493
|
+
function monthIndex(d) {
|
|
494
|
+
return d.getFullYear() * 12 + d.getMonth();
|
|
341
495
|
}
|
|
342
|
-
function
|
|
343
|
-
|
|
496
|
+
function isMonthVisible(date, viewYear, viewMonth, months) {
|
|
497
|
+
const start = viewYear * 12 + viewMonth;
|
|
498
|
+
const idx = monthIndex(date);
|
|
499
|
+
return idx >= start && idx < start + months;
|
|
344
500
|
}
|
|
345
|
-
function
|
|
346
|
-
return new Date(
|
|
501
|
+
function weekdayNamesFrom(fmt, firstDayOfWeek) {
|
|
502
|
+
return Array.from({ length: 7 }, (_, i) => fmt(new Date(2023, 0, 1 + (firstDayOfWeek + i) % 7)));
|
|
347
503
|
}
|
|
348
|
-
function Calendar({
|
|
504
|
+
function Calendar({
|
|
505
|
+
value,
|
|
506
|
+
defaultValue,
|
|
507
|
+
min,
|
|
508
|
+
max,
|
|
509
|
+
months = 1,
|
|
510
|
+
pageBy = "months",
|
|
511
|
+
firstDayOfWeek = 1,
|
|
512
|
+
locale,
|
|
513
|
+
isDateDisallowed,
|
|
514
|
+
formatWeekday,
|
|
515
|
+
formatMonth,
|
|
516
|
+
formatDay,
|
|
517
|
+
labels,
|
|
518
|
+
onChange,
|
|
519
|
+
className,
|
|
520
|
+
...rest
|
|
521
|
+
}) {
|
|
349
522
|
const today = /* @__PURE__ */ new Date();
|
|
350
523
|
const controlled = value !== void 0;
|
|
351
524
|
const [internal, setInternal] = (0, import_react2.useState)(defaultValue);
|
|
352
525
|
const selected = controlled ? value : internal;
|
|
353
|
-
const
|
|
354
|
-
const [
|
|
355
|
-
const [
|
|
356
|
-
const
|
|
357
|
-
const
|
|
358
|
-
const
|
|
359
|
-
const
|
|
360
|
-
|
|
526
|
+
const base = selected ?? today;
|
|
527
|
+
const [viewYear, setViewYear] = (0, import_react2.useState)(base.getFullYear());
|
|
528
|
+
const [viewMonth, setViewMonth] = (0, import_react2.useState)(base.getMonth());
|
|
529
|
+
const [focusedIso, setFocusedIso] = (0, import_react2.useState)();
|
|
530
|
+
const headingBaseId = (0, import_react2.useId)();
|
|
531
|
+
const dayRefs = (0, import_react2.useRef)(/* @__PURE__ */ new Map());
|
|
532
|
+
const registerRef = (0, import_react2.useCallback)((iso, el) => {
|
|
533
|
+
if (el) dayRefs.current.set(iso, el);
|
|
534
|
+
else dayRefs.current.delete(iso);
|
|
535
|
+
}, []);
|
|
536
|
+
(0, import_react2.useEffect)(() => {
|
|
537
|
+
if (!controlled || !value) return;
|
|
538
|
+
if (!isMonthVisible(value, viewYear, viewMonth, months)) {
|
|
539
|
+
setViewYear(value.getFullYear());
|
|
540
|
+
setViewMonth(value.getMonth());
|
|
541
|
+
}
|
|
542
|
+
}, [controlled, value]);
|
|
543
|
+
(0, import_react2.useEffect)(() => {
|
|
544
|
+
if (focusedIso) dayRefs.current.get(focusedIso)?.focus();
|
|
545
|
+
}, [focusedIso, viewYear, viewMonth]);
|
|
546
|
+
const disabledFor = (date) => isDisabled(date, { min, max, isDateDisallowed });
|
|
547
|
+
const page = (dir) => {
|
|
548
|
+
const step = pageBy === "single" ? 1 : months;
|
|
549
|
+
const d = new Date(viewYear, viewMonth + dir * step, 1);
|
|
361
550
|
setViewYear(d.getFullYear());
|
|
362
551
|
setViewMonth(d.getMonth());
|
|
363
|
-
|
|
552
|
+
setFocusedIso(void 0);
|
|
364
553
|
};
|
|
365
|
-
const
|
|
366
|
-
|
|
367
|
-
if (isOutOfRange(date, min, max)) return;
|
|
554
|
+
const select = (date) => {
|
|
555
|
+
if (disabledFor(date)) return;
|
|
368
556
|
if (!controlled) setInternal(date);
|
|
369
557
|
onChange?.(date);
|
|
370
558
|
};
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
const current = new Date(viewYear, viewMonth, day);
|
|
381
|
-
const next = new Date(current);
|
|
382
|
-
next.setDate(next.getDate() + map[e.key]);
|
|
383
|
-
setViewYear(next.getFullYear());
|
|
384
|
-
setViewMonth(next.getMonth());
|
|
385
|
-
setFocusedDay(next.getDate());
|
|
386
|
-
} else if (e.key === "Home") {
|
|
387
|
-
e.preventDefault();
|
|
388
|
-
setFocusedDay(1);
|
|
389
|
-
} else if (e.key === "End") {
|
|
390
|
-
e.preventDefault();
|
|
391
|
-
setFocusedDay(daysInMonth);
|
|
392
|
-
} else if (e.key === "Enter" || e.key === " ") {
|
|
559
|
+
const moveFocus = (target) => {
|
|
560
|
+
setFocusedIso(toISO(target));
|
|
561
|
+
if (!isMonthVisible(target, viewYear, viewMonth, months)) {
|
|
562
|
+
setViewYear(target.getFullYear());
|
|
563
|
+
setViewMonth(target.getMonth());
|
|
564
|
+
}
|
|
565
|
+
};
|
|
566
|
+
const onKeyDown = (e, date) => {
|
|
567
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
393
568
|
e.preventDefault();
|
|
394
|
-
|
|
569
|
+
select(date);
|
|
570
|
+
return;
|
|
395
571
|
}
|
|
572
|
+
const next = nextFocusDate(date, e.key, { shiftKey: e.shiftKey, firstDayOfWeek });
|
|
573
|
+
if (!next) return;
|
|
574
|
+
e.preventDefault();
|
|
575
|
+
moveFocus(next);
|
|
396
576
|
};
|
|
397
|
-
const
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
className: Calendar_default.navBtn,
|
|
424
|
-
"aria-label": "Next month",
|
|
425
|
-
onClick: () => navigate(1),
|
|
426
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
|
|
427
|
-
}
|
|
428
|
-
)
|
|
429
|
-
] }),
|
|
430
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
431
|
-
"table",
|
|
577
|
+
const selectedVisible = selected && isMonthVisible(selected, viewYear, viewMonth, months) ? selected : void 0;
|
|
578
|
+
const todayVisible = isMonthVisible(today, viewYear, viewMonth, months) ? today : void 0;
|
|
579
|
+
const tabbableIso = focusedIso ?? (selectedVisible && toISO(selectedVisible)) ?? (todayVisible && toISO(todayVisible)) ?? toISO(new Date(viewYear, viewMonth, 1));
|
|
580
|
+
const classifyDay = (date) => ({
|
|
581
|
+
today: isSameDay(date, today),
|
|
582
|
+
selected: !!selected && isSameDay(date, selected),
|
|
583
|
+
rangeStart: false,
|
|
584
|
+
rangeEnd: false,
|
|
585
|
+
inRange: false,
|
|
586
|
+
disabled: disabledFor(date),
|
|
587
|
+
tabbable: toISO(date) === tabbableIso
|
|
588
|
+
});
|
|
589
|
+
const weekdayNames = formatWeekday ? weekdayNamesFrom(formatWeekday, firstDayOfWeek) : getWeekdayNames(locale, firstDayOfWeek);
|
|
590
|
+
const labelOfMonth = (y, m) => formatMonth ? formatMonth(new Date(y, m, 1)) : getMonthLabel(y, m, locale);
|
|
591
|
+
const labelOfDay = (d) => formatDay ? formatDay(d) : getDayLabel(d, locale);
|
|
592
|
+
const prevLabel = labels?.previousMonth ?? "Previous month";
|
|
593
|
+
const nextLabel = labels?.nextMonth ?? "Next month";
|
|
594
|
+
const count = Math.max(1, months);
|
|
595
|
+
const groupLabel = Array.from({ length: count }, (_, i) => {
|
|
596
|
+
const d = new Date(viewYear, viewMonth + i, 1);
|
|
597
|
+
return labelOfMonth(d.getFullYear(), d.getMonth());
|
|
598
|
+
}).join(", ");
|
|
599
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { ...rest, className: (0, import_design_system_foundation8.cn)(Calendar_default.calendar, className), role: "group", "aria-label": groupLabel, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: Calendar_default.months, children: Array.from({ length: count }, (_, i) => {
|
|
600
|
+
const d = new Date(viewYear, viewMonth + i, 1);
|
|
601
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
602
|
+
MonthGrid,
|
|
432
603
|
{
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
604
|
+
year: d.getFullYear(),
|
|
605
|
+
month: d.getMonth(),
|
|
606
|
+
firstDayOfWeek,
|
|
607
|
+
weekdayNames,
|
|
608
|
+
monthLabel: labelOfMonth(d.getFullYear(), d.getMonth()),
|
|
609
|
+
headingId: `${headingBaseId}-${i}`,
|
|
610
|
+
showPrev: i === 0,
|
|
611
|
+
showNext: i === count - 1,
|
|
612
|
+
onPrev: () => page(-1),
|
|
613
|
+
onNext: () => page(1),
|
|
614
|
+
prevLabel,
|
|
615
|
+
nextLabel,
|
|
616
|
+
classifyDay,
|
|
617
|
+
formatDay: labelOfDay,
|
|
618
|
+
registerRef,
|
|
619
|
+
onSelect: select,
|
|
620
|
+
onKeyDown
|
|
621
|
+
},
|
|
622
|
+
i
|
|
623
|
+
);
|
|
624
|
+
}) }) });
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
// src/components/ui/Calendar/CalendarRange.tsx
|
|
628
|
+
var import_react3 = require("react");
|
|
629
|
+
var import_design_system_foundation9 = require("@boostdev/design-system-foundation");
|
|
630
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
631
|
+
function isMonthVisible2(date, viewYear, viewMonth, months) {
|
|
632
|
+
const start = viewYear * 12 + viewMonth;
|
|
633
|
+
const idx = date.getFullYear() * 12 + date.getMonth();
|
|
634
|
+
return idx >= start && idx < start + months;
|
|
635
|
+
}
|
|
636
|
+
function weekdayNamesFrom2(fmt, firstDayOfWeek) {
|
|
637
|
+
return Array.from({ length: 7 }, (_, i) => fmt(new Date(2023, 0, 1 + (firstDayOfWeek + i) % 7)));
|
|
638
|
+
}
|
|
639
|
+
function CalendarRange({
|
|
640
|
+
value,
|
|
641
|
+
defaultValue,
|
|
642
|
+
min,
|
|
643
|
+
max,
|
|
644
|
+
months = 1,
|
|
645
|
+
pageBy = "months",
|
|
646
|
+
firstDayOfWeek = 1,
|
|
647
|
+
locale,
|
|
648
|
+
isDateDisallowed,
|
|
649
|
+
formatWeekday,
|
|
650
|
+
formatMonth,
|
|
651
|
+
formatDay,
|
|
652
|
+
labels,
|
|
653
|
+
onChange,
|
|
654
|
+
onRangeStart,
|
|
655
|
+
className,
|
|
656
|
+
...rest
|
|
657
|
+
}) {
|
|
658
|
+
const today = /* @__PURE__ */ new Date();
|
|
659
|
+
const controlled = value !== void 0;
|
|
660
|
+
const [internal, setInternal] = (0, import_react3.useState)(defaultValue);
|
|
661
|
+
const committed = controlled ? value : internal;
|
|
662
|
+
const [anchor, setAnchor] = (0, import_react3.useState)();
|
|
663
|
+
const [hover, setHover] = (0, import_react3.useState)();
|
|
664
|
+
const base = committed ? committed[0] : today;
|
|
665
|
+
const [viewYear, setViewYear] = (0, import_react3.useState)(base.getFullYear());
|
|
666
|
+
const [viewMonth, setViewMonth] = (0, import_react3.useState)(base.getMonth());
|
|
667
|
+
const [focusedIso, setFocusedIso] = (0, import_react3.useState)();
|
|
668
|
+
const headingBaseId = (0, import_react3.useId)();
|
|
669
|
+
const dayRefs = (0, import_react3.useRef)(/* @__PURE__ */ new Map());
|
|
670
|
+
const registerRef = (0, import_react3.useCallback)((iso, el) => {
|
|
671
|
+
if (el) dayRefs.current.set(iso, el);
|
|
672
|
+
else dayRefs.current.delete(iso);
|
|
673
|
+
}, []);
|
|
674
|
+
(0, import_react3.useEffect)(() => {
|
|
675
|
+
if (!controlled || !value) return;
|
|
676
|
+
if (!isMonthVisible2(value[0], viewYear, viewMonth, months)) {
|
|
677
|
+
setViewYear(value[0].getFullYear());
|
|
678
|
+
setViewMonth(value[0].getMonth());
|
|
679
|
+
}
|
|
680
|
+
}, [controlled, value]);
|
|
681
|
+
(0, import_react3.useEffect)(() => {
|
|
682
|
+
if (focusedIso) dayRefs.current.get(focusedIso)?.focus();
|
|
683
|
+
}, [focusedIso, viewYear, viewMonth]);
|
|
684
|
+
const disabledFor = (date) => isDisabled(date, { min, max, isDateDisallowed });
|
|
685
|
+
const page = (dir) => {
|
|
686
|
+
const step = pageBy === "single" ? 1 : months;
|
|
687
|
+
const d = new Date(viewYear, viewMonth + dir * step, 1);
|
|
688
|
+
setViewYear(d.getFullYear());
|
|
689
|
+
setViewMonth(d.getMonth());
|
|
690
|
+
setFocusedIso(void 0);
|
|
691
|
+
};
|
|
692
|
+
const select = (date) => {
|
|
693
|
+
if (disabledFor(date)) return;
|
|
694
|
+
if (!anchor) {
|
|
695
|
+
setAnchor(date);
|
|
696
|
+
setHover(void 0);
|
|
697
|
+
onRangeStart?.(date);
|
|
698
|
+
} else {
|
|
699
|
+
const pair = sortRange(anchor, date);
|
|
700
|
+
if (!controlled) setInternal(pair);
|
|
701
|
+
onChange?.(pair);
|
|
702
|
+
setAnchor(void 0);
|
|
703
|
+
setHover(void 0);
|
|
704
|
+
}
|
|
705
|
+
};
|
|
706
|
+
const moveFocus = (target) => {
|
|
707
|
+
setFocusedIso(toISO(target));
|
|
708
|
+
if (!isMonthVisible2(target, viewYear, viewMonth, months)) {
|
|
709
|
+
setViewYear(target.getFullYear());
|
|
710
|
+
setViewMonth(target.getMonth());
|
|
711
|
+
}
|
|
712
|
+
};
|
|
713
|
+
const onKeyDown = (e, date) => {
|
|
714
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
715
|
+
e.preventDefault();
|
|
716
|
+
select(date);
|
|
717
|
+
return;
|
|
718
|
+
}
|
|
719
|
+
if (e.key === "Escape") {
|
|
720
|
+
if (anchor) {
|
|
721
|
+
setAnchor(void 0);
|
|
722
|
+
setHover(void 0);
|
|
468
723
|
}
|
|
469
|
-
|
|
470
|
-
|
|
724
|
+
return;
|
|
725
|
+
}
|
|
726
|
+
const next = nextFocusDate(date, e.key, { shiftKey: e.shiftKey, firstDayOfWeek });
|
|
727
|
+
if (!next) return;
|
|
728
|
+
e.preventDefault();
|
|
729
|
+
moveFocus(next);
|
|
730
|
+
};
|
|
731
|
+
let paintStart;
|
|
732
|
+
let paintEnd;
|
|
733
|
+
if (anchor) {
|
|
734
|
+
const previewEnd = hover ?? (focusedIso ? parseISO(focusedIso) ?? anchor : anchor);
|
|
735
|
+
[paintStart, paintEnd] = sortRange(anchor, previewEnd);
|
|
736
|
+
} else if (committed) {
|
|
737
|
+
[paintStart, paintEnd] = sortRange(committed[0], committed[1]);
|
|
738
|
+
}
|
|
739
|
+
const anchorVisible = anchor && isMonthVisible2(anchor, viewYear, viewMonth, months) ? anchor : void 0;
|
|
740
|
+
const committedStartVisible = committed && isMonthVisible2(committed[0], viewYear, viewMonth, months) ? committed[0] : void 0;
|
|
741
|
+
const todayVisible = isMonthVisible2(today, viewYear, viewMonth, months) ? today : void 0;
|
|
742
|
+
const tabbableIso = focusedIso ?? (anchorVisible && toISO(anchorVisible)) ?? (committedStartVisible && toISO(committedStartVisible)) ?? (todayVisible && toISO(todayVisible)) ?? toISO(new Date(viewYear, viewMonth, 1));
|
|
743
|
+
const classifyDay = (date) => {
|
|
744
|
+
const isStart = !!paintStart && isSameDay(date, paintStart);
|
|
745
|
+
const isEnd = !!paintEnd && isSameDay(date, paintEnd);
|
|
746
|
+
const inRange = !!paintStart && !!paintEnd && !isStart && !isEnd && isInRange(date, paintStart, paintEnd);
|
|
747
|
+
return {
|
|
748
|
+
today: isSameDay(date, today),
|
|
749
|
+
selected: false,
|
|
750
|
+
rangeStart: isStart,
|
|
751
|
+
rangeEnd: isEnd,
|
|
752
|
+
inRange,
|
|
753
|
+
disabled: disabledFor(date),
|
|
754
|
+
tabbable: toISO(date) === tabbableIso
|
|
755
|
+
};
|
|
756
|
+
};
|
|
757
|
+
const weekdayNames = formatWeekday ? weekdayNamesFrom2(formatWeekday, firstDayOfWeek) : getWeekdayNames(locale, firstDayOfWeek);
|
|
758
|
+
const labelOfMonth = (y, m) => formatMonth ? formatMonth(new Date(y, m, 1)) : getMonthLabel(y, m, locale);
|
|
759
|
+
const labelOfDay = (d) => formatDay ? formatDay(d) : getDayLabel(d, locale);
|
|
760
|
+
const prevLabel = labels?.previousMonth ?? "Previous month";
|
|
761
|
+
const nextLabel = labels?.nextMonth ?? "Next month";
|
|
762
|
+
const count = Math.max(1, months);
|
|
763
|
+
const groupLabel = Array.from({ length: count }, (_, i) => {
|
|
764
|
+
const d = new Date(viewYear, viewMonth + i, 1);
|
|
765
|
+
return labelOfMonth(d.getFullYear(), d.getMonth());
|
|
766
|
+
}).join(", ");
|
|
767
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { ...rest, className: (0, import_design_system_foundation9.cn)(Calendar_default.calendar, className), role: "group", "aria-label": groupLabel, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: Calendar_default.months, children: Array.from({ length: count }, (_, i) => {
|
|
768
|
+
const d = new Date(viewYear, viewMonth + i, 1);
|
|
769
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
770
|
+
MonthGrid,
|
|
771
|
+
{
|
|
772
|
+
year: d.getFullYear(),
|
|
773
|
+
month: d.getMonth(),
|
|
774
|
+
firstDayOfWeek,
|
|
775
|
+
weekdayNames,
|
|
776
|
+
monthLabel: labelOfMonth(d.getFullYear(), d.getMonth()),
|
|
777
|
+
headingId: `${headingBaseId}-${i}`,
|
|
778
|
+
showPrev: i === 0,
|
|
779
|
+
showNext: i === count - 1,
|
|
780
|
+
onPrev: () => page(-1),
|
|
781
|
+
onNext: () => page(1),
|
|
782
|
+
prevLabel,
|
|
783
|
+
nextLabel,
|
|
784
|
+
classifyDay,
|
|
785
|
+
formatDay: labelOfDay,
|
|
786
|
+
registerRef,
|
|
787
|
+
onSelect: select,
|
|
788
|
+
onKeyDown,
|
|
789
|
+
onDayPointerEnter: anchor ? ((date) => setHover(date)) : void 0
|
|
790
|
+
},
|
|
791
|
+
i
|
|
792
|
+
);
|
|
793
|
+
}) }) });
|
|
471
794
|
}
|
|
472
795
|
|
|
473
796
|
// src/components/ui/Carousel/Carousel.tsx
|
|
474
|
-
var
|
|
797
|
+
var import_react4 = require("react");
|
|
475
798
|
|
|
476
799
|
// src/components/ui/Carousel/Carousel.module.css
|
|
477
|
-
var Carousel_default = {"component":"
|
|
800
|
+
var Carousel_default = {"component":"bds2110Carousel-component","carousel":"bds2110Carousel-carousel","track":"bds2110Carousel-track","slide":"bds2110Carousel-slide","navBtn":"bds2110Carousel-navBtn"};
|
|
478
801
|
|
|
479
802
|
// src/components/ui/Carousel/Carousel.tsx
|
|
480
|
-
var
|
|
481
|
-
var
|
|
803
|
+
var import_design_system_foundation10 = require("@boostdev/design-system-foundation");
|
|
804
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
805
|
+
function prefersReducedMotion() {
|
|
806
|
+
return typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
807
|
+
}
|
|
482
808
|
function Carousel({ items, label, className, ...rest }) {
|
|
483
|
-
const trackRef = (0,
|
|
484
|
-
const listId = (0,
|
|
809
|
+
const trackRef = (0, import_react4.useRef)(null);
|
|
810
|
+
const listId = (0, import_react4.useId)();
|
|
485
811
|
const scroll = (direction) => {
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
812
|
+
const track = trackRef.current;
|
|
813
|
+
if (!track) return;
|
|
814
|
+
const isRtl = window.getComputedStyle(track).direction === "rtl";
|
|
815
|
+
const sign = direction === "next" ? 1 : -1;
|
|
816
|
+
track.scrollBy({
|
|
817
|
+
left: (isRtl ? -sign : sign) * track.clientWidth,
|
|
818
|
+
behavior: prefersReducedMotion() ? "auto" : "smooth"
|
|
491
819
|
});
|
|
492
820
|
};
|
|
493
|
-
return /* @__PURE__ */ (0,
|
|
494
|
-
/* @__PURE__ */ (0,
|
|
821
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("section", { ...rest, "aria-label": label, className: (0, import_design_system_foundation10.cn)(Carousel_default.carousel, className), children: [
|
|
822
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
495
823
|
"button",
|
|
496
824
|
{
|
|
497
825
|
type: "button",
|
|
498
|
-
className:
|
|
826
|
+
className: Carousel_default.navBtn,
|
|
499
827
|
"aria-label": "Previous",
|
|
500
828
|
"aria-controls": listId,
|
|
501
829
|
onClick: () => scroll("prev"),
|
|
502
|
-
children: /* @__PURE__ */ (0,
|
|
830
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" }) })
|
|
503
831
|
}
|
|
504
832
|
),
|
|
505
|
-
/* @__PURE__ */ (0,
|
|
833
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
506
834
|
"div",
|
|
507
835
|
{
|
|
508
836
|
ref: trackRef,
|
|
509
837
|
id: listId,
|
|
510
838
|
role: "list",
|
|
511
839
|
className: Carousel_default.track,
|
|
512
|
-
children: items.map((item, i) => /* @__PURE__ */ (0,
|
|
840
|
+
children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { role: "listitem", className: Carousel_default.slide, children: item }, i))
|
|
513
841
|
}
|
|
514
842
|
),
|
|
515
|
-
/* @__PURE__ */ (0,
|
|
843
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
516
844
|
"button",
|
|
517
845
|
{
|
|
518
846
|
type: "button",
|
|
519
|
-
className:
|
|
847
|
+
className: Carousel_default.navBtn,
|
|
520
848
|
"aria-label": "Next",
|
|
521
849
|
"aria-controls": listId,
|
|
522
850
|
onClick: () => scroll("next"),
|
|
523
|
-
children: /* @__PURE__ */ (0,
|
|
851
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
|
|
524
852
|
}
|
|
525
853
|
)
|
|
526
854
|
] });
|
|
527
855
|
}
|
|
528
856
|
|
|
529
857
|
// src/components/ui/DescriptionList/DescriptionList.module.css
|
|
530
|
-
var DescriptionList_default = {"component":"
|
|
858
|
+
var DescriptionList_default = {"component":"bds2110DescriptionList-component","list":"bds2110DescriptionList-list","group":"bds2110DescriptionList-group","term":"bds2110DescriptionList-term","details":"bds2110DescriptionList-details","--layout_inline":"bds2110DescriptionList---layout_inline"};
|
|
531
859
|
|
|
532
860
|
// src/components/ui/DescriptionList/DescriptionList.tsx
|
|
533
|
-
var
|
|
534
|
-
var
|
|
861
|
+
var import_design_system_foundation11 = require("@boostdev/design-system-foundation");
|
|
862
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
535
863
|
function DescriptionList({ items, layout = "stacked", className, ...rest }) {
|
|
536
|
-
return /* @__PURE__ */ (0,
|
|
537
|
-
/* @__PURE__ */ (0,
|
|
538
|
-
Array.isArray(item.details) ? item.details.map((d, j) => /* @__PURE__ */ (0,
|
|
864
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("dl", { ...rest, className: (0, import_design_system_foundation11.cn)(DescriptionList_default.list, DescriptionList_default[`--layout_${layout}`], className), children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: DescriptionList_default.group, children: [
|
|
865
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("dt", { className: DescriptionList_default.term, children: item.term }),
|
|
866
|
+
Array.isArray(item.details) ? item.details.map((d, j) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("dd", { className: DescriptionList_default.details, children: d }, j)) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("dd", { className: DescriptionList_default.details, children: item.details })
|
|
539
867
|
] }, i)) });
|
|
540
868
|
}
|
|
541
869
|
|
|
542
870
|
// src/components/ui/Link/Link.module.css
|
|
543
|
-
var Link_default = {"component":"
|
|
871
|
+
var Link_default = {"component":"bds2110Link-component","link":"bds2110Link-link","--variant_default":"bds2110Link---variant_default","--variant_subtle":"bds2110Link---variant_subtle","--variant_standalone":"bds2110Link---variant_standalone","externalLabel":"bds2110Link-externalLabel"};
|
|
544
872
|
|
|
545
873
|
// src/components/ui/Link/Link.tsx
|
|
546
|
-
var
|
|
547
|
-
var
|
|
874
|
+
var import_design_system_foundation12 = require("@boostdev/design-system-foundation");
|
|
875
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
548
876
|
function Link({
|
|
549
877
|
as,
|
|
550
878
|
children,
|
|
@@ -556,36 +884,45 @@ function Link({
|
|
|
556
884
|
}) {
|
|
557
885
|
const Component = as ?? "a";
|
|
558
886
|
const externalProps = external ? { target: "_blank", rel: "noreferrer noopener" } : {};
|
|
559
|
-
return /* @__PURE__ */ (0,
|
|
887
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
560
888
|
Component,
|
|
561
889
|
{
|
|
562
|
-
className: (0,
|
|
890
|
+
className: (0, import_design_system_foundation12.cn)(Link_default.link, Link_default[`--variant_${variant}`], className),
|
|
563
891
|
...externalProps,
|
|
564
892
|
...props,
|
|
565
893
|
children: [
|
|
566
894
|
children,
|
|
567
|
-
external && /* @__PURE__ */ (0,
|
|
895
|
+
external && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: Link_default.externalLabel, children: externalLabel })
|
|
568
896
|
]
|
|
569
897
|
}
|
|
570
898
|
);
|
|
571
899
|
}
|
|
572
900
|
|
|
573
901
|
// src/components/ui/Loading/Loading.module.css
|
|
574
|
-
var Loading_default = {"component":"
|
|
902
|
+
var Loading_default = {"component":"bds2110Loading-component","loading":"bds2110Loading-loading","spinner":"bds2110Loading-spinner","--size_small":"bds2110Loading---size_small","--size_large":"bds2110Loading---size_large"};
|
|
575
903
|
|
|
576
904
|
// src/components/ui/Loading/Loading.tsx
|
|
577
|
-
var
|
|
578
|
-
var
|
|
579
|
-
function Loading({ size = "medium", className, ...rest }) {
|
|
580
|
-
return /* @__PURE__ */ (0,
|
|
905
|
+
var import_design_system_foundation13 = require("@boostdev/design-system-foundation");
|
|
906
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
907
|
+
function Loading({ size = "medium", className, "aria-label": ariaLabel, ...rest }) {
|
|
908
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
909
|
+
"div",
|
|
910
|
+
{
|
|
911
|
+
role: "status",
|
|
912
|
+
"aria-label": ariaLabel ?? "Loading",
|
|
913
|
+
...rest,
|
|
914
|
+
className: (0, import_design_system_foundation13.cn)(Loading_default.loading, Loading_default[`--size_${size}`], className),
|
|
915
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: Loading_default.spinner })
|
|
916
|
+
}
|
|
917
|
+
);
|
|
581
918
|
}
|
|
582
919
|
|
|
583
920
|
// src/components/ui/NotificationBanner/NotificationBanner.module.css
|
|
584
|
-
var NotificationBanner_default = {"component":"
|
|
921
|
+
var NotificationBanner_default = {"component":"bds2110NotificationBanner-component","banner":"bds2110NotificationBanner-banner","--variant_info":"bds2110NotificationBanner---variant_info","--variant_success":"bds2110NotificationBanner---variant_success","--variant_warning":"bds2110NotificationBanner---variant_warning","--variant_error":"bds2110NotificationBanner---variant_error","content":"bds2110NotificationBanner-content","action":"bds2110NotificationBanner-action","dismiss":"bds2110NotificationBanner-dismiss"};
|
|
585
922
|
|
|
586
923
|
// src/components/ui/NotificationBanner/NotificationBanner.tsx
|
|
587
|
-
var
|
|
588
|
-
var
|
|
924
|
+
var import_design_system_foundation14 = require("@boostdev/design-system-foundation");
|
|
925
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
589
926
|
function NotificationBanner({
|
|
590
927
|
variant = "info",
|
|
591
928
|
children,
|
|
@@ -595,25 +932,25 @@ function NotificationBanner({
|
|
|
595
932
|
...rest
|
|
596
933
|
}) {
|
|
597
934
|
const isUrgent = variant === "error" || variant === "warning";
|
|
598
|
-
return /* @__PURE__ */ (0,
|
|
935
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
599
936
|
"div",
|
|
600
937
|
{
|
|
601
938
|
...rest,
|
|
602
939
|
role: isUrgent ? "alert" : "status",
|
|
603
940
|
"aria-live": isUrgent ? "assertive" : "polite",
|
|
604
941
|
"aria-atomic": "true",
|
|
605
|
-
className: (0,
|
|
942
|
+
className: (0, import_design_system_foundation14.cn)(NotificationBanner_default.banner, NotificationBanner_default[`--variant_${variant}`], className),
|
|
606
943
|
children: [
|
|
607
|
-
/* @__PURE__ */ (0,
|
|
608
|
-
action && /* @__PURE__ */ (0,
|
|
609
|
-
onDismiss && /* @__PURE__ */ (0,
|
|
944
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: NotificationBanner_default.content, children }),
|
|
945
|
+
action && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: NotificationBanner_default.action, children: action }),
|
|
946
|
+
onDismiss && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
610
947
|
"button",
|
|
611
948
|
{
|
|
612
949
|
type: "button",
|
|
613
950
|
className: NotificationBanner_default.dismiss,
|
|
614
951
|
onClick: onDismiss,
|
|
615
952
|
"aria-label": "Dismiss notification",
|
|
616
|
-
children: /* @__PURE__ */ (0,
|
|
953
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 6L6 18M6 6l12 12" }) })
|
|
617
954
|
}
|
|
618
955
|
)
|
|
619
956
|
]
|
|
@@ -622,11 +959,11 @@ function NotificationBanner({
|
|
|
622
959
|
}
|
|
623
960
|
|
|
624
961
|
// src/components/ui/Pagination/Pagination.module.css
|
|
625
|
-
var Pagination_default = {"component":"
|
|
962
|
+
var Pagination_default = {"component":"bds2110Pagination-component","pagination":"bds2110Pagination-pagination","list":"bds2110Pagination-list","button":"bds2110Pagination-button","--active":"bds2110Pagination---active","--nav":"bds2110Pagination---nav","ellipsis":"bds2110Pagination-ellipsis"};
|
|
626
963
|
|
|
627
964
|
// src/components/ui/Pagination/Pagination.tsx
|
|
628
|
-
var
|
|
629
|
-
var
|
|
965
|
+
var import_design_system_foundation15 = require("@boostdev/design-system-foundation");
|
|
966
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
630
967
|
function getPageRange(current, total) {
|
|
631
968
|
const delta = 1;
|
|
632
969
|
const range = [];
|
|
@@ -647,24 +984,24 @@ function Pagination({
|
|
|
647
984
|
...rest
|
|
648
985
|
}) {
|
|
649
986
|
const pages = getPageRange(currentPage, totalPages);
|
|
650
|
-
return /* @__PURE__ */ (0,
|
|
651
|
-
/* @__PURE__ */ (0,
|
|
987
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("nav", { ...rest, "aria-label": "Pagination", className: (0, import_design_system_foundation15.cn)(Pagination_default.pagination, className), children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("ul", { className: Pagination_default.list, children: [
|
|
988
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
652
989
|
"button",
|
|
653
990
|
{
|
|
654
991
|
type: "button",
|
|
655
|
-
className: (0,
|
|
992
|
+
className: (0, import_design_system_foundation15.cn)(Pagination_default.button, Pagination_default["--nav"]),
|
|
656
993
|
onClick: () => onPageChange(currentPage - 1),
|
|
657
994
|
disabled: currentPage <= 1,
|
|
658
995
|
"aria-label": "Previous page",
|
|
659
|
-
children: /* @__PURE__ */ (0,
|
|
996
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19l-7-7 7-7" }) })
|
|
660
997
|
}
|
|
661
998
|
) }),
|
|
662
999
|
pages.map(
|
|
663
|
-
(page, index) => page === "..." ? /* @__PURE__ */ (0,
|
|
1000
|
+
(page, index) => page === "..." ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: Pagination_default.ellipsis, "aria-hidden": "true", children: "\u2026" }) }, `ellipsis-${index}`) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
664
1001
|
"button",
|
|
665
1002
|
{
|
|
666
1003
|
type: "button",
|
|
667
|
-
className: (0,
|
|
1004
|
+
className: (0, import_design_system_foundation15.cn)(Pagination_default.button, currentPage === page ? Pagination_default["--active"] : void 0),
|
|
668
1005
|
onClick: () => onPageChange(page),
|
|
669
1006
|
"aria-label": `Page ${page}`,
|
|
670
1007
|
"aria-current": currentPage === page ? "page" : void 0,
|
|
@@ -672,26 +1009,26 @@ function Pagination({
|
|
|
672
1009
|
}
|
|
673
1010
|
) }, page)
|
|
674
1011
|
),
|
|
675
|
-
/* @__PURE__ */ (0,
|
|
1012
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
|
|
676
1013
|
"button",
|
|
677
1014
|
{
|
|
678
1015
|
type: "button",
|
|
679
|
-
className: (0,
|
|
1016
|
+
className: (0, import_design_system_foundation15.cn)(Pagination_default.button, Pagination_default["--nav"]),
|
|
680
1017
|
onClick: () => onPageChange(currentPage + 1),
|
|
681
1018
|
disabled: currentPage >= totalPages,
|
|
682
1019
|
"aria-label": "Next page",
|
|
683
|
-
children: /* @__PURE__ */ (0,
|
|
1020
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9 5l7 7-7 7" }) })
|
|
684
1021
|
}
|
|
685
1022
|
) })
|
|
686
1023
|
] }) });
|
|
687
1024
|
}
|
|
688
1025
|
|
|
689
1026
|
// src/components/ui/Progress/Progress.module.css
|
|
690
|
-
var Progress_default = {"component":"
|
|
1027
|
+
var Progress_default = {"component":"bds2110Progress-component","container":"bds2110Progress-container","labelRow":"bds2110Progress-labelRow","value":"bds2110Progress-value","track":"bds2110Progress-track","--size_small":"bds2110Progress---size_small","--size_medium":"bds2110Progress---size_medium","--size_large":"bds2110Progress---size_large","fill":"bds2110Progress-fill"};
|
|
691
1028
|
|
|
692
1029
|
// src/components/ui/Progress/Progress.tsx
|
|
693
|
-
var
|
|
694
|
-
var
|
|
1030
|
+
var import_design_system_foundation16 = require("@boostdev/design-system-foundation");
|
|
1031
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
695
1032
|
function Progress({
|
|
696
1033
|
value,
|
|
697
1034
|
max = 100,
|
|
@@ -702,35 +1039,35 @@ function Progress({
|
|
|
702
1039
|
...rest
|
|
703
1040
|
}) {
|
|
704
1041
|
const percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
705
|
-
return /* @__PURE__ */ (0,
|
|
706
|
-
showLabel && /* @__PURE__ */ (0,
|
|
707
|
-
/* @__PURE__ */ (0,
|
|
708
|
-
/* @__PURE__ */ (0,
|
|
1042
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { ...rest, className: (0, import_design_system_foundation16.cn)(Progress_default.container, className), children: [
|
|
1043
|
+
showLabel && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: Progress_default.labelRow, children: [
|
|
1044
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: Progress_default.label, children: label }),
|
|
1045
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { className: Progress_default.value, children: [
|
|
709
1046
|
Math.round(percentage),
|
|
710
1047
|
"%"
|
|
711
1048
|
] })
|
|
712
1049
|
] }),
|
|
713
|
-
/* @__PURE__ */ (0,
|
|
1050
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
714
1051
|
"div",
|
|
715
1052
|
{
|
|
716
1053
|
role: "progressbar",
|
|
717
1054
|
"aria-label": label,
|
|
718
|
-
"aria-valuenow": value,
|
|
1055
|
+
"aria-valuenow": Math.min(max, Math.max(0, value)),
|
|
719
1056
|
"aria-valuemin": 0,
|
|
720
1057
|
"aria-valuemax": max,
|
|
721
|
-
className: (0,
|
|
722
|
-
children: /* @__PURE__ */ (0,
|
|
1058
|
+
className: (0, import_design_system_foundation16.cn)(Progress_default.track, Progress_default[`--size_${size}`]),
|
|
1059
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: Progress_default.fill, style: { inlineSize: `${percentage}%` } })
|
|
723
1060
|
}
|
|
724
1061
|
)
|
|
725
1062
|
] });
|
|
726
1063
|
}
|
|
727
1064
|
|
|
728
1065
|
// src/components/ui/ProgressCircle/ProgressCircle.module.css
|
|
729
|
-
var ProgressCircle_default = {"component":"
|
|
1066
|
+
var ProgressCircle_default = {"component":"bds2110ProgressCircle-component","wrapper":"bds2110ProgressCircle-wrapper","svg":"bds2110ProgressCircle-svg","track":"bds2110ProgressCircle-track","fill":"bds2110ProgressCircle-fill","value":"bds2110ProgressCircle-value","--size_small":"bds2110ProgressCircle---size_small","--size_medium":"bds2110ProgressCircle---size_medium","--size_large":"bds2110ProgressCircle---size_large"};
|
|
730
1067
|
|
|
731
1068
|
// src/components/ui/ProgressCircle/ProgressCircle.tsx
|
|
732
|
-
var
|
|
733
|
-
var
|
|
1069
|
+
var import_design_system_foundation17 = require("@boostdev/design-system-foundation");
|
|
1070
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
734
1071
|
var SIZE_PX = { small: 40, medium: 64, large: 96 };
|
|
735
1072
|
var STROKE_WIDTH = 4;
|
|
736
1073
|
function ProgressCircle({
|
|
@@ -748,18 +1085,18 @@ function ProgressCircle({
|
|
|
748
1085
|
const circumference = 2 * Math.PI * radius;
|
|
749
1086
|
const offset = circumference - percentage / 100 * circumference;
|
|
750
1087
|
const cx = px / 2;
|
|
751
|
-
return /* @__PURE__ */ (0,
|
|
1088
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
752
1089
|
"div",
|
|
753
1090
|
{
|
|
754
1091
|
...rest,
|
|
755
1092
|
role: "progressbar",
|
|
756
1093
|
"aria-label": label,
|
|
757
|
-
"aria-valuenow": value,
|
|
1094
|
+
"aria-valuenow": Math.min(max, Math.max(0, value)),
|
|
758
1095
|
"aria-valuemin": 0,
|
|
759
1096
|
"aria-valuemax": max,
|
|
760
|
-
className: (0,
|
|
1097
|
+
className: (0, import_design_system_foundation17.cn)(ProgressCircle_default.wrapper, ProgressCircle_default[`--size_${size}`], className),
|
|
761
1098
|
children: [
|
|
762
|
-
/* @__PURE__ */ (0,
|
|
1099
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
763
1100
|
"svg",
|
|
764
1101
|
{
|
|
765
1102
|
width: px,
|
|
@@ -768,7 +1105,7 @@ function ProgressCircle({
|
|
|
768
1105
|
"aria-hidden": "true",
|
|
769
1106
|
className: ProgressCircle_default.svg,
|
|
770
1107
|
children: [
|
|
771
|
-
/* @__PURE__ */ (0,
|
|
1108
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
772
1109
|
"circle",
|
|
773
1110
|
{
|
|
774
1111
|
className: ProgressCircle_default.track,
|
|
@@ -779,7 +1116,7 @@ function ProgressCircle({
|
|
|
779
1116
|
fill: "none"
|
|
780
1117
|
}
|
|
781
1118
|
),
|
|
782
|
-
/* @__PURE__ */ (0,
|
|
1119
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
783
1120
|
"circle",
|
|
784
1121
|
{
|
|
785
1122
|
className: ProgressCircle_default.fill,
|
|
@@ -797,7 +1134,7 @@ function ProgressCircle({
|
|
|
797
1134
|
]
|
|
798
1135
|
}
|
|
799
1136
|
),
|
|
800
|
-
showValue && /* @__PURE__ */ (0,
|
|
1137
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: ProgressCircle_default.value, "aria-hidden": "true", children: [
|
|
801
1138
|
Math.round(percentage),
|
|
802
1139
|
"%"
|
|
803
1140
|
] })
|
|
@@ -807,54 +1144,57 @@ function ProgressCircle({
|
|
|
807
1144
|
}
|
|
808
1145
|
|
|
809
1146
|
// src/components/ui/Separator/Separator.module.css
|
|
810
|
-
var Separator_default = {"component":"
|
|
1147
|
+
var Separator_default = {"component":"bds2110Separator-component","separator":"bds2110Separator-separator","--horizontal":"bds2110Separator---horizontal","--vertical":"bds2110Separator---vertical"};
|
|
811
1148
|
|
|
812
1149
|
// src/components/ui/Separator/Separator.tsx
|
|
813
|
-
var
|
|
814
|
-
var
|
|
1150
|
+
var import_design_system_foundation18 = require("@boostdev/design-system-foundation");
|
|
1151
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
815
1152
|
function Separator({ orientation = "horizontal", className, ...rest }) {
|
|
816
1153
|
if (orientation === "vertical") {
|
|
817
|
-
return /* @__PURE__ */ (0,
|
|
1154
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
818
1155
|
"div",
|
|
819
1156
|
{
|
|
820
1157
|
...rest,
|
|
821
1158
|
role: "separator",
|
|
822
1159
|
"aria-orientation": "vertical",
|
|
823
|
-
className: (0,
|
|
1160
|
+
className: (0, import_design_system_foundation18.cn)(Separator_default.separator, Separator_default["--vertical"], className)
|
|
824
1161
|
}
|
|
825
1162
|
);
|
|
826
1163
|
}
|
|
827
|
-
return /* @__PURE__ */ (0,
|
|
1164
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("hr", { ...rest, "aria-orientation": "horizontal", className: (0, import_design_system_foundation18.cn)(Separator_default.separator, Separator_default["--horizontal"], className) });
|
|
828
1165
|
}
|
|
829
1166
|
|
|
830
1167
|
// src/components/ui/Skeleton/Skeleton.tsx
|
|
831
|
-
var
|
|
1168
|
+
var import_design_system_foundation19 = require("@boostdev/design-system-foundation");
|
|
832
1169
|
|
|
833
1170
|
// src/components/ui/Skeleton/Skeleton.module.css
|
|
834
|
-
var Skeleton_default = {"component":"
|
|
1171
|
+
var Skeleton_default = {"component":"bds2110Skeleton-component","skeleton":"bds2110Skeleton-skeleton"};
|
|
835
1172
|
|
|
836
1173
|
// src/components/ui/Skeleton/Skeleton.tsx
|
|
837
|
-
var
|
|
1174
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
838
1175
|
function Skeleton({ className, ...rest }) {
|
|
839
|
-
return /* @__PURE__ */ (0,
|
|
1176
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { ...rest, "aria-hidden": "true", className: (0, import_design_system_foundation19.cn)(Skeleton_default.skeleton, className) });
|
|
840
1177
|
}
|
|
841
1178
|
|
|
842
1179
|
// src/components/ui/SkipLink/SkipLink.module.css
|
|
843
|
-
var SkipLink_default = {"component":"
|
|
1180
|
+
var SkipLink_default = {"component":"bds2110SkipLink-component","skipLink":"bds2110SkipLink-skipLink"};
|
|
844
1181
|
|
|
845
1182
|
// src/components/ui/SkipLink/SkipLink.tsx
|
|
846
|
-
var
|
|
847
|
-
var
|
|
1183
|
+
var import_design_system_foundation20 = require("@boostdev/design-system-foundation");
|
|
1184
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
848
1185
|
function SkipLink({ href = "#main", children = "Skip to main content", className, ...rest }) {
|
|
849
|
-
return /* @__PURE__ */ (0,
|
|
1186
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("a", { ...rest, href, className: (0, import_design_system_foundation20.cn)(SkipLink_default.skipLink, className), children });
|
|
850
1187
|
}
|
|
851
1188
|
|
|
1189
|
+
// src/components/ui/Table/Table.tsx
|
|
1190
|
+
var import_react5 = require("react");
|
|
1191
|
+
|
|
852
1192
|
// src/components/ui/Table/Table.module.css
|
|
853
|
-
var Table_default = {"component":"
|
|
1193
|
+
var Table_default = {"component":"bds2110Table-component","wrapper":"bds2110Table-wrapper","table":"bds2110Table-table","caption":"bds2110Table-caption","thead":"bds2110Table-thead","th":"bds2110Table-th","--sortable":"bds2110Table---sortable","sortButton":"bds2110Table-sortButton","sortIcon":"bds2110Table-sortIcon","--sort-active":"bds2110Table---sort-active","--sort-desc":"bds2110Table---sort-desc","tbody":"bds2110Table-tbody","tr":"bds2110Table-tr","td":"bds2110Table-td"};
|
|
854
1194
|
|
|
855
1195
|
// src/components/ui/Table/Table.tsx
|
|
856
|
-
var
|
|
857
|
-
var
|
|
1196
|
+
var import_design_system_foundation21 = require("@boostdev/design-system-foundation");
|
|
1197
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
858
1198
|
function Table({
|
|
859
1199
|
columns,
|
|
860
1200
|
rows,
|
|
@@ -862,8 +1202,14 @@ function Table({
|
|
|
862
1202
|
sortKey,
|
|
863
1203
|
sortDirection,
|
|
864
1204
|
onSort,
|
|
865
|
-
|
|
1205
|
+
rowKey,
|
|
1206
|
+
className,
|
|
1207
|
+
...rest
|
|
866
1208
|
}) {
|
|
1209
|
+
const generatedId = (0, import_react5.useId)();
|
|
1210
|
+
const captionId = caption ? `${generatedId}-caption` : void 0;
|
|
1211
|
+
const hasCustomLabel = "aria-label" in rest || "aria-labelledby" in rest;
|
|
1212
|
+
const hasAccessibleName = Boolean(caption) || hasCustomLabel;
|
|
867
1213
|
const handleSort = (key) => {
|
|
868
1214
|
if (!onSort) return;
|
|
869
1215
|
const nextDirection = sortKey === key && sortDirection === "asc" ? "desc" : "asc";
|
|
@@ -873,62 +1219,81 @@ function Table({
|
|
|
873
1219
|
if (sortKey !== key) return "none";
|
|
874
1220
|
return sortDirection === "asc" ? "ascending" : "descending";
|
|
875
1221
|
};
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
1222
|
+
const getSortAriaLabel = (col) => {
|
|
1223
|
+
const label = col.sortLabel ?? (typeof col.header === "string" ? col.header : void 0);
|
|
1224
|
+
if (!label) return void 0;
|
|
1225
|
+
const stateSuffix = sortKey === col.key ? `, currently ${sortDirection === "asc" ? "ascending" : "descending"}` : "";
|
|
1226
|
+
return `Sort by ${label}${stateSuffix}`;
|
|
1227
|
+
};
|
|
1228
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1229
|
+
"div",
|
|
1230
|
+
{
|
|
1231
|
+
...rest,
|
|
1232
|
+
className: (0, import_design_system_foundation21.cn)(Table_default.wrapper, className),
|
|
1233
|
+
tabIndex: rest.tabIndex ?? 0,
|
|
1234
|
+
role: hasAccessibleName ? "region" : void 0,
|
|
1235
|
+
"aria-labelledby": hasCustomLabel ? rest["aria-labelledby"] : captionId,
|
|
1236
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)("table", { className: Table_default.table, children: [
|
|
1237
|
+
caption && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("caption", { id: captionId, className: Table_default.caption, children: caption }),
|
|
1238
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("thead", { className: Table_default.thead, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("tr", { children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1239
|
+
"th",
|
|
886
1240
|
{
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
1241
|
+
scope: "col",
|
|
1242
|
+
"aria-sort": col.sortable ? getAriaSort(col.key) : void 0,
|
|
1243
|
+
className: (0, import_design_system_foundation21.cn)(Table_default.th, col.sortable ? Table_default["--sortable"] : void 0),
|
|
1244
|
+
children: col.sortable ? /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
1245
|
+
"button",
|
|
1246
|
+
{
|
|
1247
|
+
type: "button",
|
|
1248
|
+
className: Table_default.sortButton,
|
|
1249
|
+
onClick: () => handleSort(col.key),
|
|
1250
|
+
"aria-label": getSortAriaLabel(col),
|
|
1251
|
+
children: [
|
|
1252
|
+
col.header,
|
|
1253
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
1254
|
+
"svg",
|
|
1255
|
+
{
|
|
1256
|
+
"aria-hidden": "true",
|
|
1257
|
+
className: (0, import_design_system_foundation21.cn)(
|
|
1258
|
+
Table_default.sortIcon,
|
|
1259
|
+
sortKey === col.key ? Table_default["--sort-active"] : void 0,
|
|
1260
|
+
sortKey === col.key && sortDirection === "desc" ? Table_default["--sort-desc"] : void 0
|
|
1261
|
+
),
|
|
1262
|
+
viewBox: "0 0 24 24",
|
|
1263
|
+
fill: "none",
|
|
1264
|
+
stroke: "currentColor",
|
|
1265
|
+
strokeWidth: "2",
|
|
1266
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 9l6 6 6-6" })
|
|
1267
|
+
}
|
|
1268
|
+
)
|
|
1269
|
+
]
|
|
1270
|
+
}
|
|
1271
|
+
) : col.header
|
|
1272
|
+
},
|
|
1273
|
+
col.key
|
|
1274
|
+
)) }) }),
|
|
1275
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("tbody", { className: Table_default.tbody, children: rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("tr", { className: Table_default.tr, children: columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("td", { className: Table_default.td, children: col.render ? col.render(row) : String(row[col.key] ?? "") }, col.key)) }, rowKey?.(row, rowIndex) ?? rowIndex)) })
|
|
1276
|
+
] })
|
|
1277
|
+
}
|
|
1278
|
+
);
|
|
917
1279
|
}
|
|
918
1280
|
|
|
919
1281
|
// src/components/ui/Tabs/Tabs.tsx
|
|
920
|
-
var
|
|
1282
|
+
var import_react6 = require("react");
|
|
921
1283
|
|
|
922
1284
|
// src/components/ui/Tabs/Tabs.module.css
|
|
923
|
-
var Tabs_default = {"component":"
|
|
1285
|
+
var Tabs_default = {"component":"bds2110Tabs-component","tabs":"bds2110Tabs-tabs","tabList":"bds2110Tabs-tabList","tab":"bds2110Tabs-tab","--active":"bds2110Tabs---active","panel":"bds2110Tabs-panel"};
|
|
924
1286
|
|
|
925
1287
|
// src/components/ui/Tabs/Tabs.tsx
|
|
926
|
-
var
|
|
927
|
-
var
|
|
1288
|
+
var import_design_system_foundation22 = require("@boostdev/design-system-foundation");
|
|
1289
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
928
1290
|
function Tabs({ tabs, defaultTab, className, ...rest }) {
|
|
929
|
-
const baseId = (0,
|
|
930
|
-
const [activeTab, setActiveTab] = (0,
|
|
931
|
-
|
|
1291
|
+
const baseId = (0, import_react6.useId)();
|
|
1292
|
+
const [activeTab, setActiveTab] = (0, import_react6.useState)(() => {
|
|
1293
|
+
const initialTab = tabs.find((tab) => tab.id === defaultTab && !tab.disabled) ?? tabs.find((tab) => !tab.disabled);
|
|
1294
|
+
return initialTab?.id;
|
|
1295
|
+
});
|
|
1296
|
+
const tabRefs = (0, import_react6.useRef)([]);
|
|
932
1297
|
const enabledIndexes = tabs.map((tab, i) => ({ tab, i })).filter(({ tab }) => !tab.disabled).map(({ i }) => i);
|
|
933
1298
|
const handleKeyDown = (e, index) => {
|
|
934
1299
|
const pos = enabledIndexes.indexOf(index);
|
|
@@ -950,12 +1315,12 @@ function Tabs({ tabs, defaultTab, className, ...rest }) {
|
|
|
950
1315
|
focusAt(enabledIndexes[enabledIndexes.length - 1]);
|
|
951
1316
|
}
|
|
952
1317
|
};
|
|
953
|
-
return /* @__PURE__ */ (0,
|
|
954
|
-
/* @__PURE__ */ (0,
|
|
1318
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)("div", { ...rest, className: (0, import_design_system_foundation22.cn)(Tabs_default.tabs, className), children: [
|
|
1319
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { role: "tablist", className: Tabs_default.tabList, children: tabs.map((tab, i) => {
|
|
955
1320
|
const tabId = `${baseId}-tab-${tab.id}`;
|
|
956
1321
|
const panelId = `${baseId}-panel-${tab.id}`;
|
|
957
1322
|
const isActive = activeTab === tab.id;
|
|
958
|
-
return /* @__PURE__ */ (0,
|
|
1323
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
959
1324
|
"button",
|
|
960
1325
|
{
|
|
961
1326
|
ref: (el) => {
|
|
@@ -968,7 +1333,7 @@ function Tabs({ tabs, defaultTab, className, ...rest }) {
|
|
|
968
1333
|
"aria-controls": panelId,
|
|
969
1334
|
tabIndex: isActive ? 0 : -1,
|
|
970
1335
|
disabled: tab.disabled,
|
|
971
|
-
className: (0,
|
|
1336
|
+
className: (0, import_design_system_foundation22.cn)(Tabs_default.tab, isActive ? Tabs_default["--active"] : void 0),
|
|
972
1337
|
onClick: () => setActiveTab(tab.id),
|
|
973
1338
|
onKeyDown: (e) => handleKeyDown(e, i),
|
|
974
1339
|
children: tab.label
|
|
@@ -980,13 +1345,14 @@ function Tabs({ tabs, defaultTab, className, ...rest }) {
|
|
|
980
1345
|
const tabId = `${baseId}-tab-${tab.id}`;
|
|
981
1346
|
const panelId = `${baseId}-panel-${tab.id}`;
|
|
982
1347
|
const isActive = activeTab === tab.id;
|
|
983
|
-
return /* @__PURE__ */ (0,
|
|
1348
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
984
1349
|
"div",
|
|
985
1350
|
{
|
|
986
1351
|
id: panelId,
|
|
987
1352
|
role: "tabpanel",
|
|
988
1353
|
"aria-labelledby": tabId,
|
|
989
1354
|
hidden: !isActive,
|
|
1355
|
+
tabIndex: 0,
|
|
990
1356
|
className: Tabs_default.panel,
|
|
991
1357
|
children: tab.content
|
|
992
1358
|
},
|
|
@@ -997,14 +1363,14 @@ function Tabs({ tabs, defaultTab, className, ...rest }) {
|
|
|
997
1363
|
}
|
|
998
1364
|
|
|
999
1365
|
// src/components/ui/Tooltip/Tooltip.tsx
|
|
1000
|
-
var
|
|
1366
|
+
var import_react7 = require("react");
|
|
1001
1367
|
|
|
1002
1368
|
// src/components/ui/Tooltip/Tooltip.module.css
|
|
1003
|
-
var Tooltip_default = {"component":"
|
|
1369
|
+
var Tooltip_default = {"component":"bds2110Tooltip-component","wrapper":"bds2110Tooltip-wrapper","tooltip":"bds2110Tooltip-tooltip","--visible":"bds2110Tooltip---visible","--placement_top":"bds2110Tooltip---placement_top","--placement_bottom":"bds2110Tooltip---placement_bottom","--placement_left":"bds2110Tooltip---placement_left","--placement_right":"bds2110Tooltip---placement_right"};
|
|
1004
1370
|
|
|
1005
1371
|
// src/components/ui/Tooltip/Tooltip.tsx
|
|
1006
|
-
var
|
|
1007
|
-
var
|
|
1372
|
+
var import_design_system_foundation23 = require("@boostdev/design-system-foundation");
|
|
1373
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
1008
1374
|
function Tooltip({
|
|
1009
1375
|
content,
|
|
1010
1376
|
placement = "top",
|
|
@@ -1012,29 +1378,37 @@ function Tooltip({
|
|
|
1012
1378
|
className,
|
|
1013
1379
|
...rest
|
|
1014
1380
|
}) {
|
|
1015
|
-
const tooltipId = (0,
|
|
1016
|
-
const [isVisible, setIsVisible] = (0,
|
|
1017
|
-
const
|
|
1381
|
+
const tooltipId = (0, import_react7.useId)();
|
|
1382
|
+
const [isVisible, setIsVisible] = (0, import_react7.useState)(false);
|
|
1383
|
+
const show = () => setIsVisible(true);
|
|
1384
|
+
const hide = () => setIsVisible(false);
|
|
1385
|
+
const handleKeyDown = (event) => {
|
|
1386
|
+
if (event.key === "Escape" && isVisible) {
|
|
1387
|
+
hide();
|
|
1388
|
+
}
|
|
1389
|
+
};
|
|
1390
|
+
const trigger = (0, import_react7.isValidElement)(children) ? (0, import_react7.cloneElement)(children, {
|
|
1018
1391
|
"aria-describedby": tooltipId
|
|
1019
1392
|
}) : children;
|
|
1020
|
-
return /* @__PURE__ */ (0,
|
|
1393
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
|
|
1021
1394
|
"span",
|
|
1022
1395
|
{
|
|
1023
1396
|
...rest,
|
|
1024
|
-
className: (0,
|
|
1025
|
-
onMouseEnter:
|
|
1026
|
-
onMouseLeave:
|
|
1027
|
-
onFocus:
|
|
1028
|
-
onBlur:
|
|
1397
|
+
className: (0, import_design_system_foundation23.cn)(Tooltip_default.wrapper, className),
|
|
1398
|
+
onMouseEnter: show,
|
|
1399
|
+
onMouseLeave: hide,
|
|
1400
|
+
onFocus: show,
|
|
1401
|
+
onBlur: hide,
|
|
1402
|
+
onKeyDown: handleKeyDown,
|
|
1029
1403
|
children: [
|
|
1030
1404
|
trigger,
|
|
1031
|
-
/* @__PURE__ */ (0,
|
|
1405
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
|
|
1032
1406
|
"span",
|
|
1033
1407
|
{
|
|
1034
1408
|
id: tooltipId,
|
|
1035
1409
|
role: "tooltip",
|
|
1036
|
-
|
|
1037
|
-
className: (0,
|
|
1410
|
+
hidden: !isVisible,
|
|
1411
|
+
className: (0, import_design_system_foundation23.cn)(Tooltip_default.tooltip, Tooltip_default[`--placement_${placement}`], isVisible && Tooltip_default["--visible"]),
|
|
1038
1412
|
children: content
|
|
1039
1413
|
}
|
|
1040
1414
|
)
|
|
@@ -1044,11 +1418,11 @@ function Tooltip({
|
|
|
1044
1418
|
}
|
|
1045
1419
|
|
|
1046
1420
|
// src/components/ui/Typography/Typography.module.css
|
|
1047
|
-
var Typography_default = {"component":"
|
|
1421
|
+
var Typography_default = {"component":"bds2110Typography-component","typography":"bds2110Typography-typography","--h1":"bds2110Typography---h1","--h2":"bds2110Typography---h2","--h3":"bds2110Typography---h3","--body":"bds2110Typography---body","--body_s":"bds2110Typography---body_s"};
|
|
1048
1422
|
|
|
1049
1423
|
// src/components/ui/Typography/Typography.tsx
|
|
1050
|
-
var
|
|
1051
|
-
var
|
|
1424
|
+
var import_design_system_foundation24 = require("@boostdev/design-system-foundation");
|
|
1425
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
1052
1426
|
var variantToElement = {
|
|
1053
1427
|
h1: "h1",
|
|
1054
1428
|
h2: "h2",
|
|
@@ -1058,15 +1432,15 @@ var variantToElement = {
|
|
|
1058
1432
|
};
|
|
1059
1433
|
function Typography({ variant = "body", component, children, className, ...rest }) {
|
|
1060
1434
|
const Component = component || variantToElement[variant];
|
|
1061
|
-
return /* @__PURE__ */ (0,
|
|
1435
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(Component, { ...rest, className: (0, import_design_system_foundation24.cn)(Typography_default.typography, Typography_default[`--${variant}`], className), children });
|
|
1062
1436
|
}
|
|
1063
1437
|
|
|
1064
1438
|
// src/components/interaction/Button/Button.module.css
|
|
1065
|
-
var Button_default = {"component":"
|
|
1439
|
+
var Button_default = {"component":"bds2110Button-component","button":"bds2110Button-button","--default":"bds2110Button---default","--outline":"bds2110Button---outline","--ghost":"bds2110Button---ghost","--size_small":"bds2110Button---size_small","--size_medium":"bds2110Button---size_medium","--size_large":"bds2110Button---size_large","--hasPulse":"bds2110Button---hasPulse","iconStart":"bds2110Button-iconStart","iconEnd":"bds2110Button-iconEnd","--iconOnly":"bds2110Button---iconOnly"};
|
|
1066
1440
|
|
|
1067
1441
|
// src/components/interaction/Button/Button.tsx
|
|
1068
|
-
var
|
|
1069
|
-
var
|
|
1442
|
+
var import_design_system_foundation25 = require("@boostdev/design-system-foundation");
|
|
1443
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
1070
1444
|
function Button({
|
|
1071
1445
|
children,
|
|
1072
1446
|
className,
|
|
@@ -1084,7 +1458,7 @@ function Button({
|
|
|
1084
1458
|
onClick,
|
|
1085
1459
|
...rest
|
|
1086
1460
|
}) {
|
|
1087
|
-
const classNames = (0,
|
|
1461
|
+
const classNames = (0, import_design_system_foundation25.cn)(
|
|
1088
1462
|
Button_default.button,
|
|
1089
1463
|
Button_default[`--${variant}`],
|
|
1090
1464
|
Button_default[`--size_${size}`],
|
|
@@ -1102,15 +1476,16 @@ function Button({
|
|
|
1102
1476
|
const handleButtonClick = (e) => {
|
|
1103
1477
|
onClick?.(e);
|
|
1104
1478
|
};
|
|
1105
|
-
const content = /* @__PURE__ */ (0,
|
|
1106
|
-
Boolean(iconStart) && /* @__PURE__ */ (0,
|
|
1479
|
+
const content = /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_jsx_runtime25.Fragment, { children: [
|
|
1480
|
+
Boolean(iconStart) && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: Button_default.iconStart, children: iconStart }),
|
|
1107
1481
|
children,
|
|
1108
|
-
Boolean(iconEnd) && /* @__PURE__ */ (0,
|
|
1482
|
+
Boolean(iconEnd) && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: Button_default.iconEnd, children: iconEnd })
|
|
1109
1483
|
] });
|
|
1110
1484
|
if (href) {
|
|
1111
|
-
return /* @__PURE__ */ (0,
|
|
1485
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1112
1486
|
"a",
|
|
1113
1487
|
{
|
|
1488
|
+
...rest,
|
|
1114
1489
|
className: classNames,
|
|
1115
1490
|
href: disabled ? void 0 : href,
|
|
1116
1491
|
target,
|
|
@@ -1118,26 +1493,25 @@ function Button({
|
|
|
1118
1493
|
"aria-disabled": disabled,
|
|
1119
1494
|
tabIndex: disabled ? -1 : void 0,
|
|
1120
1495
|
onClick: handleAnchorClick,
|
|
1121
|
-
...rest,
|
|
1122
1496
|
children: content
|
|
1123
1497
|
}
|
|
1124
1498
|
);
|
|
1125
1499
|
}
|
|
1126
|
-
return /* @__PURE__ */ (0,
|
|
1500
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
|
|
1127
1501
|
"button",
|
|
1128
1502
|
{
|
|
1503
|
+
...rest,
|
|
1129
1504
|
type,
|
|
1130
1505
|
className: classNames,
|
|
1131
1506
|
disabled,
|
|
1132
1507
|
onClick: handleButtonClick,
|
|
1133
|
-
...rest,
|
|
1134
1508
|
children: content
|
|
1135
1509
|
}
|
|
1136
1510
|
);
|
|
1137
1511
|
}
|
|
1138
1512
|
|
|
1139
1513
|
// src/components/interaction/Command/Command.tsx
|
|
1140
|
-
var
|
|
1514
|
+
var import_react8 = require("react");
|
|
1141
1515
|
|
|
1142
1516
|
// src/polyfill-invoker-commands.ts
|
|
1143
1517
|
var installed = false;
|
|
@@ -1179,11 +1553,11 @@ function installInvokerCommandsPolyfill() {
|
|
|
1179
1553
|
}
|
|
1180
1554
|
|
|
1181
1555
|
// src/components/interaction/Command/Command.module.css
|
|
1182
|
-
var Command_default = {"component":"
|
|
1556
|
+
var Command_default = {"component":"bds2110Command-component","dialog":"bds2110Command-dialog","palette":"bds2110Command-palette","searchRow":"bds2110Command-searchRow","searchIcon":"bds2110Command-searchIcon","search":"bds2110Command-search","escHint":"bds2110Command-escHint","list":"bds2110Command-list","groupList":"bds2110Command-groupList","group":"bds2110Command-group","item":"bds2110Command-item","itemActive":"bds2110Command-itemActive","itemLabel":"bds2110Command-itemLabel","itemDesc":"bds2110Command-itemDesc","shortcut":"bds2110Command-shortcut","empty":"bds2110Command-empty","srOnly":"bds2110Command-srOnly"};
|
|
1183
1557
|
|
|
1184
1558
|
// src/components/interaction/Command/Command.tsx
|
|
1185
|
-
var
|
|
1186
|
-
var
|
|
1559
|
+
var import_design_system_foundation26 = require("@boostdev/design-system-foundation");
|
|
1560
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
1187
1561
|
installInvokerCommandsPolyfill();
|
|
1188
1562
|
function Command({
|
|
1189
1563
|
id: idProp,
|
|
@@ -1195,20 +1569,20 @@ function Command({
|
|
|
1195
1569
|
className,
|
|
1196
1570
|
...rest
|
|
1197
1571
|
}) {
|
|
1198
|
-
const [query, setQuery] = (0,
|
|
1199
|
-
const [activeIndex, setActiveIndex] = (0,
|
|
1200
|
-
const generatedId = (0,
|
|
1572
|
+
const [query, setQuery] = (0, import_react8.useState)("");
|
|
1573
|
+
const [activeIndex, setActiveIndex] = (0, import_react8.useState)(0);
|
|
1574
|
+
const generatedId = (0, import_react8.useId)();
|
|
1201
1575
|
const dialogId = idProp ?? generatedId;
|
|
1202
|
-
const dialogRef = (0,
|
|
1203
|
-
const inputRef = (0,
|
|
1204
|
-
const listboxId = (0,
|
|
1205
|
-
const filtered = (0,
|
|
1576
|
+
const dialogRef = (0, import_react8.useRef)(null);
|
|
1577
|
+
const inputRef = (0, import_react8.useRef)(null);
|
|
1578
|
+
const listboxId = (0, import_react8.useId)();
|
|
1579
|
+
const filtered = (0, import_react8.useMemo)(() => {
|
|
1206
1580
|
const q = query.toLowerCase().trim();
|
|
1207
1581
|
return q ? items.filter(
|
|
1208
1582
|
(item) => item.label.toLowerCase().includes(q) || item.description?.toLowerCase().includes(q)
|
|
1209
1583
|
) : items;
|
|
1210
1584
|
}, [query, items]);
|
|
1211
|
-
const groups = (0,
|
|
1585
|
+
const groups = (0, import_react8.useMemo)(() => {
|
|
1212
1586
|
const map = /* @__PURE__ */ new Map();
|
|
1213
1587
|
filtered.forEach((item) => {
|
|
1214
1588
|
const g = item.group ?? "";
|
|
@@ -1218,8 +1592,8 @@ function Command({
|
|
|
1218
1592
|
});
|
|
1219
1593
|
return map;
|
|
1220
1594
|
}, [filtered]);
|
|
1221
|
-
const triggerRef = (0,
|
|
1222
|
-
(0,
|
|
1595
|
+
const triggerRef = (0, import_react8.useRef)(null);
|
|
1596
|
+
(0, import_react8.useEffect)(() => {
|
|
1223
1597
|
const dialog = dialogRef.current;
|
|
1224
1598
|
if (!dialog) return;
|
|
1225
1599
|
if (isOpen && !dialog.open) {
|
|
@@ -1238,10 +1612,10 @@ function Command({
|
|
|
1238
1612
|
document.body.style.overflow = "";
|
|
1239
1613
|
};
|
|
1240
1614
|
}, [isOpen]);
|
|
1241
|
-
(0,
|
|
1615
|
+
(0, import_react8.useEffect)(() => {
|
|
1242
1616
|
setActiveIndex(0);
|
|
1243
1617
|
}, [query]);
|
|
1244
|
-
(0,
|
|
1618
|
+
(0, import_react8.useEffect)(() => {
|
|
1245
1619
|
const dialog = dialogRef.current;
|
|
1246
1620
|
if (!dialog) return;
|
|
1247
1621
|
const handleCommand = (e) => {
|
|
@@ -1275,8 +1649,11 @@ function Command({
|
|
|
1275
1649
|
setActiveIndex((i) => Math.max(i - 1, 0));
|
|
1276
1650
|
} else if (e.key === "Enter") {
|
|
1277
1651
|
e.preventDefault();
|
|
1278
|
-
filtered[activeIndex]
|
|
1279
|
-
|
|
1652
|
+
const item = filtered[activeIndex];
|
|
1653
|
+
if (item) {
|
|
1654
|
+
item.onSelect();
|
|
1655
|
+
onClose();
|
|
1656
|
+
}
|
|
1280
1657
|
} else if (e.key === "Escape") {
|
|
1281
1658
|
onClose();
|
|
1282
1659
|
}
|
|
@@ -1285,28 +1662,29 @@ function Command({
|
|
|
1285
1662
|
item.onSelect();
|
|
1286
1663
|
onClose();
|
|
1287
1664
|
};
|
|
1288
|
-
return /* @__PURE__ */ (0,
|
|
1665
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1289
1666
|
"dialog",
|
|
1290
1667
|
{
|
|
1291
1668
|
...rest,
|
|
1292
1669
|
ref: dialogRef,
|
|
1293
1670
|
id: dialogId,
|
|
1294
|
-
className: (0,
|
|
1671
|
+
className: (0, import_design_system_foundation26.cn)(Command_default.dialog, className),
|
|
1295
1672
|
"aria-label": "Command palette",
|
|
1296
1673
|
"aria-modal": "true",
|
|
1297
1674
|
onCancel: handleCancel,
|
|
1298
|
-
children: /* @__PURE__ */ (0,
|
|
1299
|
-
/* @__PURE__ */ (0,
|
|
1300
|
-
/* @__PURE__ */ (0,
|
|
1301
|
-
/* @__PURE__ */ (0,
|
|
1302
|
-
/* @__PURE__ */ (0,
|
|
1675
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: Command_default.palette, onKeyDown: handleKeyDown, children: [
|
|
1676
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: Command_default.searchRow, children: [
|
|
1677
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("svg", { "aria-hidden": "true", className: Command_default.searchIcon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: [
|
|
1678
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("circle", { cx: "11", cy: "11", r: "8" }),
|
|
1679
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("path", { strokeLinecap: "round", d: "M21 21l-4.35-4.35" })
|
|
1303
1680
|
] }),
|
|
1304
|
-
/* @__PURE__ */ (0,
|
|
1681
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
1305
1682
|
"input",
|
|
1306
1683
|
{
|
|
1307
1684
|
ref: inputRef,
|
|
1308
1685
|
type: "search",
|
|
1309
1686
|
role: "combobox",
|
|
1687
|
+
"aria-label": "Search commands",
|
|
1310
1688
|
"aria-expanded": filtered.length > 0,
|
|
1311
1689
|
"aria-controls": listboxId,
|
|
1312
1690
|
"aria-autocomplete": "list",
|
|
@@ -1317,32 +1695,33 @@ function Command({
|
|
|
1317
1695
|
onChange: (e) => setQuery(e.target.value)
|
|
1318
1696
|
}
|
|
1319
1697
|
),
|
|
1320
|
-
/* @__PURE__ */ (0,
|
|
1698
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("kbd", { className: Command_default.escHint, children: "Esc" })
|
|
1321
1699
|
] }),
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
/* @__PURE__ */ (0,
|
|
1700
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: Command_default.srOnly, "aria-live": "polite", children: filtered.length === 0 ? `Nothing matches \u201C${query}\u201D` : "" }),
|
|
1701
|
+
filtered.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("ul", { id: listboxId, role: "listbox", className: Command_default.list, "aria-label": "Commands", children: Array.from(groups.entries()).map(([group, groupItems]) => /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("li", { role: "presentation", children: [
|
|
1702
|
+
group && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: Command_default.group, role: "presentation", children: group }),
|
|
1703
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("ul", { role: "group", "aria-label": group || void 0, className: Command_default.groupList, children: groupItems.map((item) => {
|
|
1325
1704
|
const flatIndex = filtered.indexOf(item);
|
|
1326
1705
|
const isActive = flatIndex === activeIndex;
|
|
1327
|
-
return /* @__PURE__ */ (0,
|
|
1706
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
1328
1707
|
"li",
|
|
1329
1708
|
{
|
|
1330
1709
|
id: `cmd-${item.id}`,
|
|
1331
1710
|
role: "option",
|
|
1332
1711
|
"aria-selected": isActive,
|
|
1333
|
-
className: (0,
|
|
1712
|
+
className: (0, import_design_system_foundation26.cn)(Command_default.item, isActive && Command_default.itemActive),
|
|
1334
1713
|
onPointerDown: (e) => e.preventDefault(),
|
|
1335
1714
|
onClick: () => selectItem(item),
|
|
1336
1715
|
children: [
|
|
1337
|
-
/* @__PURE__ */ (0,
|
|
1338
|
-
item.description && /* @__PURE__ */ (0,
|
|
1339
|
-
item.shortcut && /* @__PURE__ */ (0,
|
|
1716
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: Command_default.itemLabel, children: item.label }),
|
|
1717
|
+
item.description && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("span", { className: Command_default.itemDesc, children: item.description }),
|
|
1718
|
+
item.shortcut && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("kbd", { className: Command_default.shortcut, children: item.shortcut })
|
|
1340
1719
|
]
|
|
1341
1720
|
},
|
|
1342
1721
|
item.id
|
|
1343
1722
|
);
|
|
1344
1723
|
}) })
|
|
1345
|
-
] }, group)) }) : /* @__PURE__ */ (0,
|
|
1724
|
+
] }, group)) }) : /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)("div", { className: Command_default.empty, children: [
|
|
1346
1725
|
"No results for \u201C",
|
|
1347
1726
|
query,
|
|
1348
1727
|
"\u201D"
|
|
@@ -1353,22 +1732,22 @@ function Command({
|
|
|
1353
1732
|
}
|
|
1354
1733
|
|
|
1355
1734
|
// src/components/interaction/Dialog/Dialog.tsx
|
|
1356
|
-
var
|
|
1735
|
+
var import_react9 = require("react");
|
|
1357
1736
|
|
|
1358
1737
|
// src/components/interaction/Dialog/Dialog.module.css
|
|
1359
|
-
var Dialog_default = {"component":"
|
|
1738
|
+
var Dialog_default = {"component":"bds2110Dialog-component","dialog":"bds2110Dialog-dialog","dialogContent":"bds2110Dialog-dialogContent","closeButton":"bds2110Dialog-closeButton"};
|
|
1360
1739
|
|
|
1361
1740
|
// src/components/interaction/Dialog/Dialog.tsx
|
|
1362
|
-
var
|
|
1363
|
-
var
|
|
1741
|
+
var import_design_system_foundation27 = require("@boostdev/design-system-foundation");
|
|
1742
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
1364
1743
|
installInvokerCommandsPolyfill();
|
|
1365
1744
|
var FOCUSABLE_SELECTOR = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
|
|
1366
1745
|
function Dialog({ children, id: idProp, isOpen = false, className, onOpen, onClose, ...rest }) {
|
|
1367
|
-
const generatedId = (0,
|
|
1746
|
+
const generatedId = (0, import_react9.useId)();
|
|
1368
1747
|
const id = idProp ?? generatedId;
|
|
1369
|
-
const dialogRef = (0,
|
|
1370
|
-
const triggerRef = (0,
|
|
1371
|
-
(0,
|
|
1748
|
+
const dialogRef = (0, import_react9.useRef)(null);
|
|
1749
|
+
const triggerRef = (0, import_react9.useRef)(null);
|
|
1750
|
+
(0, import_react9.useEffect)(() => {
|
|
1372
1751
|
const dialog = dialogRef.current;
|
|
1373
1752
|
if (!dialog) return;
|
|
1374
1753
|
if (isOpen && !dialog.open) {
|
|
@@ -1384,7 +1763,7 @@ function Dialog({ children, id: idProp, isOpen = false, className, onOpen, onClo
|
|
|
1384
1763
|
document.body.style.overflow = "";
|
|
1385
1764
|
};
|
|
1386
1765
|
}, [isOpen]);
|
|
1387
|
-
(0,
|
|
1766
|
+
(0, import_react9.useEffect)(() => {
|
|
1388
1767
|
const dialog = dialogRef.current;
|
|
1389
1768
|
if (!dialog) return;
|
|
1390
1769
|
const handleCommand = (e) => {
|
|
@@ -1406,8 +1785,10 @@ function Dialog({ children, id: idProp, isOpen = false, className, onOpen, onClo
|
|
|
1406
1785
|
if (e.target === dialogRef.current) onClose?.();
|
|
1407
1786
|
};
|
|
1408
1787
|
const handleCancel = (e) => {
|
|
1409
|
-
|
|
1410
|
-
|
|
1788
|
+
if (onClose) {
|
|
1789
|
+
e.preventDefault();
|
|
1790
|
+
onClose();
|
|
1791
|
+
}
|
|
1411
1792
|
};
|
|
1412
1793
|
const handleKeyDown = (e) => {
|
|
1413
1794
|
if (e.key !== "Tab") return;
|
|
@@ -1429,19 +1810,19 @@ function Dialog({ children, id: idProp, isOpen = false, className, onOpen, onClo
|
|
|
1429
1810
|
}
|
|
1430
1811
|
}
|
|
1431
1812
|
};
|
|
1432
|
-
return /* @__PURE__ */ (0,
|
|
1813
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
|
|
1433
1814
|
"dialog",
|
|
1434
1815
|
{
|
|
1435
1816
|
...rest,
|
|
1436
1817
|
ref: dialogRef,
|
|
1437
1818
|
id,
|
|
1438
|
-
className: (0,
|
|
1819
|
+
className: (0, import_design_system_foundation27.cn)(className, Dialog_default.dialog),
|
|
1439
1820
|
"aria-modal": "true",
|
|
1440
1821
|
onClick: handleBackdropClick,
|
|
1441
1822
|
onCancel: handleCancel,
|
|
1442
1823
|
onKeyDown: handleKeyDown,
|
|
1443
1824
|
children: [
|
|
1444
|
-
/* @__PURE__ */ (0,
|
|
1825
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
|
|
1445
1826
|
"button",
|
|
1446
1827
|
{
|
|
1447
1828
|
type: "button",
|
|
@@ -1449,25 +1830,26 @@ function Dialog({ children, id: idProp, isOpen = false, className, onOpen, onClo
|
|
|
1449
1830
|
commandfor: id,
|
|
1450
1831
|
command: "close",
|
|
1451
1832
|
"aria-label": "Close dialog",
|
|
1452
|
-
children: /* @__PURE__ */ (0,
|
|
1833
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 6L6 18M6 6l12 12" }) })
|
|
1453
1834
|
}
|
|
1454
1835
|
),
|
|
1455
|
-
/* @__PURE__ */ (0,
|
|
1836
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)("div", { className: Dialog_default.dialogContent, children })
|
|
1456
1837
|
]
|
|
1457
1838
|
}
|
|
1458
1839
|
);
|
|
1459
1840
|
}
|
|
1460
1841
|
|
|
1461
1842
|
// src/components/interaction/Drawer/Drawer.tsx
|
|
1462
|
-
var
|
|
1843
|
+
var import_react10 = require("react");
|
|
1463
1844
|
|
|
1464
1845
|
// src/components/interaction/Drawer/Drawer.module.css
|
|
1465
|
-
var Drawer_default = {"component":"
|
|
1846
|
+
var Drawer_default = {"component":"bds2110Drawer-component","drawer":"bds2110Drawer-drawer","--side_left":"bds2110Drawer---side_left","header":"bds2110Drawer-header","closeButton":"bds2110Drawer-closeButton","body":"bds2110Drawer-body"};
|
|
1466
1847
|
|
|
1467
1848
|
// src/components/interaction/Drawer/Drawer.tsx
|
|
1468
|
-
var
|
|
1469
|
-
var
|
|
1849
|
+
var import_design_system_foundation28 = require("@boostdev/design-system-foundation");
|
|
1850
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
1470
1851
|
installInvokerCommandsPolyfill();
|
|
1852
|
+
var FOCUSABLE_SELECTOR2 = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
|
|
1471
1853
|
function Drawer({
|
|
1472
1854
|
id: idProp,
|
|
1473
1855
|
isOpen,
|
|
@@ -1479,11 +1861,13 @@ function Drawer({
|
|
|
1479
1861
|
className,
|
|
1480
1862
|
...rest
|
|
1481
1863
|
}) {
|
|
1482
|
-
const generatedId = (0,
|
|
1864
|
+
const generatedId = (0, import_react10.useId)();
|
|
1483
1865
|
const id = idProp ?? generatedId;
|
|
1484
|
-
const
|
|
1485
|
-
const
|
|
1486
|
-
(0,
|
|
1866
|
+
const titleId = (0, import_react10.useId)();
|
|
1867
|
+
const hasCustomLabel = "aria-label" in rest || "aria-labelledby" in rest;
|
|
1868
|
+
const dialogRef = (0, import_react10.useRef)(null);
|
|
1869
|
+
const triggerRef = (0, import_react10.useRef)(null);
|
|
1870
|
+
(0, import_react10.useEffect)(() => {
|
|
1487
1871
|
const dialog = dialogRef.current;
|
|
1488
1872
|
if (!dialog) return;
|
|
1489
1873
|
if (isOpen && !dialog.open) {
|
|
@@ -1499,7 +1883,7 @@ function Drawer({
|
|
|
1499
1883
|
document.body.style.overflow = "";
|
|
1500
1884
|
};
|
|
1501
1885
|
}, [isOpen]);
|
|
1502
|
-
(0,
|
|
1886
|
+
(0, import_react10.useEffect)(() => {
|
|
1503
1887
|
const dialog = dialogRef.current;
|
|
1504
1888
|
if (!dialog) return;
|
|
1505
1889
|
const handleCommand = (e) => {
|
|
@@ -1513,35 +1897,53 @@ function Drawer({
|
|
|
1513
1897
|
setTimeout(() => trigger?.focus(), 0);
|
|
1514
1898
|
onClose();
|
|
1515
1899
|
}
|
|
1516
|
-
};
|
|
1517
|
-
dialog.addEventListener("command", handleCommand);
|
|
1518
|
-
return () => dialog.removeEventListener("command", handleCommand);
|
|
1519
|
-
}, [onOpen, onClose]);
|
|
1520
|
-
const
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
};
|
|
1527
|
-
const
|
|
1528
|
-
e.
|
|
1529
|
-
|
|
1900
|
+
};
|
|
1901
|
+
dialog.addEventListener("command", handleCommand);
|
|
1902
|
+
return () => dialog.removeEventListener("command", handleCommand);
|
|
1903
|
+
}, [onOpen, onClose]);
|
|
1904
|
+
const handleBackdropClick = (e) => {
|
|
1905
|
+
if (e.target === dialogRef.current) onClose();
|
|
1906
|
+
};
|
|
1907
|
+
const handleCancel = (e) => {
|
|
1908
|
+
e.preventDefault();
|
|
1909
|
+
onClose();
|
|
1910
|
+
};
|
|
1911
|
+
const handleKeyDown = (e) => {
|
|
1912
|
+
if (e.key !== "Tab") return;
|
|
1913
|
+
const dialog = dialogRef.current;
|
|
1914
|
+
if (!dialog) return;
|
|
1915
|
+
const focusable = Array.from(dialog.querySelectorAll(FOCUSABLE_SELECTOR2));
|
|
1916
|
+
if (focusable.length === 0) return;
|
|
1917
|
+
const first = focusable[0];
|
|
1918
|
+
const last = focusable[focusable.length - 1];
|
|
1919
|
+
if (e.shiftKey) {
|
|
1920
|
+
if (document.activeElement === first) {
|
|
1921
|
+
e.preventDefault();
|
|
1922
|
+
last.focus();
|
|
1923
|
+
}
|
|
1924
|
+
} else {
|
|
1925
|
+
if (document.activeElement === last) {
|
|
1926
|
+
e.preventDefault();
|
|
1927
|
+
first.focus();
|
|
1928
|
+
}
|
|
1929
|
+
}
|
|
1530
1930
|
};
|
|
1531
|
-
return /* @__PURE__ */ (0,
|
|
1931
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
1532
1932
|
"dialog",
|
|
1533
1933
|
{
|
|
1534
1934
|
...rest,
|
|
1535
1935
|
ref: dialogRef,
|
|
1536
1936
|
id,
|
|
1537
|
-
className: (0,
|
|
1937
|
+
className: (0, import_design_system_foundation28.cn)(Drawer_default.drawer, Drawer_default[`--side_${side}`], className),
|
|
1538
1938
|
"aria-modal": "true",
|
|
1539
|
-
|
|
1939
|
+
"aria-labelledby": hasCustomLabel ? rest["aria-labelledby"] : title ? titleId : void 0,
|
|
1940
|
+
onClick: handleBackdropClick,
|
|
1540
1941
|
onCancel: handleCancel,
|
|
1942
|
+
onKeyDown: handleKeyDown,
|
|
1541
1943
|
children: [
|
|
1542
|
-
/* @__PURE__ */ (0,
|
|
1543
|
-
!!title && title,
|
|
1544
|
-
/* @__PURE__ */ (0,
|
|
1944
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: Drawer_default.header, children: [
|
|
1945
|
+
!!title && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { id: titleId, children: title }),
|
|
1946
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
1545
1947
|
"button",
|
|
1546
1948
|
{
|
|
1547
1949
|
type: "button",
|
|
@@ -1549,25 +1951,25 @@ function Drawer({
|
|
|
1549
1951
|
commandfor: id,
|
|
1550
1952
|
command: "close",
|
|
1551
1953
|
"aria-label": "Close drawer",
|
|
1552
|
-
children: /* @__PURE__ */ (0,
|
|
1954
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 6L6 18M6 6l12 12" }) })
|
|
1553
1955
|
}
|
|
1554
1956
|
)
|
|
1555
1957
|
] }),
|
|
1556
|
-
/* @__PURE__ */ (0,
|
|
1958
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: Drawer_default.body, children })
|
|
1557
1959
|
]
|
|
1558
1960
|
}
|
|
1559
1961
|
);
|
|
1560
1962
|
}
|
|
1561
1963
|
|
|
1562
1964
|
// src/components/interaction/DropdownMenu/DropdownMenu.tsx
|
|
1563
|
-
var
|
|
1965
|
+
var import_react11 = require("react");
|
|
1564
1966
|
|
|
1565
1967
|
// src/components/interaction/DropdownMenu/DropdownMenu.module.css
|
|
1566
|
-
var DropdownMenu_default = {"component":"
|
|
1968
|
+
var DropdownMenu_default = {"component":"bds2110DropdownMenu-component","wrapper":"bds2110DropdownMenu-wrapper","menu":"bds2110DropdownMenu-menu","--placement_bottom-start":"bds2110DropdownMenu---placement_bottom-start","--placement_bottom-end":"bds2110DropdownMenu---placement_bottom-end","separator":"bds2110DropdownMenu-separator","item":"bds2110DropdownMenu-item","icon":"bds2110DropdownMenu-icon"};
|
|
1567
1969
|
|
|
1568
1970
|
// src/components/interaction/DropdownMenu/DropdownMenu.tsx
|
|
1569
|
-
var
|
|
1570
|
-
var
|
|
1971
|
+
var import_design_system_foundation29 = require("@boostdev/design-system-foundation");
|
|
1972
|
+
var import_jsx_runtime29 = require("react/jsx-runtime");
|
|
1571
1973
|
function DropdownMenu({
|
|
1572
1974
|
trigger,
|
|
1573
1975
|
items,
|
|
@@ -1575,26 +1977,36 @@ function DropdownMenu({
|
|
|
1575
1977
|
className,
|
|
1576
1978
|
...rest
|
|
1577
1979
|
}) {
|
|
1578
|
-
const [isOpen, setIsOpen] = (0,
|
|
1579
|
-
const containerRef = (0,
|
|
1580
|
-
const menuId = (0,
|
|
1581
|
-
const itemRefs = (0,
|
|
1980
|
+
const [isOpen, setIsOpen] = (0, import_react11.useState)(false);
|
|
1981
|
+
const containerRef = (0, import_react11.useRef)(null);
|
|
1982
|
+
const menuId = (0, import_react11.useId)();
|
|
1983
|
+
const itemRefs = (0, import_react11.useRef)([]);
|
|
1984
|
+
const triggerRef = (0, import_react11.useRef)(null);
|
|
1582
1985
|
const open = () => {
|
|
1986
|
+
triggerRef.current = document.activeElement;
|
|
1583
1987
|
setIsOpen(true);
|
|
1584
1988
|
};
|
|
1585
|
-
const close = () =>
|
|
1586
|
-
|
|
1989
|
+
const close = (restoreFocus = false) => {
|
|
1990
|
+
setIsOpen(false);
|
|
1991
|
+
if (restoreFocus) {
|
|
1992
|
+
triggerRef.current?.focus();
|
|
1993
|
+
}
|
|
1994
|
+
};
|
|
1995
|
+
(0, import_react11.useEffect)(() => {
|
|
1587
1996
|
if (isOpen) {
|
|
1588
|
-
|
|
1997
|
+
const firstEnabledIndex = items.findIndex((item) => !item.disabled);
|
|
1998
|
+
if (firstEnabledIndex !== -1) {
|
|
1999
|
+
itemRefs.current[firstEnabledIndex]?.focus();
|
|
2000
|
+
}
|
|
1589
2001
|
}
|
|
1590
2002
|
}, [isOpen]);
|
|
1591
|
-
(0,
|
|
2003
|
+
(0, import_react11.useEffect)(() => {
|
|
1592
2004
|
if (!isOpen) return;
|
|
1593
2005
|
const handlePointerDown = (e) => {
|
|
1594
2006
|
if (!containerRef.current?.contains(e.target)) close();
|
|
1595
2007
|
};
|
|
1596
2008
|
const handleKeyDown = (e) => {
|
|
1597
|
-
if (e.key === "Escape") close();
|
|
2009
|
+
if (e.key === "Escape") close(true);
|
|
1598
2010
|
};
|
|
1599
2011
|
document.addEventListener("pointerdown", handlePointerDown);
|
|
1600
2012
|
document.addEventListener("keydown", handleKeyDown);
|
|
@@ -1622,7 +2034,7 @@ function DropdownMenu({
|
|
|
1622
2034
|
close();
|
|
1623
2035
|
}
|
|
1624
2036
|
};
|
|
1625
|
-
const triggerEl = (0,
|
|
2037
|
+
const triggerEl = (0, import_react11.isValidElement)(trigger) ? (0, import_react11.cloneElement)(trigger, {
|
|
1626
2038
|
"aria-haspopup": "menu",
|
|
1627
2039
|
"aria-expanded": isOpen,
|
|
1628
2040
|
"aria-controls": menuId,
|
|
@@ -1636,17 +2048,17 @@ function DropdownMenu({
|
|
|
1636
2048
|
if (typeof existingOnClick === "function") existingOnClick(e);
|
|
1637
2049
|
}
|
|
1638
2050
|
}) : trigger;
|
|
1639
|
-
return /* @__PURE__ */ (0,
|
|
2051
|
+
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { ...rest, ref: containerRef, className: (0, import_design_system_foundation29.cn)(DropdownMenu_default.wrapper, className), children: [
|
|
1640
2052
|
triggerEl,
|
|
1641
|
-
isOpen && /* @__PURE__ */ (0,
|
|
2053
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
1642
2054
|
"ul",
|
|
1643
2055
|
{
|
|
1644
2056
|
id: menuId,
|
|
1645
2057
|
role: "menu",
|
|
1646
|
-
className: (0,
|
|
1647
|
-
children: items.map((item, index) => /* @__PURE__ */ (0,
|
|
1648
|
-
item.separator && /* @__PURE__ */ (0,
|
|
1649
|
-
/* @__PURE__ */ (0,
|
|
2058
|
+
className: (0, import_design_system_foundation29.cn)(DropdownMenu_default.menu, DropdownMenu_default[`--placement_${placement}`]),
|
|
2059
|
+
children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("li", { role: "presentation", children: [
|
|
2060
|
+
item.separator && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("hr", { className: DropdownMenu_default.separator, role: "separator" }),
|
|
2061
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
|
|
1650
2062
|
"button",
|
|
1651
2063
|
{
|
|
1652
2064
|
ref: (el) => {
|
|
@@ -1658,11 +2070,11 @@ function DropdownMenu({
|
|
|
1658
2070
|
className: DropdownMenu_default.item,
|
|
1659
2071
|
onClick: () => {
|
|
1660
2072
|
item.onClick?.();
|
|
1661
|
-
close();
|
|
2073
|
+
close(true);
|
|
1662
2074
|
},
|
|
1663
2075
|
onKeyDown: (e) => handleItemKeyDown(e, index),
|
|
1664
2076
|
children: [
|
|
1665
|
-
item.icon && /* @__PURE__ */ (0,
|
|
2077
|
+
item.icon && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("span", { className: DropdownMenu_default.icon, "aria-hidden": "true", children: item.icon }),
|
|
1666
2078
|
item.label
|
|
1667
2079
|
]
|
|
1668
2080
|
}
|
|
@@ -1674,14 +2086,14 @@ function DropdownMenu({
|
|
|
1674
2086
|
}
|
|
1675
2087
|
|
|
1676
2088
|
// src/components/interaction/Popover/Popover.tsx
|
|
1677
|
-
var
|
|
2089
|
+
var import_react12 = require("react");
|
|
1678
2090
|
|
|
1679
2091
|
// src/components/interaction/Popover/Popover.module.css
|
|
1680
|
-
var Popover_default = {"component":"
|
|
2092
|
+
var Popover_default = {"component":"bds2110Popover-component","wrapper":"bds2110Popover-wrapper","panel":"bds2110Popover-panel","g":"bds2110Popover-g"};
|
|
1681
2093
|
|
|
1682
2094
|
// src/components/interaction/Popover/Popover.tsx
|
|
1683
|
-
var
|
|
1684
|
-
var
|
|
2095
|
+
var import_design_system_foundation30 = require("@boostdev/design-system-foundation");
|
|
2096
|
+
var import_jsx_runtime30 = require("react/jsx-runtime");
|
|
1685
2097
|
installInvokerCommandsPolyfill();
|
|
1686
2098
|
if (typeof window !== "undefined" && !(typeof CSS !== "undefined" && typeof CSS.supports === "function" && CSS.supports("anchor-name: --a"))) {
|
|
1687
2099
|
import("@oddbird/css-anchor-positioning").catch(() => {
|
|
@@ -1695,13 +2107,13 @@ function Popover({
|
|
|
1695
2107
|
"aria-label": ariaLabel,
|
|
1696
2108
|
...rest
|
|
1697
2109
|
}) {
|
|
1698
|
-
const [isOpen, setIsOpen] = (0,
|
|
1699
|
-
const containerRef = (0,
|
|
1700
|
-
const panelRef = (0,
|
|
1701
|
-
const rawId = (0,
|
|
2110
|
+
const [isOpen, setIsOpen] = (0, import_react12.useState)(false);
|
|
2111
|
+
const containerRef = (0, import_react12.useRef)(null);
|
|
2112
|
+
const panelRef = (0, import_react12.useRef)(null);
|
|
2113
|
+
const rawId = (0, import_react12.useId)();
|
|
1702
2114
|
const anchorName = `--popover-${rawId.replace(/\W/g, "") || "a"}`;
|
|
1703
2115
|
const panelId = rawId;
|
|
1704
|
-
(0,
|
|
2116
|
+
(0, import_react12.useEffect)(() => {
|
|
1705
2117
|
const panel = panelRef.current;
|
|
1706
2118
|
if (!panel) return;
|
|
1707
2119
|
const handleToggle = (e) => {
|
|
@@ -1710,7 +2122,7 @@ function Popover({
|
|
|
1710
2122
|
panel.addEventListener("toggle", handleToggle);
|
|
1711
2123
|
return () => panel.removeEventListener("toggle", handleToggle);
|
|
1712
2124
|
}, []);
|
|
1713
|
-
(0,
|
|
2125
|
+
(0, import_react12.useEffect)(() => {
|
|
1714
2126
|
if (!isOpen) return;
|
|
1715
2127
|
const handleScroll = () => {
|
|
1716
2128
|
const rect = containerRef.current?.getBoundingClientRect();
|
|
@@ -1727,10 +2139,9 @@ function Popover({
|
|
|
1727
2139
|
window.removeEventListener("resize", handleScroll);
|
|
1728
2140
|
};
|
|
1729
2141
|
}, [isOpen]);
|
|
1730
|
-
const trigger = (0,
|
|
2142
|
+
const trigger = (0, import_react12.isValidElement)(children) ? (0, import_react12.cloneElement)(children, {
|
|
1731
2143
|
"aria-expanded": isOpen,
|
|
1732
2144
|
"aria-controls": panelId,
|
|
1733
|
-
"aria-haspopup": true,
|
|
1734
2145
|
commandfor: panelId,
|
|
1735
2146
|
command: "toggle-popover",
|
|
1736
2147
|
style: {
|
|
@@ -1738,13 +2149,25 @@ function Popover({
|
|
|
1738
2149
|
anchorName
|
|
1739
2150
|
},
|
|
1740
2151
|
// Forward any existing onClick on the child (for custom side-effects).
|
|
1741
|
-
//
|
|
1742
|
-
//
|
|
1743
|
-
|
|
2152
|
+
// commandfor/command handles the toggle when the trigger renders a
|
|
2153
|
+
// native <button> — don't also toggle there (avoids a double-toggle).
|
|
2154
|
+
// Invoker commands are spec-limited to <button>, so when the actual
|
|
2155
|
+
// rendered element isn't one (e.g. a plain <a> or a custom non-button
|
|
2156
|
+
// Link), fall back to an explicit togglePopover() call instead of
|
|
2157
|
+
// silently going dead. Checked on the DOM node (event.currentTarget),
|
|
2158
|
+
// not the React element type, so wrapper components that forward
|
|
2159
|
+
// props onto an inner <button> (e.g. this library's Button) still
|
|
2160
|
+
// take the native path.
|
|
2161
|
+
onClick: (event) => {
|
|
2162
|
+
children.props.onClick?.(event);
|
|
2163
|
+
if (!(event.currentTarget instanceof HTMLButtonElement)) {
|
|
2164
|
+
panelRef.current?.togglePopover();
|
|
2165
|
+
}
|
|
2166
|
+
}
|
|
1744
2167
|
}) : children;
|
|
1745
|
-
return /* @__PURE__ */ (0,
|
|
2168
|
+
return /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("span", { ...rest, ref: containerRef, className: (0, import_design_system_foundation30.cn)(Popover_default.wrapper, className), children: [
|
|
1746
2169
|
trigger,
|
|
1747
|
-
/* @__PURE__ */ (0,
|
|
2170
|
+
/* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
|
|
1748
2171
|
"div",
|
|
1749
2172
|
{
|
|
1750
2173
|
ref: panelRef,
|
|
@@ -1762,27 +2185,27 @@ function Popover({
|
|
|
1762
2185
|
}
|
|
1763
2186
|
|
|
1764
2187
|
// src/components/interaction/Rating/Rating.module.css
|
|
1765
|
-
var Rating_default = {"component":"
|
|
2188
|
+
var Rating_default = {"component":"bds2110Rating-component","rating":"bds2110Rating-rating","star":"bds2110Rating-star","--filled":"bds2110Rating---filled"};
|
|
1766
2189
|
|
|
1767
2190
|
// src/components/interaction/Rating/Rating.tsx
|
|
1768
|
-
var
|
|
1769
|
-
var
|
|
2191
|
+
var import_design_system_foundation31 = require("@boostdev/design-system-foundation");
|
|
2192
|
+
var import_jsx_runtime31 = require("react/jsx-runtime");
|
|
1770
2193
|
function Rating({ value, max = 5, className, ...rest }) {
|
|
1771
|
-
return /* @__PURE__ */ (0,
|
|
2194
|
+
return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1772
2195
|
"div",
|
|
1773
2196
|
{
|
|
1774
2197
|
...rest,
|
|
1775
|
-
className: (0,
|
|
2198
|
+
className: (0, import_design_system_foundation31.cn)(Rating_default.rating, className),
|
|
1776
2199
|
role: "img",
|
|
1777
2200
|
"aria-label": `${value} out of ${max} stars`,
|
|
1778
|
-
children: Array.from({ length: max }).map((_, i) => /* @__PURE__ */ (0,
|
|
2201
|
+
children: Array.from({ length: max }).map((_, i) => /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
|
|
1779
2202
|
"svg",
|
|
1780
2203
|
{
|
|
1781
2204
|
"aria-hidden": "true",
|
|
1782
|
-
className: (0,
|
|
2205
|
+
className: (0, import_design_system_foundation31.cn)(Rating_default.star, i < value && Rating_default["--filled"]),
|
|
1783
2206
|
fill: "currentColor",
|
|
1784
2207
|
viewBox: "0 0 24 24",
|
|
1785
|
-
children: /* @__PURE__ */ (0,
|
|
2208
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" })
|
|
1786
2209
|
},
|
|
1787
2210
|
i
|
|
1788
2211
|
))
|
|
@@ -1791,35 +2214,38 @@ function Rating({ value, max = 5, className, ...rest }) {
|
|
|
1791
2214
|
}
|
|
1792
2215
|
|
|
1793
2216
|
// src/components/interaction/Toast/Toast.tsx
|
|
1794
|
-
var
|
|
2217
|
+
var import_react13 = require("react");
|
|
1795
2218
|
|
|
1796
2219
|
// src/components/interaction/Toast/Toast.module.css
|
|
1797
|
-
var Toast_default = {"component":"
|
|
2220
|
+
var Toast_default = {"component":"bds2110Toast-component","toastContainer":"bds2110Toast-toastContainer","toast":"bds2110Toast-toast","md":"bds2110Toast-md","--variant_success":"bds2110Toast---variant_success","--variant_warning":"bds2110Toast---variant_warning","--variant_info":"bds2110Toast---variant_info","--variant_error":"bds2110Toast---variant_error","message":"bds2110Toast-message","closeButton":"bds2110Toast-closeButton"};
|
|
1798
2221
|
|
|
1799
2222
|
// src/components/interaction/Toast/Toast.tsx
|
|
1800
|
-
var
|
|
1801
|
-
var
|
|
2223
|
+
var import_design_system_foundation32 = require("@boostdev/design-system-foundation");
|
|
2224
|
+
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
1802
2225
|
var _ToastContext;
|
|
1803
2226
|
function getToastContext() {
|
|
1804
|
-
_ToastContext ??= (0,
|
|
2227
|
+
_ToastContext ??= (0, import_react13.createContext)(void 0);
|
|
1805
2228
|
return _ToastContext;
|
|
1806
2229
|
}
|
|
1807
2230
|
function ToastProvider({ children }) {
|
|
1808
2231
|
const ToastContext = getToastContext();
|
|
1809
|
-
const [toasts, setToasts] = (0,
|
|
1810
|
-
const containerRef = (0,
|
|
1811
|
-
const showToast = (0,
|
|
2232
|
+
const [toasts, setToasts] = (0, import_react13.useState)([]);
|
|
2233
|
+
const containerRef = (0, import_react13.useRef)(null);
|
|
2234
|
+
const showToast = (0, import_react13.useCallback)((message, variant) => {
|
|
1812
2235
|
const id = Math.random().toString(36).substring(2, 9);
|
|
1813
2236
|
setToasts((prev) => [...prev, { id, message, variant }]);
|
|
1814
2237
|
}, []);
|
|
1815
|
-
const removeToast = (0,
|
|
2238
|
+
const removeToast = (0, import_react13.useCallback)((id) => {
|
|
1816
2239
|
setToasts((prev) => prev.filter((toast) => toast.id !== id));
|
|
1817
2240
|
}, []);
|
|
1818
|
-
(0,
|
|
2241
|
+
(0, import_react13.useEffect)(() => {
|
|
1819
2242
|
const container = containerRef.current;
|
|
1820
2243
|
if (!container) return;
|
|
1821
2244
|
if (toasts.length > 0) {
|
|
1822
|
-
|
|
2245
|
+
try {
|
|
2246
|
+
container.showPopover?.();
|
|
2247
|
+
} catch {
|
|
2248
|
+
}
|
|
1823
2249
|
} else {
|
|
1824
2250
|
try {
|
|
1825
2251
|
container.hidePopover?.();
|
|
@@ -1827,10 +2253,10 @@ function ToastProvider({ children }) {
|
|
|
1827
2253
|
}
|
|
1828
2254
|
}
|
|
1829
2255
|
}, [toasts.length]);
|
|
1830
|
-
const value = (0,
|
|
1831
|
-
return /* @__PURE__ */ (0,
|
|
2256
|
+
const value = (0, import_react13.useMemo)(() => ({ showToast }), [showToast]);
|
|
2257
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(ToastContext.Provider, { value, children: [
|
|
1832
2258
|
children,
|
|
1833
|
-
/* @__PURE__ */ (0,
|
|
2259
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1834
2260
|
"div",
|
|
1835
2261
|
{
|
|
1836
2262
|
ref: containerRef,
|
|
@@ -1838,11 +2264,11 @@ function ToastProvider({ children }) {
|
|
|
1838
2264
|
role: "region",
|
|
1839
2265
|
"aria-label": "Notifications",
|
|
1840
2266
|
className: Toast_default.toastContainer,
|
|
1841
|
-
children: toasts.map((toast) => /* @__PURE__ */ (0,
|
|
2267
|
+
children: toasts.map((toast) => /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
|
|
1842
2268
|
ToastItem,
|
|
1843
2269
|
{
|
|
1844
2270
|
toast,
|
|
1845
|
-
onRemove:
|
|
2271
|
+
onRemove: removeToast
|
|
1846
2272
|
},
|
|
1847
2273
|
toast.id
|
|
1848
2274
|
))
|
|
@@ -1851,17 +2277,17 @@ function ToastProvider({ children }) {
|
|
|
1851
2277
|
] });
|
|
1852
2278
|
}
|
|
1853
2279
|
function ToastItem({ toast, onRemove }) {
|
|
1854
|
-
(0,
|
|
1855
|
-
const timer = setTimeout(onRemove, 5e3);
|
|
2280
|
+
(0, import_react13.useEffect)(() => {
|
|
2281
|
+
const timer = setTimeout(() => onRemove(toast.id), 5e3);
|
|
1856
2282
|
return () => clearTimeout(timer);
|
|
1857
|
-
}, [onRemove]);
|
|
1858
|
-
return /* @__PURE__ */ (0,
|
|
1859
|
-
/* @__PURE__ */ (0,
|
|
1860
|
-
/* @__PURE__ */ (0,
|
|
2283
|
+
}, [onRemove, toast.id]);
|
|
2284
|
+
return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: (0, import_design_system_foundation32.cn)(Toast_default.toast, Toast_default[`--variant_${toast.variant}`]), role: "status", "aria-live": "polite", "aria-atomic": "true", children: [
|
|
2285
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: Toast_default.message, children: toast.message }),
|
|
2286
|
+
/* @__PURE__ */ (0, import_jsx_runtime32.jsx)("button", { type: "button", className: Toast_default.closeButton, onClick: () => onRemove(toast.id), "aria-label": "Dismiss", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M18 6L6 18M6 6l12 12" }) }) })
|
|
1861
2287
|
] });
|
|
1862
2288
|
}
|
|
1863
2289
|
function useToast() {
|
|
1864
|
-
const context = (0,
|
|
2290
|
+
const context = (0, import_react13.useContext)(getToastContext());
|
|
1865
2291
|
if (!context) {
|
|
1866
2292
|
throw new Error("useToast must be used within a ToastProvider");
|
|
1867
2293
|
}
|
|
@@ -1869,82 +2295,82 @@ function useToast() {
|
|
|
1869
2295
|
}
|
|
1870
2296
|
|
|
1871
2297
|
// src/components/interaction/form/Checkbox/Checkbox.tsx
|
|
1872
|
-
var
|
|
2298
|
+
var import_react14 = require("react");
|
|
1873
2299
|
|
|
1874
2300
|
// src/components/interaction/form/Checkbox/Checkbox.module.css
|
|
1875
|
-
var Checkbox_default = {"component":"
|
|
2301
|
+
var Checkbox_default = {"component":"bds2110Checkbox-component","checkboxGroup":"bds2110Checkbox-checkboxGroup","inputWrapper":"bds2110Checkbox-inputWrapper","checkbox":"bds2110Checkbox-checkbox","checkboxError":"bds2110Checkbox-checkboxError"};
|
|
1876
2302
|
|
|
1877
2303
|
// src/components/interaction/form/atoms/Message.module.css
|
|
1878
|
-
var Message_default = {"component":"
|
|
2304
|
+
var Message_default = {"component":"bds2110Message-component","error":"bds2110Message-error","hint":"bds2110Message-hint"};
|
|
1879
2305
|
|
|
1880
2306
|
// src/components/interaction/form/atoms/Message.tsx
|
|
1881
|
-
var
|
|
1882
|
-
var
|
|
2307
|
+
var import_design_system_foundation33 = require("@boostdev/design-system-foundation");
|
|
2308
|
+
var import_jsx_runtime33 = require("react/jsx-runtime");
|
|
1883
2309
|
var Message = ({ message, type, inputId, className }) => {
|
|
1884
2310
|
if (!message) return null;
|
|
1885
|
-
return /* @__PURE__ */ (0,
|
|
2311
|
+
return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("p", { id: inputId + type, role: type === "error" ? "alert" : void 0, className: (0, import_design_system_foundation33.cn)(Message_default[type], className), children: message });
|
|
1886
2312
|
};
|
|
1887
2313
|
|
|
1888
2314
|
// src/components/interaction/form/atoms/Label.module.css
|
|
1889
|
-
var Label_default = {"component":"
|
|
2315
|
+
var Label_default = {"component":"bds2110Label-component","label":"bds2110Label-label"};
|
|
1890
2316
|
|
|
1891
2317
|
// src/components/interaction/form/atoms/Label.tsx
|
|
1892
|
-
var
|
|
1893
|
-
var
|
|
2318
|
+
var import_design_system_foundation34 = require("@boostdev/design-system-foundation");
|
|
2319
|
+
var import_jsx_runtime34 = require("react/jsx-runtime");
|
|
1894
2320
|
var Label = ({ label, id, className }) => {
|
|
1895
|
-
return /* @__PURE__ */ (0,
|
|
2321
|
+
return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)("label", { htmlFor: id, className: (0, import_design_system_foundation34.cn)(Label_default.label, className), children: label });
|
|
1896
2322
|
};
|
|
1897
2323
|
|
|
1898
2324
|
// src/components/interaction/form/Checkbox/Checkbox.tsx
|
|
1899
|
-
var
|
|
2325
|
+
var import_design_system_foundation36 = require("@boostdev/design-system-foundation");
|
|
1900
2326
|
|
|
1901
2327
|
// src/components/interaction/form/atoms/InputContainer.module.css
|
|
1902
|
-
var InputContainer_default = {"component":"
|
|
2328
|
+
var InputContainer_default = {"component":"bds2110InputContainer-component","container":"bds2110InputContainer-container"};
|
|
1903
2329
|
|
|
1904
2330
|
// src/components/interaction/form/atoms/InputContainer.tsx
|
|
1905
|
-
var
|
|
1906
|
-
var
|
|
2331
|
+
var import_design_system_foundation35 = require("@boostdev/design-system-foundation");
|
|
2332
|
+
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
1907
2333
|
var InputContainer = ({ children, className, ...rest }) => {
|
|
1908
|
-
return /* @__PURE__ */ (0,
|
|
2334
|
+
return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("div", { ...rest, className: (0, import_design_system_foundation35.cn)(InputContainer_default.container, className), children });
|
|
1909
2335
|
};
|
|
1910
2336
|
|
|
1911
2337
|
// src/components/interaction/form/Checkbox/Checkbox.tsx
|
|
1912
|
-
var
|
|
2338
|
+
var import_jsx_runtime36 = require("react/jsx-runtime");
|
|
1913
2339
|
function Checkbox({ label, name, error, hint, className, ...props }) {
|
|
1914
|
-
const id = name + (0,
|
|
2340
|
+
const id = name + (0, import_react14.useId)();
|
|
1915
2341
|
const hintId = id + "hint";
|
|
1916
2342
|
const errorId = id + "error";
|
|
1917
2343
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
1918
|
-
return /* @__PURE__ */ (0,
|
|
1919
|
-
/* @__PURE__ */ (0,
|
|
1920
|
-
/* @__PURE__ */ (0,
|
|
2344
|
+
return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(InputContainer, { className: (0, import_design_system_foundation36.cn)(Checkbox_default.checkboxGroup, className), children: [
|
|
2345
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsxs)("div", { className: Checkbox_default.inputWrapper, children: [
|
|
2346
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
|
|
1921
2347
|
"input",
|
|
1922
2348
|
{
|
|
2349
|
+
...props,
|
|
1923
2350
|
"aria-describedby": describedBy,
|
|
1924
2351
|
"aria-invalid": !!error,
|
|
1925
2352
|
type: "checkbox",
|
|
1926
2353
|
id,
|
|
1927
2354
|
name,
|
|
1928
|
-
className: (0,
|
|
1929
|
-
...props
|
|
2355
|
+
className: (0, import_design_system_foundation36.cn)(Checkbox_default.checkbox, error && Checkbox_default.checkboxError)
|
|
1930
2356
|
}
|
|
1931
2357
|
),
|
|
1932
|
-
/* @__PURE__ */ (0,
|
|
2358
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Label, { id, label })
|
|
1933
2359
|
] }),
|
|
1934
|
-
/* @__PURE__ */ (0,
|
|
1935
|
-
/* @__PURE__ */ (0,
|
|
2360
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Message, { inputId: id, type: "error", message: error }),
|
|
2361
|
+
/* @__PURE__ */ (0, import_jsx_runtime36.jsx)(Message, { inputId: id, type: "hint", message: hint })
|
|
1936
2362
|
] });
|
|
1937
2363
|
}
|
|
1938
2364
|
|
|
1939
2365
|
// src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx
|
|
1940
|
-
var
|
|
2366
|
+
var import_react15 = require("react");
|
|
1941
2367
|
|
|
1942
2368
|
// src/components/interaction/form/CheckboxGroup/CheckboxGroup.module.css
|
|
1943
|
-
var CheckboxGroup_default = {"component":"
|
|
2369
|
+
var CheckboxGroup_default = {"component":"bds2110CheckboxGroup-component","group":"bds2110CheckboxGroup-group","legend":"bds2110CheckboxGroup-legend","required":"bds2110CheckboxGroup-required","requiredLabel":"bds2110CheckboxGroup-requiredLabel","items":"bds2110CheckboxGroup-items"};
|
|
1944
2370
|
|
|
1945
2371
|
// src/components/interaction/form/CheckboxGroup/CheckboxGroup.tsx
|
|
1946
|
-
var
|
|
1947
|
-
var
|
|
2372
|
+
var import_design_system_foundation37 = require("@boostdev/design-system-foundation");
|
|
2373
|
+
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
1948
2374
|
function CheckboxGroup({
|
|
1949
2375
|
legend,
|
|
1950
2376
|
children,
|
|
@@ -1954,39 +2380,42 @@ function CheckboxGroup({
|
|
|
1954
2380
|
className,
|
|
1955
2381
|
...rest
|
|
1956
2382
|
}) {
|
|
1957
|
-
const id = (0,
|
|
2383
|
+
const id = (0, import_react15.useId)();
|
|
1958
2384
|
const hintId = id + "hint";
|
|
1959
2385
|
const errorId = id + "error";
|
|
1960
2386
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
1961
|
-
return /* @__PURE__ */ (0,
|
|
2387
|
+
return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
|
|
1962
2388
|
"fieldset",
|
|
1963
2389
|
{
|
|
1964
2390
|
...rest,
|
|
1965
|
-
className: (0,
|
|
1966
|
-
"aria-required": required || void 0,
|
|
2391
|
+
className: (0, import_design_system_foundation37.cn)(CheckboxGroup_default.group, className),
|
|
1967
2392
|
"aria-describedby": describedBy,
|
|
1968
2393
|
children: [
|
|
1969
|
-
/* @__PURE__ */ (0,
|
|
2394
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("legend", { className: CheckboxGroup_default.legend, children: [
|
|
1970
2395
|
legend,
|
|
1971
|
-
required && /* @__PURE__ */ (0,
|
|
2396
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
|
|
2397
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: CheckboxGroup_default.required, "aria-hidden": "true", children: " *" }),
|
|
2398
|
+
" ",
|
|
2399
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("span", { className: CheckboxGroup_default.requiredLabel, children: "(required)" })
|
|
2400
|
+
] })
|
|
1972
2401
|
] }),
|
|
1973
|
-
/* @__PURE__ */ (0,
|
|
1974
|
-
/* @__PURE__ */ (0,
|
|
1975
|
-
/* @__PURE__ */ (0,
|
|
2402
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: CheckboxGroup_default.items, children }),
|
|
2403
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Message, { inputId: id, type: "error", message: error }),
|
|
2404
|
+
/* @__PURE__ */ (0, import_jsx_runtime37.jsx)(Message, { inputId: id, type: "hint", message: hint })
|
|
1976
2405
|
]
|
|
1977
2406
|
}
|
|
1978
2407
|
);
|
|
1979
2408
|
}
|
|
1980
2409
|
|
|
1981
2410
|
// src/components/interaction/form/Combobox/Combobox.tsx
|
|
1982
|
-
var
|
|
2411
|
+
var import_react16 = require("react");
|
|
1983
2412
|
|
|
1984
2413
|
// src/components/interaction/form/Combobox/Combobox.module.css
|
|
1985
|
-
var Combobox_default = {"component":"
|
|
2414
|
+
var Combobox_default = {"component":"bds2110Combobox-component","formGroup":"bds2110Combobox-formGroup","inputWrapper":"bds2110Combobox-inputWrapper","input":"bds2110Combobox-input","inputError":"bds2110Combobox-inputError","chevron":"bds2110Combobox-chevron","listbox":"bds2110Combobox-listbox","option":"bds2110Combobox-option","--highlighted":"bds2110Combobox---highlighted","--selected":"bds2110Combobox---selected","--disabled":"bds2110Combobox---disabled"};
|
|
1986
2415
|
|
|
1987
2416
|
// src/components/interaction/form/Combobox/Combobox.tsx
|
|
1988
|
-
var
|
|
1989
|
-
var
|
|
2417
|
+
var import_design_system_foundation38 = require("@boostdev/design-system-foundation");
|
|
2418
|
+
var import_jsx_runtime38 = require("react/jsx-runtime");
|
|
1990
2419
|
function Combobox({
|
|
1991
2420
|
label,
|
|
1992
2421
|
name,
|
|
@@ -2000,25 +2429,25 @@ function Combobox({
|
|
|
2000
2429
|
className,
|
|
2001
2430
|
...rest
|
|
2002
2431
|
}) {
|
|
2003
|
-
const id = name + (0,
|
|
2432
|
+
const id = name + (0, import_react16.useId)();
|
|
2004
2433
|
const listboxId = id + "listbox";
|
|
2005
2434
|
const hintId = id + "hint";
|
|
2006
2435
|
const errorId = id + "error";
|
|
2007
2436
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2008
|
-
const selectedOption = (0,
|
|
2009
|
-
const [inputValue, setInputValue] = (0,
|
|
2010
|
-
(0,
|
|
2437
|
+
const selectedOption = (0, import_react16.useMemo)(() => options.find((o) => o.value === value), [options, value]);
|
|
2438
|
+
const [inputValue, setInputValue] = (0, import_react16.useState)(selectedOption?.label ?? "");
|
|
2439
|
+
(0, import_react16.useEffect)(() => {
|
|
2011
2440
|
setInputValue(selectedOption?.label ?? "");
|
|
2012
2441
|
}, [selectedOption]);
|
|
2013
|
-
const [isOpen, setIsOpen] = (0,
|
|
2014
|
-
const [highlightedIndex, setHighlightedIndex] = (0,
|
|
2015
|
-
const containerRef = (0,
|
|
2016
|
-
const inputRef = (0,
|
|
2442
|
+
const [isOpen, setIsOpen] = (0, import_react16.useState)(false);
|
|
2443
|
+
const [highlightedIndex, setHighlightedIndex] = (0, import_react16.useState)(-1);
|
|
2444
|
+
const containerRef = (0, import_react16.useRef)(null);
|
|
2445
|
+
const inputRef = (0, import_react16.useRef)(null);
|
|
2017
2446
|
const filtered = options.filter(
|
|
2018
2447
|
(o) => o.label.toLowerCase().includes(inputValue.toLowerCase())
|
|
2019
2448
|
);
|
|
2020
2449
|
const getOptionId = (index) => `${id}-option-${index}`;
|
|
2021
|
-
(0,
|
|
2450
|
+
(0, import_react16.useEffect)(() => {
|
|
2022
2451
|
if (!isOpen) return;
|
|
2023
2452
|
const handlePointerDown = (e) => {
|
|
2024
2453
|
if (!containerRef.current?.contains(e.target)) setIsOpen(false);
|
|
@@ -2045,18 +2474,31 @@ function Combobox({
|
|
|
2045
2474
|
setIsOpen(true);
|
|
2046
2475
|
return;
|
|
2047
2476
|
}
|
|
2477
|
+
if (enabledIndexes.length === 0) {
|
|
2478
|
+
setHighlightedIndex(-1);
|
|
2479
|
+
return;
|
|
2480
|
+
}
|
|
2048
2481
|
const pos = enabledIndexes.indexOf(highlightedIndex);
|
|
2049
|
-
setHighlightedIndex(enabledIndexes[(pos + 1) % enabledIndexes.length]
|
|
2482
|
+
setHighlightedIndex(enabledIndexes[(pos + 1) % enabledIndexes.length]);
|
|
2050
2483
|
} else if (e.key === "ArrowUp") {
|
|
2051
2484
|
e.preventDefault();
|
|
2485
|
+
if (!isOpen) {
|
|
2486
|
+
setIsOpen(true);
|
|
2487
|
+
return;
|
|
2488
|
+
}
|
|
2489
|
+
if (enabledIndexes.length === 0) {
|
|
2490
|
+
setHighlightedIndex(-1);
|
|
2491
|
+
return;
|
|
2492
|
+
}
|
|
2052
2493
|
const pos = enabledIndexes.indexOf(highlightedIndex);
|
|
2053
2494
|
setHighlightedIndex(
|
|
2054
|
-
enabledIndexes[(pos - 1 + enabledIndexes.length) % enabledIndexes.length]
|
|
2495
|
+
enabledIndexes[(pos - 1 + enabledIndexes.length) % enabledIndexes.length]
|
|
2055
2496
|
);
|
|
2056
2497
|
} else if (e.key === "Enter") {
|
|
2057
2498
|
e.preventDefault();
|
|
2058
|
-
|
|
2059
|
-
|
|
2499
|
+
const option = filtered[highlightedIndex];
|
|
2500
|
+
if (highlightedIndex >= 0 && option && !option.disabled) {
|
|
2501
|
+
selectOption(option);
|
|
2060
2502
|
}
|
|
2061
2503
|
} else if (e.key === "Escape") {
|
|
2062
2504
|
setIsOpen(false);
|
|
@@ -2065,10 +2507,10 @@ function Combobox({
|
|
|
2065
2507
|
setIsOpen(false);
|
|
2066
2508
|
}
|
|
2067
2509
|
};
|
|
2068
|
-
return /* @__PURE__ */ (0,
|
|
2069
|
-
/* @__PURE__ */ (0,
|
|
2070
|
-
/* @__PURE__ */ (0,
|
|
2071
|
-
/* @__PURE__ */ (0,
|
|
2510
|
+
return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(InputContainer, { ...rest, className: (0, import_design_system_foundation38.cn)(Combobox_default.formGroup, className), children: [
|
|
2511
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Label, { id, label }),
|
|
2512
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsxs)("div", { ref: containerRef, className: Combobox_default.inputWrapper, children: [
|
|
2513
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2072
2514
|
"input",
|
|
2073
2515
|
{
|
|
2074
2516
|
ref: inputRef,
|
|
@@ -2080,34 +2522,35 @@ function Combobox({
|
|
|
2080
2522
|
"aria-haspopup": "listbox",
|
|
2081
2523
|
"aria-autocomplete": "list",
|
|
2082
2524
|
"aria-controls": listboxId,
|
|
2083
|
-
"aria-activedescendant": highlightedIndex >= 0 ? getOptionId(highlightedIndex) : void 0,
|
|
2525
|
+
"aria-activedescendant": isOpen && highlightedIndex >= 0 ? getOptionId(highlightedIndex) : void 0,
|
|
2084
2526
|
"aria-invalid": !!error,
|
|
2085
2527
|
"aria-describedby": describedBy,
|
|
2086
2528
|
autoComplete: "off",
|
|
2087
2529
|
placeholder,
|
|
2088
2530
|
value: inputValue,
|
|
2089
2531
|
disabled,
|
|
2090
|
-
className: (0,
|
|
2532
|
+
className: (0, import_design_system_foundation38.cn)(Combobox_default.input, error ? Combobox_default.inputError : void 0),
|
|
2091
2533
|
onChange: handleInputChange,
|
|
2092
2534
|
onKeyDown: handleKeyDown,
|
|
2093
2535
|
onFocus: () => setIsOpen(true)
|
|
2094
2536
|
}
|
|
2095
2537
|
),
|
|
2096
|
-
/* @__PURE__ */ (0,
|
|
2097
|
-
isOpen && filtered.length > 0 && /* @__PURE__ */ (0,
|
|
2538
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { className: Combobox_default.chevron, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 9l6 6 6-6" }) }) }),
|
|
2539
|
+
isOpen && filtered.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2098
2540
|
"ul",
|
|
2099
2541
|
{
|
|
2100
2542
|
id: listboxId,
|
|
2101
2543
|
role: "listbox",
|
|
2544
|
+
"aria-label": typeof label === "string" ? label : void 0,
|
|
2102
2545
|
className: Combobox_default.listbox,
|
|
2103
|
-
children: filtered.map((option, index) => /* @__PURE__ */ (0,
|
|
2546
|
+
children: filtered.map((option, index) => /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
|
|
2104
2547
|
"li",
|
|
2105
2548
|
{
|
|
2106
2549
|
id: getOptionId(index),
|
|
2107
2550
|
role: "option",
|
|
2108
2551
|
"aria-selected": option.value === value,
|
|
2109
2552
|
"aria-disabled": option.disabled,
|
|
2110
|
-
className: (0,
|
|
2553
|
+
className: (0, import_design_system_foundation38.cn)(
|
|
2111
2554
|
Combobox_default.option,
|
|
2112
2555
|
index === highlightedIndex ? Combobox_default["--highlighted"] : void 0,
|
|
2113
2556
|
option.value === value ? Combobox_default["--selected"] : void 0,
|
|
@@ -2124,20 +2567,21 @@ function Combobox({
|
|
|
2124
2567
|
}
|
|
2125
2568
|
)
|
|
2126
2569
|
] }),
|
|
2127
|
-
/* @__PURE__ */ (0,
|
|
2128
|
-
/* @__PURE__ */ (0,
|
|
2570
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Message, { inputId: id, type: "error", message: error }),
|
|
2571
|
+
/* @__PURE__ */ (0, import_jsx_runtime38.jsx)(Message, { inputId: id, type: "hint", message: hint })
|
|
2129
2572
|
] });
|
|
2130
2573
|
}
|
|
2131
2574
|
|
|
2132
2575
|
// src/components/interaction/form/FieldGroup/FieldGroup.tsx
|
|
2133
|
-
var
|
|
2134
|
-
var
|
|
2576
|
+
var import_react17 = require("react");
|
|
2577
|
+
var import_design_system_foundation39 = require("@boostdev/design-system-foundation");
|
|
2135
2578
|
|
|
2136
2579
|
// src/components/interaction/form/FieldGroup/FieldGroup.module.css
|
|
2137
|
-
var FieldGroup_default = {"component":"
|
|
2580
|
+
var FieldGroup_default = {"component":"bds2110FieldGroup-component","fieldGroup":"bds2110FieldGroup-fieldGroup","legend":"bds2110FieldGroup-legend","fields":"bds2110FieldGroup-fields","--variant_horizontal":"bds2110FieldGroup---variant_horizontal","probe":"bds2110FieldGroup-probe","tsx":"bds2110FieldGroup-tsx","probeContainer":"bds2110FieldGroup-probeContainer"};
|
|
2138
2581
|
|
|
2139
2582
|
// src/components/interaction/form/FieldGroup/FieldGroup.tsx
|
|
2140
|
-
var
|
|
2583
|
+
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
2584
|
+
var getInlineSize = (entry) => entry.contentBoxSize?.[0]?.inlineSize ?? entry.contentRect.width;
|
|
2141
2585
|
function FieldGroup({
|
|
2142
2586
|
variant = "horizontal",
|
|
2143
2587
|
legend,
|
|
@@ -2146,34 +2590,61 @@ function FieldGroup({
|
|
|
2146
2590
|
style,
|
|
2147
2591
|
...rest
|
|
2148
2592
|
}) {
|
|
2149
|
-
const fieldCount =
|
|
2593
|
+
const fieldCount = import_react17.Children.toArray(children).length;
|
|
2150
2594
|
const styleWithCount = {
|
|
2151
2595
|
...style,
|
|
2152
2596
|
"--fieldGroup_field-count": fieldCount
|
|
2153
2597
|
};
|
|
2154
|
-
|
|
2598
|
+
const fieldsetRef = (0, import_react17.useRef)(null);
|
|
2599
|
+
const probeRef = (0, import_react17.useRef)(null);
|
|
2600
|
+
const [isCollapsed, setIsCollapsed] = (0, import_react17.useState)(false);
|
|
2601
|
+
(0, import_react17.useEffect)(() => {
|
|
2602
|
+
const fieldsetEl = fieldsetRef.current;
|
|
2603
|
+
const probeEl = probeRef.current;
|
|
2604
|
+
if (variant !== "horizontal" || !fieldsetEl || !probeEl || typeof ResizeObserver === "undefined") {
|
|
2605
|
+
setIsCollapsed(false);
|
|
2606
|
+
return;
|
|
2607
|
+
}
|
|
2608
|
+
let fieldsetSize = 0;
|
|
2609
|
+
let thresholdSize = 0;
|
|
2610
|
+
const observer = new ResizeObserver((entries) => {
|
|
2611
|
+
for (const entry of entries) {
|
|
2612
|
+
const size = getInlineSize(entry);
|
|
2613
|
+
if (entry.target === fieldsetEl) fieldsetSize = size;
|
|
2614
|
+
else if (entry.target === probeEl) thresholdSize = size;
|
|
2615
|
+
}
|
|
2616
|
+
setIsCollapsed(fieldsetSize < thresholdSize);
|
|
2617
|
+
});
|
|
2618
|
+
observer.observe(fieldsetEl);
|
|
2619
|
+
observer.observe(probeEl);
|
|
2620
|
+
return () => observer.disconnect();
|
|
2621
|
+
}, [variant]);
|
|
2622
|
+
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
2155
2623
|
"fieldset",
|
|
2156
2624
|
{
|
|
2157
2625
|
...rest,
|
|
2626
|
+
ref: fieldsetRef,
|
|
2158
2627
|
style: styleWithCount,
|
|
2159
|
-
className: (0,
|
|
2628
|
+
className: (0, import_design_system_foundation39.cn)(FieldGroup_default.fieldGroup, FieldGroup_default[`--variant_${variant}`], className),
|
|
2629
|
+
"data-collapsed": variant === "horizontal" && isCollapsed ? "true" : void 0,
|
|
2160
2630
|
children: [
|
|
2161
|
-
legend !== void 0 && /* @__PURE__ */ (0,
|
|
2162
|
-
/* @__PURE__ */ (0,
|
|
2631
|
+
legend !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("legend", { className: FieldGroup_default.legend, children: legend }),
|
|
2632
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: FieldGroup_default.fields, children }),
|
|
2633
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: FieldGroup_default.probeContainer, children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { ref: probeRef, className: FieldGroup_default.probe }) })
|
|
2163
2634
|
]
|
|
2164
2635
|
}
|
|
2165
2636
|
);
|
|
2166
2637
|
}
|
|
2167
2638
|
|
|
2168
2639
|
// src/components/interaction/form/FileInput/FileInput.tsx
|
|
2169
|
-
var
|
|
2640
|
+
var import_react18 = require("react");
|
|
2170
2641
|
|
|
2171
2642
|
// src/components/interaction/form/FileInput/FileInput.module.css
|
|
2172
|
-
var FileInput_default = {"component":"
|
|
2643
|
+
var FileInput_default = {"component":"bds2110FileInput-component","formGroup":"bds2110FileInput-formGroup","fieldLabel":"bds2110FileInput-fieldLabel","dropZone":"bds2110FileInput-dropZone","isDragging":"bds2110FileInput-isDragging","hasError":"bds2110FileInput-hasError","isDisabled":"bds2110FileInput-isDisabled","icon":"bds2110FileInput-icon","prompt":"bds2110FileInput-prompt","acceptHint":"bds2110FileInput-acceptHint","hiddenInput":"bds2110FileInput-hiddenInput"};
|
|
2173
2644
|
|
|
2174
2645
|
// src/components/interaction/form/FileInput/FileInput.tsx
|
|
2175
|
-
var
|
|
2176
|
-
var
|
|
2646
|
+
var import_design_system_foundation40 = require("@boostdev/design-system-foundation");
|
|
2647
|
+
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
2177
2648
|
function FileInput({
|
|
2178
2649
|
label,
|
|
2179
2650
|
name,
|
|
@@ -2187,13 +2658,13 @@ function FileInput({
|
|
|
2187
2658
|
className,
|
|
2188
2659
|
...rest
|
|
2189
2660
|
}) {
|
|
2190
|
-
const uid = name + (0,
|
|
2661
|
+
const uid = name + (0, import_react18.useId)();
|
|
2191
2662
|
const hintId = uid + "hint";
|
|
2192
2663
|
const errorId = uid + "error";
|
|
2193
2664
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2194
|
-
const inputRef = (0,
|
|
2195
|
-
const [isDragging, setIsDragging] = (0,
|
|
2196
|
-
const [fileNames, setFileNames] = (0,
|
|
2665
|
+
const inputRef = (0, import_react18.useRef)(null);
|
|
2666
|
+
const [isDragging, setIsDragging] = (0, import_react18.useState)(false);
|
|
2667
|
+
const [fileNames, setFileNames] = (0, import_react18.useState)([]);
|
|
2197
2668
|
const isFileAccepted = (file) => {
|
|
2198
2669
|
if (!accept) return true;
|
|
2199
2670
|
return accept.split(",").some((token) => {
|
|
@@ -2214,7 +2685,9 @@ function FileInput({
|
|
|
2214
2685
|
setIsDragging(false);
|
|
2215
2686
|
if (disabled) return;
|
|
2216
2687
|
const dt = new DataTransfer();
|
|
2217
|
-
Array.from(e.dataTransfer.files).filter(isFileAccepted)
|
|
2688
|
+
const accepted = Array.from(e.dataTransfer.files).filter(isFileAccepted);
|
|
2689
|
+
const filesToAdd = multiple ? accepted : accepted.slice(0, 1);
|
|
2690
|
+
filesToAdd.forEach((f) => dt.items.add(f));
|
|
2218
2691
|
if (inputRef.current) inputRef.current.files = dt.files;
|
|
2219
2692
|
handleFiles(dt.files.length > 0 ? dt.files : null);
|
|
2220
2693
|
};
|
|
@@ -2222,25 +2695,27 @@ function FileInput({
|
|
|
2222
2695
|
e.preventDefault();
|
|
2223
2696
|
if (!disabled) setIsDragging(true);
|
|
2224
2697
|
};
|
|
2225
|
-
const handleDragLeave = () =>
|
|
2226
|
-
|
|
2227
|
-
|
|
2698
|
+
const handleDragLeave = (e) => {
|
|
2699
|
+
if (!e.currentTarget.contains(e.relatedTarget)) setIsDragging(false);
|
|
2700
|
+
};
|
|
2701
|
+
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(InputContainer, { ...rest, className: (0, import_design_system_foundation40.cn)(FileInput_default.formGroup, className), children: [
|
|
2702
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
2228
2703
|
"label",
|
|
2229
2704
|
{
|
|
2230
2705
|
htmlFor: uid,
|
|
2231
|
-
className: (0,
|
|
2706
|
+
className: (0, import_design_system_foundation40.cn)(FileInput_default.dropZone, isDragging && FileInput_default.isDragging, error && FileInput_default.hasError, disabled && FileInput_default.isDisabled),
|
|
2232
2707
|
onDrop: handleDrop,
|
|
2233
2708
|
onDragOver: handleDragOver,
|
|
2234
2709
|
onDragLeave: handleDragLeave,
|
|
2235
2710
|
children: [
|
|
2236
|
-
/* @__PURE__ */ (0,
|
|
2237
|
-
/* @__PURE__ */ (0,
|
|
2238
|
-
/* @__PURE__ */ (0,
|
|
2239
|
-
/* @__PURE__ */ (0,
|
|
2711
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: FileInput_default.fieldLabel, children: label }),
|
|
2712
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("svg", { "aria-hidden": "true", className: FileInput_default.icon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", children: /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5" }) }),
|
|
2713
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: FileInput_default.prompt, children: fileNames.length > 0 ? fileNames.join(", ") : /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(import_jsx_runtime40.Fragment, { children: [
|
|
2714
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)("strong", { children: "Click to upload" }),
|
|
2240
2715
|
" or drag and drop"
|
|
2241
2716
|
] }) }),
|
|
2242
|
-
accept && /* @__PURE__ */ (0,
|
|
2243
|
-
/* @__PURE__ */ (0,
|
|
2717
|
+
accept && /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { className: FileInput_default.acceptHint, children: accept }),
|
|
2718
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
|
|
2244
2719
|
"input",
|
|
2245
2720
|
{
|
|
2246
2721
|
ref: inputRef,
|
|
@@ -2261,20 +2736,20 @@ function FileInput({
|
|
|
2261
2736
|
]
|
|
2262
2737
|
}
|
|
2263
2738
|
),
|
|
2264
|
-
/* @__PURE__ */ (0,
|
|
2265
|
-
/* @__PURE__ */ (0,
|
|
2739
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Message, { inputId: uid, type: "error", message: error }),
|
|
2740
|
+
/* @__PURE__ */ (0, import_jsx_runtime40.jsx)(Message, { inputId: uid, type: "hint", message: hint })
|
|
2266
2741
|
] });
|
|
2267
2742
|
}
|
|
2268
2743
|
|
|
2269
2744
|
// src/components/interaction/form/FormInput/FormInput.tsx
|
|
2270
|
-
var
|
|
2745
|
+
var import_react19 = require("react");
|
|
2271
2746
|
|
|
2272
2747
|
// src/components/interaction/form/FormInput/FormInput.module.css
|
|
2273
|
-
var FormInput_default = {"component":"
|
|
2748
|
+
var FormInput_default = {"component":"bds2110FormInput-component","formGroup":"bds2110FormInput-formGroup","input":"bds2110FormInput-input","g":"bds2110FormInput-g","inputError":"bds2110FormInput-inputError"};
|
|
2274
2749
|
|
|
2275
2750
|
// src/components/interaction/form/FormInput/FormInput.tsx
|
|
2276
|
-
var
|
|
2277
|
-
var
|
|
2751
|
+
var import_design_system_foundation41 = require("@boostdev/design-system-foundation");
|
|
2752
|
+
var import_jsx_runtime41 = require("react/jsx-runtime");
|
|
2278
2753
|
function FormInput({
|
|
2279
2754
|
label,
|
|
2280
2755
|
name,
|
|
@@ -2283,42 +2758,43 @@ function FormInput({
|
|
|
2283
2758
|
hint,
|
|
2284
2759
|
className,
|
|
2285
2760
|
required,
|
|
2761
|
+
"aria-label": nativeAriaLabel,
|
|
2286
2762
|
...props
|
|
2287
2763
|
}) {
|
|
2288
|
-
const id = name + (0,
|
|
2764
|
+
const id = name + (0, import_react19.useId)();
|
|
2289
2765
|
const hintId = id + "hint";
|
|
2290
2766
|
const errorId = id + "error";
|
|
2291
2767
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2292
|
-
return /* @__PURE__ */ (0,
|
|
2293
|
-
/* @__PURE__ */ (0,
|
|
2294
|
-
/* @__PURE__ */ (0,
|
|
2768
|
+
return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(InputContainer, { className: (0, import_design_system_foundation41.cn)(FormInput_default.formGroup, className), children: [
|
|
2769
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Label, { id, label }),
|
|
2770
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
|
|
2295
2771
|
"input",
|
|
2296
2772
|
{
|
|
2773
|
+
...props,
|
|
2297
2774
|
"aria-invalid": !!error,
|
|
2298
2775
|
"aria-describedby": describedBy,
|
|
2299
|
-
"aria-label": ariaLabel,
|
|
2776
|
+
"aria-label": ariaLabel ?? nativeAriaLabel,
|
|
2300
2777
|
"aria-required": required || void 0,
|
|
2301
2778
|
id,
|
|
2302
2779
|
name,
|
|
2303
2780
|
required,
|
|
2304
|
-
className: (0,
|
|
2305
|
-
...props
|
|
2781
|
+
className: (0, import_design_system_foundation41.cn)(FormInput_default.input, error && FormInput_default.inputError)
|
|
2306
2782
|
}
|
|
2307
2783
|
),
|
|
2308
|
-
/* @__PURE__ */ (0,
|
|
2309
|
-
/* @__PURE__ */ (0,
|
|
2784
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Message, { inputId: id, type: "error", message: error }),
|
|
2785
|
+
/* @__PURE__ */ (0, import_jsx_runtime41.jsx)(Message, { inputId: id, type: "hint", message: hint })
|
|
2310
2786
|
] });
|
|
2311
2787
|
}
|
|
2312
2788
|
|
|
2313
2789
|
// src/components/interaction/form/NumberInput/NumberInput.tsx
|
|
2314
|
-
var
|
|
2790
|
+
var import_react20 = require("react");
|
|
2315
2791
|
|
|
2316
2792
|
// src/components/interaction/form/NumberInput/NumberInput.module.css
|
|
2317
|
-
var NumberInput_default = {"component":"
|
|
2793
|
+
var NumberInput_default = {"component":"bds2110NumberInput-component","formGroup":"bds2110NumberInput-formGroup","inputRow":"bds2110NumberInput-inputRow","input":"bds2110NumberInput-input","inputError":"bds2110NumberInput-inputError","stepper":"bds2110NumberInput-stepper"};
|
|
2318
2794
|
|
|
2319
2795
|
// src/components/interaction/form/NumberInput/NumberInput.tsx
|
|
2320
|
-
var
|
|
2321
|
-
var
|
|
2796
|
+
var import_design_system_foundation42 = require("@boostdev/design-system-foundation");
|
|
2797
|
+
var import_jsx_runtime42 = require("react/jsx-runtime");
|
|
2322
2798
|
function NumberInput({
|
|
2323
2799
|
label,
|
|
2324
2800
|
name,
|
|
@@ -2332,16 +2808,23 @@ function NumberInput({
|
|
|
2332
2808
|
hint,
|
|
2333
2809
|
onChange,
|
|
2334
2810
|
className,
|
|
2811
|
+
decreaseLabel = "Decrease",
|
|
2812
|
+
increaseLabel = "Increase",
|
|
2335
2813
|
...rest
|
|
2336
2814
|
}) {
|
|
2337
|
-
const uid = name + (0,
|
|
2815
|
+
const uid = name + (0, import_react20.useId)();
|
|
2338
2816
|
const hintId = uid + "hint";
|
|
2339
2817
|
const errorId = uid + "error";
|
|
2340
2818
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2341
|
-
const inputRef = (0,
|
|
2819
|
+
const inputRef = (0, import_react20.useRef)(null);
|
|
2342
2820
|
const isControlled = value !== void 0;
|
|
2343
|
-
const [internalValue, setInternalValue] = (0,
|
|
2821
|
+
const [internalValue, setInternalValue] = (0, import_react20.useState)(defaultValue ?? 0);
|
|
2344
2822
|
const currentValue = isControlled ? value : internalValue;
|
|
2823
|
+
const [controlledDraft, setControlledDraft] = (0, import_react20.useState)(() => isControlled ? String(value) : "");
|
|
2824
|
+
(0, import_react20.useEffect)(() => {
|
|
2825
|
+
if (!isControlled) return;
|
|
2826
|
+
setControlledDraft((prev) => parseFloat(prev) === value ? prev : String(value));
|
|
2827
|
+
}, [isControlled, value]);
|
|
2345
2828
|
const clamp = (v) => {
|
|
2346
2829
|
const withMin = min !== void 0 ? Math.max(min, v) : v;
|
|
2347
2830
|
return max !== void 0 ? Math.min(max, withMin) : withMin;
|
|
@@ -2354,84 +2837,91 @@ function NumberInput({
|
|
|
2354
2837
|
inputRef.current.value = String(next);
|
|
2355
2838
|
inputRef.current.dispatchEvent(new Event("input", { bubbles: true }));
|
|
2356
2839
|
}
|
|
2840
|
+
} else {
|
|
2841
|
+
setControlledDraft(String(next));
|
|
2357
2842
|
}
|
|
2358
2843
|
onChange?.(next);
|
|
2359
2844
|
};
|
|
2360
|
-
return /* @__PURE__ */ (0,
|
|
2361
|
-
/* @__PURE__ */ (0,
|
|
2362
|
-
/* @__PURE__ */ (0,
|
|
2363
|
-
/* @__PURE__ */ (0,
|
|
2845
|
+
return /* @__PURE__ */ (0, import_jsx_runtime42.jsxs)(InputContainer, { ...rest, className: (0, import_design_system_foundation42.cn)(NumberInput_default.formGroup, className), children: [
|
|
2846
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Label, { id: uid, label }),
|
|
2847
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsxs)("div", { className: NumberInput_default.inputRow, children: [
|
|
2848
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2364
2849
|
"button",
|
|
2365
2850
|
{
|
|
2366
2851
|
type: "button",
|
|
2367
2852
|
className: NumberInput_default.stepper,
|
|
2368
|
-
"aria-label":
|
|
2853
|
+
"aria-label": decreaseLabel,
|
|
2369
2854
|
"aria-controls": uid,
|
|
2370
2855
|
disabled: disabled || min !== void 0 && currentValue <= min,
|
|
2371
2856
|
onClick: () => adjust(-step),
|
|
2372
2857
|
tabIndex: -1,
|
|
2373
|
-
children: /* @__PURE__ */ (0,
|
|
2858
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M5 12h14" }) })
|
|
2374
2859
|
}
|
|
2375
2860
|
),
|
|
2376
|
-
/* @__PURE__ */ (0,
|
|
2861
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2377
2862
|
"input",
|
|
2378
2863
|
{
|
|
2379
2864
|
ref: inputRef,
|
|
2380
2865
|
id: uid,
|
|
2381
2866
|
type: "number",
|
|
2382
2867
|
name,
|
|
2383
|
-
...isControlled ? { value } : { defaultValue },
|
|
2868
|
+
...isControlled ? { value: controlledDraft } : { defaultValue },
|
|
2384
2869
|
min,
|
|
2385
2870
|
max,
|
|
2386
2871
|
step,
|
|
2387
2872
|
disabled,
|
|
2388
2873
|
"aria-invalid": !!error,
|
|
2389
2874
|
"aria-describedby": describedBy,
|
|
2390
|
-
className: (0,
|
|
2875
|
+
className: (0, import_design_system_foundation42.cn)(NumberInput_default.input, error ? NumberInput_default.inputError : void 0),
|
|
2391
2876
|
onChange: (e) => {
|
|
2392
|
-
|
|
2393
|
-
const
|
|
2394
|
-
if (
|
|
2395
|
-
|
|
2877
|
+
if (e.target.validity.badInput) return;
|
|
2878
|
+
const raw = e.target.value;
|
|
2879
|
+
if (isControlled) setControlledDraft(raw);
|
|
2880
|
+
if (raw === "") return;
|
|
2881
|
+
const parsed = parseFloat(raw);
|
|
2882
|
+
if (Number.isNaN(parsed)) return;
|
|
2883
|
+
if (!isControlled) setInternalValue(parsed);
|
|
2884
|
+
onChange?.(parsed);
|
|
2396
2885
|
}
|
|
2397
2886
|
}
|
|
2398
2887
|
),
|
|
2399
|
-
/* @__PURE__ */ (0,
|
|
2888
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
|
|
2400
2889
|
"button",
|
|
2401
2890
|
{
|
|
2402
2891
|
type: "button",
|
|
2403
2892
|
className: NumberInput_default.stepper,
|
|
2404
|
-
"aria-label":
|
|
2893
|
+
"aria-label": increaseLabel,
|
|
2405
2894
|
"aria-controls": uid,
|
|
2406
2895
|
disabled: disabled || max !== void 0 && currentValue >= max,
|
|
2407
2896
|
onClick: () => adjust(step),
|
|
2408
2897
|
tabIndex: -1,
|
|
2409
|
-
children: /* @__PURE__ */ (0,
|
|
2898
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 5v14M5 12h14" }) })
|
|
2410
2899
|
}
|
|
2411
2900
|
)
|
|
2412
2901
|
] }),
|
|
2413
|
-
/* @__PURE__ */ (0,
|
|
2414
|
-
/* @__PURE__ */ (0,
|
|
2902
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Message, { inputId: uid, type: "error", message: error }),
|
|
2903
|
+
/* @__PURE__ */ (0, import_jsx_runtime42.jsx)(Message, { inputId: uid, type: "hint", message: hint })
|
|
2415
2904
|
] });
|
|
2416
2905
|
}
|
|
2417
2906
|
|
|
2418
2907
|
// src/components/interaction/form/Radio/Radio.tsx
|
|
2419
|
-
var
|
|
2908
|
+
var import_react21 = require("react");
|
|
2420
2909
|
|
|
2421
2910
|
// src/components/interaction/form/Radio/Radio.module.css
|
|
2422
|
-
var Radio_default = {"component":"
|
|
2911
|
+
var Radio_default = {"component":"bds2110Radio-component","radioGroup":"bds2110Radio-radioGroup","inputWrapper":"bds2110Radio-inputWrapper","textWrapper":"bds2110Radio-textWrapper","description":"bds2110Radio-description","radio":"bds2110Radio-radio","g":"bds2110Radio-g","radioError":"bds2110Radio-radioError"};
|
|
2423
2912
|
|
|
2424
2913
|
// src/components/interaction/form/Radio/Radio.tsx
|
|
2425
|
-
var
|
|
2426
|
-
var
|
|
2427
|
-
function Radio({ label, name, description, error, hint, className, ...props }) {
|
|
2428
|
-
const id = name + (0,
|
|
2914
|
+
var import_design_system_foundation43 = require("@boostdev/design-system-foundation");
|
|
2915
|
+
var import_jsx_runtime43 = require("react/jsx-runtime");
|
|
2916
|
+
function Radio({ label, name, description, error, hint, className, id: consumerId, ...props }) {
|
|
2917
|
+
const id = consumerId ?? name + (0, import_react21.useId)();
|
|
2918
|
+
const descriptionId = id + "description";
|
|
2429
2919
|
const hintId = id + "hint";
|
|
2430
2920
|
const errorId = id + "error";
|
|
2431
|
-
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2432
|
-
return /* @__PURE__ */ (0,
|
|
2433
|
-
/* @__PURE__ */ (0,
|
|
2434
|
-
/* @__PURE__ */ (0,
|
|
2921
|
+
const describedBy = [description && descriptionId, error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2922
|
+
return /* @__PURE__ */ (0, import_jsx_runtime43.jsxs)(InputContainer, { className: (0, import_design_system_foundation43.cn)(Radio_default.radioGroup, className), children: [
|
|
2923
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: Radio_default.inputWrapper, children: [
|
|
2924
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
|
|
2435
2925
|
"input",
|
|
2436
2926
|
{
|
|
2437
2927
|
"aria-describedby": describedBy,
|
|
@@ -2439,29 +2929,29 @@ function Radio({ label, name, description, error, hint, className, ...props }) {
|
|
|
2439
2929
|
type: "radio",
|
|
2440
2930
|
id,
|
|
2441
2931
|
name,
|
|
2442
|
-
className: (0,
|
|
2932
|
+
className: (0, import_design_system_foundation43.cn)(Radio_default.radio, error && Radio_default.radioError),
|
|
2443
2933
|
...props
|
|
2444
2934
|
}
|
|
2445
2935
|
),
|
|
2446
|
-
/* @__PURE__ */ (0,
|
|
2447
|
-
/* @__PURE__ */ (0,
|
|
2448
|
-
description && /* @__PURE__ */ (0,
|
|
2936
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsxs)("div", { className: Radio_default.textWrapper, children: [
|
|
2937
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Label, { id, label }),
|
|
2938
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { id: descriptionId, className: Radio_default.description, children: description })
|
|
2449
2939
|
] })
|
|
2450
2940
|
] }),
|
|
2451
|
-
/* @__PURE__ */ (0,
|
|
2452
|
-
/* @__PURE__ */ (0,
|
|
2941
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Message, { inputId: id, type: "error", message: error }),
|
|
2942
|
+
/* @__PURE__ */ (0, import_jsx_runtime43.jsx)(Message, { inputId: id, type: "hint", message: hint })
|
|
2453
2943
|
] });
|
|
2454
2944
|
}
|
|
2455
2945
|
|
|
2456
2946
|
// src/components/interaction/form/RadioGroup/RadioGroup.tsx
|
|
2457
|
-
var
|
|
2947
|
+
var import_react22 = require("react");
|
|
2458
2948
|
|
|
2459
2949
|
// src/components/interaction/form/RadioGroup/RadioGroup.module.css
|
|
2460
|
-
var RadioGroup_default = {"component":"
|
|
2950
|
+
var RadioGroup_default = {"component":"bds2110RadioGroup-component","group":"bds2110RadioGroup-group","legend":"bds2110RadioGroup-legend","required":"bds2110RadioGroup-required","requiredLabel":"bds2110RadioGroup-requiredLabel","items":"bds2110RadioGroup-items"};
|
|
2461
2951
|
|
|
2462
2952
|
// src/components/interaction/form/RadioGroup/RadioGroup.tsx
|
|
2463
|
-
var
|
|
2464
|
-
var
|
|
2953
|
+
var import_design_system_foundation44 = require("@boostdev/design-system-foundation");
|
|
2954
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
2465
2955
|
function RadioGroup({
|
|
2466
2956
|
legend,
|
|
2467
2957
|
children,
|
|
@@ -2471,39 +2961,45 @@ function RadioGroup({
|
|
|
2471
2961
|
className,
|
|
2472
2962
|
...rest
|
|
2473
2963
|
}) {
|
|
2474
|
-
const id = (0,
|
|
2964
|
+
const id = (0, import_react22.useId)();
|
|
2475
2965
|
const hintId = id + "hint";
|
|
2476
2966
|
const errorId = id + "error";
|
|
2477
2967
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2478
|
-
return /* @__PURE__ */ (0,
|
|
2968
|
+
return /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
|
|
2479
2969
|
"fieldset",
|
|
2480
2970
|
{
|
|
2481
2971
|
...rest,
|
|
2482
|
-
className: (0,
|
|
2483
|
-
"aria-required": required || void 0,
|
|
2972
|
+
className: (0, import_design_system_foundation44.cn)(RadioGroup_default.group, className),
|
|
2484
2973
|
"aria-describedby": describedBy,
|
|
2485
2974
|
children: [
|
|
2486
|
-
/* @__PURE__ */ (0,
|
|
2975
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("legend", { className: RadioGroup_default.legend, children: [
|
|
2487
2976
|
legend,
|
|
2488
|
-
required && /* @__PURE__ */ (0,
|
|
2977
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(import_jsx_runtime44.Fragment, { children: [
|
|
2978
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: RadioGroup_default.required, "aria-hidden": "true", children: " *" }),
|
|
2979
|
+
" ",
|
|
2980
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: RadioGroup_default.requiredLabel, children: "(required)" })
|
|
2981
|
+
] })
|
|
2489
2982
|
] }),
|
|
2490
|
-
/* @__PURE__ */ (0,
|
|
2491
|
-
/* @__PURE__ */ (0,
|
|
2492
|
-
/* @__PURE__ */ (0,
|
|
2983
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: RadioGroup_default.items, children }),
|
|
2984
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Message, { inputId: id, type: "error", message: error }),
|
|
2985
|
+
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)(Message, { inputId: id, type: "hint", message: hint })
|
|
2493
2986
|
]
|
|
2494
2987
|
}
|
|
2495
2988
|
);
|
|
2496
2989
|
}
|
|
2497
2990
|
|
|
2498
2991
|
// src/components/interaction/form/SegmentedControl/SegmentedControl.tsx
|
|
2499
|
-
var
|
|
2992
|
+
var import_react23 = require("react");
|
|
2500
2993
|
|
|
2501
2994
|
// src/components/interaction/form/SegmentedControl/SegmentedControl.module.css
|
|
2502
|
-
var SegmentedControl_default = {"component":"
|
|
2995
|
+
var SegmentedControl_default = {"component":"bds2110SegmentedControl-component","control":"bds2110SegmentedControl-control","thumb":"bds2110SegmentedControl-thumb","indicator":"bds2110SegmentedControl-indicator","item":"bds2110SegmentedControl-item","--active":"bds2110SegmentedControl---active","--disabled":"bds2110SegmentedControl---disabled","--size_small":"bds2110SegmentedControl---size_small","--size_large":"bds2110SegmentedControl---size_large","--variant_outline":"bds2110SegmentedControl---variant_outline","--no-selection":"bds2110SegmentedControl---no-selection"};
|
|
2503
2996
|
|
|
2504
2997
|
// src/components/interaction/form/SegmentedControl/SegmentedControl.tsx
|
|
2505
|
-
var
|
|
2506
|
-
var
|
|
2998
|
+
var import_design_system_foundation45 = require("@boostdev/design-system-foundation");
|
|
2999
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
3000
|
+
var preventDisabledActivation = (event) => {
|
|
3001
|
+
event.preventDefault();
|
|
3002
|
+
};
|
|
2507
3003
|
function SegmentedControl({
|
|
2508
3004
|
children,
|
|
2509
3005
|
selectedIndex: selectedIndexProp,
|
|
@@ -2513,35 +3009,55 @@ function SegmentedControl({
|
|
|
2513
3009
|
className,
|
|
2514
3010
|
...rest
|
|
2515
3011
|
}) {
|
|
2516
|
-
const validChildren =
|
|
3012
|
+
const validChildren = import_react23.Children.toArray(children).filter(import_react23.isValidElement);
|
|
2517
3013
|
const autoIndex = selectedIndexProp === void 0 ? validChildren.findIndex((child) => {
|
|
2518
3014
|
const p = child.props;
|
|
2519
3015
|
return p["aria-current"] === "page" || p["aria-pressed"] === true || p["aria-selected"] === true;
|
|
2520
3016
|
}) : -1;
|
|
2521
|
-
const activeIndex = Math.max(0,
|
|
2522
|
-
return /* @__PURE__ */ (0,
|
|
3017
|
+
const activeIndex = validChildren.length === 0 ? void 0 : selectedIndexProp !== void 0 ? Math.min(Math.max(selectedIndexProp, 0), validChildren.length - 1) : autoIndex >= 0 ? autoIndex : void 0;
|
|
3018
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
|
|
2523
3019
|
"div",
|
|
2524
3020
|
{
|
|
2525
3021
|
...rest,
|
|
2526
3022
|
role: "group",
|
|
2527
|
-
className: (0,
|
|
3023
|
+
className: (0, import_design_system_foundation45.cn)(
|
|
3024
|
+
SegmentedControl_default.control,
|
|
3025
|
+
SegmentedControl_default[`--size_${size}`],
|
|
3026
|
+
SegmentedControl_default[`--variant_${variant}`],
|
|
3027
|
+
activeIndex === void 0 && SegmentedControl_default["--no-selection"],
|
|
3028
|
+
className
|
|
3029
|
+
),
|
|
2528
3030
|
style: {
|
|
2529
3031
|
"--control_count": validChildren.length,
|
|
2530
|
-
"--control_selected-index": activeIndex
|
|
3032
|
+
...activeIndex !== void 0 ? { "--control_selected-index": activeIndex } : {}
|
|
2531
3033
|
},
|
|
2532
3034
|
children: [
|
|
2533
|
-
/* @__PURE__ */ (0,
|
|
2534
|
-
/* @__PURE__ */ (0,
|
|
3035
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: SegmentedControl_default.thumb, "aria-hidden": "true" }),
|
|
3036
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: SegmentedControl_default.indicator, "aria-hidden": "true" }),
|
|
2535
3037
|
validChildren.map((child, index) => {
|
|
2536
3038
|
const isActive = index === activeIndex;
|
|
2537
3039
|
const p = child.props;
|
|
2538
|
-
const
|
|
2539
|
-
|
|
3040
|
+
const isDisabled2 = disabled || !!p.disabled || p["aria-disabled"] === true;
|
|
3041
|
+
const hasAriaState = p["aria-current"] !== void 0 || p["aria-pressed"] !== void 0 || p["aria-selected"] !== void 0;
|
|
3042
|
+
const stateProps = {};
|
|
3043
|
+
if (isDisabled2) {
|
|
3044
|
+
stateProps["aria-disabled"] = true;
|
|
3045
|
+
if (child.type === "button") {
|
|
3046
|
+
stateProps.disabled = true;
|
|
3047
|
+
} else {
|
|
3048
|
+
stateProps.tabIndex = -1;
|
|
3049
|
+
stateProps.onClick = preventDisabledActivation;
|
|
3050
|
+
}
|
|
3051
|
+
} else if (isActive && selectedIndexProp !== void 0 && !hasAriaState) {
|
|
3052
|
+
stateProps[child.type === "a" ? "aria-current" : "aria-pressed"] = child.type === "a" ? "page" : true;
|
|
3053
|
+
}
|
|
3054
|
+
return (0, import_react23.cloneElement)(child, {
|
|
2540
3055
|
key: child.key ?? index,
|
|
2541
|
-
|
|
3056
|
+
...stateProps,
|
|
3057
|
+
className: (0, import_design_system_foundation45.cn)(
|
|
2542
3058
|
SegmentedControl_default.item,
|
|
2543
3059
|
isActive && SegmentedControl_default["--active"],
|
|
2544
|
-
|
|
3060
|
+
isDisabled2 && SegmentedControl_default["--disabled"],
|
|
2545
3061
|
p.className
|
|
2546
3062
|
)
|
|
2547
3063
|
});
|
|
@@ -2552,14 +3068,14 @@ function SegmentedControl({
|
|
|
2552
3068
|
}
|
|
2553
3069
|
|
|
2554
3070
|
// src/components/interaction/form/Select/Select.tsx
|
|
2555
|
-
var
|
|
3071
|
+
var import_react24 = require("react");
|
|
2556
3072
|
|
|
2557
3073
|
// src/components/interaction/form/Select/Select.module.css
|
|
2558
|
-
var Select_default = {"component":"
|
|
3074
|
+
var Select_default = {"component":"bds2110Select-component","formGroup":"bds2110Select-formGroup","selectWrapper":"bds2110Select-selectWrapper","select":"bds2110Select-select","selectError":"bds2110Select-selectError","chevron":"bds2110Select-chevron"};
|
|
2559
3075
|
|
|
2560
3076
|
// src/components/interaction/form/Select/Select.tsx
|
|
2561
|
-
var
|
|
2562
|
-
var
|
|
3077
|
+
var import_design_system_foundation46 = require("@boostdev/design-system-foundation");
|
|
3078
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
2563
3079
|
function Select({
|
|
2564
3080
|
label,
|
|
2565
3081
|
name,
|
|
@@ -2569,48 +3085,55 @@ function Select({
|
|
|
2569
3085
|
hint,
|
|
2570
3086
|
className,
|
|
2571
3087
|
required,
|
|
2572
|
-
|
|
3088
|
+
id,
|
|
3089
|
+
value,
|
|
3090
|
+
defaultValue,
|
|
3091
|
+
...rest
|
|
2573
3092
|
}) {
|
|
2574
|
-
const
|
|
2575
|
-
const
|
|
2576
|
-
const
|
|
3093
|
+
const generatedId = name + (0, import_react24.useId)();
|
|
3094
|
+
const selectId = id ?? generatedId;
|
|
3095
|
+
const hintId = selectId + "hint";
|
|
3096
|
+
const errorId = selectId + "error";
|
|
2577
3097
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
3098
|
+
const isControlled = value !== void 0;
|
|
3099
|
+
const initialValueProps = isControlled ? { value } : { defaultValue: defaultValue ?? (placeholder ? "" : void 0) };
|
|
3100
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(InputContainer, { className: (0, import_design_system_foundation46.cn)(Select_default.formGroup, className), children: [
|
|
3101
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Label, { id: selectId, label }),
|
|
3102
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: Select_default.selectWrapper, children: [
|
|
3103
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
|
|
2582
3104
|
"select",
|
|
2583
3105
|
{
|
|
2584
|
-
|
|
3106
|
+
...rest,
|
|
3107
|
+
id: selectId,
|
|
2585
3108
|
name,
|
|
2586
3109
|
"aria-invalid": !!error,
|
|
2587
3110
|
"aria-required": required || void 0,
|
|
2588
3111
|
"aria-describedby": describedBy,
|
|
2589
3112
|
required,
|
|
2590
|
-
className: (0,
|
|
2591
|
-
...
|
|
3113
|
+
className: (0, import_design_system_foundation46.cn)(Select_default.select, error ? Select_default.selectError : void 0),
|
|
3114
|
+
...initialValueProps,
|
|
2592
3115
|
children: [
|
|
2593
|
-
placeholder && /* @__PURE__ */ (0,
|
|
2594
|
-
options.map(({ value, label: optLabel, disabled }) => /* @__PURE__ */ (0,
|
|
3116
|
+
placeholder && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("option", { value: "", disabled: true, hidden: true, children: placeholder }),
|
|
3117
|
+
options.map(({ value: value2, label: optLabel, disabled }) => /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("option", { value: value2, disabled, children: optLabel }, value2))
|
|
2595
3118
|
]
|
|
2596
3119
|
}
|
|
2597
3120
|
),
|
|
2598
|
-
/* @__PURE__ */ (0,
|
|
3121
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: Select_default.chevron, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6 9l6 6 6-6" }) }) })
|
|
2599
3122
|
] }),
|
|
2600
|
-
/* @__PURE__ */ (0,
|
|
2601
|
-
/* @__PURE__ */ (0,
|
|
3123
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Message, { inputId: selectId, type: "error", message: error }),
|
|
3124
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Message, { inputId: selectId, type: "hint", message: hint })
|
|
2602
3125
|
] });
|
|
2603
3126
|
}
|
|
2604
3127
|
|
|
2605
3128
|
// src/components/interaction/form/Slider/Slider.tsx
|
|
2606
|
-
var
|
|
3129
|
+
var import_react25 = require("react");
|
|
2607
3130
|
|
|
2608
3131
|
// src/components/interaction/form/Slider/Slider.module.css
|
|
2609
|
-
var Slider_default = {"component":"
|
|
3132
|
+
var Slider_default = {"component":"bds2110Slider-component","formGroup":"bds2110Slider-formGroup","labelRow":"bds2110Slider-labelRow","value":"bds2110Slider-value","slider":"bds2110Slider-slider","sliderError":"bds2110Slider-sliderError"};
|
|
2610
3133
|
|
|
2611
3134
|
// src/components/interaction/form/Slider/Slider.tsx
|
|
2612
|
-
var
|
|
2613
|
-
var
|
|
3135
|
+
var import_design_system_foundation47 = require("@boostdev/design-system-foundation");
|
|
3136
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
2614
3137
|
function Slider({
|
|
2615
3138
|
label,
|
|
2616
3139
|
name,
|
|
@@ -2623,56 +3146,55 @@ function Slider({
|
|
|
2623
3146
|
onChange,
|
|
2624
3147
|
...props
|
|
2625
3148
|
}) {
|
|
2626
|
-
const id = name + (0,
|
|
3149
|
+
const id = name + (0, import_react25.useId)();
|
|
2627
3150
|
const hintId = id + "hint";
|
|
2628
3151
|
const errorId = id + "error";
|
|
2629
3152
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2630
3153
|
const isControlled = props.value !== void 0;
|
|
2631
|
-
const [internalValue, setInternalValue] = (0,
|
|
3154
|
+
const [internalValue, setInternalValue] = (0, import_react25.useState)(
|
|
3155
|
+
Number(props.defaultValue ?? min + (max - min) / 2)
|
|
3156
|
+
);
|
|
2632
3157
|
const currentValue = isControlled ? Number(props.value) : internalValue;
|
|
2633
3158
|
const fillPct = (currentValue - min) / (max - min) * 100;
|
|
2634
3159
|
const handleChange = (e) => {
|
|
2635
3160
|
if (!isControlled) setInternalValue(Number(e.target.value));
|
|
2636
3161
|
onChange?.(e);
|
|
2637
3162
|
};
|
|
2638
|
-
return /* @__PURE__ */ (0,
|
|
2639
|
-
/* @__PURE__ */ (0,
|
|
2640
|
-
/* @__PURE__ */ (0,
|
|
2641
|
-
showValue && /* @__PURE__ */ (0,
|
|
3163
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(InputContainer, { className: (0, import_design_system_foundation47.cn)(Slider_default.formGroup, className), children: [
|
|
3164
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsxs)("div", { className: Slider_default.labelRow, children: [
|
|
3165
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Label, { id, label }),
|
|
3166
|
+
showValue && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("span", { className: Slider_default.value, children: currentValue })
|
|
2642
3167
|
] }),
|
|
2643
|
-
/* @__PURE__ */ (0,
|
|
3168
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
2644
3169
|
"input",
|
|
2645
3170
|
{
|
|
3171
|
+
...props,
|
|
2646
3172
|
type: "range",
|
|
2647
3173
|
id,
|
|
2648
3174
|
name,
|
|
2649
3175
|
min,
|
|
2650
3176
|
max,
|
|
3177
|
+
"aria-invalid": !!error,
|
|
2651
3178
|
"aria-describedby": describedBy,
|
|
2652
|
-
|
|
2653
|
-
"
|
|
2654
|
-
|
|
2655
|
-
"aria-valuetext": String(currentValue),
|
|
2656
|
-
className: (0, import_design_system_foundation45.cn)(Slider_default.slider, error ? Slider_default.sliderError : void 0),
|
|
2657
|
-
style: { "--slider_fill": `${fillPct}%` },
|
|
2658
|
-
onChange: handleChange,
|
|
2659
|
-
...props
|
|
3179
|
+
className: (0, import_design_system_foundation47.cn)(Slider_default.slider, error ? Slider_default.sliderError : void 0),
|
|
3180
|
+
style: { ...props.style, "--slider_fill": `${fillPct}%` },
|
|
3181
|
+
onChange: handleChange
|
|
2660
3182
|
}
|
|
2661
3183
|
),
|
|
2662
|
-
/* @__PURE__ */ (0,
|
|
2663
|
-
/* @__PURE__ */ (0,
|
|
3184
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Message, { inputId: id, type: "error", message: error }),
|
|
3185
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)(Message, { inputId: id, type: "hint", message: hint })
|
|
2664
3186
|
] });
|
|
2665
3187
|
}
|
|
2666
3188
|
|
|
2667
3189
|
// src/components/interaction/form/Switch/Switch.tsx
|
|
2668
|
-
var
|
|
3190
|
+
var import_react26 = require("react");
|
|
2669
3191
|
|
|
2670
3192
|
// src/components/interaction/form/Switch/Switch.module.css
|
|
2671
|
-
var Switch_default = {"component":"
|
|
3193
|
+
var Switch_default = {"component":"bds2110Switch-component","switchGroup":"bds2110Switch-switchGroup","--size_small":"bds2110Switch---size_small","--size_medium":"bds2110Switch---size_medium","--size_large":"bds2110Switch---size_large","inputWrapper":"bds2110Switch-inputWrapper","trackWrapper":"bds2110Switch-trackWrapper","switch":"bds2110Switch-switch","track":"bds2110Switch-track","thumb":"bds2110Switch-thumb","switchError":"bds2110Switch-switchError"};
|
|
2672
3194
|
|
|
2673
3195
|
// src/components/interaction/form/Switch/Switch.tsx
|
|
2674
|
-
var
|
|
2675
|
-
var
|
|
3196
|
+
var import_design_system_foundation48 = require("@boostdev/design-system-foundation");
|
|
3197
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
2676
3198
|
function Switch({
|
|
2677
3199
|
label,
|
|
2678
3200
|
name,
|
|
@@ -2683,44 +3205,45 @@ function Switch({
|
|
|
2683
3205
|
prefix,
|
|
2684
3206
|
...props
|
|
2685
3207
|
}) {
|
|
2686
|
-
const id = name + (0,
|
|
3208
|
+
const id = name + (0, import_react26.useId)();
|
|
2687
3209
|
const hintId = id + "hint";
|
|
2688
3210
|
const errorId = id + "error";
|
|
2689
3211
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2690
|
-
return /* @__PURE__ */ (0,
|
|
2691
|
-
/* @__PURE__ */ (0,
|
|
2692
|
-
prefix && /* @__PURE__ */ (0,
|
|
2693
|
-
/* @__PURE__ */ (0,
|
|
2694
|
-
/* @__PURE__ */ (0,
|
|
3212
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(InputContainer, { className: (0, import_design_system_foundation48.cn)(Switch_default.switchGroup, Switch_default[`--size_${size}`], className), children: [
|
|
3213
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: Switch_default.inputWrapper, children: [
|
|
3214
|
+
prefix && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { children: prefix }),
|
|
3215
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: Switch_default.trackWrapper, children: [
|
|
3216
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
2695
3217
|
"input",
|
|
2696
3218
|
{
|
|
3219
|
+
...props,
|
|
2697
3220
|
type: "checkbox",
|
|
2698
3221
|
role: "switch",
|
|
2699
3222
|
id,
|
|
2700
3223
|
name,
|
|
2701
3224
|
"aria-describedby": describedBy,
|
|
2702
|
-
|
|
2703
|
-
|
|
3225
|
+
"aria-invalid": !!error,
|
|
3226
|
+
className: (0, import_design_system_foundation48.cn)(Switch_default.switch, error ? Switch_default.switchError : void 0)
|
|
2704
3227
|
}
|
|
2705
3228
|
),
|
|
2706
|
-
/* @__PURE__ */ (0,
|
|
3229
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: Switch_default.track, "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: Switch_default.thumb }) })
|
|
2707
3230
|
] }),
|
|
2708
|
-
/* @__PURE__ */ (0,
|
|
3231
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Label, { id, label })
|
|
2709
3232
|
] }),
|
|
2710
|
-
/* @__PURE__ */ (0,
|
|
2711
|
-
/* @__PURE__ */ (0,
|
|
3233
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Message, { inputId: id, type: "error", message: error }),
|
|
3234
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)(Message, { inputId: id, type: "hint", message: hint })
|
|
2712
3235
|
] });
|
|
2713
3236
|
}
|
|
2714
3237
|
|
|
2715
3238
|
// src/components/interaction/form/Textarea/Textarea.tsx
|
|
2716
|
-
var
|
|
3239
|
+
var import_react27 = require("react");
|
|
2717
3240
|
|
|
2718
3241
|
// src/components/interaction/form/Textarea/Textarea.module.css
|
|
2719
|
-
var Textarea_default = {"component":"
|
|
3242
|
+
var Textarea_default = {"component":"bds2110Textarea-component","formGroup":"bds2110Textarea-formGroup","textarea":"bds2110Textarea-textarea","textareaError":"bds2110Textarea-textareaError"};
|
|
2720
3243
|
|
|
2721
3244
|
// src/components/interaction/form/Textarea/Textarea.tsx
|
|
2722
|
-
var
|
|
2723
|
-
var
|
|
3245
|
+
var import_design_system_foundation49 = require("@boostdev/design-system-foundation");
|
|
3246
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
2724
3247
|
function Textarea({
|
|
2725
3248
|
label,
|
|
2726
3249
|
name,
|
|
@@ -2728,15 +3251,17 @@ function Textarea({
|
|
|
2728
3251
|
hint,
|
|
2729
3252
|
className,
|
|
2730
3253
|
required,
|
|
3254
|
+
id: idProp,
|
|
2731
3255
|
...props
|
|
2732
3256
|
}) {
|
|
2733
|
-
const
|
|
3257
|
+
const generatedId = (0, import_react27.useId)();
|
|
3258
|
+
const id = idProp ?? name + generatedId;
|
|
2734
3259
|
const hintId = id + "hint";
|
|
2735
3260
|
const errorId = id + "error";
|
|
2736
3261
|
const describedBy = [error && errorId, hint && hintId].filter(Boolean).join(" ") || void 0;
|
|
2737
|
-
return /* @__PURE__ */ (0,
|
|
2738
|
-
/* @__PURE__ */ (0,
|
|
2739
|
-
/* @__PURE__ */ (0,
|
|
3262
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)(InputContainer, { className: (0, import_design_system_foundation49.cn)(Textarea_default.formGroup, className), children: [
|
|
3263
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Label, { id, label }),
|
|
3264
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
2740
3265
|
"textarea",
|
|
2741
3266
|
{
|
|
2742
3267
|
id,
|
|
@@ -2745,40 +3270,40 @@ function Textarea({
|
|
|
2745
3270
|
"aria-describedby": describedBy,
|
|
2746
3271
|
"aria-required": required || void 0,
|
|
2747
3272
|
required,
|
|
2748
|
-
className: (0,
|
|
3273
|
+
className: (0, import_design_system_foundation49.cn)(Textarea_default.textarea, error ? Textarea_default.textareaError : void 0),
|
|
2749
3274
|
...props
|
|
2750
3275
|
}
|
|
2751
3276
|
),
|
|
2752
|
-
/* @__PURE__ */ (0,
|
|
2753
|
-
/* @__PURE__ */ (0,
|
|
3277
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Message, { inputId: id, type: "error", message: error }),
|
|
3278
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Message, { inputId: id, type: "hint", message: hint })
|
|
2754
3279
|
] });
|
|
2755
3280
|
}
|
|
2756
3281
|
|
|
2757
3282
|
// src/components/layout/ButtonGroup/ButtonGroup.module.css
|
|
2758
|
-
var ButtonGroup_default = {"component":"
|
|
3283
|
+
var ButtonGroup_default = {"component":"bds2110ButtonGroup-component","buttonGroup":"bds2110ButtonGroup-buttonGroup","container":"bds2110ButtonGroup-container","--variant_card":"bds2110ButtonGroup---variant_card","--variant_flow":"bds2110ButtonGroup---variant_flow","--variant_modal":"bds2110ButtonGroup---variant_modal","--variant_content":"bds2110ButtonGroup---variant_content"};
|
|
2759
3284
|
|
|
2760
3285
|
// src/components/layout/ButtonGroup/ButtonGroup.tsx
|
|
2761
|
-
var
|
|
2762
|
-
var
|
|
3286
|
+
var import_design_system_foundation50 = require("@boostdev/design-system-foundation");
|
|
3287
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
2763
3288
|
function ButtonContainer({ children, className, variant, ...rest }) {
|
|
2764
|
-
return /* @__PURE__ */ (0,
|
|
3289
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
2765
3290
|
"div",
|
|
2766
3291
|
{
|
|
2767
3292
|
...rest,
|
|
2768
3293
|
role: "group",
|
|
2769
|
-
className: (0,
|
|
2770
|
-
children: /* @__PURE__ */ (0,
|
|
3294
|
+
className: (0, import_design_system_foundation50.cn)(ButtonGroup_default.buttonGroup, className, variant && ButtonGroup_default[`--variant_${variant}`]),
|
|
3295
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: ButtonGroup_default.container, children })
|
|
2771
3296
|
}
|
|
2772
3297
|
);
|
|
2773
3298
|
}
|
|
2774
3299
|
var ButtonGroup = ButtonContainer;
|
|
2775
3300
|
|
|
2776
3301
|
// src/components/layout/Card/Card.module.css
|
|
2777
|
-
var Card_default = {"component":"
|
|
3302
|
+
var Card_default = {"component":"bds2110Card-component","card":"bds2110Card-card","--default":"bds2110Card---default","--elevated":"bds2110Card---elevated","--outlined":"bds2110Card---outlined","--clickable":"bds2110Card---clickable","--padding-none":"bds2110Card---padding-none","--padding-small":"bds2110Card---padding-small","--padding-medium":"bds2110Card---padding-medium","--padding-large":"bds2110Card---padding-large","--padding-extra-large":"bds2110Card---padding-extra-large","--text-start":"bds2110Card---text-start","--text-center":"bds2110Card---text-center","--text-end":"bds2110Card---text-end"};
|
|
2778
3303
|
|
|
2779
3304
|
// src/components/layout/Card/Card.tsx
|
|
2780
|
-
var
|
|
2781
|
-
var
|
|
3305
|
+
var import_design_system_foundation51 = require("@boostdev/design-system-foundation");
|
|
3306
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
2782
3307
|
function Card({
|
|
2783
3308
|
children,
|
|
2784
3309
|
className,
|
|
@@ -2789,7 +3314,7 @@ function Card({
|
|
|
2789
3314
|
onClick,
|
|
2790
3315
|
...rest
|
|
2791
3316
|
}) {
|
|
2792
|
-
const classNames = (0,
|
|
3317
|
+
const classNames = (0, import_design_system_foundation51.cn)(
|
|
2793
3318
|
Card_default.card,
|
|
2794
3319
|
Card_default[`--${variant}`],
|
|
2795
3320
|
Card_default[`--padding-${padding}`],
|
|
@@ -2798,7 +3323,7 @@ function Card({
|
|
|
2798
3323
|
className
|
|
2799
3324
|
);
|
|
2800
3325
|
const Component = as ?? (onClick ? "button" : "div");
|
|
2801
|
-
return /* @__PURE__ */ (0,
|
|
3326
|
+
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
2802
3327
|
Component,
|
|
2803
3328
|
{
|
|
2804
3329
|
...rest,
|
|
@@ -2811,16 +3336,19 @@ function Card({
|
|
|
2811
3336
|
}
|
|
2812
3337
|
|
|
2813
3338
|
// src/components/layout/Grid/Grid.tsx
|
|
2814
|
-
var
|
|
3339
|
+
var import_react29 = require("react");
|
|
2815
3340
|
|
|
2816
3341
|
// src/components/layout/Grid/Grid.module.css
|
|
2817
|
-
var Grid_default = {"component":"
|
|
3342
|
+
var Grid_default = {"component":"bds2110Grid-component","grid":"bds2110Grid-grid","--main":"bds2110Grid---main","--page":"bds2110Grid---page","--funnel":"bds2110Grid---funnel","--custom":"bds2110Grid---custom","--centered":"bds2110Grid---centered","item":"bds2110Grid-item","w3":"bds2110Grid-w3","org":"bds2110Grid-org","ts":"bds2110Grid-ts","--masonry":"bds2110Grid---masonry"};
|
|
2818
3343
|
|
|
2819
3344
|
// src/components/layout/Grid/Grid.tsx
|
|
2820
|
-
var
|
|
3345
|
+
var import_design_system_foundation52 = require("@boostdev/design-system-foundation");
|
|
3346
|
+
|
|
3347
|
+
// src/components/layout/Grid/useIsomorphicLayoutEffect.ts
|
|
3348
|
+
var import_react28 = require("react");
|
|
3349
|
+
var useIsomorphicLayoutEffect = typeof window !== "undefined" ? import_react28.useLayoutEffect : import_react28.useEffect;
|
|
2821
3350
|
|
|
2822
3351
|
// src/components/layout/Grid/masonry.ts
|
|
2823
|
-
var import_react26 = require("react");
|
|
2824
3352
|
var NAMED_SPAN_VAR = {
|
|
2825
3353
|
"three-quarters": "--bds-grid_columns-75",
|
|
2826
3354
|
"two-thirds": "--bds-grid_columns-66",
|
|
@@ -2850,6 +3378,7 @@ function supportsNativeMasonry() {
|
|
|
2850
3378
|
return CSS.supports("display", "grid-lanes") || CSS.supports("grid-template-rows", "masonry");
|
|
2851
3379
|
}
|
|
2852
3380
|
var ORIGINAL_COL_ATTR = "data-bds-masonry-original-column";
|
|
3381
|
+
var LAST_COL_ATTR = "data-bds-masonry-col";
|
|
2853
3382
|
var LAST_SPAN_ATTR = "data-bds-masonry-span";
|
|
2854
3383
|
var UNIT_ATTR = "data-bds-masonry-unit";
|
|
2855
3384
|
function applyMasonryLayout(container, rawChildren, options = {}) {
|
|
@@ -2873,16 +3402,23 @@ function applyMasonryLayout(container, rawChildren, options = {}) {
|
|
|
2873
3402
|
let col = 0;
|
|
2874
3403
|
for (const child of children) {
|
|
2875
3404
|
if (child.hasAttribute("data-column-span-auto")) {
|
|
2876
|
-
|
|
2877
|
-
|
|
3405
|
+
const currentInline = child.style.gridColumn;
|
|
3406
|
+
const lastWritten = child.getAttribute(LAST_COL_ATTR);
|
|
3407
|
+
if (!child.hasAttribute(ORIGINAL_COL_ATTR) || currentInline !== lastWritten) {
|
|
3408
|
+
child.setAttribute(ORIGINAL_COL_ATTR, currentInline);
|
|
2878
3409
|
}
|
|
2879
3410
|
const remaining = totalCols - col;
|
|
2880
3411
|
const span = Math.max(1, Math.min(preferredCols, remaining));
|
|
2881
3412
|
child.style.gridColumn = `span ${span}`;
|
|
3413
|
+
child.setAttribute(LAST_COL_ATTR, child.style.gridColumn);
|
|
2882
3414
|
col = (col + span) % totalCols;
|
|
2883
3415
|
} else {
|
|
2884
3416
|
const consumed = Math.min(totalCols, readExplicitSpan(child, totalCols));
|
|
2885
|
-
|
|
3417
|
+
if (consumed > totalCols - col) {
|
|
3418
|
+
col = consumed % totalCols;
|
|
3419
|
+
} else {
|
|
3420
|
+
col = (col + consumed) % totalCols;
|
|
3421
|
+
}
|
|
2886
3422
|
}
|
|
2887
3423
|
}
|
|
2888
3424
|
}
|
|
@@ -2966,10 +3502,11 @@ function restoreOriginalColumn(el) {
|
|
|
2966
3502
|
if (!el.hasAttribute(ORIGINAL_COL_ATTR)) return;
|
|
2967
3503
|
el.style.gridColumn = el.getAttribute(ORIGINAL_COL_ATTR) ?? "";
|
|
2968
3504
|
el.removeAttribute(ORIGINAL_COL_ATTR);
|
|
3505
|
+
el.removeAttribute(LAST_COL_ATTR);
|
|
2969
3506
|
}
|
|
2970
3507
|
function useMasonry(ref, enabled, options = {}) {
|
|
2971
3508
|
const { preferredColumnSpan, rowUnitPx } = options;
|
|
2972
|
-
(
|
|
3509
|
+
useIsomorphicLayoutEffect(() => {
|
|
2973
3510
|
const container = ref.current;
|
|
2974
3511
|
if (!container || !enabled) return;
|
|
2975
3512
|
if (supportsNativeMasonry()) return;
|
|
@@ -3041,10 +3578,10 @@ function useMasonry(ref, enabled, options = {}) {
|
|
|
3041
3578
|
}
|
|
3042
3579
|
|
|
3043
3580
|
// src/components/layout/Grid/Grid.tsx
|
|
3044
|
-
var
|
|
3581
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
3045
3582
|
var _GridContext;
|
|
3046
3583
|
function getGridContext() {
|
|
3047
|
-
_GridContext ??= (0,
|
|
3584
|
+
_GridContext ??= (0, import_react29.createContext)({ autoSpanMedia: false });
|
|
3048
3585
|
return _GridContext;
|
|
3049
3586
|
}
|
|
3050
3587
|
function Grid({
|
|
@@ -3061,12 +3598,12 @@ function Grid({
|
|
|
3061
3598
|
style,
|
|
3062
3599
|
...rest
|
|
3063
3600
|
}) {
|
|
3064
|
-
const ref = (0,
|
|
3601
|
+
const ref = (0, import_react29.useRef)(null);
|
|
3065
3602
|
useMasonry(ref, isMasonry, {
|
|
3066
3603
|
preferredColumnSpan: masonryPreferredColumnSpan,
|
|
3067
3604
|
rowUnitPx: masonryRowUnitPx
|
|
3068
3605
|
});
|
|
3069
|
-
const classNames = (0,
|
|
3606
|
+
const classNames = (0, import_design_system_foundation52.cn)(
|
|
3070
3607
|
Grid_default.grid,
|
|
3071
3608
|
Grid_default[`--${variant}`],
|
|
3072
3609
|
isCentered && Grid_default["--centered"],
|
|
@@ -3076,13 +3613,13 @@ function Grid({
|
|
|
3076
3613
|
const composedStyle = variant === "custom" && columns !== void 0 ? { ...style, ["--grid_columns"]: columns } : style;
|
|
3077
3614
|
const Component = as ?? "div";
|
|
3078
3615
|
const GridContext = getGridContext();
|
|
3079
|
-
const ctx = (0,
|
|
3080
|
-
return /* @__PURE__ */ (0,
|
|
3616
|
+
const ctx = (0, import_react29.useMemo)(() => ({ autoSpanMedia }), [autoSpanMedia]);
|
|
3617
|
+
return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Component, { ref, ...rest, className: classNames, style: composedStyle, children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(GridContext.Provider, { value: ctx, children }) });
|
|
3081
3618
|
}
|
|
3082
3619
|
|
|
3083
3620
|
// src/components/layout/Grid/GridItem.tsx
|
|
3084
|
-
var
|
|
3085
|
-
var
|
|
3621
|
+
var import_react30 = require("react");
|
|
3622
|
+
var import_design_system_foundation53 = require("@boostdev/design-system-foundation");
|
|
3086
3623
|
|
|
3087
3624
|
// src/components/layout/Grid/autoSpan.ts
|
|
3088
3625
|
function aspectToColumnSpan(ratio) {
|
|
@@ -3114,7 +3651,7 @@ function mediaReadyEvent(media) {
|
|
|
3114
3651
|
}
|
|
3115
3652
|
|
|
3116
3653
|
// src/components/layout/Grid/GridItem.tsx
|
|
3117
|
-
var
|
|
3654
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
3118
3655
|
var GridItemSpan = {
|
|
3119
3656
|
full: "full",
|
|
3120
3657
|
threeQuarters: "three-quarters",
|
|
@@ -3147,11 +3684,11 @@ function GridItem({
|
|
|
3147
3684
|
style,
|
|
3148
3685
|
...rest
|
|
3149
3686
|
}) {
|
|
3150
|
-
const { autoSpanMedia } = (0,
|
|
3687
|
+
const { autoSpanMedia } = (0, import_react30.useContext)(getGridContext());
|
|
3151
3688
|
const effectiveSpan = columnSpan ?? (autoSpanMedia ? "auto" : "full");
|
|
3152
|
-
const ref = (0,
|
|
3153
|
-
const [autoSpan, setAutoSpan] = (0,
|
|
3154
|
-
(
|
|
3689
|
+
const ref = (0, import_react30.useRef)(null);
|
|
3690
|
+
const [autoSpan, setAutoSpan] = (0, import_react30.useState)("one-quarter");
|
|
3691
|
+
useIsomorphicLayoutEffect(() => {
|
|
3155
3692
|
if (effectiveSpan !== "auto") return;
|
|
3156
3693
|
const el = ref.current;
|
|
3157
3694
|
if (!el) return;
|
|
@@ -3196,13 +3733,13 @@ function GridItem({
|
|
|
3196
3733
|
};
|
|
3197
3734
|
const Component = as ?? "div";
|
|
3198
3735
|
const isColumnSpanAuto = columnSpan === void 0 && !hasExplicitRange;
|
|
3199
|
-
return /* @__PURE__ */ (0,
|
|
3736
|
+
return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
3200
3737
|
Component,
|
|
3201
3738
|
{
|
|
3202
3739
|
ref,
|
|
3203
3740
|
...rest,
|
|
3204
3741
|
"data-column-span-auto": isColumnSpanAuto ? "" : void 0,
|
|
3205
|
-
className: (0,
|
|
3742
|
+
className: (0, import_design_system_foundation53.cn)(Grid_default.item, className),
|
|
3206
3743
|
style: composedStyle,
|
|
3207
3744
|
children
|
|
3208
3745
|
}
|
|
@@ -3210,11 +3747,11 @@ function GridItem({
|
|
|
3210
3747
|
}
|
|
3211
3748
|
|
|
3212
3749
|
// src/components/layout/SectionHeader/SectionHeader.module.css
|
|
3213
|
-
var SectionHeader_default = {"component":"
|
|
3750
|
+
var SectionHeader_default = {"component":"bds2110SectionHeader-component","sectionHeader":"bds2110SectionHeader-sectionHeader","title":"bds2110SectionHeader-title","subtitle":"bds2110SectionHeader-subtitle","--start":"bds2110SectionHeader---start","--center":"bds2110SectionHeader---center","--end":"bds2110SectionHeader---end","--medium":"bds2110SectionHeader---medium","--xs":"bds2110SectionHeader---xs","--small":"bds2110SectionHeader---small","--large":"bds2110SectionHeader---large"};
|
|
3214
3751
|
|
|
3215
3752
|
// src/components/layout/SectionHeader/SectionHeader.tsx
|
|
3216
|
-
var
|
|
3217
|
-
var
|
|
3753
|
+
var import_design_system_foundation54 = require("@boostdev/design-system-foundation");
|
|
3754
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
3218
3755
|
function SectionHeader({
|
|
3219
3756
|
title,
|
|
3220
3757
|
subtitle,
|
|
@@ -3225,24 +3762,24 @@ function SectionHeader({
|
|
|
3225
3762
|
...rest
|
|
3226
3763
|
}) {
|
|
3227
3764
|
const Title = titleAs;
|
|
3228
|
-
return /* @__PURE__ */ (0,
|
|
3229
|
-
/* @__PURE__ */ (0,
|
|
3230
|
-
subtitle && /* @__PURE__ */ (0,
|
|
3765
|
+
return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { ...rest, className: (0, import_design_system_foundation54.cn)(SectionHeader_default.sectionHeader, SectionHeader_default[`--${alignment}`], SectionHeader_default[`--${size}`], className), children: [
|
|
3766
|
+
/* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Title, { className: SectionHeader_default.title, children: title }),
|
|
3767
|
+
subtitle && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("p", { className: SectionHeader_default.subtitle, children: subtitle })
|
|
3231
3768
|
] });
|
|
3232
3769
|
}
|
|
3233
3770
|
|
|
3234
3771
|
// src/components/layout/IconWrapper/IconWrapper.module.css
|
|
3235
|
-
var IconWrapper_default = {"component":"
|
|
3772
|
+
var IconWrapper_default = {"component":"bds2110IconWrapper-component","wrapper":"bds2110IconWrapper-wrapper"};
|
|
3236
3773
|
|
|
3237
3774
|
// src/components/layout/IconWrapper/IconWrapper.tsx
|
|
3238
|
-
var
|
|
3239
|
-
var
|
|
3775
|
+
var import_design_system_foundation55 = require("@boostdev/design-system-foundation");
|
|
3776
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
3240
3777
|
function IconWrapper({ children, className, ...rest }) {
|
|
3241
|
-
return /* @__PURE__ */ (0,
|
|
3778
|
+
return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { ...rest, className: (0, import_design_system_foundation55.cn)(className, IconWrapper_default.wrapper), children });
|
|
3242
3779
|
}
|
|
3243
3780
|
|
|
3244
3781
|
// src/index.ts
|
|
3245
|
-
var
|
|
3782
|
+
var import_design_system_foundation56 = require("@boostdev/design-system-foundation");
|
|
3246
3783
|
// Annotate the CommonJS export names for ESM import in node:
|
|
3247
3784
|
0 && (module.exports = {
|
|
3248
3785
|
Accordion,
|
|
@@ -3254,6 +3791,7 @@ var import_design_system_foundation54 = require("@boostdev/design-system-foundat
|
|
|
3254
3791
|
ButtonContainer,
|
|
3255
3792
|
ButtonGroup,
|
|
3256
3793
|
Calendar,
|
|
3794
|
+
CalendarRange,
|
|
3257
3795
|
Card,
|
|
3258
3796
|
Carousel,
|
|
3259
3797
|
Checkbox,
|