@rovula/ui 0.1.28 → 0.1.30

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 (65) hide show
  1. package/dist/cjs/bundle.css +522 -67
  2. package/dist/cjs/bundle.js +589 -589
  3. package/dist/cjs/bundle.js.map +1 -1
  4. package/dist/cjs/types/components/DataTable/DataTable.d.ts +195 -4
  5. package/dist/cjs/types/components/DataTable/DataTable.editing.d.ts +20 -0
  6. package/dist/cjs/types/components/DataTable/DataTable.editing.types.d.ts +145 -0
  7. package/dist/cjs/types/components/DataTable/DataTable.stories.d.ts +294 -6
  8. package/dist/cjs/types/components/Dropdown/Dropdown.d.ts +22 -0
  9. package/dist/cjs/types/components/Dropdown/Dropdown.stories.d.ts +4 -0
  10. package/dist/cjs/types/components/ScrollArea/ScrollArea.d.ts +3 -3
  11. package/dist/cjs/types/components/ScrollArea/ScrollArea.stories.d.ts +4 -0
  12. package/dist/cjs/types/components/Table/Table.d.ts +33 -3
  13. package/dist/cjs/types/components/Table/Table.stories.d.ts +86 -4
  14. package/dist/cjs/types/components/TextInput/TextInput.stories.d.ts +8 -0
  15. package/dist/cjs/types/components/TextInput/TextInput.styles.d.ts +1 -0
  16. package/dist/components/DataTable/DataTable.editing.js +385 -0
  17. package/dist/components/DataTable/DataTable.editing.types.js +1 -0
  18. package/dist/components/DataTable/DataTable.js +993 -50
  19. package/dist/components/DataTable/DataTable.stories.js +1137 -25
  20. package/dist/components/Dropdown/Dropdown.js +8 -6
  21. package/dist/components/ScrollArea/ScrollArea.js +2 -2
  22. package/dist/components/ScrollArea/ScrollArea.stories.js +68 -2
  23. package/dist/components/Table/Table.js +103 -13
  24. package/dist/components/Table/Table.stories.js +226 -9
  25. package/dist/components/TextInput/TextInput.js +6 -4
  26. package/dist/components/TextInput/TextInput.stories.js +8 -0
  27. package/dist/components/TextInput/TextInput.styles.js +7 -1
  28. package/dist/esm/bundle.css +522 -67
  29. package/dist/esm/bundle.js +1545 -1545
  30. package/dist/esm/bundle.js.map +1 -1
  31. package/dist/esm/types/components/DataTable/DataTable.d.ts +195 -4
  32. package/dist/esm/types/components/DataTable/DataTable.editing.d.ts +20 -0
  33. package/dist/esm/types/components/DataTable/DataTable.editing.types.d.ts +145 -0
  34. package/dist/esm/types/components/DataTable/DataTable.stories.d.ts +294 -6
  35. package/dist/esm/types/components/Dropdown/Dropdown.d.ts +22 -0
  36. package/dist/esm/types/components/Dropdown/Dropdown.stories.d.ts +4 -0
  37. package/dist/esm/types/components/ScrollArea/ScrollArea.d.ts +3 -3
  38. package/dist/esm/types/components/ScrollArea/ScrollArea.stories.d.ts +4 -0
  39. package/dist/esm/types/components/Table/Table.d.ts +33 -3
  40. package/dist/esm/types/components/Table/Table.stories.d.ts +86 -4
  41. package/dist/esm/types/components/TextInput/TextInput.stories.d.ts +8 -0
  42. package/dist/esm/types/components/TextInput/TextInput.styles.d.ts +1 -0
  43. package/dist/index.d.ts +493 -122
  44. package/dist/src/theme/global.css +775 -96
  45. package/package.json +14 -2
  46. package/src/components/DataTable/DataTable.editing.tsx +861 -0
  47. package/src/components/DataTable/DataTable.editing.types.ts +192 -0
  48. package/src/components/DataTable/DataTable.stories.tsx +2310 -31
  49. package/src/components/DataTable/DataTable.test.tsx +696 -0
  50. package/src/components/DataTable/DataTable.tsx +2275 -94
  51. package/src/components/Dropdown/Dropdown.tsx +22 -6
  52. package/src/components/ScrollArea/ScrollArea.stories.tsx +146 -3
  53. package/src/components/ScrollArea/ScrollArea.tsx +6 -6
  54. package/src/components/Table/Table.stories.tsx +789 -44
  55. package/src/components/Table/Table.tsx +306 -28
  56. package/src/components/TextInput/TextInput.stories.tsx +80 -0
  57. package/src/components/TextInput/TextInput.styles.ts +7 -1
  58. package/src/components/TextInput/TextInput.tsx +21 -14
  59. package/src/test/setup.ts +50 -0
  60. package/src/theme/global.css +81 -42
  61. package/src/theme/presets/colors.js +12 -0
  62. package/src/theme/themes/variable.css +27 -28
  63. package/src/theme/tokens/baseline.css +2 -1
  64. package/src/theme/tokens/components/scrollbar.css +9 -4
  65. package/src/theme/tokens/components/table.css +63 -0
@@ -12,13 +12,29 @@
12
12
  @tailwind utilities;
13
13
 
14
14
  @layer base {
15
- * {
16
- /* @apply border-border; */
17
- scrollbar-width: thin;
18
- scrollbar-color: var(--scrollbar-thumb-default-color) transparent;
19
- }
20
-
15
+ /*
16
+ * Scrollbar baseline
17
+ *
18
+ * Chrome 121+ conflict: when scrollbar-width is set on an element,
19
+ * Chrome IGNORES -webkit-scrollbar width/height entirely.
20
+ * They are mutually exclusive for sizing.
21
+ *
22
+ * Solution: apply scrollbar-width only in Firefox (where -webkit-scrollbar
23
+ * is not supported). Chrome/Safari use -webkit-scrollbar exclusively.
24
+ */
25
+
26
+ /* Firefox only — standard scrollbar API */
27
+ @supports (-moz-appearance: none) {
28
+ * {
29
+ scrollbar-width: thin;
30
+ scrollbar-color: var(--scrollbar-thumb-default-color) transparent;
31
+ }
32
+ }
33
+
34
+ /* Chrome / Safari / Edge — WebKit scrollbar API */
35
+ /* scrollbar-width must NOT be set on these elements or sizes are ignored */
21
36
  *::-webkit-scrollbar {
37
+ -webkit-appearance: none;
22
38
  width: var(--scrollbar-s-thickness);
23
39
  height: var(--scrollbar-s-thickness);
24
40
  background: transparent;
@@ -47,11 +63,9 @@
47
63
 
48
64
  body {
49
65
  /* @apply bg-background text-foreground; */
50
- /* @apply bg-[var(--background)] text-[var(--foreground)]; */
51
66
  }
52
67
 
53
- /* hide input number arrow */
54
- /* Chrome, Safari, Edge, Opera */
68
+ /* hide input number arrow — Chrome, Safari, Edge, Opera */
55
69
  input::-webkit-outer-spin-button,
56
70
  input::-webkit-inner-spin-button {
57
71
  -webkit-appearance: none;
@@ -67,68 +81,93 @@
67
81
  @layer utilities {
68
82
 
69
83
  /* ------------------------------------------------------------------ */
70
- /* Scrollbar utility applies the design-system scrollbar style */
71
- /* Default size: S (6px thumb, matches Figma Size=S) */
72
- /* Usage: add `ui-scrollbar` + optional size modifier to any */
73
- /* overflow-auto / overflow-y-auto / overflow-x-auto container. */
84
+ /* ui-scrollbar — design-system themed scrollbar */
85
+ /* */
86
+ /* Sizing uses COMPOUND SELECTORS (not CSS variables) because */
87
+ /* -webkit-scrollbar pseudo-elements don't reliably inherit custom */
88
+ /* properties in Chrome. Compound selectors have higher specificity */
89
+ /* and directly override the base width/height. */
90
+ /* */
91
+ /* Usage: */
92
+ /* <div class="ui-scrollbar"> default M+M */
93
+ /* <div class="ui-scrollbar ui-scrollbar-y-s"> M horiz + S vert */
74
94
  /* ------------------------------------------------------------------ */
75
95
 
76
- /* --- Track --- */
96
+ /* Firefox: standard API */
97
+ @supports (-moz-appearance: none) {
98
+ .ui-scrollbar {
99
+ scrollbar-width: thin;
100
+ scrollbar-color: var(--scrollbar-thumb-default-color) transparent;
101
+ }
102
+ }
103
+
104
+ /* ── Base track: default M on both axes ────────────────────────────── */
77
105
  .ui-scrollbar::-webkit-scrollbar {
78
- width: var(--scrollbar-s-thickness);
79
- height: var(--scrollbar-s-thickness);
106
+ -webkit-appearance: none;
107
+ height: var(--scrollbar-m-thickness); /* horizontal bar height */
108
+ width: var(--scrollbar-m-thickness); /* vertical bar width */
80
109
  background: transparent;
81
110
  }
82
111
 
83
- /* --- Thumb --- */
84
112
  .ui-scrollbar::-webkit-scrollbar-thumb {
85
113
  border-radius: 12px;
86
114
  background: var(--scrollbar-thumb-default-color);
115
+ /* 2px inset from track edges — matches Figma py-[2px] */
116
+ border: 2px solid transparent;
117
+ background-clip: padding-box;
87
118
  }
88
119
 
89
120
  .ui-scrollbar::-webkit-scrollbar-thumb:hover {
90
121
  background: var(--scrollbar-thumb-hover-color);
91
- cursor: pointer;
92
122
  }
93
123
 
94
- /* --- Track border (vertical) --- */
124
+ /* Track border — M only (Figma: S and XS have no border) */
95
125
  .ui-scrollbar::-webkit-scrollbar-track:vertical {
96
126
  border-left: var(--scrollbar-track-border-width) solid var(--scrollbar-track-border-color);
97
127
  }
98
-
99
- /* --- Track border (horizontal) --- */
100
128
  .ui-scrollbar::-webkit-scrollbar-track:horizontal {
101
129
  border-top: var(--scrollbar-track-border-width) solid var(--scrollbar-track-border-color);
102
130
  }
103
131
 
104
- .ui-scrollbar::-webkit-scrollbar-corner {
105
- background: transparent;
132
+ /* S and XS: no track border, no thumb inset (compound selector removes it) */
133
+ .ui-scrollbar.ui-scrollbar-s::-webkit-scrollbar-track,
134
+ .ui-scrollbar.ui-scrollbar-x-s::-webkit-scrollbar-track:horizontal,
135
+ .ui-scrollbar.ui-scrollbar-y-s::-webkit-scrollbar-track:vertical,
136
+ .ui-scrollbar.ui-scrollbar-xs::-webkit-scrollbar-track,
137
+ .ui-scrollbar.ui-scrollbar-x-xs::-webkit-scrollbar-track:horizontal,
138
+ .ui-scrollbar.ui-scrollbar-y-xs::-webkit-scrollbar-track:vertical {
139
+ border: none;
106
140
  }
107
141
 
108
- /* --- Size variants --- */
142
+ .ui-scrollbar::-webkit-scrollbar-corner { background: transparent; }
109
143
 
110
- /* Size M12px */
111
- .ui-scrollbar-m::-webkit-scrollbar {
112
- width: var(--scrollbar-m-thickness);
113
- height: var(--scrollbar-m-thickness);
114
- }
144
+ /* ── Size overridescompound selectors (0,0,2,0 > 0,0,1,0)
145
+ *
146
+ * IMPORTANT source order: "both axes" MUST come before per-axis rules.
147
+ * Same specificity → last declared wins. Per-axis (x-s, y-s …) must win
148
+ * over both-axes (m, s …) so they are placed AFTER both-axes below. */
115
149
 
116
- /* Size S6px (default, same as base .ui-scrollbar) */
117
- .ui-scrollbar-s::-webkit-scrollbar {
118
- width: var(--scrollbar-s-thickness);
119
- height: var(--scrollbar-s-thickness);
120
- }
150
+ /* Both axesset height AND width together */
151
+ .ui-scrollbar.ui-scrollbar-m::-webkit-scrollbar { height: var(--scrollbar-m-thickness); width: var(--scrollbar-m-thickness); }
152
+ .ui-scrollbar.ui-scrollbar-s::-webkit-scrollbar { height: var(--scrollbar-s-thickness); width: var(--scrollbar-s-thickness); }
153
+ .ui-scrollbar.ui-scrollbar-xs::-webkit-scrollbar { height: var(--scrollbar-xs-thickness); width: var(--scrollbar-xs-thickness); }
121
154
 
122
- /* Size XS2px */
123
- .ui-scrollbar-xs::-webkit-scrollbar {
124
- width: var(--scrollbar-xs-thickness);
125
- height: var(--scrollbar-xs-thickness);
126
- }
155
+ /* Per-axis horizontal (height only) declared after both-axes so they win */
156
+ .ui-scrollbar.ui-scrollbar-x-m::-webkit-scrollbar { height: var(--scrollbar-m-thickness); }
157
+ .ui-scrollbar.ui-scrollbar-x-s::-webkit-scrollbar { height: var(--scrollbar-s-thickness); }
158
+ .ui-scrollbar.ui-scrollbar-x-xs::-webkit-scrollbar { height: var(--scrollbar-xs-thickness); }
159
+
160
+ /* Per-axis vertical (width only) — declared after both-axes so they win */
161
+ .ui-scrollbar.ui-scrollbar-y-m::-webkit-scrollbar { width: var(--scrollbar-m-thickness); }
162
+ .ui-scrollbar.ui-scrollbar-y-s::-webkit-scrollbar { width: var(--scrollbar-s-thickness); }
163
+ .ui-scrollbar.ui-scrollbar-y-xs::-webkit-scrollbar { width: var(--scrollbar-xs-thickness); }
127
164
 
128
- /* XS size has no track border */
129
- .ui-scrollbar-xs::-webkit-scrollbar-track:vertical,
130
- .ui-scrollbar-xs::-webkit-scrollbar-track:horizontal {
165
+ /* XS: no border inset on thumb (4px track has no room) */
166
+ .ui-scrollbar.ui-scrollbar-xs::-webkit-scrollbar-thumb,
167
+ .ui-scrollbar.ui-scrollbar-x-xs::-webkit-scrollbar-thumb:horizontal,
168
+ .ui-scrollbar.ui-scrollbar-y-xs::-webkit-scrollbar-thumb:vertical {
131
169
  border: none;
170
+ background-clip: border-box;
132
171
  }
133
172
 
134
173
  }
@@ -170,6 +170,18 @@ module.exports = {
170
170
  "table-panel-main-line": withColorMixin("--table-panel-main-line"),
171
171
  "table-panel-selected": withColorMixin("--table-panel-selected"),
172
172
 
173
+ // Table component-scoped aliases (resolve from table.css tokens;
174
+ // swap automatically when an ancestor has data-surface="panel")
175
+ "table-c-header-bg": withColorMixin("--table-c-header-bg"),
176
+ "table-c-header-line": withColorMixin("--table-c-header-line"),
177
+ "table-c-border": withColorMixin("--table-c-border"),
178
+ "table-c-row-bg": withColorMixin("--table-c-row-bg"),
179
+ "table-c-row-bg-even": withColorMixin("--table-c-row-bg-even"),
180
+ "table-c-row-line": withColorMixin("--table-c-row-line"),
181
+ "table-c-col-line": withColorMixin("--table-c-col-line"),
182
+ "table-c-hover": withColorMixin("--table-c-hover"),
183
+ "table-c-selected": withColorMixin("--table-c-selected"),
184
+
173
185
  // Modal dropdown surface
174
186
  "modal-dropdown-surface": withColorMixin("--modal-dropdown-surface"),
175
187
 
@@ -77,64 +77,64 @@
77
77
  --state-primary-text-pressed-skyller: #1e40af;
78
78
  --state-secondary-default-xspector: #ececec;
79
79
  --state-secondary-default-report-xspector-light-mode: #9b8f00;
80
- --state-secondary-default-skyller: #60a5fa;
80
+ --state-secondary-default-skyller: #171717;
81
81
  --state-secondary-hover-xspector: #fafafa;
82
82
  --state-secondary-hover-report-xspector-light-mode: #b1a400;
83
- --state-secondary-hover-skyller: #90c0fc;
83
+ --state-secondary-hover-skyller: #424242;
84
84
  --state-secondary-stroke-xspector: rgba(236 236 236 / 0.48);
85
85
  --state-secondary-stroke-report-xspector-light-mode: rgba(155 143 0 / 0.64);
86
86
  --state-secondary-stroke-skyller: rgba(189 189 189 / 0.64);
87
87
  --state-secondary-hover-bg-xspector: rgba(250 250 250 / 0.08);
88
88
  --state-secondary-hover-bg-report-xspector-light-mode: rgba(221 205 0 / 0.08);
89
- --state-secondary-hover-bg-skyller: rgba(144 192 252 / 0.08);
89
+ --state-secondary-hover-bg-skyller: rgba(66 66 66 / 0.08);
90
90
  --state-secondary-pressed-xspector: #bbbbbb;
91
91
  --state-secondary-pressed-report-xspector-light-mode: #6f6700;
92
- --state-secondary-pressed-skyller: #1e40af;
92
+ --state-secondary-pressed-skyller: #000000;
93
93
  --state-secondary-active-xspector: #fafafa;
94
94
  --state-secondary-active-report-xspector-light-mode: #b1a400;
95
- --state-secondary-active-skyller: #1e3a8a;
95
+ --state-secondary-active-skyller: #000000;
96
96
  --state-secondary-text-solid-xspector: #212b36;
97
97
  --state-secondary-text-solid-report-xspector-light-mode: #ffffff;
98
98
  --state-secondary-text-solid-skyller: #ffffff;
99
99
  --state-secondary-text-outline-xspector: #ececec;
100
100
  --state-secondary-text-outline-report-xspector-light-mode: #9b8f00;
101
- --state-secondary-text-outline-skyller: #60a5fa;
101
+ --state-secondary-text-outline-skyller: #171717;
102
102
  --state-secondary-text-hover-xspector: #fafafa;
103
103
  --state-secondary-text-hover-report-xspector-light-mode: #b1a400;
104
- --state-secondary-text-hover-skyller: #90c0fc;
104
+ --state-secondary-text-hover-skyller: #424242;
105
105
  --state-secondary-text-pressed-xspector: #c5c5c5;
106
106
  --state-secondary-text-pressed-report-xspector-light-mode: #6f6700;
107
- --state-secondary-text-pressed-skyller: #1e40af;
107
+ --state-secondary-text-pressed-skyller: #000000;
108
108
  --state-tertiary-default-xspector: #8aa2ab;
109
109
  --state-tertiary-default-report-xspector-light-mode: #4f4f4f;
110
- --state-tertiary-default-skyller: #0891b2;
110
+ --state-tertiary-default-skyller: #60a5fa;
111
111
  --state-tertiary-hover-xspector: #adcad6;
112
112
  --state-tertiary-hover-report-xspector-light-mode: #6f6f6f;
113
- --state-tertiary-hover-skyller: #52b2c9;
113
+ --state-tertiary-hover-skyller: #90c0fc;
114
114
  --state-tertiary-stroke-xspector: rgba(138 162 171 / 0.48);
115
115
  --state-tertiary-stroke-report-xspector-light-mode: rgba(79 79 79 / 0.48);
116
- --state-tertiary-stroke-skyller: rgba(8 145 178 / 0.48);
116
+ --state-tertiary-stroke-skyller: rgba(189 189 189 / 0.48);
117
117
  --state-tertiary-hover-bg-xspector: rgba(173 202 214 / 0.08);
118
118
  --state-tertiary-hover-bg-report-xspector-light-mode: rgba(158 158 158 / 0.08);
119
- --state-tertiary-hover-bg-skyller: rgba(82 178 201 / 0.08);
119
+ --state-tertiary-hover-bg-skyller: rgba(144 192 252 / 0.08);
120
120
  --state-tertiary-pressed-xspector: #57656b;
121
121
  --state-tertiary-pressed-report-xspector-light-mode: #b1b1b1;
122
- --state-tertiary-pressed-skyller: #06667d;
122
+ --state-tertiary-pressed-skyller: #1e40af;
123
123
  --state-tertiary-active-xspector: #adcad6;
124
124
  --state-tertiary-active-report-xspector-light-mode: #6f6f6f;
125
- --state-tertiary-active-skyller: #044959;
125
+ --state-tertiary-active-skyller: #1e3a8a;
126
126
  --state-tertiary-text-solid-xspector: #212b36;
127
127
  --state-tertiary-text-solid-report-xspector-light-mode: #ffffff;
128
128
  --state-tertiary-text-solid-skyller: #ffffff;
129
129
  --state-tertiary-text-outline-xspector: #8aa2ab;
130
130
  --state-tertiary-text-outline-report-xspector-light-mode: #4f4f4f;
131
- --state-tertiary-text-outline-skyller: #0891b2;
131
+ --state-tertiary-text-outline-skyller: #60a5fa;
132
132
  --state-tertiary-text-hover-xspector: #adcad6;
133
133
  --state-tertiary-text-hover-report-xspector-light-mode: #6f6f6f;
134
- --state-tertiary-text-hover-skyller: #52b2c9;
134
+ --state-tertiary-text-hover-skyller: #90c0fc;
135
135
  --state-tertiary-text-pressed-xspector: #57656b;
136
136
  --state-tertiary-text-pressed-report-xspector-light-mode: #b1b1b1;
137
- --state-tertiary-text-pressed-skyller: #06667d;
137
+ --state-tertiary-text-pressed-skyller: #1e40af;
138
138
  --state-info-default-xspector: #1b7df5;
139
139
  --state-info-default-report-xspector-light-mode: #1b7df5;
140
140
  --state-info-default-skyller: #2563eb;
@@ -869,13 +869,13 @@
869
869
  --input-error-skyller: #dc2626;
870
870
  --function-default-solid-xspector: #ececec;
871
871
  --function-default-solid-report-xspector-light-mode: #1e3249;
872
- --function-default-solid-skyller: #2563eb;
872
+ --function-default-solid-skyller: #171717;
873
873
  --function-default-hover-xspector: #fafafa;
874
874
  --function-default-hover-report-xspector-light-mode: #35475b;
875
- --function-default-hover-skyller: #90c0fc;
875
+ --function-default-hover-skyller: #424242;
876
876
  --function-default-hover-bg-xspector: rgba(250 250 250 / 0.08);
877
877
  --function-default-hover-bg-report-xspector-light-mode: rgba(30 50 73 / 0.08);
878
- --function-default-hover-bg-skyller: rgba(144 192 252 / 0.08);
878
+ --function-default-hover-bg-skyller: rgba(23 23 23 / 0.08);
879
879
  --function-default-stroke-xspector: rgba(158 158 158 / 0.24);
880
880
  --function-default-stroke-report-xspector-light-mode: rgba(30 50 73 / 0.48);
881
881
  --function-default-stroke-skyller: rgba(189 189 189 / 0.48);
@@ -884,19 +884,19 @@
884
884
  --function-default-icon-skyller: #ffffff;
885
885
  --function-default-outline-icon-xspector: #9e9e9e;
886
886
  --function-default-outline-icon-report-xspector-light-mode: #1e3249;
887
- --function-default-outline-icon-skyller: #2563eb;
887
+ --function-default-outline-icon-skyller: #171717;
888
888
  --function-active-solid-xspector: #b1a400;
889
889
  --function-active-solid-report-xspector-light-mode: #9b8f00;
890
- --function-active-solid-skyller: #60a5fa;
890
+ --function-active-solid-skyller: #2563eb;
891
891
  --function-active-hover-xspector: #ddcd00;
892
892
  --function-active-hover-report-xspector-light-mode: #b1a400;
893
- --function-active-hover-skyller: #80b7fb;
893
+ --function-active-hover-skyller: #5182ef;
894
894
  --function-active-hover-bg-xspector: rgba(221 205 0 / 0.08);
895
895
  --function-active-hover-bg-report-xspector-light-mode: rgba(221 205 0 / 0.08);
896
- --function-active-hover-bg-skyller: rgba(128 183 251 / 0.08);
896
+ --function-active-hover-bg-skyller: rgba(81 130 239 / 0.08);
897
897
  --function-active-stroke-xspector: rgba(177 164 0 / 0.48);
898
898
  --function-active-stroke-report-xspector-light-mode: rgba(177 164 0 / 0.48);
899
- --function-active-stroke-skyller: rgba(96 165 250 / 0.48);
899
+ --function-active-stroke-skyller: rgba(37 99 235 / 0.48);
900
900
  --function-active-icon-xspector: #212b36;
901
901
  --function-active-icon-report-xspector-light-mode: #ffffff;
902
902
  --function-active-icon-skyller: #ffffff;
@@ -1038,7 +1038,7 @@
1038
1038
  --modal-line-xspector: #4a4a4a;
1039
1039
  --modal-line-report-xspector-light-mode: #cfcfcf;
1040
1040
  --modal-line-skyller: #d4d4d4;
1041
- --bg-bg4-xspector: #0f2a46;
1041
+ --bg-bg4-xspector: #0c2948;
1042
1042
  --bg-bg4-report-xspector-light-mode: #ffffff;
1043
1043
  --bg-bg4-skyller: #ffffff;
1044
1044
  --bg-bg5-xspector: #000000;
@@ -1055,7 +1055,7 @@
1055
1055
  --bg-stroke5-skyller: #000000;
1056
1056
  --table-bg-main-xspector: #091a2a;
1057
1057
  --table-bg-main-report-xspector-light-mode: #e5e5e5;
1058
- --table-bg-main-skyller: #f5f5f5;
1058
+ --table-bg-main-skyller: #d4d4d6;
1059
1059
  --table-bg-line-xspector: #1c3955;
1060
1060
  --table-bg-line-report-xspector-light-mode: #d2d2d2;
1061
1061
  --table-bg-line-skyller: #ececec;
@@ -1083,7 +1083,6 @@
1083
1083
  --modal-dropdown-surface-xspector: #252628;
1084
1084
  --modal-dropdown-surface-report-xspector-light-mode: #ffffff;
1085
1085
  --modal-dropdown-surface-skyller: #ffffff;
1086
- --modal-dropdown-surface-skyller: #ffffff;
1087
1086
 
1088
1087
  /* BUTTON RADIUS */
1089
1088
  --button-l-round: 8px;
@@ -9,4 +9,5 @@
9
9
  @import url(components/dropdown-menu.css);
10
10
  @import url(components/switch.css);
11
11
  @import url(components/scrollbar.css);
12
- @import url(components/badge.css);
12
+ @import url(components/badge.css);
13
+ @import url(components/table.css);
@@ -1,12 +1,17 @@
1
1
  :root {
2
2
  /* ------------------------------------------------------------------ */
3
3
  /* Scrollbar Component Tokens */
4
+ /* Values represent TOTAL TRACK SIZE (thumb + padding + border). */
5
+ /* Figma node: 9466-13957 */
4
6
  /* ------------------------------------------------------------------ */
5
7
 
6
- /* Thumb sizes (track width/height) */
7
- --scrollbar-m-thickness: 12px;
8
- --scrollbar-s-thickness: 6px;
9
- --scrollbar-xs-thickness: 2px;
8
+ /* Track thickness (= thumb + 2×2px padding)
9
+ * M: 16px = 12px thumb + 2px top + 2px bottom
10
+ * S: 10px = 6px thumb + 2px top + 2px bottom (no track border)
11
+ * XS: 4px = 4px thumb, no padding, no border */
12
+ --scrollbar-m-thickness: 16px;
13
+ --scrollbar-s-thickness: 10px;
14
+ --scrollbar-xs-thickness: 4px;
10
15
 
11
16
  /* Track border — visible on M size only */
12
17
  --scrollbar-track-border-width: 1px;
@@ -0,0 +1,63 @@
1
+ :root {
2
+ /* ------------------------------------------------------------------ */
3
+ /* Table Component Tokens */
4
+ /* Figma node: 9637-8978 (section "Use case" on Design System page) */
5
+ /* */
6
+ /* These are component-scoped aliases that the Table component uses */
7
+ /* exclusively. They default to the "on-bg" values and are */
8
+ /* automatically overridden when an ancestor carries */
9
+ /* data-surface="panel" — no React prop or variant needed. */
10
+ /* ------------------------------------------------------------------ */
11
+
12
+ /* Header cell background.
13
+ * Default: table-bg-main (opaque dark blue).
14
+ * Panel: transparent — the modal/panel surface shows through. */
15
+ --table-c-header-bg: var(--table-bg-main);
16
+
17
+ /* Separator below the header row.
18
+ * Default: transparent — the bg contrast between header and rows
19
+ * provides visual separation; no explicit line needed.
20
+ * Panel: table-panel-main-line — explicit separator required
21
+ * because all backgrounds are transparent. */
22
+ --table-c-header-line: transparent;
23
+
24
+ /* Outer border when Table / DataTable uses a framed shell. */
25
+ --table-c-border: transparent;
26
+
27
+ /* Body row backgrounds.
28
+ * Default: bg-a for all rows; striped mode uses bg-a/bg-b alternate.
29
+ * Panel: transparent for both — panel surface provides the bg. */
30
+ --table-c-row-bg: var(--table-bg-a);
31
+ --table-c-row-bg-even: var(--table-bg-b);
32
+
33
+ /* Horizontal row dividers (used when TableRow divided=true). */
34
+ --table-c-row-line: var(--table-bg-line);
35
+
36
+ /* Vertical column dividers (used when TableRow colDivided=true). */
37
+ --table-c-col-line: var(--table-bg-line);
38
+
39
+ /* Hover overlay on body rows. */
40
+ --table-c-hover: var(--table-bg-hover);
41
+
42
+ /* Selected row overlay (data-state="selected" on <tr>). */
43
+ --table-c-selected: var(--transparent-primary-12);
44
+ }
45
+
46
+ /* ------------------------------------------------------------------ */
47
+ /* Panel / Modal / Drawer surface override */
48
+ /* Apply data-surface="panel" to the Modal, Drawer, or Panel wrapper. */
49
+ /* All Table instances inside the scope inherit these tokens. */
50
+ /* Avoid scoping the whole Storybook/page: row bgs are transparent and */
51
+ /* expect --modal-surface behind the table, not --workspace/page bg. */
52
+ /* ------------------------------------------------------------------ */
53
+ [data-surface="panel"] {
54
+ --table-c-header-bg: var(--modal-surface);
55
+ --table-c-header-line: var(--table-panel-main-line);
56
+ --table-c-border: var(--table-panel-main-line);
57
+ --table-c-row-bg: var(--modal-surface); /* TODO: not have this token in Figma for now. */
58
+ --table-c-row-bg-even: var(--table-panel-hover); /* TODO: not have this token in Figma for now. */
59
+ --table-c-row-line: var(--table-panel-sub-line);
60
+ --table-c-col-line: var(--table-panel-sub-line);
61
+ --table-c-hover: var(--table-panel-hover);
62
+ --table-c-selected: var(--table-panel-selected);
63
+ }