@d4gger/design-system 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{components/controlGroup/ControlGroup.cjs → _internal/floatingLayer.cjs} +11 -26
- package/dist/_internal/floatingLayer.cjs.map +7 -0
- package/dist/_internal/floatingLayer.d.cts +28 -0
- package/dist/_internal/floatingLayer.d.cts.map +1 -0
- package/dist/_internal/floatingLayer.d.mts +28 -0
- package/dist/_internal/floatingLayer.d.mts.map +1 -0
- package/dist/_internal/floatingLayer.d.ts +28 -0
- package/dist/_internal/floatingLayer.d.ts.map +1 -0
- package/dist/_internal/floatingLayer.js +11 -0
- package/dist/_internal/floatingLayer.js.map +7 -0
- package/dist/components/banner/Banner.cjs +105 -0
- package/dist/components/banner/Banner.cjs.map +7 -0
- package/dist/components/banner/Banner.d.cts +27 -0
- package/dist/components/banner/Banner.d.cts.map +1 -0
- package/dist/components/banner/Banner.d.mts +27 -0
- package/dist/components/banner/Banner.d.mts.map +1 -0
- package/dist/components/banner/Banner.d.ts +27 -0
- package/dist/components/banner/Banner.d.ts.map +1 -0
- package/dist/components/banner/Banner.js +80 -0
- package/dist/components/banner/Banner.js.map +7 -0
- package/dist/components/{controlGroup/controlGroup.props.cjs → banner/banner.props.cjs} +23 -16
- package/dist/components/banner/banner.props.cjs.map +7 -0
- package/dist/components/banner/banner.props.d.cts +32 -0
- package/dist/components/banner/banner.props.d.cts.map +1 -0
- package/dist/components/banner/banner.props.d.mts +32 -0
- package/dist/components/banner/banner.props.d.mts.map +1 -0
- package/dist/components/banner/banner.props.d.ts +32 -0
- package/dist/components/banner/banner.props.d.ts.map +1 -0
- package/dist/components/banner/banner.props.js +27 -0
- package/dist/components/banner/banner.props.js.map +7 -0
- package/dist/components/banner.css +60 -0
- package/dist/components/button-group.css +25 -0
- package/dist/components/button.css +9 -0
- package/dist/components/card.css +3 -0
- package/dist/components/carousel/Carousel.cjs +109 -39
- package/dist/components/carousel/Carousel.cjs.map +3 -3
- package/dist/components/carousel/Carousel.d.cts.map +1 -1
- package/dist/components/carousel/Carousel.d.mts.map +1 -1
- package/dist/components/carousel/Carousel.d.ts.map +1 -1
- package/dist/components/carousel/Carousel.js +111 -41
- package/dist/components/carousel/Carousel.js.map +3 -3
- package/dist/components/carousel.css +93 -26
- package/dist/components/chart/Chart.cjs +61 -11
- package/dist/components/chart/Chart.cjs.map +2 -2
- package/dist/components/chart/Chart.d.cts.map +1 -1
- package/dist/components/chart/Chart.d.mts.map +1 -1
- package/dist/components/chart/Chart.d.ts.map +1 -1
- package/dist/components/chart/Chart.js +62 -11
- package/dist/components/chart/Chart.js.map +2 -2
- package/dist/components/chart.css +10 -1
- package/dist/components/checkbox.css +14 -0
- package/dist/components/combobox/Combobox.cjs +3 -1
- package/dist/components/combobox/Combobox.cjs.map +2 -2
- package/dist/components/combobox/Combobox.d.cts.map +1 -1
- package/dist/components/combobox/Combobox.d.mts.map +1 -1
- package/dist/components/combobox/Combobox.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.js +3 -1
- package/dist/components/combobox/Combobox.js.map +2 -2
- package/dist/components/combobox.css +5 -1
- package/dist/components/command/Command.cjs +1 -1
- package/dist/components/command/Command.cjs.map +2 -2
- package/dist/components/command/Command.js +1 -1
- package/dist/components/command/Command.js.map +2 -2
- package/dist/components/context-menu.css +1 -1
- package/dist/components/copy-field.css +18 -0
- package/dist/components/copyField/CopyField.cjs +3 -3
- package/dist/components/copyField/CopyField.cjs.map +2 -2
- package/dist/components/copyField/CopyField.d.cts.map +1 -1
- package/dist/components/copyField/CopyField.d.mts.map +1 -1
- package/dist/components/copyField/CopyField.d.ts.map +1 -1
- package/dist/components/copyField/CopyField.js +3 -3
- package/dist/components/copyField/CopyField.js.map +2 -2
- package/dist/components/data-list.css +19 -4
- package/dist/components/data-table.css +190 -0
- package/dist/components/dataTable/DataTable.cjs +193 -68
- package/dist/components/dataTable/DataTable.cjs.map +3 -3
- package/dist/components/dataTable/DataTable.d.cts +29 -1
- package/dist/components/dataTable/DataTable.d.cts.map +1 -1
- package/dist/components/dataTable/DataTable.d.mts +29 -1
- package/dist/components/dataTable/DataTable.d.mts.map +1 -1
- package/dist/components/dataTable/DataTable.d.ts +29 -1
- package/dist/components/dataTable/DataTable.d.ts.map +1 -1
- package/dist/components/dataTable/DataTable.js +193 -68
- package/dist/components/dataTable/DataTable.js.map +2 -2
- package/dist/components/dataTable/DataTableContext.cjs +41 -0
- package/dist/components/dataTable/DataTableContext.cjs.map +7 -0
- package/dist/components/dataTable/DataTableContext.d.cts +23 -0
- package/dist/components/dataTable/DataTableContext.d.cts.map +1 -0
- package/dist/components/dataTable/DataTableContext.d.mts +23 -0
- package/dist/components/dataTable/DataTableContext.d.mts.map +1 -0
- package/dist/components/dataTable/DataTableContext.d.ts +23 -0
- package/dist/components/dataTable/DataTableContext.d.ts.map +1 -0
- package/dist/components/dataTable/DataTableContext.js +11 -0
- package/dist/components/dataTable/DataTableContext.js.map +7 -0
- package/dist/components/dataTable/DataTablePagination.cjs +72 -47
- package/dist/components/dataTable/DataTablePagination.cjs.map +2 -2
- package/dist/components/dataTable/DataTablePagination.d.cts +5 -1
- package/dist/components/dataTable/DataTablePagination.d.cts.map +1 -1
- package/dist/components/dataTable/DataTablePagination.d.mts +5 -1
- package/dist/components/dataTable/DataTablePagination.d.mts.map +1 -1
- package/dist/components/dataTable/DataTablePagination.d.ts +5 -1
- package/dist/components/dataTable/DataTablePagination.d.ts.map +1 -1
- package/dist/components/dataTable/DataTablePagination.js +75 -47
- package/dist/components/dataTable/DataTablePagination.js.map +2 -2
- package/dist/components/dataTable/DataTableToolbar.cjs +122 -93
- package/dist/components/dataTable/DataTableToolbar.cjs.map +2 -2
- package/dist/components/dataTable/DataTableToolbar.d.cts +6 -5
- package/dist/components/dataTable/DataTableToolbar.d.cts.map +1 -1
- package/dist/components/dataTable/DataTableToolbar.d.mts +6 -5
- package/dist/components/dataTable/DataTableToolbar.d.mts.map +1 -1
- package/dist/components/dataTable/DataTableToolbar.d.ts +6 -5
- package/dist/components/dataTable/DataTableToolbar.d.ts.map +1 -1
- package/dist/components/dataTable/DataTableToolbar.js +123 -94
- package/dist/components/dataTable/DataTableToolbar.js.map +2 -2
- package/dist/components/dataTable/dataTable.export.cjs +83 -0
- package/dist/components/dataTable/dataTable.export.cjs.map +7 -0
- package/dist/components/dataTable/dataTable.export.d.cts +11 -0
- package/dist/components/dataTable/dataTable.export.d.cts.map +1 -0
- package/dist/components/dataTable/dataTable.export.d.mts +11 -0
- package/dist/components/dataTable/dataTable.export.d.mts.map +1 -0
- package/dist/components/dataTable/dataTable.export.d.ts +11 -0
- package/dist/components/dataTable/dataTable.export.d.ts.map +1 -0
- package/dist/components/dataTable/dataTable.export.js +63 -0
- package/dist/components/dataTable/dataTable.export.js.map +7 -0
- package/dist/components/dataTable/dataTable.props.cjs +23 -1
- package/dist/components/dataTable/dataTable.props.cjs.map +2 -2
- package/dist/components/dataTable/dataTable.props.d.cts +21 -1
- package/dist/components/dataTable/dataTable.props.d.cts.map +1 -1
- package/dist/components/dataTable/dataTable.props.d.mts +21 -1
- package/dist/components/dataTable/dataTable.props.d.mts.map +1 -1
- package/dist/components/dataTable/dataTable.props.d.ts +21 -1
- package/dist/components/dataTable/dataTable.props.d.ts.map +1 -1
- package/dist/components/dataTable/dataTable.props.js +23 -1
- package/dist/components/dataTable/dataTable.props.js.map +2 -2
- package/dist/components/dialog/Dialog.cjs +2 -1
- package/dist/components/dialog/Dialog.cjs.map +2 -2
- package/dist/components/dialog/Dialog.d.cts.map +1 -1
- package/dist/components/dialog/Dialog.d.mts.map +1 -1
- package/dist/components/dialog/Dialog.d.ts.map +1 -1
- package/dist/components/dialog/Dialog.js +2 -1
- package/dist/components/dialog/Dialog.js.map +2 -2
- package/dist/components/dropdown-menu.css +1 -1
- package/dist/components/empty-state.css +5 -0
- package/dist/components/fileUpload/FileUpload.cjs +10 -1
- package/dist/components/fileUpload/FileUpload.cjs.map +2 -2
- package/dist/components/fileUpload/FileUpload.d.cts +1 -0
- package/dist/components/fileUpload/FileUpload.d.cts.map +1 -1
- package/dist/components/fileUpload/FileUpload.d.mts +1 -0
- package/dist/components/fileUpload/FileUpload.d.mts.map +1 -1
- package/dist/components/fileUpload/FileUpload.d.ts +1 -0
- package/dist/components/fileUpload/FileUpload.d.ts.map +1 -1
- package/dist/components/fileUpload/FileUpload.js +10 -1
- package/dist/components/fileUpload/FileUpload.js.map +2 -2
- package/dist/components/filter-bar.css +380 -8
- package/dist/components/filterBar/FilterBar.cjs +630 -1
- package/dist/components/filterBar/FilterBar.cjs.map +2 -2
- package/dist/components/filterBar/FilterBar.d.cts +132 -2
- package/dist/components/filterBar/FilterBar.d.cts.map +1 -1
- package/dist/components/filterBar/FilterBar.d.mts +132 -2
- package/dist/components/filterBar/FilterBar.d.mts.map +1 -1
- package/dist/components/filterBar/FilterBar.d.ts +132 -2
- package/dist/components/filterBar/FilterBar.d.ts.map +1 -1
- package/dist/components/filterBar/FilterBar.js +631 -2
- package/dist/components/filterBar/FilterBar.js.map +2 -2
- package/dist/components/floating-panel.css +1 -1
- package/dist/components/fontProvider/FontProvider.cjs +1 -1
- package/dist/components/fontProvider/FontProvider.cjs.map +1 -1
- package/dist/components/fontProvider/FontProvider.js +1 -1
- package/dist/components/fontProvider/FontProvider.js.map +1 -1
- package/dist/components/icon/Icon.cjs +25 -2
- package/dist/components/icon/Icon.cjs.map +2 -2
- package/dist/components/icon/Icon.d.cts +29 -1
- package/dist/components/icon/Icon.d.cts.map +1 -1
- package/dist/components/icon/Icon.d.mts +29 -1
- package/dist/components/icon/Icon.d.mts.map +1 -1
- package/dist/components/icon/Icon.d.ts +29 -1
- package/dist/components/icon/Icon.d.ts.map +1 -1
- package/dist/components/icon/Icon.js +33 -2
- package/dist/components/icon/Icon.js.map +2 -2
- package/dist/components/icon/icons.cjs +16 -0
- package/dist/components/icon/icons.cjs.map +2 -2
- package/dist/components/icon/icons.d.cts +40 -0
- package/dist/components/icon/icons.d.cts.map +1 -1
- package/dist/components/icon/icons.d.mts +40 -0
- package/dist/components/icon/icons.d.mts.map +1 -1
- package/dist/components/icon/icons.d.ts +40 -0
- package/dist/components/icon/icons.d.ts.map +1 -1
- package/dist/components/icon/icons.js +16 -0
- package/dist/components/icon/icons.js.map +2 -2
- package/dist/components/icon-button.css +29 -0
- package/dist/components/index.cjs +1 -1
- package/dist/components/index.cjs.map +2 -2
- package/dist/components/index.d.cts +1 -1
- package/dist/components/index.d.cts.map +1 -1
- package/dist/components/index.d.mts +1 -1
- package/dist/components/index.d.mts.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/item/Item.cjs +1 -1
- package/dist/components/item/Item.cjs.map +2 -2
- package/dist/components/item/Item.js +1 -1
- package/dist/components/item/Item.js.map +2 -2
- package/dist/components/item.css +12 -1
- package/dist/components/marquee/Marquee.cjs +1 -1
- package/dist/components/marquee/Marquee.cjs.map +2 -2
- package/dist/components/marquee/Marquee.js +1 -1
- package/dist/components/marquee/Marquee.js.map +2 -2
- package/dist/components/marquee.css +6 -0
- package/dist/components/menu/Menu.cjs +3 -1
- package/dist/components/menu/Menu.cjs.map +2 -2
- package/dist/components/menu/Menu.d.cts.map +1 -1
- package/dist/components/menu/Menu.d.mts.map +1 -1
- package/dist/components/menu/Menu.d.ts.map +1 -1
- package/dist/components/menu/Menu.js +3 -1
- package/dist/components/menu/Menu.js.map +2 -2
- package/dist/components/menubar.css +1 -1
- package/dist/components/metric.css +5 -0
- package/dist/components/pagination/Pagination.cjs +143 -17
- package/dist/components/pagination/Pagination.cjs.map +2 -2
- package/dist/components/pagination/Pagination.d.cts +64 -4
- package/dist/components/pagination/Pagination.d.cts.map +1 -1
- package/dist/components/pagination/Pagination.d.mts +64 -4
- package/dist/components/pagination/Pagination.d.mts.map +1 -1
- package/dist/components/pagination/Pagination.d.ts +64 -4
- package/dist/components/pagination/Pagination.d.ts.map +1 -1
- package/dist/components/pagination/Pagination.js +143 -17
- package/dist/components/pagination/Pagination.js.map +2 -2
- package/dist/components/pagination.css +50 -8
- package/dist/components/phoneInput/PhoneInput.cjs +18 -13
- package/dist/components/phoneInput/PhoneInput.cjs.map +2 -2
- package/dist/components/phoneInput/PhoneInput.d.cts.map +1 -1
- package/dist/components/phoneInput/PhoneInput.d.mts.map +1 -1
- package/dist/components/phoneInput/PhoneInput.d.ts.map +1 -1
- package/dist/components/phoneInput/PhoneInput.js +19 -14
- package/dist/components/phoneInput/PhoneInput.js.map +2 -2
- package/dist/components/popover/Popover.cjs +2 -1
- package/dist/components/popover/Popover.cjs.map +2 -2
- package/dist/components/popover/Popover.d.cts.map +1 -1
- package/dist/components/popover/Popover.d.mts.map +1 -1
- package/dist/components/popover/Popover.d.ts.map +1 -1
- package/dist/components/popover/Popover.js +2 -1
- package/dist/components/popover/Popover.js.map +2 -2
- package/dist/components/prose.css +1 -1
- package/dist/components/qr-code.css +5 -15
- package/dist/components/radio-group.css +19 -0
- package/dist/components/radioGroup/RadioGroup.cjs +3 -2
- package/dist/components/radioGroup/RadioGroup.cjs.map +2 -2
- package/dist/components/radioGroup/RadioGroup.d.cts.map +1 -1
- package/dist/components/radioGroup/RadioGroup.d.mts.map +1 -1
- package/dist/components/radioGroup/RadioGroup.d.ts.map +1 -1
- package/dist/components/radioGroup/RadioGroup.js +3 -2
- package/dist/components/radioGroup/RadioGroup.js.map +2 -2
- package/dist/components/radioGroup/radioGroup.props.cjs +1 -1
- package/dist/components/radioGroup/radioGroup.props.cjs.map +2 -2
- package/dist/components/radioGroup/radioGroup.props.d.cts +1 -1
- package/dist/components/radioGroup/radioGroup.props.d.mts +1 -1
- package/dist/components/radioGroup/radioGroup.props.d.ts +1 -1
- package/dist/components/radioGroup/radioGroup.props.js +1 -1
- package/dist/components/radioGroup/radioGroup.props.js.map +2 -2
- package/dist/components/rating.css +12 -0
- package/dist/components/result.css +2 -1
- package/dist/components/richTextEditor/RichTextEditor.cjs +11 -3
- package/dist/components/richTextEditor/RichTextEditor.cjs.map +2 -2
- package/dist/components/richTextEditor/RichTextEditor.d.cts.map +1 -1
- package/dist/components/richTextEditor/RichTextEditor.d.mts.map +1 -1
- package/dist/components/richTextEditor/RichTextEditor.d.ts.map +1 -1
- package/dist/components/richTextEditor/RichTextEditor.js +11 -3
- package/dist/components/richTextEditor/RichTextEditor.js.map +2 -2
- package/dist/components/segmented-control.css +80 -4
- package/dist/components/segmentedControl/SegmentedControl.cjs +18 -5
- package/dist/components/segmentedControl/SegmentedControl.cjs.map +2 -2
- package/dist/components/segmentedControl/SegmentedControl.d.cts.map +1 -1
- package/dist/components/segmentedControl/SegmentedControl.d.mts.map +1 -1
- package/dist/components/segmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/components/segmentedControl/SegmentedControl.js +18 -5
- package/dist/components/segmentedControl/SegmentedControl.js.map +2 -2
- package/dist/components/segmentedControl/segmentedControl.props.cjs +10 -0
- package/dist/components/segmentedControl/segmentedControl.props.cjs.map +2 -2
- package/dist/components/segmentedControl/segmentedControl.props.d.cts +9 -0
- package/dist/components/segmentedControl/segmentedControl.props.d.cts.map +1 -1
- package/dist/components/segmentedControl/segmentedControl.props.d.mts +9 -0
- package/dist/components/segmentedControl/segmentedControl.props.d.mts.map +1 -1
- package/dist/components/segmentedControl/segmentedControl.props.d.ts +9 -0
- package/dist/components/segmentedControl/segmentedControl.props.d.ts.map +1 -1
- package/dist/components/segmentedControl/segmentedControl.props.js +10 -0
- package/dist/components/segmentedControl/segmentedControl.props.js.map +2 -2
- package/dist/components/select/Select.cjs +3 -1
- package/dist/components/select/Select.cjs.map +2 -2
- package/dist/components/select/Select.d.cts.map +1 -1
- package/dist/components/select/Select.d.mts.map +1 -1
- package/dist/components/select/Select.d.ts.map +1 -1
- package/dist/components/select/Select.js +3 -1
- package/dist/components/select/Select.js.map +2 -2
- package/dist/components/select.css +1 -1
- package/dist/components/sonner.css +1 -1
- package/dist/components/sortableList/SortableList.cjs +8 -2
- package/dist/components/sortableList/SortableList.cjs.map +2 -2
- package/dist/components/sortableList/SortableList.d.cts.map +1 -1
- package/dist/components/sortableList/SortableList.d.mts.map +1 -1
- package/dist/components/sortableList/SortableList.d.ts.map +1 -1
- package/dist/components/sortableList/SortableList.js +8 -2
- package/dist/components/sortableList/SortableList.js.map +2 -2
- package/dist/components/stat-card.css +2 -0
- package/dist/components/table/Table.cjs +3 -2
- package/dist/components/table/Table.cjs.map +2 -2
- package/dist/components/table/Table.d.cts.map +1 -1
- package/dist/components/table/Table.d.mts.map +1 -1
- package/dist/components/table/Table.d.ts.map +1 -1
- package/dist/components/table/Table.js +3 -2
- package/dist/components/table/Table.js.map +2 -2
- package/dist/components/table/table.props.cjs +6 -0
- package/dist/components/table/table.props.cjs.map +2 -2
- package/dist/components/table/table.props.d.cts +5 -0
- package/dist/components/table/table.props.d.cts.map +1 -1
- package/dist/components/table/table.props.d.mts +5 -0
- package/dist/components/table/table.props.d.mts.map +1 -1
- package/dist/components/table/table.props.d.ts +5 -0
- package/dist/components/table/table.props.d.ts.map +1 -1
- package/dist/components/table/table.props.js +6 -0
- package/dist/components/table/table.props.js.map +2 -2
- package/dist/components/table.css +20 -13
- package/dist/components/tabs.css +10 -0
- package/dist/components/timeline.css +54 -18
- package/dist/components/toast.css +33 -1
- package/dist/components/toggle-group.css +5 -0
- package/dist/components.css +1 -2
- package/dist/docs/README.md +1 -1
- package/dist/docs/component-contract.md +4 -4
- package/dist/docs/component-index.json +9 -9
- package/dist/docs/components/banner.md +152 -0
- package/dist/docs/components/button-group.md +4 -3
- package/dist/docs/components/button.md +2 -2
- package/dist/docs/components/card.md +1 -0
- package/dist/docs/components/carousel.md +55 -32
- package/dist/docs/components/chart.md +25 -7
- package/dist/docs/components/checkbox.md +4 -0
- package/dist/docs/components/combobox.md +3 -1
- package/dist/docs/components/command.md +2 -2
- package/dist/docs/components/copy-field.md +2 -2
- package/dist/docs/components/data-list.md +15 -3
- package/dist/docs/components/data-table.md +98 -17
- package/dist/docs/components/dialog.md +4 -0
- package/dist/docs/components/dropdown-menu.md +2 -1
- package/dist/docs/components/empty-state.md +3 -1
- package/dist/docs/components/file-upload.md +1 -0
- package/dist/docs/components/filter-bar.md +193 -8
- package/dist/docs/components/floating-panel.md +8 -8
- package/dist/docs/components/icon-button.md +4 -1
- package/dist/docs/components/item.md +18 -13
- package/dist/docs/components/marquee.md +2 -2
- package/dist/docs/components/menu.md +4 -1
- package/dist/docs/components/metric.md +4 -1
- package/dist/docs/components/pagination.md +88 -17
- package/dist/docs/components/pills.md +1 -1
- package/dist/docs/components/popover.md +2 -0
- package/dist/docs/components/prose.md +5 -1
- package/dist/docs/components/qr-code.md +14 -13
- package/dist/docs/components/radio-group.md +5 -2
- package/dist/docs/components/rating.md +2 -0
- package/dist/docs/components/result.md +6 -0
- package/dist/docs/components/segmented-control.md +7 -2
- package/dist/docs/components/select.md +3 -2
- package/dist/docs/components/sidebar.md +3 -1
- package/dist/docs/components/sonner.md +1 -1
- package/dist/docs/components/sortable-list.md +2 -0
- package/dist/docs/components/stat-card.md +5 -4
- package/dist/docs/components/stepper.md +1 -0
- package/dist/docs/components/table.md +14 -5
- package/dist/docs/components/tag.md +4 -2
- package/dist/docs/components/timeline.md +9 -5
- package/dist/docs/components/toast.md +1 -1
- package/dist/docs/components/toggle-group.md +2 -1
- package/dist/fonts.css +1 -1
- package/dist/generated/tokens.cjs +1 -1
- package/dist/generated/tokens.cjs.map +1 -1
- package/dist/generated/tokens.js +1 -1
- package/dist/generated/tokens.js.map +1 -1
- package/dist/motion.css +18 -3
- package/dist/styles.css +1249 -292
- package/dist/tokens.css +21 -15
- package/package.json +1 -1
- package/dist/components/control-group.css +0 -142
- package/dist/components/controlGroup/ControlGroup.cjs.map +0 -7
- package/dist/components/controlGroup/ControlGroup.d.cts +0 -16
- package/dist/components/controlGroup/ControlGroup.d.cts.map +0 -1
- package/dist/components/controlGroup/ControlGroup.d.mts +0 -16
- package/dist/components/controlGroup/ControlGroup.d.mts.map +0 -1
- package/dist/components/controlGroup/ControlGroup.d.ts +0 -16
- package/dist/components/controlGroup/ControlGroup.d.ts.map +0 -1
- package/dist/components/controlGroup/ControlGroup.js +0 -26
- package/dist/components/controlGroup/ControlGroup.js.map +0 -7
- package/dist/components/controlGroup/controlGroup.props.cjs.map +0 -7
- package/dist/components/controlGroup/controlGroup.props.d.cts +0 -18
- package/dist/components/controlGroup/controlGroup.props.d.cts.map +0 -1
- package/dist/components/controlGroup/controlGroup.props.d.mts +0 -18
- package/dist/components/controlGroup/controlGroup.props.d.mts.map +0 -1
- package/dist/components/controlGroup/controlGroup.props.d.ts +0 -18
- package/dist/components/controlGroup/controlGroup.props.d.ts.map +0 -1
- package/dist/components/controlGroup/controlGroup.props.js +0 -20
- package/dist/components/controlGroup/controlGroup.props.js.map +0 -7
- package/dist/docs/components/control-group.md +0 -261
|
@@ -25,6 +25,10 @@
|
|
|
25
25
|
border-bottom: 0;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
.dsx-table__body tr {
|
|
29
|
+
transition: background-color var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard);
|
|
30
|
+
}
|
|
31
|
+
|
|
28
32
|
.dsx-table__body tr:hover {
|
|
29
33
|
background: var(--dsx-effect-hover-ghost);
|
|
30
34
|
}
|
|
@@ -52,10 +56,6 @@
|
|
|
52
56
|
font-weight: var(--dsx-typography-label-large-font-weight);
|
|
53
57
|
}
|
|
54
58
|
|
|
55
|
-
.dsx-table__row:hover {
|
|
56
|
-
background: var(--dsx-color-high-contrast-container);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
59
|
.dsx-table__row:last-child .dsx-table__cell {
|
|
60
60
|
border-bottom: 0;
|
|
61
61
|
}
|
|
@@ -84,7 +84,14 @@
|
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
.dsx-table[data-variant='ghost'] .dsx-table__row:hover {
|
|
87
|
-
background: var(--dsx-
|
|
87
|
+
background: var(--dsx-effect-hover-ghost);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* ---- separator ---- */
|
|
91
|
+
|
|
92
|
+
.dsx-table[data-separator='grid'] .dsx-table__head:not(:last-child),
|
|
93
|
+
.dsx-table[data-separator='grid'] .dsx-table__cell:not(:last-child) {
|
|
94
|
+
border-right: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
|
|
88
95
|
}
|
|
89
96
|
|
|
90
97
|
/* ---- layout ---- */
|
|
@@ -112,16 +119,16 @@
|
|
|
112
119
|
|
|
113
120
|
/* ---- cell justify ---- */
|
|
114
121
|
|
|
115
|
-
.dsx-table__cell[data-justify='start'] {
|
|
116
|
-
|
|
122
|
+
.dsx-table .dsx-table__cell[data-justify='start'] {
|
|
123
|
+
text-align: start;
|
|
117
124
|
}
|
|
118
125
|
|
|
119
|
-
.dsx-table__cell[data-justify='center'] {
|
|
120
|
-
|
|
126
|
+
.dsx-table .dsx-table__cell[data-justify='center'] {
|
|
127
|
+
text-align: center;
|
|
121
128
|
}
|
|
122
129
|
|
|
123
|
-
.dsx-table__cell[data-justify='end'] {
|
|
124
|
-
|
|
130
|
+
.dsx-table .dsx-table__cell[data-justify='end'] {
|
|
131
|
+
text-align: end;
|
|
125
132
|
}
|
|
126
133
|
|
|
127
134
|
/* ---- cell width ---- */
|
|
@@ -158,12 +165,12 @@
|
|
|
158
165
|
/* ---- column header cell ---- */
|
|
159
166
|
|
|
160
167
|
.dsx-table__column-header-cell {
|
|
161
|
-
cursor:
|
|
162
|
-
user-select: none;
|
|
168
|
+
cursor: default;
|
|
163
169
|
}
|
|
164
170
|
|
|
165
171
|
.dsx-table__column-header-cell[data-sortable='true'] {
|
|
166
172
|
cursor: pointer;
|
|
173
|
+
user-select: none;
|
|
167
174
|
}
|
|
168
175
|
|
|
169
176
|
.dsx-table__column-header-cell[data-sorted='asc']::after,
|
package/dist/components/tabs.css
CHANGED
|
@@ -5,6 +5,13 @@
|
|
|
5
5
|
display: inline-flex;
|
|
6
6
|
align-items: center;
|
|
7
7
|
width: fit-content;
|
|
8
|
+
/* Narrow-container rule: cap at the container and scroll internally —
|
|
9
|
+
same containment as the segmented-control/button/toggle-group family.
|
|
10
|
+
A 5-tab strip wider than a 320px viewport scrolls instead of bleeding
|
|
11
|
+
with unreachable tabs. No visual change at widths that fit. */
|
|
12
|
+
min-width: 0;
|
|
13
|
+
max-width: 100%;
|
|
14
|
+
overflow-x: auto;
|
|
8
15
|
border-bottom: var(--dsx-border-width-md, var(--dsx-border-width-sm)) solid var(--dsx-control-separator-color);
|
|
9
16
|
gap: var(--dsx-space-xs);
|
|
10
17
|
}
|
|
@@ -22,6 +29,9 @@
|
|
|
22
29
|
display: inline-flex;
|
|
23
30
|
align-items: center;
|
|
24
31
|
justify-content: center;
|
|
32
|
+
/* Never compress inside the scrolled list — labels would truncate
|
|
33
|
+
otherwise. No effect in roomy containers. */
|
|
34
|
+
flex-shrink: 0;
|
|
25
35
|
padding: var(--dsx-space-sm) var(--dsx-space-md);
|
|
26
36
|
border: 0;
|
|
27
37
|
border-radius: var(--dsx-rounded-md);
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
display: flex;
|
|
5
5
|
flex-direction: column;
|
|
6
6
|
box-sizing: border-box;
|
|
7
|
+
min-width: 0;
|
|
8
|
+
max-width: 100%;
|
|
7
9
|
}
|
|
8
10
|
|
|
9
11
|
.dsx-timeline--left {
|
|
@@ -17,6 +19,8 @@
|
|
|
17
19
|
.dsx-timeline__item {
|
|
18
20
|
display: flex;
|
|
19
21
|
position: relative;
|
|
22
|
+
min-width: 0;
|
|
23
|
+
max-width: 100%;
|
|
20
24
|
}
|
|
21
25
|
|
|
22
26
|
.dsx-timeline--left .dsx-timeline__item {
|
|
@@ -24,36 +28,49 @@
|
|
|
24
28
|
gap: var(--dsx-space-lg);
|
|
25
29
|
}
|
|
26
30
|
|
|
31
|
+
/* Alternate variant: centered dot-column spine with parity-split content.
|
|
32
|
+
Shares Stepper's vertical rail engine (see stepper.css
|
|
33
|
+
`.dsx-stepper--vertical .dsx-stepper__item:not(:last-child)::after`): the
|
|
34
|
+
connector is item-local, anchored at the marker bottom (`top` = marker
|
|
35
|
+
size) and stretched to the item bottom (`bottom: 0`), centered on the dot
|
|
36
|
+
column via `calc(marker-size / 2 - rail-width / 2)`. Timeline keeps its own
|
|
37
|
+
Connector DOM node (Stepper draws via ::after and hides its Separator) and
|
|
38
|
+
its own rail width (`--dsx-border-width-sm`); the geometry recipe is shared,
|
|
39
|
+
the slot API and ARIA roles stay distinct. Keep in sync with stepper.css. */
|
|
27
40
|
.dsx-timeline--alternate .dsx-timeline__item {
|
|
28
|
-
|
|
41
|
+
display: grid;
|
|
42
|
+
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
|
|
43
|
+
column-gap: var(--dsx-space-lg);
|
|
29
44
|
width: 100%;
|
|
30
45
|
}
|
|
31
46
|
|
|
32
|
-
/*
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
flex-direction: row-reverse;
|
|
47
|
+
/* Parity split: the 1fr tracks exist without any spacer element, so equal
|
|
48
|
+
fr shares keep the marker exactly on the centerline in both parities.
|
|
49
|
+
Odd items read content-left, even items read content-right. */
|
|
50
|
+
.dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(odd)) .dsx-timeline__content {
|
|
51
|
+
grid-column: 1;
|
|
52
|
+
grid-row: 1;
|
|
53
|
+
text-align: right;
|
|
40
54
|
}
|
|
41
55
|
|
|
42
|
-
.dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(
|
|
43
|
-
|
|
56
|
+
.dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(odd)) .dsx-timeline__marker {
|
|
57
|
+
grid-column: 2;
|
|
58
|
+
grid-row: 1;
|
|
44
59
|
}
|
|
45
60
|
|
|
46
|
-
.dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(even)) .dsx-
|
|
47
|
-
|
|
48
|
-
|
|
61
|
+
.dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(even)) .dsx-timeline__marker {
|
|
62
|
+
grid-column: 2;
|
|
63
|
+
grid-row: 1;
|
|
49
64
|
}
|
|
50
65
|
|
|
51
|
-
.dsx-timeline--alternate
|
|
52
|
-
|
|
66
|
+
.dsx-timeline--alternate .dsx-timeline__item:where(:nth-child(even)) .dsx-timeline__content {
|
|
67
|
+
grid-column: 3;
|
|
68
|
+
grid-row: 1;
|
|
69
|
+
text-align: left;
|
|
53
70
|
}
|
|
54
71
|
|
|
55
|
-
.dsx-timeline--alternate
|
|
56
|
-
|
|
72
|
+
.dsx-timeline--alternate .dsx-timeline__content {
|
|
73
|
+
min-width: 0;
|
|
57
74
|
}
|
|
58
75
|
|
|
59
76
|
.dsx-timeline__marker {
|
|
@@ -94,6 +111,19 @@
|
|
|
94
111
|
top: var(--dsx-size-lg);
|
|
95
112
|
}
|
|
96
113
|
|
|
114
|
+
/* Centered spine: the connector runs down the item's vertical centerline,
|
|
115
|
+
which is the marker center because both halves are equal flex: 1. `top`
|
|
116
|
+
still follows the marker size via the base size rules above — only the
|
|
117
|
+
horizontal anchor is overridden here. Specificity (0,3,0) ties the base
|
|
118
|
+
size rules, so this block must stay after them in source order. */
|
|
119
|
+
.dsx-timeline--alternate[data-size='sm'] .dsx-timeline__connector,
|
|
120
|
+
.dsx-timeline--alternate[data-size='md'] .dsx-timeline__connector,
|
|
121
|
+
.dsx-timeline--alternate:not([data-size]) .dsx-timeline__connector,
|
|
122
|
+
.dsx-timeline--alternate[data-size='lg'] .dsx-timeline__connector {
|
|
123
|
+
left: calc(50% - var(--dsx-border-width-sm) / 2);
|
|
124
|
+
right: auto;
|
|
125
|
+
}
|
|
126
|
+
|
|
97
127
|
.dsx-timeline__item--active .dsx-timeline__marker {
|
|
98
128
|
border-color: var(--dsx-color-primary);
|
|
99
129
|
background: var(--dsx-color-primary);
|
|
@@ -123,11 +153,17 @@
|
|
|
123
153
|
background: var(--dsx-color-primary);
|
|
124
154
|
}
|
|
125
155
|
|
|
156
|
+
.dsx-timeline__item--error .dsx-timeline__connector {
|
|
157
|
+
background: var(--dsx-color-error);
|
|
158
|
+
}
|
|
159
|
+
|
|
126
160
|
.dsx-timeline__content {
|
|
127
161
|
display: flex;
|
|
128
162
|
flex-direction: column;
|
|
129
163
|
gap: var(--dsx-space-2xs);
|
|
130
164
|
flex: 1;
|
|
165
|
+
min-width: 0;
|
|
166
|
+
overflow-wrap: anywhere;
|
|
131
167
|
padding-bottom: var(--dsx-space-lg);
|
|
132
168
|
}
|
|
133
169
|
|
|
@@ -32,7 +32,39 @@
|
|
|
32
32
|
background-color: var(--dsx-color-surface);
|
|
33
33
|
border-radius: var(--dsx-rounded-md);
|
|
34
34
|
border: var(--dsx-border-width-sm) solid var(--dsx-color-outline);
|
|
35
|
-
box-shadow: var(--dsx-shadow-elevation-
|
|
35
|
+
box-shadow: var(--dsx-shadow-elevation-5); /* Spotlight (B4 Q3): below dialogs, above all menus */
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Predetermined slot placement for action-bearing toasts: without it all
|
|
39
|
+
four slots land as flex siblings in one row, so title + description sit
|
|
40
|
+
side by side and squeeze the action (destructive story). Text stacks in
|
|
41
|
+
column one, action pins center-right, close top-right — no consumer
|
|
42
|
+
wrapper needed. Action-less toasts keep the flex row above untouched. */
|
|
43
|
+
.dsx-toast:has(.dsx-toast__action) {
|
|
44
|
+
display: grid;
|
|
45
|
+
grid-template-columns: minmax(0, 1fr) auto auto;
|
|
46
|
+
grid-template-areas:
|
|
47
|
+
"title action close"
|
|
48
|
+
"description action close";
|
|
49
|
+
align-items: center;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.dsx-toast:has(.dsx-toast__action) .dsx-toast__title {
|
|
53
|
+
grid-area: title;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.dsx-toast:has(.dsx-toast__action) .dsx-toast__description {
|
|
57
|
+
grid-area: description;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.dsx-toast:has(.dsx-toast__action) .dsx-toast__action {
|
|
61
|
+
grid-area: action;
|
|
62
|
+
align-self: center;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.dsx-toast:has(.dsx-toast__action) .dsx-toast__close {
|
|
66
|
+
grid-area: close;
|
|
67
|
+
align-self: start;
|
|
36
68
|
}
|
|
37
69
|
|
|
38
70
|
.dsx-toast[data-variant='success'] {
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
align-items: stretch;
|
|
7
7
|
gap: 0;
|
|
8
8
|
isolation: isolate;
|
|
9
|
+
/* Narrow-container rule (TMA re-audit 2026-09-23): the fused frame cannot
|
|
10
|
+
wrap, so cap at the container and scroll instead of hard-clipping the
|
|
11
|
+
last item on 320px screens. */
|
|
12
|
+
max-width: 100%;
|
|
13
|
+
overflow-x: auto;
|
|
9
14
|
}
|
|
10
15
|
|
|
11
16
|
.dsx-toggle-group__item {
|
package/dist/components.css
CHANGED
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
@import 'components/aspect-ratio.css';
|
|
9
9
|
@import 'components/avatar.css';
|
|
10
10
|
@import 'components/badge.css';
|
|
11
|
+
@import 'components/banner.css';
|
|
11
12
|
@import 'components/button.css';
|
|
12
13
|
@import 'components/card.css';
|
|
13
14
|
@import 'components/carousel.css';
|
|
14
15
|
@import 'components/checkbox.css';
|
|
15
16
|
@import 'components/checkbox-cards.css';
|
|
16
17
|
@import 'components/checkbox-group.css';
|
|
17
|
-
@import 'components/control-group.css';
|
|
18
18
|
@import 'components/context-menu.css';
|
|
19
19
|
@import 'components/color-picker.css';
|
|
20
20
|
@import 'components/color-swatch.css';
|
|
@@ -158,7 +158,6 @@
|
|
|
158
158
|
.dsx-date-picker__trigger,
|
|
159
159
|
.dsx-theme,
|
|
160
160
|
.dsx-input-group,
|
|
161
|
-
.dsx-control-group,
|
|
162
161
|
.dsx-item,
|
|
163
162
|
.dsx-kbd,
|
|
164
163
|
.dsx-calendar,
|
package/dist/docs/README.md
CHANGED
|
@@ -70,6 +70,7 @@ They describe public intent and contracts; TypeScript declarations remain the ex
|
|
|
70
70
|
- [Alert](./components/alert.md)
|
|
71
71
|
- [AlertDialog](./components/alert-dialog.md)
|
|
72
72
|
- [ArticleNodes](./components/article-nodes.md)
|
|
73
|
+
- [Banner](./components/banner.md)
|
|
73
74
|
- [Breadcrumb](./components/breadcrumb.md)
|
|
74
75
|
- [ButtonGroup](./components/button-group.md)
|
|
75
76
|
- [Calendar](./components/calendar.md)
|
|
@@ -86,7 +87,6 @@ They describe public intent and contracts; TypeScript declarations remain the ex
|
|
|
86
87
|
- [Command](./components/command.md)
|
|
87
88
|
- [CommentThread](./components/comment-thread.md)
|
|
88
89
|
- [ContextMenu](./components/context-menu.md)
|
|
89
|
-
- [ControlGroup](./components/control-group.md)
|
|
90
90
|
- [CopyField](./components/copy-field.md)
|
|
91
91
|
- [DataList](./components/data-list.md)
|
|
92
92
|
- [DataTable](./components/data-table.md)
|
|
@@ -47,6 +47,7 @@ from the closest RT category (see legend).
|
|
|
47
47
|
| AspectRatio | RT AspectRatio | — | — | — | — | — | Layout utility |
|
|
48
48
|
| Avatar | RT Avatar | ✓ | ✓ | ✓ | ✓ | ✓ | Full set |
|
|
49
49
|
| Badge | RT Badge | ✓ | ✓ | ✓ | ✓ | ✓ | Full set |
|
|
50
|
+
| Banner | Custom → none | ✓ | — | — | — | — | Hero mass; wash/fill variant |
|
|
50
51
|
| Blockquote | RT Blockquote | — | — | — | — | — | Typographic; no styling props in RT |
|
|
51
52
|
| Box | RT Box (layout) | — | — | — | — | — | Layout; no styling attrs |
|
|
52
53
|
| Breadcrumb | Custom → none | — | ✓ | — | — | — | Size only; no RT counterpart |
|
|
@@ -71,7 +72,6 @@ from the closest RT category (see legend).
|
|
|
71
72
|
| ConfigDrawer | Custom → none | — | — | — | — | — | Configuration UI; no data-* styling |
|
|
72
73
|
| Container | RT Container | — | ✓ | — | — | — | Layout; size only in RT |
|
|
73
74
|
| ContextMenu | Primitive → Dialog | — | ✓ | — | — | — | Content size by Dialog analogy |
|
|
74
|
-
| ControlGroup | Custom → InputGroup/ButtonGroup | — | ✓ | — | ✓ | — | Wraps unlike controls (Select, ToggleGroup, Button); size + radius only, no variant/accent/high-contrast of its own |
|
|
75
75
|
| CopyButton | Custom → Button | ✓ | ✓ | ✓ | ✓ | ✓ | Button clone; full contract |
|
|
76
76
|
| CopyField | Custom → TextField | — | ✓ | — | — | — | Read-only field composition; size only on the root |
|
|
77
77
|
| DataList | RT DataList | ✓ | ✓ | — | — | — | RT DataList: variant+size, no C/R/H |
|
|
@@ -86,7 +86,7 @@ from the closest RT category (see legend).
|
|
|
86
86
|
| EmptyState | Custom → none | ✓ | ✓ | — | — | — | Size + variant (`default`/`unavailable`) |
|
|
87
87
|
| Field | Custom → none | — | ✓ | — | — | — | Form field wrapper; size only |
|
|
88
88
|
| FileUpload | Custom → TextField | — | ✓ | — | — | — | Input-like; size only |
|
|
89
|
-
| FilterBar | Custom → none | — | ✓ | — | — | — | Toolbar composition; size only on the root |
|
|
89
|
+
| FilterBar | Custom → none | — | ✓ | — | — | — | Toolbar composition; size only on the root (Rules/Rule/Builder/Search write no V/C/R/H attrs) |
|
|
90
90
|
| Flex | RT Flex (layout) | — | — | — | — | — | Layout; no styling attrs |
|
|
91
91
|
| FloatingPanel | Custom → Card | — | ✓ | — | — | — | Panel; size only |
|
|
92
92
|
| FontProvider | Utility → none | — | — | — | — | — | No styling |
|
|
@@ -189,9 +189,9 @@ from the closest RT category (see legend).
|
|
|
189
189
|
| V+S | Card, DataList, NativeSelect, SegmentedControl, Select, StatCard, Table, TabNav, Tabs, Toast | 10 |
|
|
190
190
|
| S+C+H | Heading, Link, Text | 3 |
|
|
191
191
|
| S+C | SegmentedMeter, Separator, Status | 3 |
|
|
192
|
-
| S+R |
|
|
192
|
+
| S+R | InputOtp, ScrollArea | 2 |
|
|
193
193
|
| S only | AlertDialog, Breadcrumb, ButtonGroup, Calendar (see above), Carousel, CodeInput,<br>ColorPicker, ColorSwatch, Command, Container, ContextMenu, CopyField, DataTable,<br>DatePicker, Dialog, Drawer, DropdownMenu, EmptyState, Field, FileUpload, FilterBar,<br>FloatingPanel, HoverCard, Icon, InputGroup, Kbd, Label, Menu, Menubar, Metric,<br>NavigationMenu, Pagination, Popover, QrCode, Section, Sheet, Spinner, Stepper,<br>Timeline, TimePicker, ToggleTip, Toolbar, TreeView | 43 |
|
|
194
|
-
| None | AccessibleIcon, Accordion, ArticleNodes, AspectRatio, Blockquote, Box, Chart,<br>Collapsible, CommentThread, ConfigDrawer, DirectionProvider, Em, Flex, FontProvider,<br>Form, Grid, Inset, Item, Marquee, NotificationCenter, PageContent, PageHeader, Prose, Quote,<br>Resizable, Result, RichTextEditor, Sidebar, Skeleton, Slot, Sonner, SortableList, Stack, Strong,<br>TableOfContents, Theme, ThemePanel, ThemeProvider, Tooltip, VisuallyHidden |
|
|
194
|
+
| None | AccessibleIcon, Accordion, ArticleNodes, AspectRatio, Banner, Blockquote, Box, Chart,<br>Collapsible, CommentThread, ConfigDrawer, DirectionProvider, Em, Flex, FontProvider,<br>Form, Grid, Inset, Item, Marquee, NotificationCenter, PageContent, PageHeader, Prose, Quote,<br>Resizable, Result, RichTextEditor, Sidebar, Skeleton, Slot, Sonner, SortableList, Stack, Strong,<br>TableOfContents, Theme, ThemePanel, ThemeProvider, Tooltip, VisuallyHidden | 41 |
|
|
195
195
|
|
|
196
196
|
**Total components covered: 131**
|
|
197
197
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"packageVersion": "3.0.
|
|
3
|
+
"packageVersion": "3.0.1",
|
|
4
4
|
"generatedFrom": "docs/design-system",
|
|
5
5
|
"components": [
|
|
6
6
|
{
|
|
@@ -435,6 +435,14 @@
|
|
|
435
435
|
"status": "canonical",
|
|
436
436
|
"documentation": "./components/article-nodes.md"
|
|
437
437
|
},
|
|
438
|
+
{
|
|
439
|
+
"name": "Banner",
|
|
440
|
+
"slug": "banner",
|
|
441
|
+
"category": "Components",
|
|
442
|
+
"archetype": "composite",
|
|
443
|
+
"status": "canonical",
|
|
444
|
+
"documentation": "./components/banner.md"
|
|
445
|
+
},
|
|
438
446
|
{
|
|
439
447
|
"name": "Breadcrumb",
|
|
440
448
|
"slug": "breadcrumb",
|
|
@@ -563,14 +571,6 @@
|
|
|
563
571
|
"status": "canonical",
|
|
564
572
|
"documentation": "./components/context-menu.md"
|
|
565
573
|
},
|
|
566
|
-
{
|
|
567
|
-
"name": "ControlGroup",
|
|
568
|
-
"slug": "control-group",
|
|
569
|
-
"category": "Components",
|
|
570
|
-
"archetype": "composite",
|
|
571
|
-
"status": "canonical",
|
|
572
|
-
"documentation": "./components/control-group.md"
|
|
573
|
-
},
|
|
574
574
|
{
|
|
575
575
|
"name": "CopyField",
|
|
576
576
|
"slug": "copy-field",
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Banner
|
|
3
|
+
status: canonical
|
|
4
|
+
category: Components
|
|
5
|
+
archetype: composite
|
|
6
|
+
depends_on:
|
|
7
|
+
- Text
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Banner
|
|
11
|
+
|
|
12
|
+
Examples keep the headline value numeric and put units in Label or Footnote, preserving readable hero typography at narrow widths. Arbitrary consumer text still wraps within the surface.
|
|
13
|
+
|
|
14
|
+
> Consumer note: this document describes public intent and contracts; the package TypeScript declarations are the exact API.
|
|
15
|
+
|
|
16
|
+
## Purpose
|
|
17
|
+
|
|
18
|
+
A hero mass: one label, one headline value, and an optional footnote over an accent wash or solid accent fill. A single mass by construction — it replaces Card-plus-StatCard nesting, which double-frames.
|
|
19
|
+
|
|
20
|
+
## Anatomy & slots
|
|
21
|
+
|
|
22
|
+
**Parent:** `Banner` (alias of `Banner.Root`).
|
|
23
|
+
|
|
24
|
+
**Slots:**
|
|
25
|
+
|
|
26
|
+
| Slot | Element | Renders | Notes |
|
|
27
|
+
|---|---|---|---|
|
|
28
|
+
| `Banner.Root` | `<section>` | Hero surface + class | `role="group"`, consumer `aria-label`. Writes `dsx-banner`. Supports `asChild`. |
|
|
29
|
+
| `Banner.Label` | `<span>` | Uppercase muted label + class | Renders `Text` label-small. Writes `dsx-banner__label`. |
|
|
30
|
+
| `Banner.Value` | `<span>` | Headline value + class | Uses a span with the display-medium token ramp. Writes `dsx-banner__value`. |
|
|
31
|
+
| `Banner.Footnote` | `<span>` | Muted footnote + class | Renders `Text` body-small. Writes `dsx-banner__footnote`. Optional. |
|
|
32
|
+
|
|
33
|
+
## Props contract
|
|
34
|
+
|
|
35
|
+
| Prop | Type | Default | Required | Description | Responsive |
|
|
36
|
+
|---|---|---|---|---|---|
|
|
37
|
+
| `variant` | `'wash' \| 'fill'` | `'wash'` | no | Hero treatment; writes `data-variant`. `fill` is the solid-accent mass reusing Button primary's compliance (`accent-track` + `accent-contrast`). | no |
|
|
38
|
+
| `asChild` | `boolean` | `false` | no | Renders the root through `Slot`; consumer supplies the host element. | no |
|
|
39
|
+
| `className` | `string` | `undefined` | no | Extra classes appended to `dsx-banner`. | no |
|
|
40
|
+
|
|
41
|
+
Rules:
|
|
42
|
+
|
|
43
|
+
- Slots take no props besides `asChild` and `className`; all copy is children.
|
|
44
|
+
- `variant="wash"` is the default; `variant="fill"` uses accent-track and accent-contrast. There are no size or tone variants.
|
|
45
|
+
- Long values, identifiers, and footnotes wrap within the available width; content is never silently truncated.
|
|
46
|
+
|
|
47
|
+
## CSS class contract
|
|
48
|
+
|
|
49
|
+
**Root class:** `dsx-banner`
|
|
50
|
+
|
|
51
|
+
**Slot classes:**
|
|
52
|
+
|
|
53
|
+
| Slot | Class | CSS file |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| `Banner.Root` | `dsx-banner` | `banner.css` |
|
|
56
|
+
| `Banner.Label` | `dsx-banner__label` | `banner.css` |
|
|
57
|
+
| `Banner.Value` | `dsx-banner__value` | `banner.css` |
|
|
58
|
+
| `Banner.Footnote` | `dsx-banner__footnote` | `banner.css` |
|
|
59
|
+
|
|
60
|
+
The enum PropDef emits `dsx-banner-variant-wash` / `dsx-banner-variant-fill`; the fill alias shares the data-variant paint rules.
|
|
61
|
+
|
|
62
|
+
**Responsive behavior:**
|
|
63
|
+
|
|
64
|
+
- The component does not write `@media` rules.
|
|
65
|
+
|
|
66
|
+
## Token mapping
|
|
67
|
+
|
|
68
|
+
Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
69
|
+
|
|
70
|
+
| Property | Token | Role |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| Root background | `var(--dsx-color-accent-surface)` | Hero wash (wash variant) |
|
|
73
|
+
| Fill background | `var(--dsx-color-accent-track)` | Solid accent mass (fill variant) |
|
|
74
|
+
| Fill text | `var(--dsx-color-accent-contrast)` | Compliant text on fill (near-black on spark, white elsewhere) |
|
|
75
|
+
| Root radius | `var(--dsx-rounded-lg)` | Hero corner roundness |
|
|
76
|
+
| Root padding | `var(--dsx-space-lg)` | Hero internal spacing |
|
|
77
|
+
| Root gap | `var(--dsx-space-xs)` | Stack rhythm label/value/footnote |
|
|
78
|
+
| Label typography | `var(--dsx-typography-label-small-*)` | Label type scale |
|
|
79
|
+
| Label color | `var(--dsx-color-on-surface-variant)` | Muted label on wash |
|
|
80
|
+
| Value typography | `var(--dsx-typography-display-medium-*)` | Headline value type scale |
|
|
81
|
+
| Value color | `var(--dsx-color-on-surface)` | Value ink on wash |
|
|
82
|
+
| Footnote typography | `var(--dsx-typography-body-small-*)` | Footnote type scale |
|
|
83
|
+
| Footnote color | `var(--dsx-color-on-surface-variant)` | Muted footnote on wash |
|
|
84
|
+
|
|
85
|
+
## Motion contract
|
|
86
|
+
|
|
87
|
+
None — no transitions, no animation. Pressed/`focus-visible` states do not apply (non-interactive).
|
|
88
|
+
|
|
89
|
+
## Accessibility
|
|
90
|
+
|
|
91
|
+
**Roles:**
|
|
92
|
+
|
|
93
|
+
- `group` (from `<section>` with consumer `aria-label`).
|
|
94
|
+
|
|
95
|
+
**Naming:**
|
|
96
|
+
|
|
97
|
+
- The Root must have an accessible name via `aria-label` when the hero purpose is not obvious from context.
|
|
98
|
+
|
|
99
|
+
**Color and meaning:**
|
|
100
|
+
|
|
101
|
+
- The wash is decorative; label/value text carries all meaning with `on-surface` contrast.
|
|
102
|
+
|
|
103
|
+
## Playground demo spec
|
|
104
|
+
|
|
105
|
+
**Default story:**
|
|
106
|
+
|
|
107
|
+
- Renders `Banner` with Label + Value. Asserts the root class is `dsx-banner` and the host element is `SECTION`.
|
|
108
|
+
|
|
109
|
+
**Footnote story:**
|
|
110
|
+
|
|
111
|
+
- Renders with `Banner.Footnote`. Asserts `dsx-banner__footnote` is present.
|
|
112
|
+
|
|
113
|
+
**Variant story:**
|
|
114
|
+
|
|
115
|
+
- Renders with `variant="fill"`. Asserts `data-variant="fill"` and the fill background token.
|
|
116
|
+
|
|
117
|
+
**A11y story:**
|
|
118
|
+
|
|
119
|
+
- Uses `vitest-axe` against the hero. Asserts there are no axe violations.
|
|
120
|
+
|
|
121
|
+
**Props exposed in the playground controls:**
|
|
122
|
+
|
|
123
|
+
`variant`: select (`wash`, `fill`), default `wash`.
|
|
124
|
+
|
|
125
|
+
## Deliberate divergences (researched, 2026-10-02)
|
|
126
|
+
|
|
127
|
+
Sibling-repo survey (Primer `Banner`/`PageHeader`/`Card`, Radix `Callout`/`Card`, Lobe docs-kit hero, NetBird `AnnouncementBanner`):
|
|
128
|
+
|
|
129
|
+
- **No border, no leading icon.** Status banners pair their wash with a colored border + icon (Primer muted border, Radix accent ring). Banner is a hero mass, not an alert strip — the wash-vs-solid distinction alone carries the hierarchy. If an icon is ever needed, it becomes a new slot, not an ad-hoc child.
|
|
130
|
+
- **Shared display-medium with StatCard.** Real heroes and stat cards share their value scale (Lobe h1 vs feature numbers differ by context, not by component); surface treatment — wash vs solid + shadow — is the differentiator, not type size.
|
|
131
|
+
- **Padding kept symmetric with StatCard (`space-lg`).** Radix tightens Callout below Card; Banner keeps the roomier rhythm because hero values (45 days) run larger than list text. Revisit only with screenshot evidence.
|
|
132
|
+
- **Name vs M2 Banner.** Material's Banner is a top-of-screen informational strip with acknowledgment actions — a different pattern. Ours is the marketing sense (hero banner). The spec's Purpose line is the disambiguator; do not reshape this component toward alert-strip behavior (that is `Callout`).
|
|
133
|
+
|
|
134
|
+
## Wiring notes
|
|
135
|
+
|
|
136
|
+
**Composes from:**
|
|
137
|
+
|
|
138
|
+
- `Text`: Label (label-small) and Footnote (body-small). Value uses the display-medium token ramp directly.
|
|
139
|
+
|
|
140
|
+
**Used by (planned):**
|
|
141
|
+
|
|
142
|
+
- TMA user-console referral balance hero, home status hero (wash variant), subscription heroes — replacing Card-plus-StatCard nesting in each.
|
|
143
|
+
|
|
144
|
+
**State boundaries:**
|
|
145
|
+
|
|
146
|
+
- Owned by Banner: the wash surface, the label/value/footnote stack, the CSS classes.
|
|
147
|
+
- Owned by the consumer: the copy, the `aria-label`, the surrounding page.
|
|
148
|
+
|
|
149
|
+
**Boundary rules:**
|
|
150
|
+
|
|
151
|
+
- App-owned data: copy, aria-label.
|
|
152
|
+
- DS-owned visuals: wash, radius, padding, slot classes.
|
|
@@ -45,7 +45,7 @@ The root renders a `<div role="group">`. Children of the group share the first/l
|
|
|
45
45
|
Rules:
|
|
46
46
|
|
|
47
47
|
- `Omit<HTMLAttributes<HTMLDivElement>, ...>` is not applied; the type is a direct extension, so any `<div>` prop is forwarded.
|
|
48
|
-
- The component does not own the buttons themselves. The
|
|
48
|
+
- The component does not own the buttons themselves. The group drives children min-height from its own `data-size`; the consumer remains responsible for keyboard semantics on every child.
|
|
49
49
|
|
|
50
50
|
## CSS class contract
|
|
51
51
|
|
|
@@ -55,7 +55,7 @@ Rules:
|
|
|
55
55
|
|
|
56
56
|
| Attribute | Allowed values | Class | CSS file |
|
|
57
57
|
|---|---|---|---|
|
|
58
|
-
| `data-size` | `sm`, `md`, `lg` | `.dsx-button-group[data-size='sm'\|'md'\|'lg']
|
|
58
|
+
| `data-size` | `sm`, `md`, `lg` | `.dsx-button-group[data-size='sm'\|'md'\|'lg'] > *` sets the matching density min-height token on every direct child, so the three sizes differ without consumer sizing | `button-group.css` |
|
|
59
59
|
| (variant) | `default`, `outline` | `.dsx-button-group--default`, `.dsx-button-group--outline` | `button-group.css` |
|
|
60
60
|
|
|
61
61
|
**Slot classes:**
|
|
@@ -69,6 +69,7 @@ Rules:
|
|
|
69
69
|
|
|
70
70
|
- The component does not write `@media` rules. None of its prop defs are `responsive: true`. Size and variant are single-value only.
|
|
71
71
|
- The component's CSS file is breakpoint-agnostic.
|
|
72
|
+
- Narrow containers: the root caps at `max-width: 100%` with `overflow-x: auto` — the fused frame cannot wrap, so an over-wide group scrolls instead of hard-clipping its last action (proven 2026-09-23 in a definite 272px column: group caps at 272, `scrollWidth` 298 reachable by touch scroll).
|
|
72
73
|
|
|
73
74
|
**Reduced motion:**
|
|
74
75
|
|
|
@@ -94,7 +95,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
94
95
|
|
|
95
96
|
Rules:
|
|
96
97
|
|
|
97
|
-
- The component
|
|
98
|
+
- The component paints no background, border, or shadow of its own. In `default`, children render borderless (`border-color: transparent`) for the fused cluster; in `outline`, children keep their own joined borders, which read as the container edge. Beyond that, visual treatment is delegated to the children.
|
|
98
99
|
|
|
99
100
|
## Motion contract
|
|
100
101
|
|
|
@@ -61,7 +61,7 @@ Rules:
|
|
|
61
61
|
| `data-size` | `sm`, `md`, `lg`, `icon` | `.dsx-button[data-size='sm']` etc. | `button.css` |
|
|
62
62
|
| `data-radius` | `none`, `sm`, `md`, `lg`, `full` | `.dsx-button[data-radius='none']` etc. | `button.css` |
|
|
63
63
|
| `data-accent-color` | `rift`, `warp`, `ray` (or any custom string) | `.dsx-button[data-accent-color='...']` (CSS hook) | `button.css` |
|
|
64
|
-
| `data-halo` | `true` | `.dsx-button:where([data-variant='
|
|
64
|
+
| `data-halo` | `true` | Resting accent ring on every variant (`.dsx-button:where([data-variant='…'])[data-halo='true']`; hover/active keep it, no shadow morph without it) | `button.css` |
|
|
65
65
|
| `data-high-contrast` | `true` | `.dsx-button:where([data-variant='primary'])[data-high-contrast='true']` etc. (variant-specific HC overrides) | `button.css` |
|
|
66
66
|
| `data-loading` | `true` | `.dsx-button[data-loading='true']` | `button.css` (writes to cursor and spinner positioning) |
|
|
67
67
|
| `data-disabled` | `true` | `.dsx-button[data-disabled='true']` | `button.css` |
|
|
@@ -112,7 +112,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
112
112
|
| Background (primary) | `var(--dsx-color-accent-track)` | Primary fill (ramp step 9). |
|
|
113
113
|
| Text (primary) | `var(--dsx-color-accent-contrast)` | Primary text. |
|
|
114
114
|
| Border (primary) | `var(--dsx-color-accent-track)` | Primary edge. |
|
|
115
|
-
| Box shadow (primary) | `var(--dsx-shadow-accent-ring)` | Resting halo —
|
|
115
|
+
| Box shadow (primary) | `var(--dsx-shadow-accent-ring)` | Resting halo — locked 2026-09-22 for every variant (was primary-only; settles the 2026-09-05 remove-halo proposal toward keep-and-extend). |
|
|
116
116
|
| Box shadow (primary HC) | `var(--dsx-shadow-accent-glow)` | High-contrast primary elevation. |
|
|
117
117
|
| Background (primary HC) | `var(--dsx-color-accent-indicator)` | High-contrast primary fill. |
|
|
118
118
|
| Text (primary HC) | `var(--dsx-color-on-high-contrast)` | High-contrast primary text. |
|
|
@@ -93,6 +93,7 @@ The normalization is a one-way mapping: `outline` is the only variant that produ
|
|
|
93
93
|
**Responsive behavior:**
|
|
94
94
|
|
|
95
95
|
- The component does not write `@media` rules. `size`, `variant`, and `radius` are single-value only.
|
|
96
|
+
- The root can shrink within its parent and is capped at the available width. Unbroken headings and identifiers wrap without truncation; Content and Footer retain their wrapping layout.
|
|
96
97
|
|
|
97
98
|
**Reduced motion:**
|
|
98
99
|
|