@drivenets/design-system 0.9.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/index.cjs +1182 -716
  3. package/dist/index.d.cts +1806 -636
  4. package/dist/index.d.cts.map +1 -1
  5. package/dist/index.d.ts +1809 -639
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1189 -726
  8. package/dist/index.js.map +1 -1
  9. package/dist/index.min.css +1 -1
  10. package/package.json +11 -13
  11. package/src/components/ds-alert-banner/ds-alert-banner.module.scss +25 -25
  12. package/src/components/ds-autocomplete/ds-autocomplete.module.scss +29 -29
  13. package/src/components/ds-avatar/_mixins.scss +7 -7
  14. package/src/components/ds-avatar/ds-avatar.module.scss +2 -2
  15. package/src/components/ds-avatar-group/ds-avatar-group.module.scss +6 -6
  16. package/src/components/ds-breadcrumb/ds-breadcrumb.module.scss +14 -14
  17. package/src/components/ds-breadcrumb/ds-breadcrumb.types.ts +40 -6
  18. package/src/components/ds-button/ds-button.types.ts +13 -2
  19. package/src/components/ds-button/versions/ds-button-legacy/ds-button-legacy.module.scss +17 -17
  20. package/src/components/ds-button/versions/ds-button-new/ds-button-new.module.scss +135 -135
  21. package/src/components/ds-button-v3/ds-button-v3.module.scss +113 -114
  22. package/src/components/ds-button-v3/ds-button-v3.types.ts +7 -0
  23. package/src/components/ds-card/ds-card.module.scss +12 -12
  24. package/src/components/ds-card/ds-card.types.ts +3 -1
  25. package/src/components/ds-checkbox/ds-checkbox.module.scss +106 -123
  26. package/src/components/ds-checkbox/ds-checkbox.tsx +24 -35
  27. package/src/components/ds-checkbox/ds-checkbox.types.ts +12 -11
  28. package/src/components/ds-checkbox-group/ds-checkbox-group.module.scss +13 -0
  29. package/src/components/ds-checkbox-group/ds-checkbox-group.tsx +20 -0
  30. package/src/components/ds-checkbox-group/ds-checkbox-group.types.ts +8 -0
  31. package/src/components/ds-checkbox-group/hooks/index.ts +6 -0
  32. package/src/components/ds-checkbox-group/hooks/use-checkbox-select-all.ts +65 -0
  33. package/src/components/ds-checkbox-group/index.ts +3 -0
  34. package/src/components/ds-chip/ds-chip.module.scss +17 -17
  35. package/src/components/ds-chip-group/ds-chip-group.module.scss +12 -12
  36. package/src/components/ds-comment-bubble/components/ds-comment-thread/ds-comment-thread.module.scss +3 -3
  37. package/src/components/ds-comment-bubble/components/ds-comment-thread/ds-comment-thread.types.ts +26 -0
  38. package/src/components/ds-comment-bubble/components/ds-thread-item/ds-thread-item.module.scss +18 -18
  39. package/src/components/ds-comment-bubble/components/ds-thread-item/ds-thread-item.types.ts +38 -0
  40. package/src/components/ds-comment-bubble/ds-comment-bubble.module.scss +43 -43
  41. package/src/components/ds-comment-bubble/ds-comment-bubble.types.ts +78 -0
  42. package/src/components/ds-comment-card/ds-comment-card.module.scss +34 -34
  43. package/src/components/ds-comment-card/ds-comment-card.types.ts +114 -0
  44. package/src/components/ds-comment-indicator/ds-comment-indicator.module.scss +9 -9
  45. package/src/components/ds-comment-indicator/ds-comment-indicator.types.ts +26 -0
  46. package/src/components/ds-comments-drawer/comments-filters.types.ts +33 -0
  47. package/src/components/ds-comments-drawer/components/comments-filter-modal/comments-filter-modal.module.scss +10 -10
  48. package/src/components/ds-comments-drawer/components/comments-filter-modal/comments-filter-modal.types.ts +37 -1
  49. package/src/components/ds-comments-drawer/ds-comments-drawer.module.scss +11 -11
  50. package/src/components/ds-comments-drawer/ds-comments-drawer.types.ts +64 -0
  51. package/src/components/ds-date-input/ds-date-input.module.scss +42 -42
  52. package/src/components/ds-date-input/ds-date-input.types.ts +23 -0
  53. package/src/components/ds-date-picker/components/calendar-table.module.scss +17 -17
  54. package/src/components/ds-date-picker/components/calendar-view-control/calendar-view-control.module.scss +8 -8
  55. package/src/components/ds-date-picker/components/day-view/day-view.module.scss +1 -1
  56. package/src/components/ds-date-picker/ds-date-picker.module.scss +1 -1
  57. package/src/components/ds-date-picker/ds-date-picker.tsx +3 -0
  58. package/src/components/ds-date-picker/ds-date-picker.types.ts +20 -0
  59. package/src/components/ds-date-range-picker/ds-date-range-picker.module.scss +1 -1
  60. package/src/components/ds-date-range-picker/ds-date-range-picker.types.ts +28 -0
  61. package/src/components/ds-dialog/ds-dialog.module.scss +3 -3
  62. package/src/components/ds-dialog/ds-dialog.types.ts +10 -1
  63. package/src/components/ds-divider/ds-divider.module.scss +1 -1
  64. package/src/components/ds-drawer/ds-drawer.module.scss +12 -12
  65. package/src/components/ds-dropdown-menu/ds-dropdown-menu.module.scss +22 -14
  66. package/src/components/ds-dropdown-menu/ds-dropdown-menu.tsx +2 -0
  67. package/src/components/ds-dropdown-menu/ds-dropdown-menu.types.ts +33 -0
  68. package/src/components/ds-expandable-text-input/ds-expandable-text-input.module.scss +1 -1
  69. package/src/components/ds-file-upload/components/file-upload/file-upload.module.scss +22 -22
  70. package/src/components/ds-file-upload/components/file-upload/file-upload.types.ts +1 -0
  71. package/src/components/ds-file-upload/components/file-upload-item/file-upload-item.module.scss +23 -23
  72. package/src/components/ds-file-upload/ds-file-upload-api.types.ts +55 -0
  73. package/src/components/ds-filter-status-icon/ds-filter-status-icon.module.scss +5 -5
  74. package/src/components/ds-form-control/ds-form-control.module.scss +13 -13
  75. package/src/components/ds-form-control/ds-form-control.types.ts +3 -0
  76. package/src/components/ds-grid/ds-grid.tsx +29 -12
  77. package/src/components/ds-grid/ds-grid.types.ts +16 -13
  78. package/src/components/ds-grid/index.ts +10 -2
  79. package/src/components/ds-icon/custom-icons/index.ts +2 -0
  80. package/src/components/ds-icon/custom-icons/special-leading-icon.tsx +11 -0
  81. package/src/components/ds-icon/ds-icon.module.scss +8 -0
  82. package/src/components/ds-icon/ds-icon.tsx +10 -4
  83. package/src/components/ds-icon/ds-icon.types.ts +30 -0
  84. package/src/components/ds-key-value-pair/ds-key-value-pair.module.scss +7 -7
  85. package/src/components/ds-key-value-pair/ds-key-value-pair.types.ts +12 -2
  86. package/src/components/ds-modal/ds-modal.module.scss +9 -9
  87. package/src/components/ds-modal/ds-modal.types.ts +16 -0
  88. package/src/components/ds-panel/ds-panel.module.scss +16 -16
  89. package/src/components/ds-panel/ds-panel.types.ts +39 -0
  90. package/src/components/ds-popover/ds-popover.module.scss +2 -2
  91. package/src/components/ds-progress-arc/ds-progress-arc.module.scss +7 -7
  92. package/src/components/ds-progress-donut/ds-progress-donut.module.scss +7 -7
  93. package/src/components/ds-progress-linear/ds-progress-linear.module.scss +15 -15
  94. package/src/components/ds-radio-group/ds-radio-group.module.scss +58 -56
  95. package/src/components/ds-radio-group/ds-radio-group.tsx +35 -28
  96. package/src/components/ds-radio-group/ds-radio-group.types.ts +38 -7
  97. package/src/components/ds-segment-group/ds-segment-group.module.scss +18 -18
  98. package/src/components/ds-segment-group/ds-segment-group.types.ts +17 -0
  99. package/src/components/ds-select/ds-select.module.scss +8 -8
  100. package/src/components/ds-select/ds-select.types.ts +32 -0
  101. package/src/components/ds-skeleton/ds-skeleton.module.scss +1 -1
  102. package/src/components/ds-smart-tabs/ds-smart-tabs.module.scss +12 -12
  103. package/src/components/ds-smart-tabs/ds-smart-tabs.tsx +9 -9
  104. package/src/components/ds-spinner/ds-spinner.module.scss +1 -1
  105. package/src/components/ds-split-button/ds-split-button.module.scss +7 -7
  106. package/src/components/ds-split-button/ds-split-button.types.ts +28 -0
  107. package/src/components/ds-stack/ds-stack.types.ts +23 -0
  108. package/src/components/ds-status-badge/ds-status-badge.module.scss +21 -25
  109. package/src/components/ds-stepper/ds-stepper.module.scss +55 -55
  110. package/src/components/ds-stepper/ds-stepper.types.ts +34 -1
  111. package/src/components/ds-system-status/ds-system-status.module.scss +22 -22
  112. package/src/components/ds-table/components/ds-table-body-virtualized/ds-table-body-virtualized.types.ts +27 -0
  113. package/src/components/ds-table/components/ds-table-bulk-actions/ds-table-bulk-actions.module.scss +9 -9
  114. package/src/components/ds-table/components/ds-table-cell/ds-table-cell.module.scss +4 -4
  115. package/src/components/ds-table/components/ds-table-header/ds-table-header.module.scss +5 -10
  116. package/src/components/ds-table/components/ds-table-header/ds-table-header.tsx +6 -9
  117. package/src/components/ds-table/components/ds-table-row/ds-table-row.module.scss +13 -22
  118. package/src/components/ds-table/components/ds-table-row/ds-table-row.tsx +11 -18
  119. package/src/components/ds-table/components/ds-table-row-expandable-cell/ds-table-row-expandable-cell.module.scss +0 -7
  120. package/src/components/ds-table/components/ds-table-row-expandable-cell/ds-table-row-expandable-cell.tsx +19 -28
  121. package/src/components/ds-table/components/ds-table-row-expandable-cell/ds-table-row-expandable-cell.types.ts +7 -1
  122. package/src/components/ds-table/components/ds-table-row-selectable-cell/ds-table-row-selectable-cell.tsx +3 -8
  123. package/src/components/ds-table/components/ds-table-row-selectable-cell/ds-table-row-selectable-cell.types.ts +11 -0
  124. package/src/components/ds-table/components/ds-table-row-virtualized/ds-table-row-virtualized.module.scss +15 -11
  125. package/src/components/ds-table/components/ds-table-row-virtualized/ds-table-row-virtualized.tsx +9 -4
  126. package/src/components/ds-table/components/ds-table-row-virtualized/ds-table-row-virtualized.types.ts +27 -0
  127. package/src/components/ds-table/ds-table.module.scss +9 -2
  128. package/src/components/ds-table/ds-table.tsx +26 -4
  129. package/src/components/ds-table/filters/components/range-filter/range-filter.module.scss +1 -1
  130. package/src/components/ds-table/filters/types/filter-adapter.types.ts +6 -0
  131. package/src/components/ds-table/styles/_mixins.scss +1 -1
  132. package/src/components/ds-table/styles/_variables.scss +5 -6
  133. package/src/components/ds-table/utils/constants.ts +10 -0
  134. package/src/components/ds-tabs/components/ds-tabs-content/ds-tabs-content.module.scss +1 -1
  135. package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-indicator.module.scss +1 -1
  136. package/src/components/ds-tabs/components/ds-tabs-list/ds-tabs-list.module.scss +3 -3
  137. package/src/components/ds-tabs/components/ds-tabs-tab/ds-tabs-tab.module.scss +55 -55
  138. package/src/components/ds-tabs/ds-tabs.module.scss +1 -1
  139. package/src/components/ds-tag/ds-tag.module.scss +22 -22
  140. package/src/components/ds-tag/ds-tag.types.ts +6 -0
  141. package/src/components/ds-tag-filter/ds-tag-filter.module.scss +10 -10
  142. package/src/components/ds-tag-filter/ds-tag-filter.types.ts +16 -0
  143. package/src/components/ds-text-input/ds-text-input.module.scss +1 -1
  144. package/src/components/ds-text-input/ds-text-input.types.ts +3 -0
  145. package/src/components/ds-time-picker/components/time-item/time-item.module.scss +8 -8
  146. package/src/components/ds-time-picker/components/time-item/time-item.types.ts +19 -0
  147. package/src/components/ds-time-picker/components/time-scroller/time-scroller.module.scss +3 -3
  148. package/src/components/ds-time-picker/components/time-scroller/time-scroller.types.ts +29 -0
  149. package/src/components/ds-time-picker/ds-time-picker.module.scss +7 -0
  150. package/src/components/ds-time-picker/ds-time-picker.tsx +8 -1
  151. package/src/components/ds-time-picker/ds-time-picker.types.ts +80 -0
  152. package/src/components/ds-toast/ds-toast.module.scss +11 -11
  153. package/src/components/ds-toggle/ds-toggle.module.scss +18 -18
  154. package/src/components/ds-tooltip/ds-tooltip.module.scss +5 -5
  155. package/src/components/ds-tooltip/ds-tooltip.types.ts +6 -0
  156. package/src/components/ds-tree/ds-tree.module.scss +27 -27
  157. package/src/components/ds-tree/ds-tree.types.ts +84 -2
  158. package/src/components/ds-typography/ds-typography.config.ts +46 -27
  159. package/src/components/ds-typography/ds-typography.tsx +22 -7
  160. package/src/components/ds-typography/ds-typography.types.ts +15 -4
  161. package/src/components/ds-vertical-tabs/ds-vertical-tabs.module.scss +13 -13
  162. package/src/components/ds-workspace/ds-workspace.module.scss +55 -0
  163. package/src/components/ds-workspace/ds-workspace.tsx +37 -0
  164. package/src/components/ds-workspace/ds-workspace.types.ts +17 -0
  165. package/src/components/ds-workspace/index.ts +8 -0
  166. package/src/index.ts +2 -0
  167. package/src/styles/_grid.scss +2 -2
  168. package/src/styles/_root.scss +0 -18
  169. package/src/styles/_root_new.scss +449 -0
  170. package/src/styles/_scrollbars.scss +5 -5
  171. package/src/styles/_typography.scss +18 -14
  172. package/src/styles/mixins/_list.scss +8 -8
  173. package/src/styles/shared/_dropdown.scss +9 -9
  174. package/src/styles/shared/_input.scss +47 -49
  175. package/src/styles/styles.scss +1 -0
  176. package/src/styles/_root_updated.scss +0 -593
@@ -4,9 +4,9 @@ import { useDsTableContext } from '../../context/ds-table-context';
4
4
  import { getColumnSizeStyle } from '../../utils/column-size';
5
5
  import { TableCell, TableRow } from '../core-table';
6
6
  import { DsTableRowSelectableCell } from '../ds-table-row-selectable-cell';
7
- import { DsTableRowExpandableCell } from '../ds-table-row-expandable-cell';
8
7
  import type { DsTableRowVirtualizedProps } from './ds-table-row-virtualized.types';
9
8
  import { DsTableCell } from '../ds-table-cell';
9
+ import { EXPANDER_COLUMN_ID } from '../../utils/constants';
10
10
 
11
11
  export const DsTableRowVirtualized = <TData,>({
12
12
  row,
@@ -19,7 +19,6 @@ export const DsTableRowVirtualized = <TData,>({
19
19
  }: DsTableRowVirtualizedProps<TData>) => {
20
20
  const {
21
21
  selectable,
22
- expandable,
23
22
  bordered,
24
23
  rowSize,
25
24
  activeRowId,
@@ -71,13 +70,19 @@ export const DsTableRowVirtualized = <TData,>({
71
70
  {selectable && (
72
71
  <DsTableRowSelectableCell row={row} isSelected={isSelected} className={styles.selectableCell} />
73
72
  )}
74
- {expandable && <DsTableRowExpandableCell row={row} className={styles.expandableCell} />}
75
73
  {row.getVisibleCells().map((cell, idx) => {
76
74
  const isLastColumn = idx === row.getVisibleCells().length - 1;
77
75
  const cellStyle = getColumnSizeStyle(cell.column.getSize(), true);
78
76
 
79
77
  return (
80
- <TableCell key={cell.id} style={cellStyle} className={styles.cell}>
78
+ <TableCell
79
+ key={cell.id}
80
+ style={cellStyle}
81
+ className={classnames(
82
+ styles.cell,
83
+ cell.column.id === EXPANDER_COLUMN_ID && styles.expandableCell,
84
+ )}
85
+ >
81
86
  {isLastColumn ? (
82
87
  <DsTableCell
83
88
  row={row}
@@ -3,11 +3,38 @@ import { type Row } from '@tanstack/react-table';
3
3
  import { type VirtualItem, type Virtualizer } from '@tanstack/react-virtual';
4
4
 
5
5
  export interface DsTableRowVirtualizedProps<TData> {
6
+ /**
7
+ * TanStack Table row model for this visual row.
8
+ */
6
9
  row: Row<TData>;
10
+ /**
11
+ * Whether this row is currently part of the selection.
12
+ */
7
13
  isSelected: boolean;
14
+ /**
15
+ * Shared ref that maps row ids to their rendered `<tr>` elements. The row
16
+ * registers itself here on mount so the virtualizer can measure heights and
17
+ * reference rows by id.
18
+ */
8
19
  rowsMapRef: RefObject<Map<string, HTMLTableRowElement>>;
20
+ /**
21
+ * Shared ref that caches the measured height of each row by id, so the
22
+ * virtualizer can preserve layout across remounts.
23
+ */
9
24
  rowHeightsMapRef: RefObject<Map<string, number>>;
25
+ /**
26
+ * TanStack virtualizer driving the scroll window for the table body.
27
+ */
10
28
  rowVirtualizer: Virtualizer<HTMLDivElement, HTMLTableRowElement>;
29
+ /**
30
+ * Virtual item descriptor for this row (index, start, size) from the virtualizer.
31
+ */
11
32
  virtualRow: VirtualItem;
33
+ /**
34
+ * Whether this row renders expanded-row content (e.g., detail panel under the
35
+ * parent row) rather than a regular data row. Click handlers stop propagation
36
+ * when true to avoid triggering the parent's `onRowClick`.
37
+ * @default false
38
+ */
12
39
  isExpandedRowContent?: boolean;
13
40
  }
@@ -2,14 +2,21 @@
2
2
  @use '../../styles/utilities' as utils;
3
3
  @use './styles/variables' as vars;
4
4
 
5
+ :root {
6
+ --ds-table-row-small: 36px;
7
+ --ds-table-row-medium: 48px;
8
+ --ds-table-row-large: 64px;
9
+ --ds-table-header-height: 45px;
10
+ }
11
+
5
12
  $bulk-actions-height: 60px;
6
13
 
7
14
  .container {
8
15
  border-radius: vars.$border-radius;
9
16
  border-width: vars.$border-width;
10
17
  border-style: solid;
11
- border-color: var(--neutral-6);
12
- background: var(--color-background);
18
+ border-color: var(--color-dap-gray-400);
19
+ background: var(--background);
13
20
  }
14
21
 
15
22
  .dataTableContainer {
@@ -1,9 +1,11 @@
1
1
  import * as React from 'react';
2
- import { useImperativeHandle } from 'react';
2
+ import { useImperativeHandle, useMemo } from 'react';
3
3
  import {
4
+ type ColumnDef,
4
5
  type RowSelectionState,
5
6
  type ColumnFiltersState,
6
7
  getCoreRowModel,
8
+ getExpandedRowModel,
7
9
  getFilteredRowModel,
8
10
  getSortedRowModel,
9
11
  type SortingState,
@@ -17,10 +19,11 @@ import { DsTableHeader } from './components/ds-table-header';
17
19
  import styles from './ds-table.module.scss';
18
20
  import type { DsDataTableProps, DsTableRowSize } from './ds-table.types';
19
21
  import { DsTableRow } from './components/ds-table-row';
22
+ import { DsTableRowExpandableCell } from './components/ds-table-row-expandable-cell';
20
23
  import { useDragAndDrop } from './hooks/use-drag-and-drop';
21
24
  import { type DsTableContextType, DsTableContext } from './context/ds-table-context';
22
25
  import { DsTableBodyVirtualized } from './components/ds-table-body-virtualized';
23
- import { EMPTY_TABLE_STATE_TEXT } from './utils/constants';
26
+ import { EMPTY_TABLE_STATE_TEXT, EXPANDER_COLUMN_ID, EXPANDER_COLUMN_WIDTH } from './utils/constants';
24
27
 
25
28
  // Row size to pixel height mapping (matches CSS variables)
26
29
  const ROW_SIZE_HEIGHT_MAP: Record<DsTableRowSize, number> = {
@@ -34,7 +37,7 @@ const ROW_SIZE_HEIGHT_MAP: Record<DsTableRowSize, number> = {
34
37
  */
35
38
  const DsTable = <TData extends { id: string }, TValue>({
36
39
  ref,
37
- columns,
40
+ columns: columnsProp,
38
41
  data: tableData,
39
42
  virtualized = false,
40
43
  virtualizedOptions,
@@ -122,6 +125,23 @@ const DsTable = <TData extends { id: string }, TValue>({
122
125
  onSelectionChange?.(newRowSelection);
123
126
  };
124
127
 
128
+ const columns = useMemo<ColumnDef<TData, TValue>[]>(() => {
129
+ if (!expandable) {
130
+ return columnsProp;
131
+ }
132
+
133
+ const expanderColumn: ColumnDef<TData, TValue> = {
134
+ id: EXPANDER_COLUMN_ID,
135
+ size: EXPANDER_COLUMN_WIDTH,
136
+ enableSorting: false,
137
+ enableResizing: false,
138
+ header: () => null,
139
+ cell: ({ row }) => (row.getCanExpand() ? <DsTableRowExpandableCell row={row} /> : null),
140
+ };
141
+
142
+ return [expanderColumn, ...columnsProp];
143
+ }, [columnsProp, expandable]);
144
+
125
145
  const table = useReactTable({
126
146
  data: reorderable ? data : tableData,
127
147
  columns,
@@ -133,6 +153,8 @@ const DsTable = <TData extends { id: string }, TValue>({
133
153
  onColumnVisibilityChange: handleColumnVisibilityChange, // TODO: looks like this is not used, since visibility is handled from the outside
134
154
  onRowSelectionChange: handleRowSelectionChange,
135
155
  getRowId: (row) => row.id,
156
+ getExpandedRowModel: getExpandedRowModel(),
157
+ getRowCanExpand: typeof expandable === 'function' ? (row) => expandable(row.original) : () => expandable,
136
158
  state: {
137
159
  sorting,
138
160
  columnFilters,
@@ -191,7 +213,7 @@ const DsTable = <TData extends { id: string }, TValue>({
191
213
  const renderEmptyState = () => (
192
214
  <TableRow>
193
215
  <TableCell
194
- colSpan={columns.length + (expandable ? 1 : 0) + (selectable ? 1 : 0)}
216
+ colSpan={columns.length + (selectable ? 1 : 0) + (reorderable ? 1 : 0)}
195
217
  className={styles.emptyState}
196
218
  >
197
219
  {emptyState || EMPTY_TABLE_STATE_TEXT}
@@ -3,7 +3,7 @@
3
3
  flex-direction: column;
4
4
  gap: 10px;
5
5
  padding-bottom: 16px;
6
- border-bottom: 1px solid var(--color-border);
6
+ border-bottom: 1px solid var(--border);
7
7
  }
8
8
 
9
9
  .header {
@@ -106,6 +106,12 @@ export interface FilterState<TValue> {
106
106
  * Column filter for TanStack Table
107
107
  */
108
108
  export interface ColumnFilterState<TValue> {
109
+ /**
110
+ * Column identifier this filter applies to (matches the column `accessorKey`).
111
+ */
109
112
  id: string;
113
+ /**
114
+ * Current filter value, passed to the column's filter function.
115
+ */
110
116
  value: TValue;
111
117
  }
@@ -1,5 +1,5 @@
1
1
  @mixin expanded-row-border($side) {
2
- $border: 1px solid var(--color-border-action-primary);
2
+ $border: 1px solid var(--border-action-primary);
3
3
 
4
4
  &:not(.expandedRow + &) > td {
5
5
  border-#{$side}: $border;
@@ -1,7 +1,6 @@
1
1
  $border-radius: 4px;
2
2
  $border-width: 1px;
3
3
  $virtualized-height: 600px;
4
- $expand-column-width: 36px;
5
4
  $select-column-width: 36px;
6
5
  $reorder-column-width: 60px;
7
6
  $container-margin-vertical: 1rem;
@@ -10,8 +9,8 @@ $filter-input-max-width: 24rem;
10
9
  $header-sort-gap: 0.5rem;
11
10
  $empty-state-height: 6rem;
12
11
 
13
- $hover-bg-color: var(--color-background-secondary);
14
- $hover-border-color: var(--color-border);
15
- $expanded-row-bg-color: var(--color-background-secondary);
16
- $expand-toggle-hover-bg-color: var(--color-background-action-hover-weak);
17
- $expand-toggle-icon-color: var(--color-icon-information-main);
12
+ $hover-bg-color: var(--background-secondary);
13
+ $hover-border-color: var(--border);
14
+ $expanded-row-bg-color: var(--background-secondary);
15
+ $expand-toggle-hover-bg-color: var(--background-action-hover-weak);
16
+ $expand-toggle-icon-color: var(--icon-information-main);
@@ -2,3 +2,13 @@
2
2
  * Default text for empty table state
3
3
  */
4
4
  export const EMPTY_TABLE_STATE_TEXT = 'No results.';
5
+
6
+ /**
7
+ * Column id used for the synthetic expander column injected when `expandable` is set.
8
+ */
9
+ export const EXPANDER_COLUMN_ID = 'expander';
10
+
11
+ /**
12
+ * Width (in px) of the expander column.
13
+ */
14
+ export const EXPANDER_COLUMN_WIDTH = 36;
@@ -2,7 +2,7 @@ $animation-duration: 0.2s;
2
2
  $animation-translate: -4px;
3
3
 
4
4
  .tabContent {
5
- padding: var(--spacing-standard) 0;
5
+ padding: var(--standard) 0;
6
6
  animation: fadeIn $animation-duration ease-in;
7
7
 
8
8
  &[data-state='closed'] {
@@ -5,7 +5,7 @@ $transition-duration: 0.2s;
5
5
 
6
6
  .indicator {
7
7
  position: absolute;
8
- background: var(--color-background-selected);
8
+ background: var(--background-primary);
9
9
  transition:
10
10
  left $transition-duration ease-in-out,
11
11
  top $transition-duration ease-in-out,
@@ -8,7 +8,7 @@ $border-width: 1px;
8
8
  flex-direction: row;
9
9
  align-items: center;
10
10
  border-bottom: $border-width solid var(--color-border-main);
11
- gap: var(--spacing-xs);
11
+ gap: var(--xs);
12
12
  }
13
13
 
14
14
  [data-orientation='vertical'] & {
@@ -18,10 +18,10 @@ $border-width: 1px;
18
18
  }
19
19
 
20
20
  [data-orientation='vertical'][data-size='medium'] & {
21
- gap: var(--spacing-xs);
21
+ gap: var(--xs);
22
22
  }
23
23
 
24
24
  [data-orientation='vertical'][data-size='small'] & {
25
- gap: var(--spacing-3xs);
25
+ gap: var(--3xs);
26
26
  }
27
27
  }
@@ -10,75 +10,75 @@ $disabled-opacity: 0.5;
10
10
  @include typography.body-sm-reg;
11
11
  display: inline-flex;
12
12
  align-items: center;
13
- background: var(--color-background);
14
- border-radius: var(--exo-spacing-2x-small);
13
+ background: var(--background);
14
+ border-radius: var(--3xs);
15
15
  cursor: pointer;
16
16
  transition:
17
17
  background-color $transition-duration,
18
18
  color $transition-duration,
19
19
  border-color $transition-duration;
20
20
  position: relative;
21
- color: var(--color-font-main);
21
+ color: var(--font-main);
22
22
  border: $tab-border-width solid transparent;
23
23
  white-space: nowrap;
24
24
 
25
25
  &:hover:not(:disabled):not([aria-selected='true']) {
26
- background: var(--color-background-secondary);
26
+ background: var(--background-secondary);
27
27
 
28
28
  .badge {
29
- background: var(--color-background-tertiary);
29
+ background: var(--background-tertiary);
30
30
  }
31
31
  }
32
32
 
33
33
  &:active:not(:disabled):not([aria-selected='true']) {
34
- background: var(--color-background-tertiary);
34
+ background: var(--background-tertiary);
35
35
 
36
36
  .badge {
37
- background: var(--color-background-secondary);
37
+ background: var(--background-secondary);
38
38
  }
39
39
  }
40
40
 
41
41
  &:focus-visible:not(:disabled):not([aria-selected='true']) {
42
42
  border-color: var(--color-border-action-hover);
43
- background: var(--color-background-secondary);
43
+ background: var(--background-secondary);
44
44
  outline: none;
45
45
 
46
46
  .badge {
47
- background: var(--color-background-tertiary);
47
+ background: var(--background-tertiary);
48
48
  }
49
49
  }
50
50
 
51
51
  &:disabled {
52
52
  cursor: not-allowed;
53
53
  opacity: $disabled-opacity;
54
- color: var(--color-font-disabled);
54
+ color: var(--font-disabled);
55
55
  }
56
56
 
57
57
  &[aria-selected='true'] {
58
58
  @include typography.body-sm-md;
59
- color: var(--color-background-selected);
60
- background: var(--color-background);
59
+ color: var(--background-primary);
60
+ background: var(--background);
61
61
 
62
62
  .icon {
63
- color: var(--color-background-selected);
63
+ color: var(--background-primary);
64
64
  }
65
65
 
66
66
  .badge {
67
- background: var(--color-background-action-secondary-hover);
68
- color: var(--color-background-selected);
67
+ background: var(--background-action-secondary-hover);
68
+ color: var(--background-primary);
69
69
  }
70
70
 
71
71
  &:hover:not(:disabled) {
72
- background: var(--color-background-selected-weak);
72
+ background: var(--background-secondary-hover);
73
73
  }
74
74
 
75
75
  &:active:not(:disabled) {
76
- background: var(--color-background-selected-weak);
76
+ background: var(--background-secondary-hover);
77
77
  }
78
78
 
79
79
  &:focus-visible:not(:disabled) {
80
- border-color: var(--color-background-selected);
81
- background: var(--color-background-selected-weak);
80
+ border-color: var(--background-primary);
81
+ background: var(--background-secondary-hover);
82
82
  outline: none;
83
83
  }
84
84
  }
@@ -87,37 +87,37 @@ $disabled-opacity: 0.5;
87
87
  [data-orientation='horizontal'] & {
88
88
  flex-direction: row;
89
89
  justify-content: center;
90
- gap: var(--spacing-3xs);
90
+ gap: var(--3xs);
91
91
  flex: 0 0 auto;
92
92
  width: auto;
93
93
  }
94
94
 
95
95
  [data-orientation='horizontal'][data-size='medium'] & {
96
- padding: var(--spacing-xs) var(--spacing-sm);
96
+ padding: var(--xs) var(--sm);
97
97
  }
98
98
 
99
99
  [data-orientation='horizontal'][data-size='small'] & {
100
- padding: var(--spacing-2xs) var(--spacing-sm);
100
+ padding: var(--2xs) var(--sm);
101
101
  }
102
102
 
103
103
  // Vertical orientation + size variants
104
104
  [data-orientation='vertical'] & {
105
105
  flex-direction: row;
106
106
  justify-content: flex-start;
107
- gap: var(--spacing-3xs);
107
+ gap: var(--3xs);
108
108
  width: 100%;
109
109
  }
110
110
 
111
111
  [data-orientation='vertical'][data-size='medium'] & {
112
- padding: var(--spacing-sm) var(--spacing-standard);
113
- padding-left: var(--spacing-xs);
114
- border-radius: var(--exo-spacing-2x-small) 0 0 var(--exo-spacing-2x-small);
112
+ padding: var(--sm) var(--standard);
113
+ padding-left: var(--xs);
114
+ border-radius: var(--3xs) 0 0 var(--3xs);
115
115
  }
116
116
 
117
117
  [data-orientation='vertical'][data-size='small'] & {
118
- padding: var(--spacing-xs) var(--spacing-standard);
119
- padding-left: var(--spacing-xs);
120
- border-radius: var(--exo-spacing-2x-small) 0 0 var(--exo-spacing-2x-small);
118
+ padding: var(--xs) var(--standard);
119
+ padding-left: var(--xs);
120
+ border-radius: var(--3xs) 0 0 var(--3xs);
121
121
  }
122
122
  }
123
123
 
@@ -125,7 +125,7 @@ $disabled-opacity: 0.5;
125
125
  display: flex;
126
126
  align-items: center;
127
127
  justify-content: center;
128
- color: var(--color-font-secondary);
128
+ color: var(--font-secondary);
129
129
  flex-shrink: 0;
130
130
  }
131
131
 
@@ -148,32 +148,32 @@ $disabled-opacity: 0.5;
148
148
  align-items: center;
149
149
  justify-content: center;
150
150
  flex-shrink: 0;
151
- color: var(--color-font-main) !important;
151
+ color: var(--font-main) !important;
152
152
  cursor: pointer;
153
- border-radius: var(--exo-spacing-2x-small);
153
+ border-radius: var(--3xs);
154
154
  transition:
155
155
  background-color $transition-duration,
156
156
  color $transition-duration;
157
157
 
158
158
  &:hover {
159
- background: var(--color-background-action-secondary);
160
- color: var(--color-font-main);
159
+ background: var(--background-action-secondary);
160
+ color: var(--font-main);
161
161
  }
162
162
 
163
163
  &:active {
164
- background: var(--color-background-tertiary);
164
+ background: var(--background-tertiary);
165
165
  }
166
166
 
167
167
  &:focus-visible {
168
- outline: var(--spacing-4xs) solid var(--color-border-action-hover);
169
- outline-offset: var(--spacing-4xs);
168
+ outline: var(--4xs) solid var(--color-border-action-hover);
169
+ outline-offset: var(--4xs);
170
170
  }
171
171
 
172
172
  [aria-selected='true'] & {
173
- color: var(--color-background-selected);
173
+ color: var(--background-primary);
174
174
 
175
175
  &:hover {
176
- background: var(--color-background);
176
+ background: var(--background);
177
177
  }
178
178
  }
179
179
 
@@ -190,20 +190,20 @@ $disabled-opacity: 0.5;
190
190
  align-items: center;
191
191
  justify-content: center;
192
192
  height: $badge-height;
193
- padding: 0 var(--spacing-2xs);
194
- border-radius: var(--spacing-lg);
195
- background: var(--color-background-secondary);
196
- color: var(--color-font-main);
197
- line-height: var(--line-height-xs);
193
+ padding: 0 var(--2xs);
194
+ border-radius: var(--lg);
195
+ background: var(--background-secondary);
196
+ color: var(--font-main);
197
+ line-height: var(--body-line-height-xs);
198
198
  flex-shrink: 0;
199
199
  }
200
200
 
201
201
  .menuContent {
202
- background: var(--color-background);
203
- border: $tab-border-width solid var(--color-border-secondary);
204
- border-radius: var(--exo-spacing-2x-small);
202
+ background: var(--background);
203
+ border: $tab-border-width solid var(--border-secondary);
204
+ border-radius: var(--3xs);
205
205
  box-shadow: 0 5px 15px 0 rgba(0, 0, 0, 0.15);
206
- padding: var(--spacing-3xs);
206
+ padding: var(--3xs);
207
207
  width: $menu-content-width;
208
208
  }
209
209
 
@@ -211,21 +211,21 @@ $disabled-opacity: 0.5;
211
211
  @include typography.body-sm-reg;
212
212
  display: flex;
213
213
  align-items: center;
214
- padding: var(--spacing-3xs);
215
- border-radius: var(--exo-spacing-2x-small);
214
+ padding: var(--3xs);
215
+ border-radius: var(--3xs);
216
216
  cursor: pointer;
217
- color: var(--color-font-main);
218
- background: var(--color-background);
217
+ color: var(--font-main);
218
+ background: var(--background);
219
219
  transition: background-color $transition-duration;
220
220
  user-select: none;
221
221
  white-space: nowrap;
222
222
 
223
223
  &:hover {
224
- background: var(--color-background-secondary);
224
+ background: var(--background-secondary);
225
225
  }
226
226
 
227
227
  &:active {
228
- background: var(--color-background-tertiary);
228
+ background: var(--background-tertiary);
229
229
  }
230
230
 
231
231
  &[data-disabled] {
@@ -238,5 +238,5 @@ $disabled-opacity: 0.5;
238
238
  .menuItemLabel {
239
239
  flex: 1;
240
240
  min-width: 0;
241
- line-height: var(--line-height-sm);
241
+ line-height: var(--body-line-height-small);
242
242
  }
@@ -4,7 +4,7 @@
4
4
 
5
5
  &[data-orientation='vertical'] {
6
6
  flex-direction: row;
7
- gap: var(--spacing-lg);
7
+ gap: var(--lg);
8
8
  }
9
9
 
10
10
  &[data-orientation='horizontal'] {
@@ -10,9 +10,9 @@
10
10
  cursor: default;
11
11
  overflow: hidden;
12
12
  position: relative;
13
- padding: var(--spacing-3xs) var(--spacing-xs);
14
- background: var(--color-background);
15
- border: 1px solid var(--color-border-contrast);
13
+ padding: var(--3xs) var(--xs);
14
+ background: var(--background);
15
+ border: 1px solid var(--border-contrast);
16
16
  transition-property:
17
17
  background, border-color, width, max-width, color, fill, stroke, opacity, transform, outline-color,
18
18
  opacity, visibility;
@@ -23,52 +23,52 @@
23
23
  cursor: pointer;
24
24
 
25
25
  &:hover {
26
- background: var(--color-background-secondary);
27
- border-color: var(--color-border-action-secondary-hover);
26
+ background: var(--background-secondary);
27
+ border-color: var(--border-action-secondary-hover);
28
28
  }
29
29
 
30
30
  &:focus-visible {
31
- outline-color: var(--color-border-action-secondary);
31
+ outline-color: var(--border-action-secondary);
32
32
  }
33
33
  }
34
34
 
35
35
  &.selected {
36
- background: var(--color-background-selected-weak) !important;
37
- border-color: var(--color-border-action-primary) !important;
36
+ background: var(--background-secondary-hover) !important;
37
+ border-color: var(--border-action-primary) !important;
38
38
 
39
39
  &:focus-visible {
40
- outline-color: var(--color-border-action-primary);
40
+ outline-color: var(--border-action-primary);
41
41
  }
42
42
 
43
43
  .deleteButton {
44
- outline-color: var(--color-border-action-primary);
44
+ outline-color: var(--border-action-primary);
45
45
  }
46
46
  }
47
47
 
48
48
  &.include {
49
49
  .variantIcon {
50
- color: var(--color-icon-secondary);
50
+ color: var(--icon-action-secondary);
51
51
  }
52
52
  }
53
53
 
54
54
  &.exclude {
55
55
  .variantIcon {
56
- color: var(--color-icon-danger);
56
+ color: var(--icon-error);
57
57
  }
58
58
  }
59
59
 
60
60
  &.disabled {
61
61
  cursor: not-allowed;
62
- color: var(--color-font-disabled);
63
- background: var(--color-background);
64
- border-color: var(--color-border-contrast);
62
+ color: var(--font-disabled);
63
+ background: var(--background);
64
+ border-color: var(--border-contrast);
65
65
 
66
66
  .label {
67
- color: var(--color-font-disabled);
67
+ color: var(--font-disabled);
68
68
  }
69
69
 
70
70
  .variantIcon {
71
- color: var(--color-font-disabled);
71
+ color: var(--font-disabled);
72
72
  }
73
73
  }
74
74
 
@@ -77,17 +77,17 @@
77
77
  visibility: hidden;
78
78
  max-width: 0;
79
79
  display: flex;
80
- outline-color: var(--color-border-action-secondary);
80
+ outline-color: var(--border-action-secondary);
81
81
  user-select: none;
82
82
  transition-property:
83
83
  background, border-color, width, max-width, color, fill, stroke, opacity, transform, outline-color,
84
84
  visibility, margin-left;
85
85
  transition-timing-function: ease-out;
86
86
  transition-duration: var(--transition-duration);
87
- color: var(--color-icon-secondary);
87
+ color: var(--icon-action-secondary);
88
88
 
89
89
  &:hover {
90
- background: var(--color-background-action-secondary-hover);
90
+ background: var(--background-action-secondary-hover);
91
91
  }
92
92
  }
93
93
 
@@ -97,7 +97,7 @@
97
97
  opacity: 1;
98
98
  visibility: visible;
99
99
  max-width: 50px;
100
- margin-left: var(--spacing-3xs);
100
+ margin-left: var(--3xs);
101
101
  }
102
102
  }
103
103
 
@@ -108,5 +108,5 @@
108
108
  .icon {
109
109
  flex-shrink: 0;
110
110
  display: flex;
111
- margin-right: var(--spacing-3xs);
111
+ margin-right: var(--3xs);
112
112
  }