@drivenets/design-system 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/components/ds-alert-banner/ds-alert-banner.d.cts +5 -5
- package/dist/components/ds-alert-banner/ds-alert-banner.d.cts.map +1 -1
- package/dist/components/ds-alert-banner/ds-alert-banner.d.ts +5 -5
- package/dist/components/ds-alert-banner/ds-alert-banner.types.d.cts.map +1 -1
- package/dist/components/ds-button/ds-button.d.cts +2 -2
- package/dist/components/ds-button/ds-button.d.ts +2 -2
- package/dist/components/ds-button/ds-button.d.ts.map +1 -1
- package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.cjs +23 -24
- package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js +23 -24
- package/dist/components/ds-button/versions/ds-button-legacy/ds-button-legacy.js.map +1 -1
- package/dist/components/ds-button/versions/ds-button-new/ds-button-new.cjs +24 -25
- package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js +24 -25
- package/dist/components/ds-button/versions/ds-button-new/ds-button-new.js.map +1 -1
- package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.cjs +1 -0
- package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.js +1 -0
- package/dist/components/ds-chip-group/hooks/use-chip-row-calculation.js.map +1 -1
- package/dist/components/ds-confirmation/ds-confirmation.d.cts +8 -8
- package/dist/components/ds-confirmation/ds-confirmation.d.ts +8 -8
- package/dist/components/ds-date-input/ds-date-input.d.cts +2 -2
- package/dist/components/ds-date-input/ds-date-input.d.cts.map +1 -1
- package/dist/components/ds-date-input/ds-date-input.d.ts +2 -2
- package/dist/components/ds-date-input/ds-date-input.module.cjs +22 -22
- package/dist/components/ds-date-input/ds-date-input.module.js +22 -22
- package/dist/components/ds-date-input/ds-date-input.module.js.map +1 -1
- package/dist/components/ds-date-input/ds-date-input.utils.cjs +9 -2
- package/dist/components/ds-date-input/ds-date-input.utils.js +9 -2
- package/dist/components/ds-date-input/ds-date-input.utils.js.map +1 -1
- package/dist/components/ds-drawer/ds-drawer.cjs +3 -3
- package/dist/components/ds-drawer/ds-drawer.d.cts +9 -9
- package/dist/components/ds-drawer/ds-drawer.d.cts.map +1 -1
- package/dist/components/ds-drawer/ds-drawer.d.ts +9 -9
- package/dist/components/ds-drawer/ds-drawer.d.ts.map +1 -1
- package/dist/components/ds-drawer/ds-drawer.js +3 -3
- package/dist/components/ds-drawer/ds-drawer.js.map +1 -1
- package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts +1 -1
- package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.cts.map +1 -1
- package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts +1 -1
- package/dist/components/ds-dropdown-menu/ds-dropdown-menu.types.d.ts.map +1 -1
- package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.cts +2 -2
- package/dist/components/ds-expandable-text-input/ds-expandable-text-input.d.ts +2 -2
- package/dist/components/ds-file-upload/utils/format-file-size.cjs +1 -1
- package/dist/components/ds-file-upload/utils/format-file-size.js +1 -1
- package/dist/components/ds-file-upload/utils/format-file-size.js.map +1 -1
- package/dist/components/ds-form-control/ds-form-control.cjs +2 -5
- package/dist/components/ds-form-control/ds-form-control.d.cts +8 -8
- package/dist/components/ds-form-control/ds-form-control.js +2 -5
- package/dist/components/ds-form-control/ds-form-control.js.map +1 -1
- package/dist/components/ds-loader/ds-loader.cjs +60 -0
- package/dist/components/ds-loader/ds-loader.d.cts +15 -0
- package/dist/components/ds-loader/ds-loader.d.cts.map +1 -0
- package/dist/components/ds-loader/ds-loader.d.ts +15 -0
- package/dist/components/ds-loader/ds-loader.d.ts.map +1 -0
- package/dist/components/ds-loader/ds-loader.js +59 -0
- package/dist/components/ds-loader/ds-loader.js.map +1 -0
- package/dist/components/ds-loader/ds-loader.module.cjs +15 -0
- package/dist/components/ds-loader/ds-loader.module.js +15 -0
- package/dist/components/ds-loader/ds-loader.module.js.map +1 -0
- package/dist/components/ds-loader/ds-loader.types.cjs +6 -0
- package/dist/components/ds-loader/ds-loader.types.d.cts +27 -0
- package/dist/components/ds-loader/ds-loader.types.d.cts.map +1 -0
- package/dist/components/ds-loader/ds-loader.types.d.ts +27 -0
- package/dist/components/ds-loader/ds-loader.types.d.ts.map +1 -0
- package/dist/components/ds-loader/ds-loader.types.js +6 -0
- package/dist/components/ds-loader/ds-loader.types.js.map +1 -0
- package/dist/components/ds-loader/index.cjs +2 -0
- package/dist/components/ds-loader/index.d.ts +2 -0
- package/dist/components/ds-loader/index.js +2 -0
- package/dist/components/ds-loader/pulsing-icon.cjs +37 -0
- package/dist/components/ds-loader/pulsing-icon.js +37 -0
- package/dist/components/ds-loader/pulsing-icon.js.map +1 -0
- package/dist/components/ds-loader/spinner-icon.cjs +74 -0
- package/dist/components/ds-loader/spinner-icon.js +74 -0
- package/dist/components/ds-loader/spinner-icon.js.map +1 -0
- package/dist/components/ds-modal/ds-modal.cjs +2 -2
- package/dist/components/ds-modal/ds-modal.d.cts +8 -8
- package/dist/components/ds-modal/ds-modal.d.cts.map +1 -1
- package/dist/components/ds-modal/ds-modal.d.ts +8 -8
- package/dist/components/ds-modal/ds-modal.d.ts.map +1 -1
- package/dist/components/ds-modal/ds-modal.js +2 -2
- package/dist/components/ds-modal/ds-modal.js.map +1 -1
- package/dist/components/ds-panel/ds-panel.d.cts +2 -2
- package/dist/components/ds-panel/ds-panel.d.ts +2 -2
- package/dist/components/ds-select/ds-select.cjs +1 -1
- package/dist/components/ds-select/ds-select.d.cts +2 -2
- package/dist/components/ds-select/ds-select.d.ts +2 -2
- package/dist/components/ds-select/ds-select.js +1 -1
- package/dist/components/ds-select/ds-select.js.map +1 -1
- package/dist/components/ds-skeleton/ds-skeleton-circle.cjs +59 -0
- package/dist/components/ds-skeleton/ds-skeleton-circle.d.cts +18 -0
- package/dist/components/ds-skeleton/ds-skeleton-circle.d.cts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton-circle.d.ts +18 -0
- package/dist/components/ds-skeleton/ds-skeleton-circle.d.ts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton-circle.js +58 -0
- package/dist/components/ds-skeleton/ds-skeleton-circle.js.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton-rect.cjs +61 -0
- package/dist/components/ds-skeleton/ds-skeleton-rect.d.cts +18 -0
- package/dist/components/ds-skeleton/ds-skeleton-rect.d.cts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton-rect.d.ts +18 -0
- package/dist/components/ds-skeleton/ds-skeleton-rect.d.ts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton-rect.js +60 -0
- package/dist/components/ds-skeleton/ds-skeleton-rect.js.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton-text.cjs +91 -0
- package/dist/components/ds-skeleton/ds-skeleton-text.d.cts +21 -0
- package/dist/components/ds-skeleton/ds-skeleton-text.d.cts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton-text.d.ts +21 -0
- package/dist/components/ds-skeleton/ds-skeleton-text.d.ts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton-text.js +90 -0
- package/dist/components/ds-skeleton/ds-skeleton-text.js.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton.cjs +13 -0
- package/dist/components/ds-skeleton/ds-skeleton.config.cjs +62 -0
- package/dist/components/ds-skeleton/ds-skeleton.config.js +59 -0
- package/dist/components/ds-skeleton/ds-skeleton.config.js.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton.d.cts +32 -0
- package/dist/components/ds-skeleton/ds-skeleton.d.cts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton.d.ts +32 -0
- package/dist/components/ds-skeleton/ds-skeleton.d.ts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton.js +14 -0
- package/dist/components/ds-skeleton/ds-skeleton.js.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton.module.cjs +15 -0
- package/dist/components/ds-skeleton/ds-skeleton.module.js +15 -0
- package/dist/components/ds-skeleton/ds-skeleton.module.js.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton.types.cjs +8 -0
- package/dist/components/ds-skeleton/ds-skeleton.types.d.cts +91 -0
- package/dist/components/ds-skeleton/ds-skeleton.types.d.cts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton.types.d.ts +93 -0
- package/dist/components/ds-skeleton/ds-skeleton.types.d.ts.map +1 -0
- package/dist/components/ds-skeleton/ds-skeleton.types.js +7 -0
- package/dist/components/ds-skeleton/ds-skeleton.types.js.map +1 -0
- package/dist/components/ds-skeleton/index.cjs +5 -0
- package/dist/components/ds-skeleton/index.d.ts +5 -0
- package/dist/components/ds-skeleton/index.js +5 -0
- package/dist/components/ds-smart-tabs/ds-smart-tabs.d.cts +2 -2
- package/dist/components/ds-smart-tabs/ds-smart-tabs.d.ts +2 -2
- package/dist/components/ds-spinner/ds-spinner.cjs +43 -45
- package/dist/components/ds-spinner/ds-spinner.js +43 -45
- package/dist/components/ds-spinner/ds-spinner.js.map +1 -1
- package/dist/components/ds-stepper/components/ds-step-content.d.cts +2 -2
- package/dist/components/ds-stepper/components/ds-step-content.d.ts +2 -2
- package/dist/components/ds-stepper/components/ds-step-next-button.d.cts +2 -2
- package/dist/components/ds-stepper/components/ds-step-next-button.d.ts +2 -2
- package/dist/components/ds-stepper/components/ds-step.d.cts +2 -2
- package/dist/components/ds-stepper/components/ds-step.d.ts +2 -2
- package/dist/components/ds-stepper/ds-stepper.d.cts +2 -2
- package/dist/components/ds-stepper/ds-stepper.d.ts +2 -2
- package/dist/components/ds-table/components/core-table/core-table.cjs +82 -185
- package/dist/components/ds-table/components/core-table/core-table.js +82 -185
- package/dist/components/ds-table/components/core-table/core-table.js.map +1 -1
- package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.cjs +61 -72
- package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js +61 -72
- package/dist/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.js.map +1 -1
- package/dist/components/ds-table/components/ds-table-row/ds-table-row.cjs +80 -81
- package/dist/components/ds-table/components/ds-table-row/ds-table-row.js +80 -81
- package/dist/components/ds-table/components/ds-table-row/ds-table-row.js.map +1 -1
- package/dist/components/ds-table/ds-table.cjs +3 -3
- package/dist/components/ds-table/ds-table.d.cts +2 -3
- package/dist/components/ds-table/ds-table.d.cts.map +1 -1
- package/dist/components/ds-table/ds-table.d.ts +2 -3
- package/dist/components/ds-table/ds-table.d.ts.map +1 -1
- package/dist/components/ds-table/ds-table.js +3 -3
- package/dist/components/ds-table/ds-table.js.map +1 -1
- package/dist/components/ds-table/ds-table.types.d.cts +0 -4
- package/dist/components/ds-table/ds-table.types.d.cts.map +1 -1
- package/dist/components/ds-table/ds-table.types.d.ts +0 -4
- package/dist/components/ds-table/ds-table.types.d.ts.map +1 -1
- package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.cjs +7 -4
- package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js +7 -4
- package/dist/components/ds-table/filters/adapters/create-dual-range-filter-adapter.js.map +1 -1
- package/dist/components/ds-table/filters/hooks/use-table-filters.cjs +94 -87
- package/dist/components/ds-table/filters/hooks/use-table-filters.js +94 -87
- package/dist/components/ds-table/filters/hooks/use-table-filters.js.map +1 -1
- package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.cjs +37 -0
- package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.js +36 -0
- package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.js.map +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.cjs +9 -0
- package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.js +9 -0
- package/dist/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.js.map +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-content/index.cjs +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-content/index.js +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.cjs +6 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.js +6 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.js.map +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.cjs +41 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.js +40 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.js.map +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.cjs +6 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.js +6 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.js.map +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/index.cjs +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-list/index.js +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.cjs +178 -0
- package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.js +177 -0
- package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.js.map +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.cjs +15 -0
- package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.js +15 -0
- package/dist/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.js.map +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-tab/index.cjs +1 -0
- package/dist/components/ds-tabs/components/ds-tabs-tab/index.js +1 -0
- package/dist/components/ds-tabs/ds-tabs.cjs +71 -0
- package/dist/components/ds-tabs/ds-tabs.d.cts +43 -0
- package/dist/components/ds-tabs/ds-tabs.d.cts.map +1 -0
- package/dist/components/ds-tabs/ds-tabs.d.ts +43 -0
- package/dist/components/ds-tabs/ds-tabs.d.ts.map +1 -0
- package/dist/components/ds-tabs/ds-tabs.js +70 -0
- package/dist/components/ds-tabs/ds-tabs.js.map +1 -0
- package/dist/components/ds-tabs/ds-tabs.module.cjs +6 -0
- package/dist/components/ds-tabs/ds-tabs.module.js +6 -0
- package/dist/components/ds-tabs/ds-tabs.module.js.map +1 -0
- package/dist/components/ds-tabs/ds-tabs.types.d.cts +91 -0
- package/dist/components/ds-tabs/ds-tabs.types.d.cts.map +1 -0
- package/dist/components/ds-tabs/ds-tabs.types.d.ts +92 -0
- package/dist/components/ds-tabs/ds-tabs.types.d.ts.map +1 -0
- package/dist/components/ds-tabs/index.cjs +1 -0
- package/dist/components/ds-tabs/index.d.ts +2 -0
- package/dist/components/ds-tabs/index.js +1 -0
- package/dist/components/ds-tag/ds-tag.d.cts +2 -2
- package/dist/components/ds-tag/ds-tag.d.ts +2 -2
- package/dist/components/ds-tag-filter/ds-tag-filter.d.cts +2 -2
- package/dist/components/ds-tag-filter/ds-tag-filter.d.ts +2 -2
- package/dist/components/ds-toggle/ds-toggle.d.cts +2 -2
- package/dist/components/ds-toggle/ds-toggle.d.ts +2 -2
- package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.cts +5 -5
- package/dist/components/ds-vertical-tabs/ds-vertical-tabs.d.ts +5 -5
- package/dist/index.cjs +20 -0
- package/dist/index.d.cts +12 -3
- package/dist/index.d.ts +16 -4
- package/dist/index.js +12 -1
- package/dist/index.min.css +1 -1
- package/package.json +5 -3
- package/src/components/ds-button/versions/ds-button-legacy/ds-button-legacy.tsx +1 -7
- package/src/components/ds-button/versions/ds-button-new/ds-button-new.tsx +4 -2
- package/src/components/ds-chip-group/hooks/use-chip-row-calculation.ts +5 -0
- package/src/components/ds-date-input/ds-date-input.module.scss +1 -0
- package/src/components/ds-date-input/ds-date-input.utils.ts +16 -2
- package/src/components/ds-drawer/ds-drawer.tsx +4 -1
- package/src/components/ds-dropdown-menu/ds-dropdown-menu.types.tsx +4 -1
- package/src/components/ds-file-upload/utils/format-file-size.ts +1 -1
- package/src/components/ds-form-control/ds-form-control.tsx +9 -2
- package/src/components/ds-loader/ds-loader.module.scss +57 -0
- package/src/components/ds-loader/ds-loader.tsx +18 -0
- package/src/components/ds-loader/ds-loader.types.ts +24 -0
- package/src/components/ds-loader/index.ts +2 -0
- package/src/components/ds-loader/pulsing-icon.tsx +17 -0
- package/src/components/ds-loader/spinner-icon.tsx +37 -0
- package/src/components/ds-modal/ds-modal.tsx +7 -1
- package/src/components/ds-select/ds-select.tsx +1 -1
- package/src/components/ds-skeleton/ds-skeleton-circle.tsx +29 -0
- package/src/components/ds-skeleton/ds-skeleton-rect.tsx +36 -0
- package/src/components/ds-skeleton/ds-skeleton-text.tsx +49 -0
- package/src/components/ds-skeleton/ds-skeleton.config.ts +68 -0
- package/src/components/ds-skeleton/ds-skeleton.module.scss +72 -0
- package/src/components/ds-skeleton/ds-skeleton.tsx +9 -0
- package/src/components/ds-skeleton/ds-skeleton.types.ts +92 -0
- package/src/components/ds-skeleton/index.ts +5 -0
- package/src/components/ds-spinner/ds-spinner.tsx +1 -1
- package/src/components/ds-table/components/core-table/core-table.tsx +16 -16
- package/src/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.tsx +10 -13
- package/src/components/ds-table/components/ds-table-row/ds-table-row.tsx +0 -2
- package/src/components/ds-table/ds-table.tsx +6 -5
- package/src/components/ds-table/ds-table.types.ts +0 -5
- package/src/components/ds-table/filters/adapters/create-dual-range-filter-adapter.tsx +2 -4
- package/src/components/ds-table/filters/hooks/use-table-filters.ts +10 -5
- package/src/components/ds-table/utils/story-data-generator.ts +7 -7
- package/src/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.scss +18 -0
- package/src/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.tsx +12 -0
- package/src/components/ds-tabs/components/ds-tabs-content/index.ts +1 -0
- package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.scss +31 -0
- package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.scss +27 -0
- package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.tsx +14 -0
- package/src/components/ds-tabs/components/ds-tabs-list/index.ts +1 -0
- package/src/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.scss +242 -0
- package/src/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.tsx +130 -0
- package/src/components/ds-tabs/components/ds-tabs-tab/index.ts +1 -0
- package/src/components/ds-tabs/ds-tabs.module.scss +14 -0
- package/src/components/ds-tabs/ds-tabs.tsx +46 -0
- package/src/components/ds-tabs/ds-tabs.types.ts +97 -0
- package/src/components/ds-tabs/index.ts +2 -0
- package/src/index.ts +3 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { CSSProperties, Ref } from 'react';
|
|
2
|
+
import type { DsAvatarSize } from '../ds-avatar';
|
|
3
|
+
import type { SemanticVariant } from '../ds-typography';
|
|
4
|
+
|
|
5
|
+
export const skeletonColorVariants = ['gray', 'blue'] as const;
|
|
6
|
+
export type SkeletonColorVariant = (typeof skeletonColorVariants)[number];
|
|
7
|
+
|
|
8
|
+
export const skeletonRadiusVariants = ['default', 'round'] as const;
|
|
9
|
+
export type SkeletonRadiusVariant = (typeof skeletonRadiusVariants)[number];
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Shared base props for all skeleton components
|
|
13
|
+
*/
|
|
14
|
+
export interface DsSkeletonBaseProps {
|
|
15
|
+
/**
|
|
16
|
+
* Color variant of the skeleton
|
|
17
|
+
* @default 'gray'
|
|
18
|
+
*/
|
|
19
|
+
color?: SkeletonColorVariant;
|
|
20
|
+
/**
|
|
21
|
+
* Additional CSS class names
|
|
22
|
+
*/
|
|
23
|
+
className?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Additional inline styles
|
|
26
|
+
*/
|
|
27
|
+
style?: CSSProperties;
|
|
28
|
+
/**
|
|
29
|
+
* Ref to the skeleton element
|
|
30
|
+
*/
|
|
31
|
+
ref?: Ref<HTMLSpanElement>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Props for DsSkeleton.Text component
|
|
36
|
+
* Typography-based text skeleton with configurable lines
|
|
37
|
+
*/
|
|
38
|
+
export interface DsSkeletonTextProps extends DsSkeletonBaseProps {
|
|
39
|
+
/**
|
|
40
|
+
* Typography variant - determines the height of the skeleton
|
|
41
|
+
* @default 'body-sm-reg'
|
|
42
|
+
*/
|
|
43
|
+
typographyVariant?: SemanticVariant;
|
|
44
|
+
/**
|
|
45
|
+
* Number of lines to render
|
|
46
|
+
* @default 1
|
|
47
|
+
*/
|
|
48
|
+
lines?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Width of skeleton. Last line will have varied width if not specified.
|
|
51
|
+
* Can be a number (px) or string ('50%', '200px')
|
|
52
|
+
* @default '100%' (last line varies between 40-80%)
|
|
53
|
+
*/
|
|
54
|
+
width?: string | number;
|
|
55
|
+
/**
|
|
56
|
+
* Border radius: 'default' (4px), 'round' (pill-shaped), or custom px value
|
|
57
|
+
* @default 'default'
|
|
58
|
+
*/
|
|
59
|
+
radius?: SkeletonRadiusVariant | number;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Props for DsSkeleton.Circle component
|
|
64
|
+
* Circular skeleton for avatars and icons
|
|
65
|
+
*/
|
|
66
|
+
export interface DsSkeletonCircleProps extends DsSkeletonBaseProps {
|
|
67
|
+
/**
|
|
68
|
+
* Size of the circle - matches DsAvatar sizes or custom pixel value
|
|
69
|
+
* @default 'regular'
|
|
70
|
+
*/
|
|
71
|
+
size?: DsAvatarSize | number;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Props for DsSkeleton.Rect component
|
|
76
|
+
* Rectangular skeleton for buttons, images, and custom shapes
|
|
77
|
+
*/
|
|
78
|
+
export interface DsSkeletonRectProps extends DsSkeletonBaseProps {
|
|
79
|
+
/**
|
|
80
|
+
* Width of rectangle. Can be number (px) or string ('50%', '200px')
|
|
81
|
+
*/
|
|
82
|
+
width: string | number;
|
|
83
|
+
/**
|
|
84
|
+
* Height of rectangle. Can be number (px) or string ('50%', '200px')
|
|
85
|
+
*/
|
|
86
|
+
height: string | number;
|
|
87
|
+
/**
|
|
88
|
+
* Border radius: 'default' (4px), 'round' (pill-shaped), or custom px value
|
|
89
|
+
* @default 'default'
|
|
90
|
+
*/
|
|
91
|
+
radius?: SkeletonRadiusVariant | number;
|
|
92
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './ds-skeleton.types';
|
|
2
|
+
export { default as DsSkeleton } from './ds-skeleton';
|
|
3
|
+
export { default as DsSkeletonText } from './ds-skeleton-text';
|
|
4
|
+
export { default as DsSkeletonCircle } from './ds-skeleton-circle';
|
|
5
|
+
export { default as DsSkeletonRect } from './ds-skeleton-rect';
|
|
@@ -26,7 +26,7 @@ const DsSpinner: React.FC<DsSpinnerProps> = ({ size = 'medium', className, style
|
|
|
26
26
|
const strokeDasharray = `${String(0.25 * circumference)} ${String(circumference)}`;
|
|
27
27
|
|
|
28
28
|
return (
|
|
29
|
-
<div className={classNames(styles.spinnerContainer,
|
|
29
|
+
<div className={classNames(styles.spinnerContainer, className)} style={style} {...props}>
|
|
30
30
|
<svg
|
|
31
31
|
className={classNames(styles.progressCircle, styles.spin)}
|
|
32
32
|
width={actualSize}
|
|
@@ -4,8 +4,8 @@ import styles from './core-table.module.scss';
|
|
|
4
4
|
|
|
5
5
|
type TableProps = HTMLAttributes<HTMLTableElement> & { ref?: Ref<HTMLTableElement> };
|
|
6
6
|
|
|
7
|
-
function Table({ className,
|
|
8
|
-
return <table
|
|
7
|
+
function Table({ className, ...props }: TableProps) {
|
|
8
|
+
return <table className={classnames(styles.table, className)} {...props} />;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
Table.displayName = 'Table';
|
|
@@ -14,8 +14,8 @@ type TableHeaderProps = HTMLAttributes<HTMLTableSectionElement> & {
|
|
|
14
14
|
ref?: Ref<HTMLTableSectionElement>;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
function TableHeader(
|
|
18
|
-
return <thead
|
|
17
|
+
function TableHeader(props: TableHeaderProps) {
|
|
18
|
+
return <thead {...props} />;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
TableHeader.displayName = 'TableHeader';
|
|
@@ -24,8 +24,8 @@ type TableBodyProps = HTMLAttributes<HTMLTableSectionElement> & {
|
|
|
24
24
|
ref?: Ref<HTMLTableSectionElement>;
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
function TableBody(
|
|
28
|
-
return <tbody
|
|
27
|
+
function TableBody(props: TableBodyProps) {
|
|
28
|
+
return <tbody {...props} />;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
TableBody.displayName = 'TableBody';
|
|
@@ -34,8 +34,8 @@ type TableFooterProps = HTMLAttributes<HTMLTableSectionElement> & {
|
|
|
34
34
|
ref?: Ref<HTMLTableSectionElement>;
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
function TableFooter({ className,
|
|
38
|
-
return <tfoot
|
|
37
|
+
function TableFooter({ className, ...props }: TableFooterProps) {
|
|
38
|
+
return <tfoot className={classnames(styles.tableFooter, className)} {...props} />;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
TableFooter.displayName = 'TableFooter';
|
|
@@ -44,8 +44,8 @@ type TableRowProps = HTMLAttributes<HTMLTableRowElement> & {
|
|
|
44
44
|
ref?: Ref<HTMLTableRowElement>;
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
-
function TableRow(
|
|
48
|
-
return <tr
|
|
47
|
+
function TableRow(props: TableRowProps) {
|
|
48
|
+
return <tr {...props} />;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
TableRow.displayName = 'TableRow';
|
|
@@ -54,8 +54,8 @@ type TableHeadProps = ThHTMLAttributes<HTMLTableCellElement> & {
|
|
|
54
54
|
ref?: Ref<HTMLTableCellElement>;
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
-
function TableHead({ className,
|
|
58
|
-
return <th
|
|
57
|
+
function TableHead({ className, ...props }: TableHeadProps) {
|
|
58
|
+
return <th className={classnames(styles.tableHead, className)} {...props} />;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
TableHead.displayName = 'TableHead';
|
|
@@ -64,8 +64,8 @@ type TableCellProps = TdHTMLAttributes<HTMLTableCellElement> & {
|
|
|
64
64
|
ref?: Ref<HTMLTableCellElement>;
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
-
function TableCell({ className,
|
|
68
|
-
return <td
|
|
67
|
+
function TableCell({ className, ...props }: TableCellProps) {
|
|
68
|
+
return <td className={classnames(styles.tableCell, className)} {...props} />;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
TableCell.displayName = 'TableCell';
|
|
@@ -74,8 +74,8 @@ type TableCaptionProps = HTMLAttributes<HTMLTableCaptionElement> & {
|
|
|
74
74
|
ref?: Ref<HTMLTableCaptionElement>;
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
-
function TableCaption({ className,
|
|
78
|
-
return <caption
|
|
77
|
+
function TableCaption({ className, ...props }: TableCaptionProps) {
|
|
78
|
+
return <caption className={classnames(styles.tableCaption, className)} {...props} />;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
TableCaption.displayName = 'TableCaption';
|
|
@@ -5,6 +5,7 @@ import { DsButton } from '../../../ds-button';
|
|
|
5
5
|
import { DsIcon } from '../../../ds-icon';
|
|
6
6
|
import styles from './ds-table-bulk-actions.module.scss';
|
|
7
7
|
import type { BulkActionsProps } from './ds-table-bulk-actions.types';
|
|
8
|
+
import { DsTypography } from '../../../ds-typography';
|
|
8
9
|
|
|
9
10
|
const DsTableBulkActions: React.FC<BulkActionsProps> = ({ numSelectedRows, actions, onClearSelection }) => {
|
|
10
11
|
const [isRendered, setIsRendered] = useState(false);
|
|
@@ -31,24 +32,21 @@ const DsTableBulkActions: React.FC<BulkActionsProps> = ({ numSelectedRows, actio
|
|
|
31
32
|
return (
|
|
32
33
|
<div className={classnames(styles.bulkActionsContainer, animationClass)}>
|
|
33
34
|
<div className={styles.selectedCountContainer}>
|
|
34
|
-
<
|
|
35
|
+
<DsTypography variant="heading1" className={styles.selectedCountBadge}>
|
|
36
|
+
{numSelectedRows}
|
|
37
|
+
</DsTypography>
|
|
35
38
|
</div>
|
|
36
39
|
<div className={styles.bulkActionsContent}>
|
|
37
|
-
<
|
|
40
|
+
<DsTypography variant="body-md-semi-bold" className={styles.bulkActionsInfo}>
|
|
41
|
+
Items selected
|
|
42
|
+
</DsTypography>
|
|
38
43
|
|
|
39
44
|
<div className={styles.bulkActionsActions}>
|
|
40
45
|
{actions.map((action, index) => (
|
|
41
|
-
<
|
|
42
|
-
key={index}
|
|
43
|
-
variant="borderless"
|
|
44
|
-
size="small"
|
|
45
|
-
className={styles.actionButton}
|
|
46
|
-
contentClassName={styles.actionButtonContent}
|
|
47
|
-
onClick={action.onClick}
|
|
48
|
-
>
|
|
46
|
+
<button key={index} type="button" className={styles.actionButton} onClick={action.onClick}>
|
|
49
47
|
<DsIcon icon={action.icon} />
|
|
50
|
-
<
|
|
51
|
-
</
|
|
48
|
+
<DsTypography variant="body-xs-md">{action.label}</DsTypography>
|
|
49
|
+
</button>
|
|
52
50
|
))}
|
|
53
51
|
</div>
|
|
54
52
|
|
|
@@ -60,7 +58,6 @@ const DsTableBulkActions: React.FC<BulkActionsProps> = ({ numSelectedRows, actio
|
|
|
60
58
|
onClick={onClearSelection}
|
|
61
59
|
>
|
|
62
60
|
<DsIcon icon="close" />
|
|
63
|
-
<span className={(styles['p-s'], styles.medium)}>Esc</span>
|
|
64
61
|
</DsButton>
|
|
65
62
|
</div>
|
|
66
63
|
</div>
|
|
@@ -50,7 +50,6 @@ const DsTableRow = <TData,>({ ref, row, virtualRow }: DsTableRowProps<TData>) =>
|
|
|
50
50
|
renderExpandedRow,
|
|
51
51
|
virtualized,
|
|
52
52
|
bordered,
|
|
53
|
-
highlightOnHover,
|
|
54
53
|
rowSize,
|
|
55
54
|
toggleRowExpanded,
|
|
56
55
|
primaryRowActions,
|
|
@@ -100,7 +99,6 @@ const DsTableRow = <TData,>({ ref, row, virtualRow }: DsTableRowProps<TData>) =>
|
|
|
100
99
|
},
|
|
101
100
|
virtualized && styles.virtualizedRow,
|
|
102
101
|
onRowClick && styles.clickableRow,
|
|
103
|
-
highlightOnHover && styles.highlightHoverRow,
|
|
104
102
|
!bordered && styles.rowNoBorder,
|
|
105
103
|
isExpanded && styles.expanded,
|
|
106
104
|
)}
|
|
@@ -44,7 +44,6 @@ const DsTable = <TData extends { id: string }, TValue>({
|
|
|
44
44
|
stickyHeader = true,
|
|
45
45
|
bordered = true,
|
|
46
46
|
fullWidth = true,
|
|
47
|
-
highlightOnHover = true,
|
|
48
47
|
rowSize = 'medium',
|
|
49
48
|
expandable = false,
|
|
50
49
|
renderExpandedRow,
|
|
@@ -215,16 +214,13 @@ const DsTable = <TData extends { id: string }, TValue>({
|
|
|
215
214
|
|
|
216
215
|
const selectedRows = Object.entries(rowSelection)
|
|
217
216
|
.filter(([, selected]) => selected)
|
|
218
|
-
// This is not necessarily a redundant condition. It depends on `noUncheckedIndexedAccess`.
|
|
219
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
220
217
|
.map(([key]) => rowsById[key]?.original)
|
|
221
|
-
.filter(
|
|
218
|
+
.filter((v) => !!v);
|
|
222
219
|
|
|
223
220
|
const contextValue: DsTableContextType<TData, TValue> = {
|
|
224
221
|
stickyHeader,
|
|
225
222
|
bordered,
|
|
226
223
|
fullWidth,
|
|
227
|
-
highlightOnHover,
|
|
228
224
|
rowSize,
|
|
229
225
|
expandable,
|
|
230
226
|
selectable,
|
|
@@ -279,6 +275,11 @@ const DsTable = <TData extends { id: string }, TValue>({
|
|
|
279
275
|
rowVirtualizer.getVirtualItems().length ? (
|
|
280
276
|
rowVirtualizer.getVirtualItems().map((virtualRow: VirtualItem) => {
|
|
281
277
|
const row = rows[virtualRow.index];
|
|
278
|
+
|
|
279
|
+
if (!row) {
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
|
|
282
283
|
return <DsTableRow key={row.id} row={row} virtualRow={virtualRow} />;
|
|
283
284
|
})
|
|
284
285
|
) : (
|
|
@@ -235,11 +235,6 @@ export interface DsDataTableProps<TData, TValue> {
|
|
|
235
235
|
*/
|
|
236
236
|
fullWidth?: boolean;
|
|
237
237
|
|
|
238
|
-
/**
|
|
239
|
-
* Whether the table has highlight on hover
|
|
240
|
-
*/
|
|
241
|
-
highlightOnHover?: boolean;
|
|
242
|
-
|
|
243
238
|
/**
|
|
244
239
|
* Row size variant (small: 36px, medium: 48px, large: 64px)
|
|
245
240
|
* @default 'medium'
|
|
@@ -74,9 +74,9 @@ export function createDualRangeFilterAdapter<TData>(
|
|
|
74
74
|
// Check each field's range
|
|
75
75
|
for (const [fieldKey, range] of Object.entries(filterValue)) {
|
|
76
76
|
const hasFilter = range.from !== undefined || range.to !== undefined;
|
|
77
|
+
const fieldValue = rowValue[fieldKey];
|
|
77
78
|
|
|
78
|
-
if (hasFilter) {
|
|
79
|
-
const fieldValue = rowValue[fieldKey];
|
|
79
|
+
if (hasFilter && fieldValue !== undefined) {
|
|
80
80
|
const matchesFrom = range.from === undefined || fieldValue >= range.from;
|
|
81
81
|
const matchesTo = range.to === undefined || fieldValue <= range.to;
|
|
82
82
|
|
|
@@ -147,8 +147,6 @@ export function createDualRangeFilterAdapter<TData>(
|
|
|
147
147
|
<RangeFilter
|
|
148
148
|
key={fieldKey}
|
|
149
149
|
label={fieldLabel}
|
|
150
|
-
// This is not necessarily a redundant condition. It depends on `noUncheckedIndexedAccess`.
|
|
151
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
152
150
|
value={value[fieldKey] || {}}
|
|
153
151
|
onChange={(rangeValue) =>
|
|
154
152
|
onChange({
|
|
@@ -91,11 +91,16 @@ export function useTableFilters<TData, TValue, TCellValue>(
|
|
|
91
91
|
const [columnFilters, setColumnFilters] = useState<ColumnFilterState<TValue>[]>([]);
|
|
92
92
|
const [filterChips, setFilterChips] = useState<ChipItem[]>([]);
|
|
93
93
|
|
|
94
|
+
const getValueByAdapterId = (adapterId: string) => {
|
|
95
|
+
// Should be safe to cast because it's being filled in the initialState
|
|
96
|
+
return filterState[adapterId] as TValue;
|
|
97
|
+
};
|
|
98
|
+
|
|
94
99
|
// Generate filter nav items with counts (updates as user changes filters in modal)
|
|
95
100
|
const filterNavItems: FilterNavItem[] = _filterAdapters.map((adapter) => ({
|
|
96
101
|
id: adapter.id,
|
|
97
102
|
label: adapter.label,
|
|
98
|
-
count: adapter.getActiveFiltersCount(
|
|
103
|
+
count: adapter.getActiveFiltersCount(getValueByAdapterId(adapter.id)),
|
|
99
104
|
}));
|
|
100
105
|
|
|
101
106
|
// Enhance column definitions with filter functions and renderers
|
|
@@ -131,7 +136,7 @@ export function useTableFilters<TData, TValue, TCellValue>(
|
|
|
131
136
|
const chips: ChipItem[] = [];
|
|
132
137
|
|
|
133
138
|
_filterAdapters.forEach((adapter) => {
|
|
134
|
-
const value =
|
|
139
|
+
const value = getValueByAdapterId(adapter.id);
|
|
135
140
|
|
|
136
141
|
if (adapter.getActiveFiltersCount(value) > 0) {
|
|
137
142
|
filters.push({
|
|
@@ -170,13 +175,13 @@ export function useTableFilters<TData, TValue, TCellValue>(
|
|
|
170
175
|
return;
|
|
171
176
|
}
|
|
172
177
|
|
|
173
|
-
const currentValue =
|
|
178
|
+
const currentValue = getValueByAdapterId(filterKey);
|
|
174
179
|
const newValue = adapter.fromChip(chip, currentValue);
|
|
175
180
|
|
|
176
181
|
// Regenerate chips to check if this was the last one
|
|
177
182
|
const chips: ChipItem[] = [];
|
|
178
183
|
_filterAdapters.forEach((adapter) => {
|
|
179
|
-
const value = adapter.id === filterKey ? newValue :
|
|
184
|
+
const value = adapter.id === filterKey ? newValue : getValueByAdapterId(adapter.id);
|
|
180
185
|
const adapterChips = adapter.toChips(value);
|
|
181
186
|
chips.push(...adapterChips);
|
|
182
187
|
});
|
|
@@ -211,7 +216,7 @@ export function useTableFilters<TData, TValue, TCellValue>(
|
|
|
211
216
|
return null;
|
|
212
217
|
}
|
|
213
218
|
|
|
214
|
-
const value =
|
|
219
|
+
const value = getValueByAdapterId(adapter.id);
|
|
215
220
|
const onChange = (newValue: TValue) => updateFilter(adapter.id, newValue);
|
|
216
221
|
|
|
217
222
|
return adapter.renderFilter(value, onChange);
|
|
@@ -43,23 +43,23 @@ export const generatePersonData = (
|
|
|
43
43
|
const statuses: Status[] = ['single', 'relationship', 'complicated'];
|
|
44
44
|
|
|
45
45
|
// Generate all data first for sorting
|
|
46
|
-
const allData
|
|
46
|
+
const allData = Array.from({ length: totalRows }).map((_, index) => {
|
|
47
47
|
const i = index + 1;
|
|
48
48
|
return {
|
|
49
49
|
id: i.toString(),
|
|
50
|
-
firstName: firstNames[i % firstNames.length],
|
|
51
|
-
lastName: lastNames[i % lastNames.length],
|
|
50
|
+
firstName: firstNames[i % firstNames.length] as string,
|
|
51
|
+
lastName: lastNames[i % lastNames.length] as string,
|
|
52
52
|
age: 20 + (i % 50),
|
|
53
53
|
visits: Math.floor(Math.random() * 500) + 1,
|
|
54
|
-
status: statuses[i % statuses.length],
|
|
54
|
+
status: statuses[i % statuses.length] as Status,
|
|
55
55
|
progress: Math.floor(Math.random() * 100) + 1,
|
|
56
|
-
};
|
|
56
|
+
} satisfies Person;
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
// Apply sorting if provided
|
|
60
60
|
const sortedData = [...allData];
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
const sort = sorting[0];
|
|
62
|
+
if (sort) {
|
|
63
63
|
const { id, desc } = sort;
|
|
64
64
|
sortedData.sort((a, b) => {
|
|
65
65
|
const aValue = a[id as keyof Person];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
$animation-duration: 0.2s;
|
|
2
|
+
$animation-translate: -4px;
|
|
3
|
+
|
|
4
|
+
.tabContent {
|
|
5
|
+
padding: var(--spacing-standard) 0;
|
|
6
|
+
animation: fadeIn $animation-duration ease-in;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@keyframes fadeIn {
|
|
10
|
+
from {
|
|
11
|
+
opacity: 0;
|
|
12
|
+
transform: translateY($animation-translate);
|
|
13
|
+
}
|
|
14
|
+
to {
|
|
15
|
+
opacity: 1;
|
|
16
|
+
transform: translateY(0);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Tabs } from '@ark-ui/react/tabs';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import type { DsTabsContentProps } from '../../ds-tabs.types';
|
|
4
|
+
import styles from './ds-tabs-content.module.scss';
|
|
5
|
+
|
|
6
|
+
export const DsTabsContent = ({ value, className, style, children }: DsTabsContentProps) => {
|
|
7
|
+
return (
|
|
8
|
+
<Tabs.Content value={value} className={classNames(styles.tabContent, className)} style={style}>
|
|
9
|
+
{children}
|
|
10
|
+
</Tabs.Content>
|
|
11
|
+
);
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DsTabsContent } from './ds-tabs-content';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
$indicator-border-radius: 4px;
|
|
2
|
+
$indicator-thickness: 2px;
|
|
3
|
+
$indicator-offset: -4px;
|
|
4
|
+
$transition-duration: 0.2s;
|
|
5
|
+
|
|
6
|
+
.indicator {
|
|
7
|
+
position: absolute;
|
|
8
|
+
background: var(--color-background-selected);
|
|
9
|
+
transition:
|
|
10
|
+
left $transition-duration ease-in-out,
|
|
11
|
+
top $transition-duration ease-in-out,
|
|
12
|
+
width $transition-duration ease-in-out,
|
|
13
|
+
height $transition-duration ease-in-out,
|
|
14
|
+
opacity $transition-duration ease-in-out;
|
|
15
|
+
border-radius: $indicator-border-radius;
|
|
16
|
+
pointer-events: none;
|
|
17
|
+
|
|
18
|
+
[data-orientation='horizontal'] & {
|
|
19
|
+
bottom: $indicator-offset;
|
|
20
|
+
height: $indicator-thickness;
|
|
21
|
+
left: var(--left);
|
|
22
|
+
width: var(--width);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
[data-orientation='vertical'] & {
|
|
26
|
+
left: 0;
|
|
27
|
+
width: $indicator-thickness;
|
|
28
|
+
top: var(--top);
|
|
29
|
+
height: var(--height);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
$border-width: 1px;
|
|
2
|
+
|
|
3
|
+
.tabList {
|
|
4
|
+
display: flex;
|
|
5
|
+
position: relative;
|
|
6
|
+
|
|
7
|
+
[data-orientation='horizontal'] & {
|
|
8
|
+
flex-direction: row;
|
|
9
|
+
align-items: center;
|
|
10
|
+
border-bottom: $border-width solid var(--color-border-main);
|
|
11
|
+
gap: var(--spacing-xs);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
[data-orientation='vertical'] & {
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
align-items: stretch;
|
|
17
|
+
border-right: $border-width solid var(--color-border-main);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
[data-orientation='vertical'][data-size='medium'] & {
|
|
21
|
+
gap: var(--spacing-xs);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
[data-orientation='vertical'][data-size='small'] & {
|
|
25
|
+
gap: var(--spacing-3xs);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Tabs } from '@ark-ui/react/tabs';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import type { DsTabsListProps } from '../../ds-tabs.types';
|
|
4
|
+
import styles from './ds-tabs-list.module.scss';
|
|
5
|
+
import indicatorStyles from './ds-tabs-indicator.module.scss';
|
|
6
|
+
|
|
7
|
+
export const DsTabsList = ({ className, style, children }: DsTabsListProps) => {
|
|
8
|
+
return (
|
|
9
|
+
<Tabs.List className={classNames(styles.tabList, className)} style={style}>
|
|
10
|
+
{children}
|
|
11
|
+
<Tabs.Indicator className={indicatorStyles.indicator} />
|
|
12
|
+
</Tabs.List>
|
|
13
|
+
);
|
|
14
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DsTabsList } from './ds-tabs-list';
|