@stcn52/pro 0.0.0-stage → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/CHANGELOG.md +621 -0
  2. package/CONVENTIONS.md +152 -0
  3. package/LICENSE +21 -0
  4. package/README.md +226 -2
  5. package/RELEASING.md +51 -0
  6. package/THIRD_PARTY_NOTICES.md +52 -0
  7. package/dist/index.cjs +23272 -0
  8. package/dist/index.cjs.map +1 -0
  9. package/dist/index.d.cts +5068 -0
  10. package/dist/index.d.ts +5068 -0
  11. package/dist/index.js +23060 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/styles.css +10485 -0
  14. package/dist/tokens.css +322 -0
  15. package/docs/antd-alignment-plan.md +983 -0
  16. package/docs/api.md +3669 -0
  17. package/docs/components.md +1706 -0
  18. package/docs/measurements.md +152 -0
  19. package/docs/qa/README.md +50 -0
  20. package/docs/qa/browser-checks.json +394 -0
  21. package/docs/qa/d-chrome-checklist-dark.png +0 -0
  22. package/docs/qa/d-chrome-checks.json +234 -0
  23. package/docs/qa/d-chrome-detail-dark.png +0 -0
  24. package/docs/qa/d-chrome-filters-dark.png +0 -0
  25. package/docs/qa/d-chrome-shell-dark.png +0 -0
  26. package/docs/qa/d-detail-checks.json +222 -0
  27. package/docs/qa/d-detail-comments-failed-dark.png +0 -0
  28. package/docs/qa/d-detail-preview-dark.png +0 -0
  29. package/docs/qa/d-entity-checks.json +294 -0
  30. package/docs/qa/d-entity-failed-dark.png +0 -0
  31. package/docs/qa/d-workbench-canvas-dark.png +0 -0
  32. package/docs/qa/d-workbench-checks.json +338 -0
  33. package/docs/qa/d-workbench-edit-failed-dark.png +0 -0
  34. package/docs/qa/d-workbench-roadmap-dark.png +0 -0
  35. package/docs/qa/d-workbench-wizard-failed-dark.png +0 -0
  36. package/docs/qa/date-range-mobile-dark.jpg +0 -0
  37. package/docs/qa/p0-cascader-checks.json +228 -0
  38. package/docs/qa/p0-cascader-multiple-dark.png +0 -0
  39. package/docs/qa/p0-config-checks.json +430 -0
  40. package/docs/qa/p0-config-nested-dark.png +0 -0
  41. package/docs/qa/p0-date-checks.json +595 -0
  42. package/docs/qa/p0-date-time-dark.png +0 -0
  43. package/docs/qa/p0-form-lifecycle-checks.json +30 -0
  44. package/docs/qa/p0-form-lifecycle.png +0 -0
  45. package/docs/qa/p0-select-checks.json +378 -0
  46. package/docs/qa/p0-select-virtual-dark.png +0 -0
  47. package/docs/qa/p0-table-checks.json +290 -0
  48. package/docs/qa/p0-table-virtual-dark.png +0 -0
  49. package/docs/qa/p0-transfer-checks.json +322 -0
  50. package/docs/qa/p0-transfer-pagination-dark.png +0 -0
  51. package/docs/qa/p0-tree-checks.json +242 -0
  52. package/docs/qa/p0-tree-range-dark.png +0 -0
  53. package/docs/qa/p1-app-browser-checks.json +34 -0
  54. package/docs/qa/p1-app-feedback-dark.png +0 -0
  55. package/docs/qa/p1-avatar-checks.json +370 -0
  56. package/docs/qa/p1-avatar-dark.png +0 -0
  57. package/docs/qa/p1-browser-checks.json +218 -0
  58. package/docs/qa/p1-card-checks.json +262 -0
  59. package/docs/qa/p1-card-dark.png +0 -0
  60. package/docs/qa/p1-content-navigation-browser-checks.json +114 -0
  61. package/docs/qa/p1-controls-browser-checks.json +86 -0
  62. package/docs/qa/p1-controls-desktop-dark.png +0 -0
  63. package/docs/qa/p1-dialog-nested-dark.png +0 -0
  64. package/docs/qa/p1-display-browser-checks.json +114 -0
  65. package/docs/qa/p1-display-desktop-dark.png +0 -0
  66. package/docs/qa/p1-divider-dark.png +0 -0
  67. package/docs/qa/p1-drawer-browser-checks.json +302 -0
  68. package/docs/qa/p1-drawer-rtl-dark.png +0 -0
  69. package/docs/qa/p1-general-input-browser-checks.json +114 -0
  70. package/docs/qa/p1-general-input-desktop-dark.png +0 -0
  71. package/docs/qa/p1-image-browser-checks.json +38 -0
  72. package/docs/qa/p1-image-preview-dark.png +0 -0
  73. package/docs/qa/p1-inline-browser-checks.json +58 -0
  74. package/docs/qa/p1-inline-desktop-dark.png +0 -0
  75. package/docs/qa/p1-layout-browser-checks.json +114 -0
  76. package/docs/qa/p1-layout-desktop-dark.png +0 -0
  77. package/docs/qa/p1-menu-checks.json +357 -0
  78. package/docs/qa/p1-menu-long-dark.png +0 -0
  79. package/docs/qa/p1-nav-dark.png +0 -0
  80. package/docs/qa/p1-nav-sidebar-checks.json +218 -0
  81. package/docs/qa/p1-navigation-browser-checks.json +114 -0
  82. package/docs/qa/p1-navigation-mobile-dark.png +0 -0
  83. package/docs/qa/p1-pagination-checks.json +309 -0
  84. package/docs/qa/p1-pagination-dark.png +0 -0
  85. package/docs/qa/p1-pagination-mobile-dark.png +0 -0
  86. package/docs/qa/p1-popup-actions-browser-checks.json +58 -0
  87. package/docs/qa/p1-popup-actions-desktop-dark.png +0 -0
  88. package/docs/qa/p1-progress-browser-checks.json +30 -0
  89. package/docs/qa/p1-progress-desktop-dark.png +0 -0
  90. package/docs/qa/p1-rate-half-desktop-dark.png +0 -0
  91. package/docs/qa/p1-segment-checks.json +426 -0
  92. package/docs/qa/p1-segment-dark.png +0 -0
  93. package/docs/qa/p1-sidebar-dark.png +0 -0
  94. package/docs/qa/p1-slider-rate-browser-checks.json +114 -0
  95. package/docs/qa/p1-states-browser-checks.json +34 -0
  96. package/docs/qa/p1-states-checks.json +342 -0
  97. package/docs/qa/p1-states-dark.png +0 -0
  98. package/docs/qa/p1-states-mobile-dark.png +0 -0
  99. package/docs/qa/p1-tabs-editable-dark.png +0 -0
  100. package/docs/qa/p1-tag-dark.png +0 -0
  101. package/docs/qa/p1-tag-divider-checks.json +330 -0
  102. package/docs/qa/p1-upload-browser-checks.json +30 -0
  103. package/docs/qa/p1-upload-list-dark.png +0 -0
  104. package/docs/qa/p2-ai-panel-checks.json +401 -0
  105. package/docs/qa/p2-ai-panel-dark.png +0 -0
  106. package/docs/qa/p2-alert-dark.png +0 -0
  107. package/docs/qa/p2-app-final-checks.json +309 -0
  108. package/docs/qa/p2-app-final-dark.png +0 -0
  109. package/docs/qa/p2-badge-alert-checks.json +466 -0
  110. package/docs/qa/p2-beam-motion-checks.json +58 -0
  111. package/docs/qa/p2-calendar-dark.png +0 -0
  112. package/docs/qa/p2-calendar-timeline-checks.json +254 -0
  113. package/docs/qa/p2-charts-checks.json +242 -0
  114. package/docs/qa/p2-charts-dark.png +0 -0
  115. package/docs/qa/p2-color-gradient-dark.png +0 -0
  116. package/docs/qa/p2-content-navigation-checks.json +794 -0
  117. package/docs/qa/p2-dialog-popover-dark.png +0 -0
  118. package/docs/qa/p2-display-checks.json +128 -0
  119. package/docs/qa/p2-display-dark.png +0 -0
  120. package/docs/qa/p2-drawer-final-dark.png +0 -0
  121. package/docs/qa/p2-extras-checks.json +482 -0
  122. package/docs/qa/p2-general-inputs-checks.json +154 -0
  123. package/docs/qa/p2-general-inputs-dark.png +0 -0
  124. package/docs/qa/p2-icon-checks.json +466 -0
  125. package/docs/qa/p2-icon-dark.png +0 -0
  126. package/docs/qa/p2-image-dark.png +0 -0
  127. package/docs/qa/p2-inline-editors-checks.json +199 -0
  128. package/docs/qa/p2-input-button-checks.json +778 -0
  129. package/docs/qa/p2-input-dark.png +0 -0
  130. package/docs/qa/p2-layout-final-checks.json +136 -0
  131. package/docs/qa/p2-layout-final-dark.png +0 -0
  132. package/docs/qa/p2-lists-checks.json +290 -0
  133. package/docs/qa/p2-masonry-dark.png +0 -0
  134. package/docs/qa/p2-media-checks.json +212 -0
  135. package/docs/qa/p2-mentions-color-checks.json +362 -0
  136. package/docs/qa/p2-overlay-checks.json +370 -0
  137. package/docs/qa/p2-people-picker-dark.png +0 -0
  138. package/docs/qa/p2-popconfirm-final-dark.png +0 -0
  139. package/docs/qa/p2-popup-final-checks.json +223 -0
  140. package/docs/qa/p2-qr-browser-decode.json +30 -0
  141. package/docs/qa/p2-quick-select-dark.png +0 -0
  142. package/docs/qa/p2-quick-text-dark.png +0 -0
  143. package/docs/qa/p2-rate-dark.png +0 -0
  144. package/docs/qa/p2-scroll-navigation-checks.json +198 -0
  145. package/docs/qa/p2-scroll-navigation-dark.png +0 -0
  146. package/docs/qa/p2-selection-bar-checks.json +302 -0
  147. package/docs/qa/p2-selection-bar-dark.png +0 -0
  148. package/docs/qa/p2-slider-rate-checks.json +262 -0
  149. package/docs/qa/p2-switch-dark.png +0 -0
  150. package/docs/qa/p2-tabs-dark.png +0 -0
  151. package/docs/qa/p2-timeline-dark.png +0 -0
  152. package/docs/qa/p2-toast-dark.png +0 -0
  153. package/docs/qa/p2-toggle-checks.json +834 -0
  154. package/docs/qa/p2-tour-dark.png +0 -0
  155. package/docs/qa/p2-upload-dark.png +0 -0
  156. package/docs/qa/table-details.md +26 -0
  157. package/docs/qa/table-mobile-dark.jpg +0 -0
  158. package/docs/qa/transfer-mobile-light.jpg +0 -0
  159. package/docs/qa/tree-browser-checks.json +226 -0
  160. package/docs/qa/tree-details.md +25 -0
  161. package/docs/qa/tree-directory-mobile-dark.jpg +0 -0
  162. package/docs/tokens.md +255 -0
  163. package/package.json +95 -4
@@ -0,0 +1,322 @@
1
+ /* =============================================================================
2
+ * @stcn52/pro — design tokens
3
+ *
4
+ * The scale values are lifted verbatim from PingCode's own theme stylesheet
5
+ * (`.portal{--gray-*:…}`, `:root[theme=dark]`) so the restored Ship surface
6
+ * matches the product it reproduces. Everything above the raw scale is named by
7
+ * purpose, per the Klun front-end rules: `--surface-*`, `--fg-*`, `--accent`.
8
+ *
9
+ * Theme is selected with `data-theme="light" | "dark"` on any ancestor
10
+ * (usually <html>). `prefers-color-scheme` is honoured only when the host sets
11
+ * `data-theme="auto"`.
12
+ * ========================================================================== */
13
+
14
+ :root,
15
+ [data-theme='light'] {
16
+ /* ---- raw scale (PingCode) ------------------------------------------- */
17
+ --gray-10: #fff;
18
+ --gray-70: #f7f7f7;
19
+ --gray-80: #fafafa;
20
+ --gray-100: #f5f5f5;
21
+ --gray-200: #eee;
22
+ --gray-300: #ddd;
23
+ --gray-400: #cacaca;
24
+ --gray-500: #aaa;
25
+ --gray-600: #999;
26
+ --gray-700: #666;
27
+ --gray-800: #333;
28
+ --gray-900: #1f1f1f;
29
+
30
+ --brand-50: #f2f6ff;
31
+ --brand-100: #e6edff;
32
+ --brand-200: #c9dbff;
33
+ --brand-300: #9dbcff;
34
+ --brand-400: #80a8ff;
35
+ --brand-500: #6698ff; /* PingCode --primary */
36
+ --brand-600: #4c7fe6;
37
+ --brand-700: #3563bf;
38
+
39
+ --green-500: #73d897; /* --success */
40
+ --cyan-500: #5dcfff; /* --info */
41
+ --amber-500: #ffcd5d; /* --warning */
42
+ /* The Marketplace's favourite star — measured rgb(255,159,115) on the live
43
+ * application cards. Not the amber warning tone. */
44
+ --star: #ff9f73;
45
+ --red-500: #ff7575; /* --danger */
46
+
47
+ /* status palette used by Ship tags (sampled from the live product) */
48
+ --status-pending: #56abfb;
49
+ --status-completed: #73d897;
50
+ --status-in-progress: #fdc45c;
51
+ --status-blocked: #ff7575;
52
+ --status-todo: #cacaca;
53
+ --status-review: #9d8cff;
54
+
55
+ /* ---- semantic: brand ------------------------------------------------- */
56
+ --accent: var(--brand-500);
57
+ --accent-hover: var(--brand-400);
58
+ --accent-active: var(--brand-600);
59
+ --accent-soft: rgba(102, 152, 255, 0.1);
60
+ --accent-soft-hover: rgba(102, 152, 255, 0.16);
61
+ --accent-contrast: #fff;
62
+
63
+ /* ---- semantic: surfaces --------------------------------------------- */
64
+ --surface-app: #fff;
65
+ --surface-default: #fff;
66
+ --surface-panel: #fbfbfb;
67
+ --surface-float: #fff;
68
+ --surface-sunken: var(--gray-80);
69
+ --surface-header: #fff;
70
+ --surface-rail: #4a525b;
71
+ --surface-rail-hover: #56616d;
72
+ --surface-rail-active: #39414c; /* measured on the live rail's active item */
73
+ --surface-hover: var(--gray-100);
74
+ --surface-active: var(--gray-200);
75
+ --surface-selected: var(--accent-soft);
76
+ --surface-scrim: rgba(0, 0, 0, 0.55);
77
+ --surface-table-head: var(--gray-80);
78
+ --surface-table-row-hover: var(--gray-70);
79
+ /* The product's grid tints a selected row with the head's neutral tone and
80
+ * leaves the accent to the checkbox, so a row can be selected and still read as
81
+ * a row (measured off the reference: #fafafa under a #57abfb box). */
82
+ --surface-table-row-selected: var(--gray-80);
83
+
84
+ /* ---- semantic: foreground -------------------------------------------- */
85
+ --fg: #333;
86
+ --fg-strong: #1f1f1f;
87
+ --fg-muted: #666666; /* 5.74:1 on white */
88
+ /* The live grid's header text is #aaa; kept verbatim for fidelity even
89
+ though it is below AA. Use --fg-subtle (or --fg-muted) for anything that
90
+ must pass contrast. */
91
+ --fg-th: #aaaaaa;
92
+
93
+ --fg-subtle: #767676; /* 4.54:1 — PingCode's #999 fails AA, so the token is deepened */
94
+ --fg-label: #999999; /* the live sidebar group label; below AA, like --fg-th */
95
+ --fg-disabled: var(--gray-400);
96
+ --fg-on-rail: #ddd;
97
+ --fg-on-rail-muted: #9aa4af;
98
+ --fg-on-accent: #fff;
99
+ --fg-link: #3d6fd0; /* 4.79:1 on white; --accent is a fill, not a text colour */
100
+
101
+ /* ---- semantic: borders ----------------------------------------------- */
102
+ --border: var(--gray-200);
103
+ --border-strong: var(--gray-300);
104
+ --border-input: var(--gray-300);
105
+ --border-input-hover: var(--gray-400);
106
+ --border-divider: var(--gray-200);
107
+
108
+ /* ---- elevation -------------------------------------------------------- */
109
+ --shadow-header: 0 4px 8px 0 rgba(0, 0, 0, 0.03);
110
+ --shadow-popover: 0 2px 12px 0 rgba(0, 0, 0, 0.12);
111
+ --shadow-dialog: 0 8px 32px 0 rgba(0, 0, 0, 0.18);
112
+ --shadow-float-btn: 0 0 10px rgba(0, 0, 0, 0.1);
113
+ --shadow-float-btn-hover: 0 0 10px rgba(0, 0, 0, 0.25);
114
+ --shadow-table-fixed-left: 6px 0 6px 0 rgba(0, 0, 0, 0.05);
115
+ --shadow-table-fixed-right: -6px 0 6px 0 rgba(0, 0, 0, 0.05);
116
+ --shadow-switch-knob: 0 1px 3px rgba(0, 0, 0, 0.2);
117
+
118
+ /* ---- typography ------------------------------------------------------- */
119
+ --font-sans:
120
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', 'Helvetica Neue', 'Noto Sans',
121
+ 'Noto Sans CJK SC', 'Microsoft Yahei', Arial, 'Hiragino Sans GB', sans-serif;
122
+ --font-mono: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', monospace;
123
+
124
+ --text-xs: 12px;
125
+ --text-sm: 13px;
126
+ --text-base: 14px;
127
+ --text-md: 15px;
128
+ --text-lg: 16px;
129
+ --text-xl: 20px;
130
+ --text-2xl: 24px;
131
+
132
+ --leading-tight: 1.3;
133
+ --leading-base: 1.5715; /* 22px @ 14px, PingCode's rhythm */
134
+ --leading-relaxed: 1.72;
135
+
136
+ --weight-regular: 400;
137
+ --weight-medium: 500;
138
+ --weight-bold: 600;
139
+
140
+ /* ---- spacing / sizing ------------------------------------------------- */
141
+ --space-1: 4px;
142
+ --space-2: 8px;
143
+ --space-3: 12px;
144
+ --space-4: 16px;
145
+ --space-5: 20px;
146
+ --space-6: 24px;
147
+ --space-8: 32px;
148
+ --space-10: 40px;
149
+ --space-12: 48px;
150
+
151
+ /* The grid's header row and the selection bar that stands in for it are one
152
+ * measurement: the bar is not a different thing, it is that row. */
153
+ --table-head-height: 44px;
154
+
155
+ --radius-sm: 2px;
156
+ --radius: 4px;
157
+ --radius-md: 6px;
158
+ --radius-lg: 8px;
159
+ /* Search fields. The live top bar measures 16px on a 32px box (i.e. a full
160
+ * stadium); this restoration deliberately uses 8px so the box reads as a
161
+ * rounded rectangle — an agreed deviation, see docs/measurements.md. The
162
+ * page/list toolbar field keeps the measured 4.8px. */
163
+ --radius-search-header: 8px;
164
+ --radius-search-field: 4.8px;
165
+ --radius-pill: 999px;
166
+
167
+ /* Ship chrome geometry — measured from the live product */
168
+ --rail-width: 60px;
169
+ --rail-item: 60px;
170
+ --header-height: 52px;
171
+ --toolbar-height: 48px;
172
+ --footer-height: 48px;
173
+ --sidebar-width: 300px;
174
+
175
+ --sidebar-width-old: 260px; /* measured on the live product */
176
+ --sidebar-min-width: 220px;
177
+ --sidebar-max-width: 420px;
178
+
179
+ --control-height-sm: 24px;
180
+ --control-height: 32px;
181
+ --control-height-lg: 36px;
182
+
183
+ --z-popover: 1000;
184
+ --z-dialog: 1100;
185
+ --z-toast: 1200;
186
+ --z-tooltip: 1300;
187
+
188
+ --duration-fast: 120ms;
189
+ --duration: 180ms;
190
+ --ease: cubic-bezier(0.4, 0, 0.2, 1);
191
+
192
+ color-scheme: light;
193
+ }
194
+
195
+ /* ---- dark theme --------------------------------------------------------- */
196
+ :root[data-theme='dark'],
197
+ [data-theme='dark'] {
198
+ --fg-th: #8b96a3;
199
+
200
+ --gray-10: #2a2e34;
201
+ --gray-70: #32363d;
202
+ --gray-80: #30353c;
203
+ --gray-100: #393e46;
204
+ --gray-200: #3c414a;
205
+ --gray-300: #464c57;
206
+ --gray-400: #5b6370;
207
+ --gray-500: #666e7d;
208
+ --gray-600: #6f7a8a;
209
+ --gray-700: #87909e;
210
+ --gray-800: #bcc4d1;
211
+ --gray-900: #d9dee6;
212
+
213
+ --brand-50: #323844;
214
+ --brand-100: #38414f;
215
+ --brand-200: #435066;
216
+ --brand-300: #4f6080;
217
+ --brand-400: #5c7bb8;
218
+ --brand-500: #6698ff;
219
+ --brand-600: #82aaff;
220
+ --brand-700: #a3c0ff;
221
+
222
+ --surface-app: #2a2e34;
223
+ --surface-default: #2a2e34;
224
+ --surface-panel: #30353c;
225
+ --surface-float: #393e46;
226
+ --surface-sunken: #32363d;
227
+ --surface-header: #30353c;
228
+ --surface-rail: #23272c;
229
+ --surface-rail-hover: #32373e;
230
+ --surface-rail-active: #2c3138;
231
+ --surface-hover: #3c414a;
232
+ --surface-active: #464c57;
233
+ --surface-selected: rgba(102, 152, 255, 0.16);
234
+ --surface-scrim: rgba(0, 0, 0, 0.65);
235
+ --surface-table-head: #32363d;
236
+ --surface-table-row-hover: #343941;
237
+ --surface-table-row-selected: #32363d;
238
+
239
+ --fg: #bcc4d1; /* 7.77:1 on --surface-app */
240
+ --fg-strong: #e4e9f0;
241
+ --fg-muted: #a2adbb; /* 6.00:1 */
242
+ --fg-subtle: #93a0b0; /* 5.13:1, 4.64:1 on the panel surface */
243
+ --fg-disabled: #5b6370;
244
+ --fg-on-rail: #bcc4d1;
245
+ --fg-on-rail-muted: #6f7a8a;
246
+ --fg-link: #82aaff;
247
+
248
+ --border: #3c414a;
249
+ --border-strong: #464c57;
250
+ --border-input: #464c57;
251
+ --border-input-hover: #5b6370;
252
+ --border-divider: #3c414a;
253
+
254
+ --shadow-header: 0 2px 6px 0 rgba(0, 0, 0, 0.2);
255
+ --shadow-popover: 0 2px 12px 0 rgba(0, 0, 0, 0.45);
256
+ --shadow-dialog: 0 8px 32px 0 rgba(0, 0, 0, 0.55);
257
+ --shadow-float-btn: 0 0 10px rgba(0, 0, 0, 0.25);
258
+ --shadow-float-btn-hover: 0 0 10px rgba(0, 0, 0, 0.45);
259
+ --shadow-table-fixed-left: 6px 0 6px 0 rgba(0, 0, 0, 0.1);
260
+ --shadow-table-fixed-right: -6px 0 6px 0 rgba(0, 0, 0, 0.1);
261
+ --shadow-switch-knob: 0 1px 3px rgba(0, 0, 0, 0.5);
262
+
263
+ --status-todo: #5b6370;
264
+
265
+ color-scheme: dark;
266
+ }
267
+
268
+ @media (prefers-color-scheme: dark) {
269
+ :root[data-theme='auto'] {
270
+ --gray-10: #2a2e34;
271
+ --gray-70: #32363d;
272
+ --gray-80: #30353c;
273
+ --gray-100: #393e46;
274
+ --gray-200: #3c414a;
275
+ --gray-300: #464c57;
276
+ --gray-400: #5b6370;
277
+ --gray-500: #666e7d;
278
+ --gray-600: #6f7a8a;
279
+ --gray-700: #87909e;
280
+ --gray-800: #bcc4d1;
281
+ --gray-900: #d9dee6;
282
+
283
+ --surface-app: #2a2e34;
284
+ --surface-default: #2a2e34;
285
+ --surface-panel: #30353c;
286
+ --surface-float: #393e46;
287
+ --surface-sunken: #32363d;
288
+ --surface-header: #30353c;
289
+ --surface-rail: #23272c;
290
+ --surface-rail-hover: #32373e;
291
+ --surface-rail-active: #2c3138;
292
+ --surface-hover: #3c414a;
293
+ --surface-active: #464c57;
294
+ --surface-selected: rgba(102, 152, 255, 0.16);
295
+ --surface-scrim: rgba(0, 0, 0, 0.65);
296
+ --surface-table-head: #32363d;
297
+ --surface-table-row-hover: #343941;
298
+
299
+ --fg: #bcc4d1;
300
+ --fg-strong: #e4e9f0;
301
+ --fg-muted: #a2adbb;
302
+ --fg-subtle: #93a0b0;
303
+ --fg-disabled: #5b6370;
304
+ --fg-link: #82aaff;
305
+
306
+ --border: #3c414a;
307
+ --border-strong: #464c57;
308
+ --border-input: #464c57;
309
+ --border-input-hover: #5b6370;
310
+ --border-divider: #3c414a;
311
+
312
+ --shadow-header: 0 2px 6px 0 rgba(0, 0, 0, 0.2);
313
+ --shadow-popover: 0 2px 12px 0 rgba(0, 0, 0, 0.45);
314
+ --shadow-dialog: 0 8px 32px 0 rgba(0, 0, 0, 0.55);
315
+ --shadow-table-fixed-left: 6px 0 6px 0 rgba(0, 0, 0, 0.1);
316
+ --shadow-table-fixed-right: -6px 0 6px 0 rgba(0, 0, 0, 0.1);
317
+
318
+ --status-todo: #5b6370;
319
+
320
+ color-scheme: dark;
321
+ }
322
+ }