@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
|
@@ -47,7 +47,7 @@ A mutually exclusive selection cluster backed by `@radix-ui/react-radio-group`.
|
|
|
47
47
|
| Prop | Type | Default | Required | Description | Responsive |
|
|
48
48
|
|---|---|---|---|---|---|
|
|
49
49
|
| `value` | `string` | — | yes | Unique value for this item. | no |
|
|
50
|
-
| `size` | `'sm' \| 'md'` | `'md'` | no | Item-level size override. Drives the `dsx-radio-item--{size}` class. | no |
|
|
50
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Item-level size override. Drives the `dsx-radio-item--{size}` class. | no |
|
|
51
51
|
| `label` | `ReactNode` | `undefined` | no | When set, the item wraps itself in a `<label class="dsx-radio-option">` and renders the label inside a `dsx-radio-option__label` span. | no |
|
|
52
52
|
| `description` | `ReactNode` | `undefined` | no | When set, the item renders a `dsx-radio-option__description` span under the label. | no |
|
|
53
53
|
| `asChild` | `boolean` | `false` | no | Renders the item host through `Slot`. | no |
|
|
@@ -79,6 +79,7 @@ Rules:
|
|
|
79
79
|
| `RadioGroupItem` (host) | `dsx-radio-item` | `radio-group.css` |
|
|
80
80
|
| `RadioGroupItem` (size sm) | `dsx-radio-item--sm` | `radio-group.css` |
|
|
81
81
|
| `RadioGroupItem` (size md) | `dsx-radio-item--md` | `radio-group.css` |
|
|
82
|
+
| `RadioGroupItem` (size lg) | `dsx-radio-item--lg` | `radio-group.css` |
|
|
82
83
|
| Item indicator | `dsx-radio-item__indicator` | `radio-group.css` |
|
|
83
84
|
| Item dot | `dsx-radio-item__dot` | `radio-group.css` |
|
|
84
85
|
| Option wrapper | `dsx-radio-option` | `radio-group.css` |
|
|
@@ -106,7 +107,9 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
106
107
|
| Option label/description typography | `var(--dsx-typography-body-medium-*)` | Body ramp. |
|
|
107
108
|
| Option description color | `var(--dsx-color-on-surface-variant)` | Muted description. |
|
|
108
109
|
| Item size (default) | `var(--dsx-size-md)` | Default control. |
|
|
109
|
-
| Item size (sm) | `var(--dsx-size-sm)` | Small control. |
|
|
110
|
+
| Item size (sm) | `var(--dsx-size-sm)` | Small control (20px). |
|
|
111
|
+
| Item size (lg) | `var(--dsx-size-lg)` | Large control (32px). |
|
|
112
|
+
| Item hit area | `max(100% + 16px, 44px)` via `::before` | Layout-neutral 44px pointer target (WCAG 2.5.8, TMA touch). |
|
|
110
113
|
| Item radius | `var(--dsx-rounded-full)` | Round. |
|
|
111
114
|
| Item border | `var(--dsx-border-width-md)` solid `var(--dsx-color-outline-variant)` | Resting edge. |
|
|
112
115
|
| Item background | `var(--dsx-color-surface)` | Resting fill. |
|
|
@@ -79,6 +79,8 @@ Rules:
|
|
|
79
79
|
|
|
80
80
|
- The component does not write `@media` rules.
|
|
81
81
|
|
|
82
|
+
- The `sm` star remains 20px visually. A centered `::before` layer expands its pointer target to the 24px `size-md` token, filling the existing 4px gap without overlapping neighboring targets.
|
|
83
|
+
|
|
82
84
|
**Reduced motion:**
|
|
83
85
|
|
|
84
86
|
- Item transitions use `var(--dsx-motion-duration-fast)` and `var(--dsx-motion-easing-standard)` for color, transform, opacity, and box-shadow. No explicit `prefers-reduced-motion` gate is present in the CSS.
|
|
@@ -15,6 +15,8 @@ Canonical outcome and list-state surface. `state` is `success`, `failure`, `expi
|
|
|
15
15
|
|
|
16
16
|
`Result.Root`, `Result.Icon`, `Result.Title`, `Result.Description`, `Result.Metadata`, `Result.Steps`, and `Result.Actions`. Root class is `dsx-result`; slot classes use `dsx-result__<slot>`. Root writes `data-state` and `data-tone`.
|
|
17
17
|
|
|
18
|
+
The root shrinks to the available width, direct children stay within that width, and long titles, descriptions, and identifiers wrap without truncation. Actions wrap intrinsically; no viewport query selects a different layout.
|
|
19
|
+
|
|
18
20
|
## Wiring notes
|
|
19
21
|
|
|
20
22
|
`EmptyState` delegates to `Result state="empty"` while preserving its legacy class and props. `DataTable` uses Result for loading, empty, no-results, and error states. Copy, retry behavior, and async work are consumer-owned.
|
|
@@ -22,3 +24,7 @@ Canonical outcome and list-state surface. `state` is `success`, `failure`, `expi
|
|
|
22
24
|
## Playground demo spec
|
|
23
25
|
|
|
24
26
|
Show every state, an independently overridden tone, populated slots, and alert/loading semantics.
|
|
27
|
+
|
|
28
|
+
The live playground example switches between all seven states with actual buttons. Each state has contextual copy, a matching illustration or spinner, and an appropriate recovery action. Success shows connection metadata; loading shows steps. Recovery returns to success and Continue opens the empty saved-server state. The compact default example provides an illustration, title, and description.
|
|
29
|
+
|
|
30
|
+
The inline live example uses headline-medium for its title and one outlined Result surface, avoiding compounded Card/Result padding. Short state titles preserve whole-word readability at 320px.
|
|
@@ -13,7 +13,7 @@ depends_on:
|
|
|
13
13
|
|
|
14
14
|
## Purpose
|
|
15
15
|
|
|
16
|
-
A single-select control that renders a row of mutually exclusive options, backed by `ToggleGroup` from Radix. `default` is a sunken track with a sliding softly tinted raised pill behind the active option; `outline` is the same pill inside an outer frame; `subtle` is the borderless treatment with the same selected pill. Used for switching between views, filters, or modes in forms and toolbars.
|
|
16
|
+
A single-select control that renders a row of mutually exclusive options, backed by `ToggleGroup` from Radix. `default` is a sunken track with a sliding softly tinted raised pill behind the active option; `outline` is the same pill inside an outer frame; `subtle` is the borderless treatment with the same selected pill. Used for switching between views, filters, or modes in forms and toolbars. Boundary rule (F6 brief): exclusive single-select with a thumb is always a SegmentedControl; frameless toolbar button clusters without a thumb are `ToggleGroup`. Never multi-select, never dismissible.
|
|
17
17
|
|
|
18
18
|
## Anatomy & slots
|
|
19
19
|
|
|
@@ -34,7 +34,9 @@ A single-select control that renders a row of mutually exclusive options, backed
|
|
|
34
34
|
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Control height and item padding; writes `data-size` and `dsx-segmented-control--{size}` class. | no |
|
|
35
35
|
| `variant` | `'default' \| 'outline' \| 'subtle'` | `'default'` | no | Container surface treatment; writes `data-variant` and `dsx-segmented-control--{variant}` class. `subtle` keeps the measured selected pill but removes the track surface and frame. | no |
|
|
36
36
|
| `activationMode` | `'manual' \| 'automatic'` | `'manual'` | no | Selection timing; writes `data-activation-mode`. `manual` selects only on activation (click, `Enter`, `Space`). `automatic` selects on item focus, so arrow-key navigation selects without `Enter`. | no |
|
|
37
|
+
| `orientation` | `'horizontal' \| 'vertical'` | `'horizontal'` | no | Stacking axis; writes `data-orientation`. Vertical stacks icon columns (ref: view-switcher rails); the sliding indicator measures y/height and arrow keys move up/down via Radix. | no |
|
|
37
38
|
| `disabled` | `boolean` | `false` | no | Disables the entire control; writes `data-disabled`. | no |
|
|
39
|
+
| `fill` | `boolean` | `false` | no | Distributes the track width equally across items; writes `data-fill` and `dsx-segmented-control--fill`; both selectors share the same fill styling. Opt-in for few-item groups that fit (method pickers); the default hug-content root with scroll containment stays for overflowing groups. The sliding indicator measures live boxes, so it tracks fill widths with no change. | no |
|
|
38
40
|
| `value` | `string` | `undefined` | no | Controlled selected value. | no |
|
|
39
41
|
| `defaultValue` | `string` | `undefined` | no | Uncontrolled initial selected value. | no |
|
|
40
42
|
| `onValueChange` | `(value: string) => void` | `undefined` | no | Callback when the selected value changes. | no |
|
|
@@ -53,7 +55,7 @@ A single-select control that renders a row of mutually exclusive options, backed
|
|
|
53
55
|
|
|
54
56
|
Rules:
|
|
55
57
|
|
|
56
|
-
- `size` and `disabled` are wired through `extractProps` and the prop def bag on the Root. `variant` and `
|
|
58
|
+
- `size` and `disabled` are wired through `extractProps` and the prop def bag on the Root. `variant`, `activationMode`, and `fill` are destructured with their defaults and kept out of the extract bag (their defs declare no `className`, so they would otherwise leak onto the DOM); `fill` writes `data-fill` plus the `--fill` modifier class manually, same as `variant`.
|
|
57
59
|
- `value`, `defaultValue`, and `onValueChange` are passed through to the Radix ToggleGroup root directly.
|
|
58
60
|
- The Root forces `type="single"` and filters empty string values from `onValueChange` to prevent deselection.
|
|
59
61
|
- Deselect guard: the Root owns the selection state. Uncontrolled usage seeds internal state from `defaultValue` and passes the resolved value back into Radix as a controlled `value`, so clicking the active item (which fires `""`) can never clear Radix internal state or render the control with no active item. Controlled usage passes `value` straight through; `""` is still swallowed.
|
|
@@ -72,6 +74,8 @@ Rules:
|
|
|
72
74
|
| `data-size` | `sm`, `md`, `lg` | `.dsx-segmented-control--sm`, `.dsx-segmented-control--md`, `.dsx-segmented-control--lg` | `segmented-control.css` |
|
|
73
75
|
| `data-variant` | `default`, `outline`, `subtle` | `.dsx-segmented-control--default`, `.dsx-segmented-control--outline`, `.dsx-segmented-control--subtle` | `segmented-control.css` |
|
|
74
76
|
| `data-disabled` | (present/absent) | `.dsx-segmented-control[data-disabled]` | `segmented-control.css` |
|
|
77
|
+
| `data-orientation` | `horizontal`, `vertical` | `.dsx-segmented-control[data-orientation='vertical']` (column stack; indicator measures y/height) | `segmented-control.css` |
|
|
78
|
+
| `data-fill` | (present/absent) | `.dsx-segmented-control--fill` (root spans the container, items share width equally) | `segmented-control.css` |
|
|
75
79
|
|
|
76
80
|
**Slot classes:**
|
|
77
81
|
|
|
@@ -230,6 +234,7 @@ Automatic mode (`activationMode="automatic"`):
|
|
|
230
234
|
| `variant` | select | `default` |
|
|
231
235
|
| `activationMode` | select | `manual` |
|
|
232
236
|
| `disabled` | boolean | `false` |
|
|
237
|
+
| `fill` | boolean | `false` |
|
|
233
238
|
|
|
234
239
|
## Wiring notes
|
|
235
240
|
|
|
@@ -176,7 +176,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
176
176
|
| Content padding | `var(--dsx-space-sm)` | Floating menu inner gutter. |
|
|
177
177
|
| Content width / min-width / max-width | `max-content` / `var(--radix-select-trigger-width, 200px)` / `min(--radix-select-content-available-width, 40rem)` | Mirror-at-minimum with grow-to-fit; past 40rem (or the viewport edge) rows wrap via `data-overflow` instead of stretching the panel. The 40rem ceiling is a token candidate for the size batch. |
|
|
178
178
|
| Content max-height | `var(--dsx-size-popover-max-width)` | Scroll ceiling (used by the inner ScrollArea). |
|
|
179
|
-
| Content z-index | `var(--dsx-z-index-dropdown)` | Overlay stacking. |
|
|
179
|
+
| Content z-index | `var(--dsx-z-index-dropdown)` standalone; `calc(var(--dsx-z-index-modal, 90) + 2)` when nested inside a modal-tier host (`dsx-menu__nested`, see the shared nested floating tier contract in `menu.md`) | Overlay stacking; nested menus clear their host popup. |
|
|
180
180
|
| Item min-height | `var(--dsx-size-lg)` | Default option height. |
|
|
181
181
|
| Item padding | density-aware block/inline tokens with trailing indicator reservation | Option padding; the right side reserves room for the trailing check indicator. |
|
|
182
182
|
| Item border | `0` | Items are borderless. |
|
|
@@ -295,7 +295,8 @@ Rules:
|
|
|
295
295
|
- `VisuallyHidden` (DS primitive): the hidden native `<select>` host.
|
|
296
296
|
- `Icon` (lucide-react `chevron-down`): the trigger trailing icon. Lucide-react `check` is the item indicator.
|
|
297
297
|
- `_internal/BaseDialog`: `PortalThemeBoundary` (wraps the root) and `PortalThemeWrapper` (wraps the content) so `data-dsx-theme`, `data-dsx-density`, `data-dsx-scaling`, `data-accent-color`, `data-gray-color`, `data-radius`, `data-panel-background`, `data-has-background`, and `colorScheme` resolve inside the content portal.
|
|
298
|
-
- `_internal/baseMenu.css`: the shared menu shell, border, surface, and focus contract.
|
|
298
|
+
- `_internal/baseMenu.css`: the shared menu shell, border, surface, and focus contract — including the nested floating tier rule (`dsx-menu__nested` at `modal + 2`).
|
|
299
|
+
- `_internal/floatingLayer`: `useFloatingLayerHost` tells `Select.Content` whether it renders inside a modal-tier host (`Popover.Content` / `Dialog.Content`); when nested, the content adds `dsx-menu__nested` so the options list paints above its host. Standalone content never carries the class and stays at the dropdown tier, below the modal overlay.
|
|
299
300
|
- `@radix-ui/react-slot`: enables `asChild` on `Select`, `Select.Trigger`, and `Select.Content`.
|
|
300
301
|
|
|
301
302
|
**Used by:**
|
|
@@ -163,6 +163,8 @@ The parent button that toggles a `Sidebar.MenuSub`. Composes the public `Collaps
|
|
|
163
163
|
|
|
164
164
|
### `Sidebar.MenuBadge`
|
|
165
165
|
|
|
166
|
+
Dual pattern (F6 brief): inline row badges compose `Badge` (`secondary`, `sm`) directly inside the menu button; `MenuBadge` is the dedicated primitive for the absolute count / collapse-aware case and the `ring` / `accent` identities. Example row-value composition: `MenuButton` + `<Badge variant="secondary" size="sm">12</Badge>` — no `MenuBadge` needed.
|
|
167
|
+
|
|
166
168
|
| Prop | Type | Default | Required | Description | Responsive |
|
|
167
169
|
|---|---|---|---|---|---|
|
|
168
170
|
| `variant` | `'text' \| 'ring' \| 'accent'` | `'text'` | no | `text` composes the compact secondary Badge, `ring` visualizes `value / max`, and `accent` renders quiet glowing numeric metadata without a filled chip. | no |
|
|
@@ -314,7 +316,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
314
316
|
| Menu button active background | `color-mix(accent-3 50%, transparent)` | Sidebar-owned middle wash: 40% vanishes on spark-light, 60% shouts on saturated accents (warp/ray) — structure (inset underline) carries the rest of selection, no primary fill. |
|
|
315
317
|
| Menu button active color | `var(--dsx-color-accent-indicator)` | Active menu button text and icon. |
|
|
316
318
|
| Ring badge label typography | `var(--dsx-typography-label-small-*)` | Complete compact UI typography, including family, line height, spacing, case, decoration, and tabular numerals. |
|
|
317
|
-
| Accent badge metadata | `var(--dsx-typography-label-small-*)`, `var(--dsx-color-accent-indicator)`, `var(--dsx-color-accent-9)` | Badge-geometry pill (full radius, Badge padding, fill-matched hairline, accent-surface fill) with a visible accent halo + pulse
|
|
319
|
+
| Accent badge metadata | `var(--dsx-typography-label-small-*)`, `var(--dsx-color-accent-indicator)`, `var(--dsx-color-accent-9)` | Badge-geometry pill (full radius, Badge padding, fill-matched hairline, accent-surface fill) with a visible accent halo + pulse. Dual pattern (F6 brief): inline row badges compose `Badge` directly; `MenuBadge` survives for the absolute count/collapse-aware case plus the glow + pulse identity, which has no Badge equivalent. |
|
|
318
320
|
| Accent badge motion | `var(--dsx-motion-duration-shimmer)`, `var(--dsx-motion-easing-in-out)` | Continuous opacity and text-shadow pulse; removed under reduced motion. |
|
|
319
321
|
| Menu sub padding | `0 0 0 calc(lg + sm)` | Indent budget: sub text lands exactly under the parent label (label x=40, was 32). |
|
|
320
322
|
| Menu sub gap | `var(--dsx-space-xs)` | Gap inside submenu. |
|
|
@@ -86,7 +86,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
86
86
|
| Toast background | `var(--dsx-color-surface)` | Resting toast surface. |
|
|
87
87
|
| Toast radius | `var(--dsx-rounded-md)` | Toast corner roundness. |
|
|
88
88
|
| Toast border | `var(--dsx-border-width-sm) solid var(--dsx-color-outline)` | Toast edge. |
|
|
89
|
-
| Toast shadow | `var(--dsx-shadow-elevation-
|
|
89
|
+
| Toast shadow | `var(--dsx-shadow-elevation-5)` | Spotlight: below dialogs, above all menus (B4 Q3). |
|
|
90
90
|
| Toast gap | `var(--dsx-space-md)` | Gap between icon, title, description, and buttons. |
|
|
91
91
|
| Success border | `var(--dsx-color-success)` | Success variant edge. |
|
|
92
92
|
| Error background | `var(--dsx-color-error-container)` | Error variant surface. |
|
|
@@ -25,6 +25,8 @@ raw id when the item cannot be resolved). Disabled items keep a focusable
|
|
|
25
25
|
handle marked `aria-disabled`; the handle shows `cursor: not-allowed` and the
|
|
26
26
|
row stays dimmed, and dnd-kit never lifts a disabled item.
|
|
27
27
|
|
|
28
|
+
Successful reordering restores focus to that list's handle. Repeated item IDs in another SortableList do not capture focus, and a content button before the handle is not used as the focus target.
|
|
29
|
+
|
|
28
30
|
Import `SortableList` from `@d4gger/design-system/sortable-list`. It is intentionally absent from the root and `components` barrels so consumers that do not use reordering are not required to install the optional `@dnd-kit/*` peers.
|
|
29
31
|
|
|
30
32
|
## Playground demo spec
|
|
@@ -65,7 +65,7 @@ Each slot also accepts the standard HTML attributes for its host element. `StatC
|
|
|
65
65
|
Rules:
|
|
66
66
|
|
|
67
67
|
- The component does not emit `data-radius`, `data-accent-color`, or `data-high-contrast`. The contract calls for `data-variant` and `data-size` only.
|
|
68
|
-
- The `Trend` icon is always rendered
|
|
68
|
+
- The `Trend` icon is always rendered, including with `asChild`; consumer children provide the label rather than replacing the icon.
|
|
69
69
|
|
|
70
70
|
## CSS class contract
|
|
71
71
|
|
|
@@ -75,8 +75,8 @@ Rules:
|
|
|
75
75
|
|
|
76
76
|
| Attribute | Allowed values | Class | CSS file |
|
|
77
77
|
|---|---|---|---|
|
|
78
|
-
| `data-variant` | `surface`, `ghost` |
|
|
79
|
-
| `data-size` | `sm`, `md`, `lg` |
|
|
78
|
+
| `data-variant` | `surface`, `ghost` | `.dsx-stat-card[data-variant='ghost']` removes the surface background | `stat-card.css` |
|
|
79
|
+
| `data-size` | `sm`, `md`, `lg` | `.dsx-stat-card[data-size='sm'|'lg']` changes padding; Metric.Value inherits the size for typography | `stat-card.css`, `metric.css` |
|
|
80
80
|
|
|
81
81
|
**Trend modifier classes** (driven by the `trend` prop def):
|
|
82
82
|
|
|
@@ -99,6 +99,7 @@ Rules:
|
|
|
99
99
|
**Responsive behavior:**
|
|
100
100
|
|
|
101
101
|
- The component does not write `@media` rules. `size`, `variant`, and `trend` are single-value only.
|
|
102
|
+
- Metric's containment keeps long values within the card; Footer and Trend wrap intrinsically. Number formatting remains consumer-owned.
|
|
102
103
|
|
|
103
104
|
**Reduced motion:**
|
|
104
105
|
|
|
@@ -209,7 +210,7 @@ The component is static.
|
|
|
209
210
|
`dsx-stat-card*` class, prop, export, trend icon, and rendered host element.
|
|
210
211
|
- `Card` remains the conceptual surface parent; StatCard keeps its own
|
|
211
212
|
`dsx-stat-card` surface class for backward compatibility.
|
|
212
|
-
- `
|
|
213
|
+
- `Icon` is imported for the internal trend glyph. Consumers supply value/footer content, including optional Text or Badge nodes.
|
|
213
214
|
|
|
214
215
|
**Used by:**
|
|
215
216
|
|
|
@@ -229,6 +229,7 @@ Both issues are now fixed: the vertical override sets `flex: 0` and uses `margin
|
|
|
229
229
|
**Used by:**
|
|
230
230
|
|
|
231
231
|
- App-level onboarding flows, multi-step forms, and wizard navigation. The roster explicitly calls out that `Stepper` is a composite, not a pattern, and that it must compose primitive `Indicator + Separator + Label` parts rather than a parallel visual shell.
|
|
232
|
+
- Timeline (rail recipe consumer, CSS contract only — no component dependency): Timeline reuses the vertical rail geometry (dot-column centering calc, marker-bottom anchor, size-aware offsets, active-state recolor) for its left rail and centered alternate spine, while keeping its own Item/Marker/Content/Connector API, its own event states, and its own (non-progressbar) semantics. The vertical rail rules in `stepper.css` are the layout engine of record; keep them in sync with `timeline.css`.
|
|
232
233
|
|
|
233
234
|
**State boundaries:**
|
|
234
235
|
|
|
@@ -16,6 +16,8 @@ depends_on:
|
|
|
16
16
|
|
|
17
17
|
A read-heavy, semantically-correct HTML table with token-aligned typography, sizing, and density. Use `Table` for plain data presentation; reach for `DataTable` when sort, filter, density toggling, or pagination is required.
|
|
18
18
|
|
|
19
|
+
**Relationship:** `Table` is the primitive (rows/cells, density, alignment, overflow); `DataTable` is the shell over `Table` (toolbar, selection, pagination, state). Column transforms (sorter, filter, selection, title layering) are a `DataTable`-side concern, not `Table`'s. See `data-table.md` for the shell's ownership statement.
|
|
20
|
+
|
|
19
21
|
## Anatomy & slots
|
|
20
22
|
|
|
21
23
|
**Parent:** `Table` (alias of `TableRoot`). The root is a `<table>` element (or `Slot` host when `asChild` is set).
|
|
@@ -39,7 +41,7 @@ A read-heavy, semantically-correct HTML table with token-aligned typography, siz
|
|
|
39
41
|
|
|
40
42
|
- The root renders a `<table>` with `border-collapse: separate; border-spacing: 0;` plus a single border + radius around the entire table.
|
|
41
43
|
- `Table.Cell` is omitted from the last row's bottom border (`.dsx-table__body tr:last-child .dsx-table__cell { border-bottom: 0 }`).
|
|
42
|
-
- Row hover is provided by `.dsx-table__body tr:hover` (background `var(--dsx-effect-hover-ghost)`).
|
|
44
|
+
- Row hover is provided by `.dsx-table__body tr:hover` (background `var(--dsx-effect-hover-ghost)`, transitioned at `fast/standard`). No other hover rule paints rows.
|
|
43
45
|
- `Table.Header` rows get a `var(--dsx-color-outline)` bottom border.
|
|
44
46
|
- `Table.Footer` overrides the cell color to `var(--dsx-color-high-contrast)` and removes the bottom border, giving it the appearance of a summary row.
|
|
45
47
|
- `Table.ColumnHeaderCell` uses `cursor: pointer` only when `sortable` is true, and renders a small `::after` arrow when `sorted` is set.
|
|
@@ -54,6 +56,7 @@ A read-heavy, semantically-correct HTML table with token-aligned typography, siz
|
|
|
54
56
|
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | no | Cell padding scale. Writes `data-size`. | no |
|
|
55
57
|
| `variant` | `'surface' \| 'ghost'` | `'surface'` | no | Visual treatment. `surface` paints a bordered card; `ghost` removes the border and surface color for use on a pre-existing background. Writes `data-variant`. | no |
|
|
56
58
|
| `layout` | `'auto' \| 'fixed'` | `'auto'` | no | Maps to `table-layout: auto \| fixed`. Writes `data-layout`. Pair with `width="full"` on cells when `layout="fixed"`. | no |
|
|
59
|
+
| `separator` | `'rules' \| 'grid'` | `'rules'` | no | Separator treatment. `rules` paints the header divider plus horizontal row rules only; `grid` additionally paints vertical rules between columns, for dense-financial data, pinned columns, or column resizing. Writes `data-separator`. | no |
|
|
57
60
|
| `wrapScrollArea` | `boolean` | `false` | no | When `true`, wraps the `<table>` in `ScrollArea` so wide content scrolls horizontally. The `ScrollArea` viewport gets the `dsx-table__scroll-viewport` class. | no |
|
|
58
61
|
| `asChild` | `boolean` | `false` | no | Renders the root through `Slot`; consumer supplies the host element. | no |
|
|
59
62
|
|
|
@@ -68,7 +71,7 @@ A read-heavy, semantically-correct HTML table with token-aligned typography, siz
|
|
|
68
71
|
|
|
69
72
|
| Prop | Type | Default | Required | Description | Responsive |
|
|
70
73
|
|---|---|---|---|---|---|
|
|
71
|
-
| `justify` | `'start' \| 'center' \| 'end'` | `undefined` | no |
|
|
74
|
+
| `justify` | `'start' \| 'center' \| 'end'` | `undefined` | no | Logical horizontal text alignment of the native table cell; an explicit cell value overrides row alignment. Writes `data-justify`. | no |
|
|
72
75
|
| `width` | `'auto' \| 'full'` | `undefined` | no | Cell width. `'full'` sets `width: 100%`; `'auto'` clears an inherited width. Writes `data-width`. The prop type also accepts an arbitrary string at the TS level, but only `'auto'` and `'full'` get CSS rules; an arbitrary string is forwarded through `data-width` but produces no visual change. | no |
|
|
73
76
|
| `padding` | `'none' \| space-scale-value` | `undefined` | no | Cell padding override. `'none'` zeroes out the cell padding. Other space-scale values are forwarded through `data-padding` and inherit from the parent's `data-size` rules. | no |
|
|
74
77
|
| `asChild` | `boolean` | `false` | no | Polymorphic host. | no |
|
|
@@ -100,6 +103,7 @@ The remaining slots (`Table.Caption`, `Table.Header`, `Table.Body`, `Table.Foote
|
|
|
100
103
|
| `data-size` | `sm`, `md`, `lg` | `.dsx-table[data-size='sm'] .dsx-table__head, .dsx-table__cell`, `.dsx-table[data-size='lg'] ...` | `table.css` |
|
|
101
104
|
| `data-variant` | `surface`, `ghost` | `.dsx-table[data-variant='ghost']` (and child overrides) | `table.css` |
|
|
102
105
|
| `data-layout` | `auto`, `fixed` | `.dsx-table[data-layout='fixed']` (maps to `table-layout: fixed`) | `table.css` |
|
|
106
|
+
| `data-separator` | `rules`, `grid` | `.dsx-table[data-separator='grid']` (vertical rules between columns) | `table.css` |
|
|
103
107
|
| `data-align` (row) | `start`, `center`, `end` | `.dsx-table__row[data-align='...'] .dsx-table__head, .dsx-table__cell` | `table.css` |
|
|
104
108
|
| `data-justify` (cell) | `start`, `center`, `end` | `.dsx-table__cell[data-justify='...']` | `table.css` |
|
|
105
109
|
| `data-width` (cell) | `auto`, `full` | `.dsx-table__cell[data-width='...']` | `table.css` |
|
|
@@ -128,6 +132,9 @@ The remaining slots (`Table.Caption`, `Table.Header`, `Table.Body`, `Table.Foote
|
|
|
128
132
|
- The component does not write `@media` rules. Responsive layout comes from the layout primitives' responsive classes and from the responsive table-layout helpers in `styles/responsive/tableLayout.css` (`dsx-r-tl-auto`, `dsx-r-tl-fixed`).
|
|
129
133
|
- The component's CSS file is breakpoint-agnostic.
|
|
130
134
|
|
|
135
|
+
- `Cell.justify` maps to native `text-align` (start/center/end), preserving table layout.
|
|
136
|
+
- Static column headers use the default cursor and allow text selection. Pointer cursor and selection suppression apply only to sortable headers.
|
|
137
|
+
|
|
131
138
|
**Reduced motion:**
|
|
132
139
|
|
|
133
140
|
- The component is static. No motion is applied.
|
|
@@ -163,9 +170,9 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
163
170
|
|
|
164
171
|
| Region | Token | Default | Reduced |
|
|
165
172
|
|---|---|---|---|
|
|
166
|
-
| (
|
|
173
|
+
| Body row hover (`background-color`) | `var(--dsx-motion-duration-fast) var(--dsx-motion-easing-standard)` | 150ms ease | (CSS declares no `prefers-reduced-motion` override; consumers who need a hard gate add a page-level rule) |
|
|
167
174
|
|
|
168
|
-
The component
|
|
175
|
+
The component is otherwise a static read surface.
|
|
169
176
|
|
|
170
177
|
## Accessibility
|
|
171
178
|
|
|
@@ -189,7 +196,7 @@ The component has no motion. It is a static read surface.
|
|
|
189
196
|
|
|
190
197
|
**Reduced motion:**
|
|
191
198
|
|
|
192
|
-
-
|
|
199
|
+
- Only the body-row hover background transitions; no `prefers-reduced-motion` override is needed beyond a page-level rule.
|
|
193
200
|
|
|
194
201
|
**Color and meaning:**
|
|
195
202
|
|
|
@@ -211,6 +218,7 @@ The component has no motion. It is a static read surface.
|
|
|
211
218
|
**Variant story:**
|
|
212
219
|
|
|
213
220
|
- Renders three tables: `variant="surface"`, `variant="ghost"`, and `layout="fixed"`. Asserts the matching `data-variant` and `data-layout` attributes.
|
|
221
|
+
- Renders `separator="grid"`. Asserts `data-separator="grid"` and vertical rules between columns.
|
|
214
222
|
|
|
215
223
|
**Size story:**
|
|
216
224
|
|
|
@@ -241,6 +249,7 @@ The component has no motion. It is a static read surface.
|
|
|
241
249
|
| `size` | select | `md` |
|
|
242
250
|
| `variant` | select | `surface` |
|
|
243
251
|
| `layout` | select | `auto` |
|
|
252
|
+
| `separator` | select | `rules` |
|
|
244
253
|
| `wrapScrollArea` | boolean | `false` |
|
|
245
254
|
|
|
246
255
|
## Wiring notes
|
|
@@ -14,8 +14,10 @@ depends_on:
|
|
|
14
14
|
## Purpose
|
|
15
15
|
|
|
16
16
|
The single dismissible label chip. Badge is the static status/metadata token; Pills is the
|
|
17
|
-
filter cluster; Status is the dot indicator; Tag is the one
|
|
18
|
-
|
|
17
|
+
selectable filter cluster; Status is the dot indicator; Tag is the one chip that owns
|
|
18
|
+
its own remove action. Use for active filters, selected values, and removable labels.
|
|
19
|
+
Cardinality rule (F6 brief): one chip with a remove action is a Tag; a row of chips
|
|
20
|
+
with selection state is Pills. Tag claims dismissal, never selection.
|
|
19
21
|
|
|
20
22
|
## Anatomy & slots
|
|
21
23
|
|
|
@@ -34,8 +34,9 @@ A vertical or alternating event timeline for activity feeds, audit logs, and ord
|
|
|
34
34
|
**Internal layout:**
|
|
35
35
|
|
|
36
36
|
- The root renders a flex column. Items are stacked vertically.
|
|
37
|
+
- Rail/connector geometry is shared with Stepper's vertical rail engine (see `stepper.md` and `stepper.css` `.dsx-stepper--vertical .dsx-stepper__item:not(:last-child)::after`): the connector is item-local, anchored at the marker bottom (`top` = marker size) and stretched to the item bottom (`bottom: 0`), centered on the dot column via `calc(marker-size / 2 - rail-width / 2)` with size-aware overrides per `data-size`. Timeline keeps its own `Connector` DOM node (Stepper draws via `::after` and hides its `Separator`) and its own rail width (`--dsx-border-width-sm`); the geometry recipe is shared, the slot API and ARIA roles stay distinct. The two components are never merged: Stepper answers "where am I in a process" (`role="progressbar"`), Timeline answers "what happened, when" (per-event states, no progress semantics). Precedent: antd Timeline renders `<Steps type="dot">`.
|
|
37
38
|
- In the `left` variant (the default), every item is a flex row with `gap: var(--dsx-space-lg)`. The marker sits on the left rail; the content fills the remaining space.
|
|
38
|
-
- In the `alternate` variant, every item is a
|
|
39
|
+
- In the `alternate` variant, every item is a three-column grid (`minmax(0, 1fr) auto minmax(0, 1fr)`): the `1fr` tracks exist without any spacer element, so equal `fr` shares keep the marker exactly on the dot column in both parities. Odd items place content in column 1 (`text-align: right`), even items in column 3; the marker is always column 2. Placement is explicit (`grid-column` + `grid-row: 1`), so DOM order is irrelevant. The connector runs down the item's vertical centerline (`left: calc(50% - rail-width / 2)`), which is the marker center. DOM order stays Marker-then-Content by convention; the split is pure CSS, so no prop or slot change was needed.
|
|
39
40
|
- `Timeline.Marker` is a square (`var(--dsx-size-md)`) fully rounded element with a 1px outline. It accepts arbitrary children, typically an `Icon` or a number from the consumer.
|
|
40
41
|
- `Timeline.Connector` is an absolutely positioned vertical bar inside the item. It begins at the bottom of the marker and extends to the bottom of the item. Width is `var(--dsx-border-width-sm)` and color is `var(--dsx-color-outline-variant)`. The active state recolors it to `var(--dsx-color-primary)`.
|
|
41
42
|
- `Timeline.Content` is the consumer's content surface. The CSS file defines helper classes `dsx-timeline__content-title`, `dsx-timeline__content-description`, and `dsx-timeline__content-time` for the typical title/body/time pattern, but the consumer is free to compose any children.
|
|
@@ -95,6 +96,8 @@ These three slots accept only `asChild` plus the standard HTML attribute surface
|
|
|
95
96
|
|
|
96
97
|
- The component does not write `@media` rules. Responsive layout comes from the layout primitives' responsive classes when the consumer wraps the timeline in a responsive shell.
|
|
97
98
|
|
|
99
|
+
- Items and content can shrink to the container; long identifiers wrap. Alternate tracks have a zero minimum so content cannot displace the centered marker rail. Error connectors use the same error token as their marker.
|
|
100
|
+
|
|
98
101
|
**Reduced motion:**
|
|
99
102
|
|
|
100
103
|
- The component is static. No motion is applied.
|
|
@@ -174,7 +177,7 @@ The component has no motion. It is a static read surface.
|
|
|
174
177
|
|
|
175
178
|
**Variant story:**
|
|
176
179
|
|
|
177
|
-
- Renders one `Timeline` with `variant="left"` and one with `variant="alternate"
|
|
180
|
+
- Renders one `Timeline` with `variant="left"` (deployment feed) and one with `variant="alternate"` (centered spine, three items covering odd/even parity). Asserts the `dsx-timeline--left` and `dsx-timeline--alternate` classes.
|
|
178
181
|
|
|
179
182
|
**State story:**
|
|
180
183
|
|
|
@@ -186,7 +189,7 @@ The component has no motion. It is a static read surface.
|
|
|
186
189
|
|
|
187
190
|
**Token story:**
|
|
188
191
|
|
|
189
|
-
- Renders the default timeline inside a `Theme` wrapper with `accentColor="
|
|
192
|
+
- Renders the default timeline inside a `Theme` wrapper with `accentColor="rift"` and `accentColor="warp"`. Asserts the `data-accent-color` attribute is forwarded, but the active marker color tracks `--dsx-color-primary` and is not affected by the accent token.
|
|
190
193
|
|
|
191
194
|
**A11y story:**
|
|
192
195
|
|
|
@@ -204,6 +207,7 @@ The component has no motion. It is a static read surface.
|
|
|
204
207
|
**Composes from:**
|
|
205
208
|
|
|
206
209
|
- `@radix-ui/react-slot`: enables `asChild` on the root and on every named slot.
|
|
210
|
+
- Stepper's vertical rail engine (CSS recipe only, no component dependency): Timeline reuses the dot-column centering calc, the marker-bottom anchor, and the size-aware offsets. The two components share geometry, never API or ARIA roles.
|
|
207
211
|
|
|
208
212
|
**Used by:**
|
|
209
213
|
|
|
@@ -223,8 +227,8 @@ The component has no motion. It is a static read surface.
|
|
|
223
227
|
|
|
224
228
|
1. **Content block layout collapsed; title, description, time rendered run-together.** The `.dsx-timeline__content` slot had no `display`, `flex-direction`, or `gap`, causing its children (the title `<span>`, description `<span>`, and time `<span>`, typically rendered bare by consumers) to render as inline siblings on a single line ("Project createdInitial scaffold2 hours ago"). FIXED 2026-07-03: added `display: flex; flex-direction: column; gap: var(--dsx-space-2xs);` to `.dsx-timeline__content`, plus `flex: 1; padding-bottom: var(--dsx-space-lg);` to preserve the item gap semantics and support the connector's absolute positioning.
|
|
225
229
|
|
|
226
|
-
2. **Alternate variant had no CSS implementation; items never alternated.** The `variant="alternate"` prop def wrote the `dsx-timeline--alternate` modifier class on the root, but the CSS file contained no rules targeting that modifier — the layout was identical to the `left` variant. FIXED 2026-07-03: added per-item zigzag rules for the `alternate` variant: even-indexed items get `flex-direction: row-reverse` (marker on the right), `text-align: right` on content, and the connector repositioned from `left` to `right` with size-aware recalculation per `data-size` (sm/md/lg).
|
|
230
|
+
2. **Alternate variant had no CSS implementation; items never alternated.** The `variant="alternate"` prop def wrote the `dsx-timeline--alternate` modifier class on the root, but the CSS file contained no rules targeting that modifier — the layout was identical to the `left` variant. FIXED 2026-07-03: added per-item zigzag rules for the `alternate` variant: even-indexed items get `flex-direction: row-reverse` (marker on the right), `text-align: right` on content, and the connector repositioned from `left` to `right` with size-aware recalculation per `data-size` (sm/md/lg). REDESIGNED 2026-09-21 (F12 brief §4): replaced the per-item flip with a centered-spine recipe shared with Stepper's vertical rail engine — each item is a three-column flex row (half | marker | half) with the `::before` pseudo as the empty half, content split on parity (odd left, even right), and the connector on the item centerline. The flip is obsolete; the spine is the contract.
|
|
227
231
|
|
|
228
232
|
3. **Connector appeared missing but was symptom of layout bug, not a separate defect.** The connector (an absolutely positioned vertical bar inside each item) appeared invisible or extremely short (~18px) in rendered demos. Investigation revealed the connector itself was present with correct background color and dimensions; the visual symptom was a side effect of the spacing bug (#1 above). When `.dsx-timeline__content` had no flex layout, its children ran together in ~20px of vertical space, making the item itself tiny, and the connector's absolute `top: marker-bottom; bottom: 0` was proportionally tiny too. Fixing the spacing bug (adding the flex column layout) expanded the item's natural height, and the connector automatically became visible. No separate CSS fix was needed for the connector; it was never the root cause.
|
|
229
233
|
|
|
230
|
-
4. **Playground fixture uses invalid state values.** The registry fixture at `apps/playground/lib/registry/data.tsx` (Timeline entry, "Default" story) passes `state="complete"` and `state="pending"` to `TimelineItem`, but `timeline.props.ts`'s `timelineItemPropDefs.state` enum only allows `'default' | 'active' | 'error' | 'disabled'`. Invalid enum values silently fall through to the default modifier class (no visible error).
|
|
234
|
+
4. **Playground fixture uses invalid state values.** The registry fixture at `apps/playground/lib/registry/data.tsx` (Timeline entry, "Default" story) passes `state="complete"` and `state="pending"` to `TimelineItem`, but `timeline.props.ts`'s `timelineItemPropDefs.state` enum only allows `'default' | 'active' | 'error' | 'disabled'`. Invalid enum values silently fall through to the default modifier class (no visible error). FIXED 2026-09-21: fixture rewritten with valid states only — a timestamped deployment feed (left rail), a three-item alternate story covering odd/even parity, an error + disabled story, and a token story over `rift`/`warp`/`ray`.
|
|
@@ -174,7 +174,7 @@ Every CSS value the component paints is a `var(--dsx-*)` token.
|
|
|
174
174
|
| Toast background | `var(--dsx-color-surface)` | Resting toast surface. |
|
|
175
175
|
| Toast radius | `var(--dsx-rounded-md)` | Toast corner roundness. |
|
|
176
176
|
| Toast border | `var(--dsx-border-width-sm) solid var(--dsx-color-outline)` | Toast edge. |
|
|
177
|
-
| Toast shadow | `var(--dsx-shadow-elevation-
|
|
177
|
+
| Toast shadow | `var(--dsx-shadow-elevation-5)` | Spotlight: below dialogs, above all menus (B4 Q3). |
|
|
178
178
|
| Destructive background | `var(--dsx-color-error-container)` | Destructive variant surface. |
|
|
179
179
|
| Destructive border | `var(--dsx-color-error)` | Destructive variant edge. |
|
|
180
180
|
| Destructive text | `var(--dsx-color-on-error-container)` | Destructive variant text. |
|
|
@@ -14,7 +14,7 @@ depends_on:
|
|
|
14
14
|
|
|
15
15
|
## Purpose
|
|
16
16
|
|
|
17
|
-
A coordinated cluster of toggle buttons backed by `@radix-ui/react-toggle-group`. Items can run in single or multiple selection, share a single border with collapsed inner radii, and lift the focused child above its siblings. The component is the right fit for view selectors and formatting clusters; for single-select with a sliding indicator use `SegmentedControl` instead.
|
|
17
|
+
A coordinated cluster of toggle buttons backed by `@radix-ui/react-toggle-group`. Items can run in single or multiple selection, share a single border with collapsed inner radii, and lift the focused child above its siblings. The component is the right fit for view selectors and formatting clusters; for single-select with a sliding indicator use `SegmentedControl` instead. Boundary rule (F6 brief): ToggleGroup is frameless toolbar buttons with no thumb and no container fill — the moment a design needs a sliding indicator, it is a SegmentedControl, not a styled ToggleGroup.
|
|
18
18
|
|
|
19
19
|
## Anatomy & slots
|
|
20
20
|
|
|
@@ -79,6 +79,7 @@ Rules:
|
|
|
79
79
|
**Responsive behavior:**
|
|
80
80
|
|
|
81
81
|
- The component does not write `@media` rules. None of its prop defs are `responsive: true`. Size and variant are single-value only.
|
|
82
|
+
- 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 item (proven 2026-09-23 in a definite 272px column: group caps at 272, full content reachable by touch scroll).
|
|
82
83
|
|
|
83
84
|
**Reduced motion:**
|
|
84
85
|
|
package/dist/fonts.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@100..800&family=Science+Gothic:CTRS,
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@100..800&family=Science+Gothic:CTRS,wdth,wght@0..75,50..200,100..900&display=swap&subset=cyrillic,latin');
|
|
@@ -27,7 +27,7 @@ const tokens = {
|
|
|
27
27
|
"sheet-width-sm": "320px",
|
|
28
28
|
"sheet-width-lg": "480px",
|
|
29
29
|
"chart-min-height": "240px",
|
|
30
|
-
"data-table-empty-height": "
|
|
30
|
+
"data-table-empty-height": "192px",
|
|
31
31
|
"sidebar-width": "272px",
|
|
32
32
|
"sidebar-width-collapsed": "72px",
|
|
33
33
|
"calendar-width": "320px",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/generated/tokens.ts"],
|
|
4
|
-
"sourcesContent": ["// Auto-generated by Style Dictionary \u2014 do not edit manually.\nexport const tokens: Record<string, string | number> = {\n 'sheet-min-height': \"80vh\",\n 'sheet-width': \"380px\",\n 'sheet-width-sm': \"320px\",\n 'sheet-width-lg': \"480px\",\n 'chart-min-height': \"240px\",\n 'data-table-empty-height': \"
|
|
4
|
+
"sourcesContent": ["// Auto-generated by Style Dictionary \u2014 do not edit manually.\nexport const tokens: Record<string, string | number> = {\n 'sheet-min-height': \"80vh\",\n 'sheet-width': \"380px\",\n 'sheet-width-sm': \"320px\",\n 'sheet-width-lg': \"480px\",\n 'chart-min-height': \"240px\",\n 'data-table-empty-height': \"192px\",\n 'sidebar-width': \"272px\",\n 'sidebar-width-collapsed': \"72px\",\n 'calendar-width': \"320px\",\n 'combobox-content-width': \"320px\",\n 'combobox-list-max-height': \"300px\",\n 'dialog-content-width': \"560px\",\n 'dialog-content-width-lg': \"720px\",\n 'drawer-min-height': \"30vh\",\n 'drawer-min-height-sm': \"24vh\",\n 'drawer-min-height-lg': \"50vh\",\n 'drawer-min-height-full': \"100vh\",\n 'rich-text-editor-min-height': \"220px\",\n 'empty-state-max-width': \"600px\",\n 'empty-state-min-height': \"400px\",\n 'input-otp-slot-width': \"36px\",\n 'input-otp-slot-height': \"44px\",\n 'input-otp-separator-width': \"12px\",\n 'kbd-font-size-sm': \"11px\",\n 'kbd-min-width': \"1.75em\",\n 'kbd-padding-block-sm': \"2px\",\n 'kbd-padding-inline-sm': \"5px\",\n 'kbd-padding-block-md': \"3px\",\n 'kbd-padding-inline-md': \"7px\",\n 'navigation-menu-indicator-size': \"10px\",\n 'notification-center-badge-font-size': \"10px\",\n 'notification-center-panel-width': \"320px\",\n 'notification-center-list-max-height': \"400px\",\n 'notification-center-item-dot-offset': \"6px\",\n 'resizable-grip-radius': \"2px\",\n 'slider-min-width': \"160px\",\n 'slider-axis-length': \"160px\",\n 'switch-width': \"44px\",\n 'switch-height': \"24px\",\n 'switch-width-sm': \"36px\",\n 'switch-height-sm': \"20px\",\n 'switch-thumb-size': \"20px\",\n 'switch-thumb-size-sm': \"16px\",\n 'switch-thumb-translate': \"20px\",\n 'switch-thumb-translate-sm': \"16px\",\n 'textarea-min-height-base': \"80px\",\n 'tag-font-size-sm': \"11px\",\n 'toast-viewport-width': \"390px\",\n 'tooltip-max-width': \"200px\",\n 'size-dialog-sm-width': \"400px\",\n 'size-menu-min-width': \"180px\",\n 'size-popover-min-width': \"200px\",\n 'size-popover-max-width': \"380px\",\n 'size-scroll-thumb-size': \"6px\",\n 'size-color-picker-width': \"320px\",\n 'size-field-label-max': \"160px\",\n 'size-field-label-min': \"80px\",\n 'size-xs': \"16px\",\n 'size-sm': \"20px\",\n 'size-md': \"24px\",\n 'size-lg': \"32px\",\n 'size-xl': \"40px\",\n 'size-2xl': \"48px\",\n 'size-3xl': \"56px\",\n 'size-4xl': \"64px\",\n 'container-max-width': \"1280px\",\n 'motion-duration-fast': \"150ms\",\n 'motion-duration-normal': \"250ms\",\n 'motion-duration-slow': \"350ms\",\n 'motion-duration-spin': \"900ms\",\n 'motion-duration-blink': \"1000ms\",\n 'motion-duration-shimmer': \"1400ms\",\n 'motion-easing-in-out': \"cubic-bezier(0.4, 0, 0.2, 1)\",\n 'motion-easing-out': \"cubic-bezier(0, 0, 0.2, 1)\",\n 'motion-easing-in': \"cubic-bezier(0.4, 0, 1, 1)\",\n 'motion-easing-standard': \"cubic-bezier(0.2, 0, 0, 1)\",\n 'motion-easing-spring': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n 'motion-easing-emphasized': \"cubic-bezier(0.16, 1, 0.3, 1)\",\n 'opacity-disabled': \"0.38\",\n 'opacity-hover': \"0.08\",\n 'opacity-pressed': \"0.16\",\n 'opacity-subtle': \"0.85\",\n 'opacity-muted': \"0.4\",\n 'opacity-faded': \"0.6\",\n 'opacity-subtle-hover': \"0.8\",\n 'space-0': \"0px\",\n 'space-1': \"4px\",\n 'space-2': \"8px\",\n 'space-3': \"12px\",\n 'space-4': \"16px\",\n 'space-5': \"20px\",\n 'space-6': \"24px\",\n 'space-7': \"28px\",\n 'space-8': \"32px\",\n 'space-9': \"36px\",\n 'space-unit': \"4px\",\n 'space-xs': \"4px\",\n 'space-sm': \"8px\",\n 'space-md': \"16px\",\n 'space-lg': \"24px\",\n 'space-xl': \"32px\",\n 'space-2xl': \"48px\",\n 'space-3xl': \"64px\",\n 'space-margin': \"24px\",\n 'space-gutter': \"24px\",\n 'border-width-none': \"0px\",\n 'border-width-xs': \"0.5px\",\n 'border-width-sm': \"1px\",\n 'border-width-md': \"1.5px\",\n 'border-width-lg': \"2px\",\n 'border-width-xl': \"3px\",\n 'radius-none': \"0px\",\n 'radius-sm': \"4px\",\n 'radius-md': \"8px\",\n 'radius-lg': \"12px\",\n 'radius-xl': \"16px\",\n 'radius-2xl': \"24px\",\n 'radius-full': \"9999px\",\n 'typography-display-large': \"[object Object]\",\n 'typography-display-medium': \"[object Object]\",\n 'typography-headline-large': \"[object Object]\",\n 'typography-headline-medium': \"[object Object]\",\n 'typography-body-large': \"[object Object]\",\n 'typography-body-medium': \"[object Object]\",\n 'typography-body-small': \"[object Object]\",\n 'typography-label-large': \"[object Object]\",\n 'typography-label-medium': \"[object Object]\",\n 'typography-label-small': \"[object Object]\",\n 'typography-code': \"[object Object]\",\n 'z-index-elevated': \"1\",\n 'z-index-elevated-strong': \"2\",\n 'z-index-overlay-local': \"10\",\n 'z-index-dropdown': \"50\",\n 'z-index-sticky': \"60\",\n 'z-index-fixed': \"70\",\n 'z-index-overlay': \"80\",\n 'z-index-modal': \"90\",\n 'z-index-toast': \"100\",\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/generated/tokens.js
CHANGED
|
@@ -4,7 +4,7 @@ const tokens = {
|
|
|
4
4
|
"sheet-width-sm": "320px",
|
|
5
5
|
"sheet-width-lg": "480px",
|
|
6
6
|
"chart-min-height": "240px",
|
|
7
|
-
"data-table-empty-height": "
|
|
7
|
+
"data-table-empty-height": "192px",
|
|
8
8
|
"sidebar-width": "272px",
|
|
9
9
|
"sidebar-width-collapsed": "72px",
|
|
10
10
|
"calendar-width": "320px",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/generated/tokens.ts"],
|
|
4
|
-
"sourcesContent": ["// Auto-generated by Style Dictionary \u2014 do not edit manually.\nexport const tokens: Record<string, string | number> = {\n 'sheet-min-height': \"80vh\",\n 'sheet-width': \"380px\",\n 'sheet-width-sm': \"320px\",\n 'sheet-width-lg': \"480px\",\n 'chart-min-height': \"240px\",\n 'data-table-empty-height': \"
|
|
4
|
+
"sourcesContent": ["// Auto-generated by Style Dictionary \u2014 do not edit manually.\nexport const tokens: Record<string, string | number> = {\n 'sheet-min-height': \"80vh\",\n 'sheet-width': \"380px\",\n 'sheet-width-sm': \"320px\",\n 'sheet-width-lg': \"480px\",\n 'chart-min-height': \"240px\",\n 'data-table-empty-height': \"192px\",\n 'sidebar-width': \"272px\",\n 'sidebar-width-collapsed': \"72px\",\n 'calendar-width': \"320px\",\n 'combobox-content-width': \"320px\",\n 'combobox-list-max-height': \"300px\",\n 'dialog-content-width': \"560px\",\n 'dialog-content-width-lg': \"720px\",\n 'drawer-min-height': \"30vh\",\n 'drawer-min-height-sm': \"24vh\",\n 'drawer-min-height-lg': \"50vh\",\n 'drawer-min-height-full': \"100vh\",\n 'rich-text-editor-min-height': \"220px\",\n 'empty-state-max-width': \"600px\",\n 'empty-state-min-height': \"400px\",\n 'input-otp-slot-width': \"36px\",\n 'input-otp-slot-height': \"44px\",\n 'input-otp-separator-width': \"12px\",\n 'kbd-font-size-sm': \"11px\",\n 'kbd-min-width': \"1.75em\",\n 'kbd-padding-block-sm': \"2px\",\n 'kbd-padding-inline-sm': \"5px\",\n 'kbd-padding-block-md': \"3px\",\n 'kbd-padding-inline-md': \"7px\",\n 'navigation-menu-indicator-size': \"10px\",\n 'notification-center-badge-font-size': \"10px\",\n 'notification-center-panel-width': \"320px\",\n 'notification-center-list-max-height': \"400px\",\n 'notification-center-item-dot-offset': \"6px\",\n 'resizable-grip-radius': \"2px\",\n 'slider-min-width': \"160px\",\n 'slider-axis-length': \"160px\",\n 'switch-width': \"44px\",\n 'switch-height': \"24px\",\n 'switch-width-sm': \"36px\",\n 'switch-height-sm': \"20px\",\n 'switch-thumb-size': \"20px\",\n 'switch-thumb-size-sm': \"16px\",\n 'switch-thumb-translate': \"20px\",\n 'switch-thumb-translate-sm': \"16px\",\n 'textarea-min-height-base': \"80px\",\n 'tag-font-size-sm': \"11px\",\n 'toast-viewport-width': \"390px\",\n 'tooltip-max-width': \"200px\",\n 'size-dialog-sm-width': \"400px\",\n 'size-menu-min-width': \"180px\",\n 'size-popover-min-width': \"200px\",\n 'size-popover-max-width': \"380px\",\n 'size-scroll-thumb-size': \"6px\",\n 'size-color-picker-width': \"320px\",\n 'size-field-label-max': \"160px\",\n 'size-field-label-min': \"80px\",\n 'size-xs': \"16px\",\n 'size-sm': \"20px\",\n 'size-md': \"24px\",\n 'size-lg': \"32px\",\n 'size-xl': \"40px\",\n 'size-2xl': \"48px\",\n 'size-3xl': \"56px\",\n 'size-4xl': \"64px\",\n 'container-max-width': \"1280px\",\n 'motion-duration-fast': \"150ms\",\n 'motion-duration-normal': \"250ms\",\n 'motion-duration-slow': \"350ms\",\n 'motion-duration-spin': \"900ms\",\n 'motion-duration-blink': \"1000ms\",\n 'motion-duration-shimmer': \"1400ms\",\n 'motion-easing-in-out': \"cubic-bezier(0.4, 0, 0.2, 1)\",\n 'motion-easing-out': \"cubic-bezier(0, 0, 0.2, 1)\",\n 'motion-easing-in': \"cubic-bezier(0.4, 0, 1, 1)\",\n 'motion-easing-standard': \"cubic-bezier(0.2, 0, 0, 1)\",\n 'motion-easing-spring': \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n 'motion-easing-emphasized': \"cubic-bezier(0.16, 1, 0.3, 1)\",\n 'opacity-disabled': \"0.38\",\n 'opacity-hover': \"0.08\",\n 'opacity-pressed': \"0.16\",\n 'opacity-subtle': \"0.85\",\n 'opacity-muted': \"0.4\",\n 'opacity-faded': \"0.6\",\n 'opacity-subtle-hover': \"0.8\",\n 'space-0': \"0px\",\n 'space-1': \"4px\",\n 'space-2': \"8px\",\n 'space-3': \"12px\",\n 'space-4': \"16px\",\n 'space-5': \"20px\",\n 'space-6': \"24px\",\n 'space-7': \"28px\",\n 'space-8': \"32px\",\n 'space-9': \"36px\",\n 'space-unit': \"4px\",\n 'space-xs': \"4px\",\n 'space-sm': \"8px\",\n 'space-md': \"16px\",\n 'space-lg': \"24px\",\n 'space-xl': \"32px\",\n 'space-2xl': \"48px\",\n 'space-3xl': \"64px\",\n 'space-margin': \"24px\",\n 'space-gutter': \"24px\",\n 'border-width-none': \"0px\",\n 'border-width-xs': \"0.5px\",\n 'border-width-sm': \"1px\",\n 'border-width-md': \"1.5px\",\n 'border-width-lg': \"2px\",\n 'border-width-xl': \"3px\",\n 'radius-none': \"0px\",\n 'radius-sm': \"4px\",\n 'radius-md': \"8px\",\n 'radius-lg': \"12px\",\n 'radius-xl': \"16px\",\n 'radius-2xl': \"24px\",\n 'radius-full': \"9999px\",\n 'typography-display-large': \"[object Object]\",\n 'typography-display-medium': \"[object Object]\",\n 'typography-headline-large': \"[object Object]\",\n 'typography-headline-medium': \"[object Object]\",\n 'typography-body-large': \"[object Object]\",\n 'typography-body-medium': \"[object Object]\",\n 'typography-body-small': \"[object Object]\",\n 'typography-label-large': \"[object Object]\",\n 'typography-label-medium': \"[object Object]\",\n 'typography-label-small': \"[object Object]\",\n 'typography-code': \"[object Object]\",\n 'z-index-elevated': \"1\",\n 'z-index-elevated-strong': \"2\",\n 'z-index-overlay-local': \"10\",\n 'z-index-dropdown': \"50\",\n 'z-index-sticky': \"60\",\n 'z-index-fixed': \"70\",\n 'z-index-overlay': \"80\",\n 'z-index-modal': \"90\",\n 'z-index-toast': \"100\",\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/motion.css
CHANGED
|
@@ -372,10 +372,23 @@
|
|
|
372
372
|
day zero-size layout bug fixed on /motion's demo page — even rendered at
|
|
373
373
|
its correct size, the dots themselves were too faint to read on a real
|
|
374
374
|
screen, not just in the demo. */
|
|
375
|
+
/* 2026-09-30 seam + tempo fix (direct feedback: "no smooth movings...
|
|
376
|
+
40s before the movement, feels like lagging"). Two stacked causes:
|
|
377
|
+
60px over 40s is 1.5px/s — below perception — and ease-in-out parks
|
|
378
|
+
velocity near zero at both ends of every 40s leg, so for seconds at a
|
|
379
|
+
time literally zero pixels moved. Now a true seamless loop instead of
|
|
380
|
+
an alternate: the 8-dot field is a 120px tile (background-repeat),
|
|
381
|
+
the layer is oversized one tile top+bottom so travel never exposes a
|
|
382
|
+
gap, and the keyframe translates exactly one tile period — end state
|
|
383
|
+
== start state, so linear infinite has no snap point at all. 120px
|
|
384
|
+
per 12s (10px/s) reads as alive-but-ambient; no dot sits on a tile
|
|
385
|
+
boundary (min 15% / max 90% of 120px), so repeats don't clip. */
|
|
375
386
|
.dsx-motion-starfield::before {
|
|
376
387
|
content: '';
|
|
377
388
|
position: absolute;
|
|
378
|
-
inset: 0;
|
|
389
|
+
inset: -120px 0;
|
|
390
|
+
background-size: 100% 120px;
|
|
391
|
+
background-repeat: repeat;
|
|
379
392
|
background-image: radial-gradient(2px 2px at 12% 22%, var(--dsx-color-on-surface), transparent),
|
|
380
393
|
radial-gradient(2.5px 2.5px at 32% 68%, var(--dsx-color-on-surface), transparent),
|
|
381
394
|
radial-gradient(1.5px 1.5px at 52% 15%, var(--dsx-color-on-surface), transparent),
|
|
@@ -385,7 +398,7 @@
|
|
|
385
398
|
radial-gradient(1.5px 1.5px at 8% 85%, var(--dsx-color-on-surface), transparent),
|
|
386
399
|
radial-gradient(2.5px 2.5px at 45% 90%, var(--dsx-color-on-surface), transparent);
|
|
387
400
|
opacity: 0.4;
|
|
388
|
-
animation: dsx-motion-starfield-drift
|
|
401
|
+
animation: dsx-motion-starfield-drift 12s linear infinite;
|
|
389
402
|
pointer-events: none;
|
|
390
403
|
z-index: -1;
|
|
391
404
|
}
|
|
@@ -396,7 +409,7 @@
|
|
|
396
409
|
}
|
|
397
410
|
|
|
398
411
|
to {
|
|
399
|
-
transform: translateY(-
|
|
412
|
+
transform: translateY(-120px);
|
|
400
413
|
}
|
|
401
414
|
}
|
|
402
415
|
|
|
@@ -469,6 +482,8 @@
|
|
|
469
482
|
.dsx-motion-scan,
|
|
470
483
|
.dsx-motion-glow,
|
|
471
484
|
.dsx-motion-drift,
|
|
485
|
+
.dsx-motion-starfield::before,
|
|
486
|
+
.dsx-motion-aurora::after,
|
|
472
487
|
.dsx-motion-twinkle {
|
|
473
488
|
animation: none !important;
|
|
474
489
|
opacity: 1 !important;
|