@donkit-ai/design-system 0.2.3

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.
@@ -0,0 +1,278 @@
1
+ /* =====================================
2
+ * Donkit Design System - Design Tokens
3
+ * ===================================*/
4
+
5
+ /* CSS Variables - must be in base layer to be available everywhere */
6
+ @layer base {
7
+ :root {
8
+ /* =====================================
9
+ * 1) Colors: primitives + dark semantic
10
+ * ===================================*/
11
+ /* Color primitives - white */
12
+ --color-white: #FFFAFA;
13
+ --color-white-65: rgba(255, 250, 250, 0.65);
14
+ --color-white-50: rgba(255, 250, 250, 0.5);
15
+ --color-white-40: rgba(255, 250, 250, 0.4);
16
+ --color-white-20: rgba(255, 250, 250, 0.2);
17
+ --color-white-15: rgba(255, 250, 250, 0.15);
18
+ --color-white-13: rgba(255, 250, 250, 0.13);
19
+ --color-white-06: rgba(255, 250, 250, 0.06);
20
+
21
+ /* Color primitives - black */
22
+ --color-black: #0E0F11;
23
+ --color-black-65: rgba(14, 15, 17, 0.65);
24
+ --color-black-60: rgba(14, 15, 17, 0.6);
25
+ --color-black-50: rgba(14, 15, 17, 0.5);
26
+ --color-black-40: rgba(14, 15, 17, 0.4);
27
+ --color-black-20: rgba(14, 15, 17, 0.2);
28
+ --color-black-10: rgba(14, 15, 17, 0.1);
29
+ --color-black-08: rgba(14, 15, 17, 0.08);
30
+ --color-black-04: rgba(14, 15, 17, 0.04);
31
+
32
+ /* Color primitives - brand/accent */
33
+ --color-red: #EA6464;
34
+ --color-red-90: rgba(234, 100, 100, 0.9);
35
+ --color-red-10: rgba(234, 100, 100, 0.1);
36
+
37
+ /* Color semantics - status/feedback (bright for dark theme) */
38
+ --color-info: #60A5FA;
39
+ --color-info-15: rgba(96, 165, 250, 0.15);
40
+ --color-success: #00C86E;
41
+ --color-success-15: rgba(0, 200, 110, 0.15);
42
+ --color-warning: #FFBB00;
43
+ --color-warning-15: rgba(255, 187, 0, 0.15);
44
+ --color-error: #FF1200;
45
+ --color-error-15: rgba(255, 18, 0, 0.15);
46
+
47
+ /* Status colors - dark versions for light theme */
48
+ --color-info-dark: #2563EB;
49
+ --color-info-dark-15: rgba(37, 99, 235, 0.15);
50
+ --color-success-dark: #00A055;
51
+ --color-success-dark-15: rgba(0, 160, 85, 0.15);
52
+ --color-warning-dark: #D97706;
53
+ --color-warning-dark-15: rgba(217, 119, 6, 0.15);
54
+ --color-error-dark: #DC2626;
55
+ --color-error-dark-15: rgba(220, 38, 38, 0.15);
56
+
57
+ /* Legacy naming - deprecated but kept for backwards compatibility */
58
+ --color-neutral: var(--color-warning);
59
+ --color-neutral-10: var(--color-warning-15);
60
+ --color-error-10: var(--color-error-15);
61
+ --color-success-10: var(--color-success-15);
62
+
63
+ /* Color semantics - theme (dark default) */
64
+ --color-bg: var(--color-black);
65
+ --color-border: var(--color-white-20);
66
+ --color-border-hover: var(--color-white-40);
67
+ --color-border-selected: var(--color-white-50);
68
+ --color-txt-icon-1: var(--color-white);
69
+ --color-txt-icon-2: var(--color-white-65);
70
+ --color-accent: var(--color-red);
71
+ --color-accent-hover: var(--color-red-90);
72
+ --color-item-bg: var(--color-white-06);
73
+ --color-item-bg-selected: var(--color-white-06);
74
+ --color-item-bg-hover: var(--color-white-13);
75
+ --color-code-bg: var(--color-white-15);
76
+ --color-overlay: var(--color-black-60);
77
+
78
+ /* Status colors - adaptive (bright for dark theme) */
79
+ --color-status-info: var(--color-info);
80
+ --color-status-info-bg: var(--color-info-dark-15); /* темный фон для темной темы */
81
+ --color-status-success: var(--color-success);
82
+ --color-status-success-bg: var(--color-success-dark-15);
83
+ --color-status-warning: var(--color-warning);
84
+ --color-status-warning-bg: var(--color-warning-dark-15);
85
+ --color-status-error: var(--color-error);
86
+ --color-status-error-bg: var(--color-error-dark-15);
87
+ }
88
+
89
+ [data-theme="light"] {
90
+ /* Color semantics - theme (light) */
91
+ --color-bg: var(--color-white);
92
+ --color-border: var(--color-black-20);
93
+ --color-border-hover: var(--color-black-40);
94
+ --color-border-selected: var(--color-black-50);
95
+ --color-txt-icon-1: var(--color-black);
96
+ --color-txt-icon-2: var(--color-black-65);
97
+ --color-accent: var(--color-red);
98
+ --color-accent-hover: var(--color-red-90);
99
+ --color-item-bg: var(--color-black-04);
100
+ --color-item-bg-selected: var(--color-black-04);
101
+ --color-item-bg-hover: var(--color-black-08);
102
+ --color-code-bg: var(--color-black-10);
103
+ --color-overlay: var(--color-black-60);
104
+
105
+ /* Status colors - adaptive (dark for light theme) */
106
+ --color-status-info: var(--color-info-dark);
107
+ --color-status-info-bg: var(--color-info-15); /* светлый фон для светлой темы */
108
+ --color-status-success: var(--color-success-dark);
109
+ --color-status-success-bg: var(--color-success-15);
110
+ --color-status-warning: var(--color-warning-dark);
111
+ --color-status-warning-bg: var(--color-warning-15);
112
+ --color-status-error: var(--color-error-dark);
113
+ --color-status-error-bg: var(--color-error-15);
114
+ }
115
+
116
+ :root {
117
+ /* =====================================
118
+ * 2) Breakpoints
119
+ * ===================================*/
120
+ --breakpoint-mobile: 375px;
121
+ --breakpoint-tablet: 768px;
122
+ --breakpoint-desktop: 1280px;
123
+ }
124
+
125
+ :root {
126
+ /* =====================================
127
+ * 3) Spacing scale (mobile/tablet/desktop)
128
+ * ===================================*/
129
+ /* Mobile (default) */
130
+ --space-xs: 8px;
131
+ --space-s: 12px;
132
+ --space-m: 16px;
133
+ --space-l: 24px;
134
+ --space-xl: 32px;
135
+ }
136
+
137
+ @media (min-width: 768px) {
138
+ :root {
139
+ /* Tablet */
140
+ --space-xs: 8px;
141
+ --space-s: 16px;
142
+ --space-m: 20px;
143
+ --space-l: 28px;
144
+ --space-xl: 40px;
145
+ }
146
+ }
147
+
148
+ @media (min-width: 1280px) {
149
+ :root {
150
+ /* Desktop */
151
+ --space-xs: 8px;
152
+ --space-s: 16px;
153
+ --space-m: 24px;
154
+ --space-l: 32px;
155
+ --space-xl: 48px;
156
+ }
157
+ }
158
+
159
+ :root {
160
+ /* =====================================
161
+ * 4) Border radius
162
+ * ===================================*/
163
+ --radius-xs: 2px;
164
+ --radius-s: 4px;
165
+ }
166
+
167
+ :root {
168
+ /* =====================================
169
+ * 5) Typography scale (mobile/tablet/desktop)
170
+ * ===================================*/
171
+ /* Base typography settings */
172
+ font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
173
+ line-height: 1.5;
174
+ font-weight: 400;
175
+
176
+ /* Mobile (default) */
177
+ --font-size-h1: 36px;
178
+ --font-size-h2: 28px;
179
+ --font-size-h3: 24px;
180
+ --font-size-h4: 16px;
181
+ --font-size-p1: 16px;
182
+ --font-size-p2: 12px;
183
+ --font-size-p3: 12px;
184
+
185
+ /* Letter spacing (tracking) for small font sizes */
186
+ --letter-spacing-h1: 0;
187
+ --letter-spacing-h2: 0;
188
+ --letter-spacing-h3: 0;
189
+ --letter-spacing-h4: 0.02em; /* 16px → +2% */
190
+ --letter-spacing-p1: 0.02em; /* 16px → +2% */
191
+ --letter-spacing-p2: 0.06em; /* 12px → +6% */
192
+ --letter-spacing-p3: 0.06em; /* 12px → +6% */
193
+ }
194
+
195
+ @media (min-width: 768px) {
196
+ :root {
197
+ /* Tablet */
198
+ --font-size-h1: 40px;
199
+ --font-size-h2: 32px;
200
+ --font-size-h3: 28px;
201
+ --font-size-h4: 20px;
202
+ --font-size-p1: 16px;
203
+ --font-size-p2: 16px;
204
+ --font-size-p3: 12px;
205
+
206
+ --letter-spacing-h4: 0; /* 20px → no tracking */
207
+ --letter-spacing-p1: 0.02em; /* 16px → +2% */
208
+ --letter-spacing-p2: 0.02em; /* 16px → +2% */
209
+ --letter-spacing-p3: 0.06em; /* 12px → +6% */
210
+ }
211
+ }
212
+
213
+ @media (min-width: 1280px) {
214
+ :root {
215
+ /* Desktop */
216
+ --font-size-h1: 48px;
217
+ --font-size-h2: 36px;
218
+ --font-size-h3: 32px;
219
+ --font-size-h4: 24px;
220
+ --font-size-p1: 20px;
221
+ --font-size-p2: 16px;
222
+ --font-size-p3: 14px;
223
+
224
+ --letter-spacing-h4: 0; /* 24px → no tracking */
225
+ --letter-spacing-p1: 0; /* 20px → no tracking */
226
+ --letter-spacing-p2: 0.02em; /* 16px → +2% */
227
+ --letter-spacing-p3: 0.04em; /* 14px → +4% */
228
+ }
229
+ }
230
+
231
+ :root {
232
+ /* =====================================
233
+ * 5) Additional layout tokens
234
+ * ===================================*/
235
+ /* Mobile (default) */
236
+ --page-padding-hor: 16px;
237
+ --page-padding-vert: 32px;
238
+ --page-header-height: 64px;
239
+
240
+ /* Transitions */
241
+ --transition-fast: 0.15s ease;
242
+ --transition-normal: 0.2s ease;
243
+ --transition-slow: 0.3s ease;
244
+ }
245
+
246
+ @media (min-width: 768px) {
247
+ :root {
248
+ /* Tablet */
249
+ --page-padding-hor: 20px;
250
+ --page-padding-vert: 48px;
251
+ --page-header-height: 72px;
252
+ }
253
+ }
254
+
255
+ @media (min-width: 1280px) {
256
+ :root {
257
+ /* Desktop */
258
+ --page-padding-hor: 24px;
259
+ --page-padding-vert: 64px;
260
+ --page-header-height: 72px;
261
+ }
262
+ }
263
+
264
+ body {
265
+ margin: 0;
266
+ min-width: 320px;
267
+ min-height: 100vh;
268
+ -webkit-font-smoothing: antialiased;
269
+ -moz-osx-font-smoothing: grayscale;
270
+ background-color: var(--color-bg);
271
+ color: var(--color-txt-icon-1);
272
+ transition: background-color var(--transition-slow), color var(--transition-slow);
273
+ }
274
+
275
+ * {
276
+ box-sizing: border-box;
277
+ }
278
+ }