@donkit-ai/design-system 0.2.19 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -56
- package/package.json +1 -1
- package/src/components/Badge.css +2 -2
- package/src/components/Badge.jsx +1 -1
- package/src/components/Button.css +3 -3
- package/src/components/Button.jsx +1 -1
- package/src/components/Card.css +3 -3
- package/src/components/Checkbox.css +6 -6
- package/src/components/Checkbox.jsx +1 -1
- package/src/components/Input.css +10 -10
- package/src/components/Input.jsx +1 -1
- package/src/components/Modal.css +3 -3
- package/src/components/Modal.jsx +1 -1
- package/src/components/Radio.css +9 -9
- package/src/components/Radio.jsx +1 -1
- package/src/components/Select.css +6 -6
- package/src/components/Select.jsx +1 -1
- package/src/components/Stepper.css +6 -6
- package/src/components/Stepper.jsx +1 -1
- package/src/components/Tabs.css +3 -3
- package/src/components/Tabs.jsx +2 -2
- package/src/components/Textarea.css +2 -2
- package/src/components/Textarea.jsx +1 -1
- package/src/components/Toggle.css +12 -12
- package/src/components/Toggle.jsx +1 -1
package/README.md
CHANGED
|
@@ -37,22 +37,22 @@ npm install @donkit-ai/design-system@latest
|
|
|
37
37
|
|
|
38
38
|
## Компоненты
|
|
39
39
|
|
|
40
|
-
- **Button** - кнопки с вариантами (primary, secondary, ghost) и размерами (xs,
|
|
41
|
-
- **Tabs** - вкладки с состоянием selected в четырех размерах (xs,
|
|
42
|
-
- **Input** - текстовые поля с поддержкой иконок, ошибок и подсказок (xs,
|
|
43
|
-
- **Textarea** - многострочное текстовое поле (xs,
|
|
44
|
-
- **Select** - выпадающий список с кастомным дизайном (xs,
|
|
45
|
-
- **Stepper** - числовое поле с кнопками +/- для изменения значения (xs,
|
|
46
|
-
- **Toggle** - переключатель для включения/выключения опций (xs,
|
|
47
|
-
- **Checkbox** - чекбокс для выбора опций (xs,
|
|
48
|
-
- **Radio** - радиокнопка для выбора одного варианта из группы (xs,
|
|
40
|
+
- **Button** - кнопки с вариантами (primary, secondary, ghost) и размерами (xs, s, m, l). Поддерживает `href` для рендера как ссылка
|
|
41
|
+
- **Tabs** - вкладки с состоянием selected в четырех размерах (xs, s, m, l). Поддерживает `href` для рендера как ссылка
|
|
42
|
+
- **Input** - текстовые поля с поддержкой иконок, ошибок и подсказок (xs, s, m)
|
|
43
|
+
- **Textarea** - многострочное текстовое поле (xs, s, m)
|
|
44
|
+
- **Select** - выпадающий список с кастомным дизайном (xs, s, m)
|
|
45
|
+
- **Stepper** - числовое поле с кнопками +/- для изменения значения (xs, s, m)
|
|
46
|
+
- **Toggle** - переключатель для включения/выключения опций (xs, s, m, l)
|
|
47
|
+
- **Checkbox** - чекбокс для выбора опций (xs, s, m, l)
|
|
48
|
+
- **Radio** - радиокнопка для выбора одного варианта из группы (xs, s, m, l)
|
|
49
49
|
- **Card** - карточки двух типов: info (информационная, прозрачный фон) и interactive (интерактивная с hover эффектом). Поддерживает `href` для рендера как ссылка
|
|
50
50
|
- **Typography** - H1-H4, P1-P3 компоненты
|
|
51
51
|
- **Code** - inline и block код с monospace шрифтом
|
|
52
52
|
- **Link** - ссылки акцентным цветом, при hover цвет меняется и появляется подчеркивание
|
|
53
|
-
- **Badge** - бейджи для статусов (success, error, warning, accent) в двух размерах (
|
|
53
|
+
- **Badge** - бейджи для статусов (success, error, warning, accent) в двух размерах (s, m)
|
|
54
54
|
- **Modal** - модальные окна с header и footer
|
|
55
|
-
- **Select** - выпадающий список с кастомным дизайном (
|
|
55
|
+
- **Select** - выпадающий список с кастомным дизайном (s, m)
|
|
56
56
|
|
|
57
57
|
## Использование в проекте
|
|
58
58
|
|
|
@@ -78,7 +78,7 @@ function MyComponent() {
|
|
|
78
78
|
<P1 secondary>This is a demo</P1>
|
|
79
79
|
<Button
|
|
80
80
|
variant="primary"
|
|
81
|
-
size="
|
|
81
|
+
size="m"
|
|
82
82
|
icon={<Mail size={24} strokeWidth={1.5} />}
|
|
83
83
|
>
|
|
84
84
|
Send Email
|
|
@@ -120,21 +120,21 @@ import { iconSizes } from '@donkit-ai/design-system';
|
|
|
120
120
|
- Extra Small табы (`size="xs"`)
|
|
121
121
|
|
|
122
122
|
- **20px (s)** - компактные элементы
|
|
123
|
-
- Small кнопки (`size="
|
|
124
|
-
- Small табы (`size="
|
|
123
|
+
- Small кнопки (`size="s"`)
|
|
124
|
+
- Small табы (`size="s"`)
|
|
125
125
|
- Modal (иконка закрытия)
|
|
126
126
|
- Accordion, CodeAccordion
|
|
127
127
|
|
|
128
128
|
- **24px (m)** - стандартные элементы
|
|
129
|
-
- Medium кнопки (`size="
|
|
130
|
-
- Medium табы (`size="
|
|
129
|
+
- Medium кнопки (`size="m"`, по умолчанию)
|
|
130
|
+
- Medium табы (`size="m"`)
|
|
131
131
|
- Input (иконки в полях ввода)
|
|
132
132
|
- Alert (иконки статусов)
|
|
133
133
|
- Select (иконка выпадающего списка)
|
|
134
134
|
|
|
135
135
|
- **28px (l)** - крупные элементы
|
|
136
|
-
- Large кнопки (`size="
|
|
137
|
-
- Large табы (`size="
|
|
136
|
+
- Large кнопки (`size="l"`)
|
|
137
|
+
- Large табы (`size="l"`)
|
|
138
138
|
|
|
139
139
|
- **48px (xl)** - очень крупные элементы
|
|
140
140
|
|
|
@@ -147,7 +147,7 @@ import { Mail, Search, Eye, EyeOff, AlertCircle, Check, X } from 'lucide-react';
|
|
|
147
147
|
import { iconSizes } from '@donkit-ai/design-system';
|
|
148
148
|
|
|
149
149
|
// Small button / Tabs / Modal
|
|
150
|
-
<Button size="
|
|
150
|
+
<Button size="s" icon={<Mail size={iconSizes.s} strokeWidth={1.5} />}>
|
|
151
151
|
Send
|
|
152
152
|
</Button>
|
|
153
153
|
<Tab icon={<AlertCircle size={iconSizes.s} strokeWidth={1.5} />}>
|
|
@@ -155,7 +155,7 @@ import { iconSizes } from '@donkit-ai/design-system';
|
|
|
155
155
|
</Tab>
|
|
156
156
|
|
|
157
157
|
// Medium button / Input / Alert
|
|
158
|
-
<Button size="
|
|
158
|
+
<Button size="m" icon={<Search size={iconSizes.m} strokeWidth={1.5} />}>
|
|
159
159
|
Search
|
|
160
160
|
</Button>
|
|
161
161
|
<Input
|
|
@@ -168,7 +168,7 @@ import { iconSizes } from '@donkit-ai/design-system';
|
|
|
168
168
|
/>
|
|
169
169
|
|
|
170
170
|
// Large button
|
|
171
|
-
<Button size="
|
|
171
|
+
<Button size="l" icon={<Mail size={iconSizes.l} strokeWidth={1.5} />}>
|
|
172
172
|
Send Email
|
|
173
173
|
</Button>
|
|
174
174
|
|
|
@@ -345,20 +345,20 @@ document.documentElement.setAttribute('data-theme', 'light');
|
|
|
345
345
|
<Button size="xs" icon={<Mail size={16} strokeWidth={1.5} />}>
|
|
346
346
|
Extra Small
|
|
347
347
|
</Button>
|
|
348
|
-
<Button size="
|
|
348
|
+
<Button size="s" icon={<Mail size={20} strokeWidth={1.5} />}>
|
|
349
349
|
Small
|
|
350
350
|
</Button>
|
|
351
|
-
<Button size="
|
|
351
|
+
<Button size="m" icon={<Mail size={24} strokeWidth={1.5} />}>
|
|
352
352
|
Medium
|
|
353
353
|
</Button>
|
|
354
|
-
<Button size="
|
|
354
|
+
<Button size="l" icon={<Mail size={28} strokeWidth={1.5} />}>
|
|
355
355
|
Large
|
|
356
356
|
</Button>
|
|
357
357
|
|
|
358
358
|
// С fullWidth
|
|
359
359
|
<Button
|
|
360
360
|
variant="primary"
|
|
361
|
-
size="
|
|
361
|
+
size="m"
|
|
362
362
|
icon={<Mail size={24} strokeWidth={1.5} />}
|
|
363
363
|
fullWidth
|
|
364
364
|
>
|
|
@@ -375,7 +375,7 @@ import { Tabs, Tab } from '@donkit-ai/design-system';
|
|
|
375
375
|
import { AlertCircle } from 'lucide-react';
|
|
376
376
|
|
|
377
377
|
// Basic tabs
|
|
378
|
-
<Tabs size="
|
|
378
|
+
<Tabs size="m">
|
|
379
379
|
<Tab selected={selectedTab === 'tab1'} onClick={() => setSelectedTab('tab1')}>
|
|
380
380
|
Overview
|
|
381
381
|
</Tab>
|
|
@@ -389,7 +389,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
389
389
|
|
|
390
390
|
// With icons (размер иконки соответствует размеру таба)
|
|
391
391
|
// xs: 16px, small: 20px, medium: 24px, large: 28px
|
|
392
|
-
<Tabs size="
|
|
392
|
+
<Tabs size="s">
|
|
393
393
|
<Tab
|
|
394
394
|
selected={selectedTab === 'alerts'}
|
|
395
395
|
onClick={() => setSelectedTab('alerts')}
|
|
@@ -403,7 +403,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
403
403
|
</Tabs>
|
|
404
404
|
|
|
405
405
|
// Disabled tab
|
|
406
|
-
<Tabs size="
|
|
406
|
+
<Tabs size="m">
|
|
407
407
|
<Tab selected>Active</Tab>
|
|
408
408
|
<Tab disabled>Disabled</Tab>
|
|
409
409
|
</Tabs>
|
|
@@ -411,7 +411,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
411
411
|
// As links (с href) - рендерит <a> вместо <button>
|
|
412
412
|
// При обычном клике: вызывается onClick (preventDefault автоматический)
|
|
413
413
|
// При Cmd/Ctrl+Click или Middle Click: открывается новая вкладка
|
|
414
|
-
<Tabs size="
|
|
414
|
+
<Tabs size="m">
|
|
415
415
|
<Tab selected href="/overview" onClick={() => navigate('/overview')}>
|
|
416
416
|
Overview
|
|
417
417
|
</Tab>
|
|
@@ -439,7 +439,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
439
439
|
// Basic input
|
|
440
440
|
<Input
|
|
441
441
|
label="Email"
|
|
442
|
-
size="
|
|
442
|
+
size="m"
|
|
443
443
|
type="email"
|
|
444
444
|
placeholder="email@example.com"
|
|
445
445
|
hint="We'll never share your email"
|
|
@@ -448,7 +448,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
448
448
|
// Left icon (informational) - size small
|
|
449
449
|
<Input
|
|
450
450
|
label="Search"
|
|
451
|
-
size="
|
|
451
|
+
size="s"
|
|
452
452
|
icon={<Search size={20} strokeWidth={1.5} />}
|
|
453
453
|
placeholder="Search..."
|
|
454
454
|
/>
|
|
@@ -456,7 +456,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
456
456
|
// Left icon - size medium
|
|
457
457
|
<Input
|
|
458
458
|
label="Search"
|
|
459
|
-
size="
|
|
459
|
+
size="m"
|
|
460
460
|
icon={<Search size={24} strokeWidth={1.5} />}
|
|
461
461
|
placeholder="Search..."
|
|
462
462
|
/>
|
|
@@ -464,7 +464,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
464
464
|
// Right icon (action with hover) - size medium
|
|
465
465
|
<Input
|
|
466
466
|
label="Password"
|
|
467
|
-
size="
|
|
467
|
+
size="m"
|
|
468
468
|
type={showPassword ? 'text' : 'password'}
|
|
469
469
|
iconRight={showPassword ? <EyeOff size={24} strokeWidth={1.5} /> : <Eye size={24} strokeWidth={1.5} />}
|
|
470
470
|
onIconRightClick={() => setShowPassword(!showPassword)}
|
|
@@ -488,7 +488,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
488
488
|
```jsx
|
|
489
489
|
<Select
|
|
490
490
|
label="Choose option"
|
|
491
|
-
size="
|
|
491
|
+
size="m"
|
|
492
492
|
value={value}
|
|
493
493
|
onChange={setValue}
|
|
494
494
|
options={[
|
|
@@ -507,7 +507,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
507
507
|
// Basic stepper
|
|
508
508
|
<Stepper
|
|
509
509
|
label="Quantity"
|
|
510
|
-
size="
|
|
510
|
+
size="m"
|
|
511
511
|
value={quantity}
|
|
512
512
|
onChange={setQuantity}
|
|
513
513
|
min={1}
|
|
@@ -518,7 +518,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
518
518
|
// Small size
|
|
519
519
|
<Stepper
|
|
520
520
|
label="Price"
|
|
521
|
-
size="
|
|
521
|
+
size="s"
|
|
522
522
|
value={price}
|
|
523
523
|
onChange={setPrice}
|
|
524
524
|
min={0}
|
|
@@ -551,7 +551,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
551
551
|
- `min` - минимальное значение (default: 0)
|
|
552
552
|
- `max` - максимальное значение (default: 100)
|
|
553
553
|
- `step` - шаг изменения (default: 1)
|
|
554
|
-
- `size` - размер: "
|
|
554
|
+
- `size` - размер: "s" или "m" (default: "medium")
|
|
555
555
|
- `label` - подпись поля
|
|
556
556
|
- `hint` - подсказка под полем
|
|
557
557
|
- `error` - текст ошибки (показывается вместо hint)
|
|
@@ -583,7 +583,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
583
583
|
|
|
584
584
|
// Small size (20px)
|
|
585
585
|
<Toggle
|
|
586
|
-
size="
|
|
586
|
+
size="s"
|
|
587
587
|
checked={isEnabled}
|
|
588
588
|
onChange={setIsEnabled}
|
|
589
589
|
label="Auto-save"
|
|
@@ -591,7 +591,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
591
591
|
|
|
592
592
|
// Medium size (24px, default)
|
|
593
593
|
<Toggle
|
|
594
|
-
size="
|
|
594
|
+
size="m"
|
|
595
595
|
checked={darkMode}
|
|
596
596
|
onChange={setDarkMode}
|
|
597
597
|
label="Dark mode"
|
|
@@ -599,7 +599,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
599
599
|
|
|
600
600
|
// Large size (28px)
|
|
601
601
|
<Toggle
|
|
602
|
-
size="
|
|
602
|
+
size="l"
|
|
603
603
|
checked={isEnabled}
|
|
604
604
|
onChange={setIsEnabled}
|
|
605
605
|
label="Enable feature"
|
|
@@ -663,7 +663,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
663
663
|
|
|
664
664
|
// Small size (20px)
|
|
665
665
|
<Checkbox
|
|
666
|
-
size="
|
|
666
|
+
size="s"
|
|
667
667
|
checked={isEnabled}
|
|
668
668
|
onChange={setIsEnabled}
|
|
669
669
|
label="Enable feature"
|
|
@@ -671,7 +671,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
671
671
|
|
|
672
672
|
// Medium size (24px, default)
|
|
673
673
|
<Checkbox
|
|
674
|
-
size="
|
|
674
|
+
size="m"
|
|
675
675
|
checked={isSubscribed}
|
|
676
676
|
onChange={setIsSubscribed}
|
|
677
677
|
label="Subscribe to newsletter"
|
|
@@ -679,7 +679,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
679
679
|
|
|
680
680
|
// Large size (28px)
|
|
681
681
|
<Checkbox
|
|
682
|
-
size="
|
|
682
|
+
size="l"
|
|
683
683
|
checked={isAccepted}
|
|
684
684
|
onChange={setIsAccepted}
|
|
685
685
|
label="I accept the terms"
|
|
@@ -747,7 +747,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
747
747
|
|
|
748
748
|
// Small size (20px)
|
|
749
749
|
<Radio
|
|
750
|
-
size="
|
|
750
|
+
size="s"
|
|
751
751
|
checked={size === 'small'}
|
|
752
752
|
onChange={() => setSize('small')}
|
|
753
753
|
name="size"
|
|
@@ -757,7 +757,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
757
757
|
|
|
758
758
|
// Medium size (24px, default)
|
|
759
759
|
<Radio
|
|
760
|
-
size="
|
|
760
|
+
size="m"
|
|
761
761
|
checked={size === 'medium'}
|
|
762
762
|
onChange={() => setSize('medium')}
|
|
763
763
|
name="size"
|
|
@@ -767,7 +767,7 @@ import { AlertCircle } from 'lucide-react';
|
|
|
767
767
|
|
|
768
768
|
// Large size (28px)
|
|
769
769
|
<Radio
|
|
770
|
-
size="
|
|
770
|
+
size="l"
|
|
771
771
|
checked={size === 'large'}
|
|
772
772
|
onChange={() => setSize('large')}
|
|
773
773
|
name="size"
|
|
@@ -937,15 +937,15 @@ import { AlertCircle } from 'lucide-react';
|
|
|
937
937
|
|
|
938
938
|
```jsx
|
|
939
939
|
// Medium size (default)
|
|
940
|
-
<Badge variant="success" size="
|
|
941
|
-
<Badge variant="error" size="
|
|
942
|
-
<Badge variant="warning" size="
|
|
943
|
-
<Badge variant="info" size="
|
|
940
|
+
<Badge variant="success" size="m">Success</Badge>
|
|
941
|
+
<Badge variant="error" size="m">Error</Badge>
|
|
942
|
+
<Badge variant="warning" size="m">Warning</Badge>
|
|
943
|
+
<Badge variant="info" size="m">Info</Badge>
|
|
944
944
|
|
|
945
945
|
// Small size
|
|
946
|
-
<Badge variant="success" size="
|
|
947
|
-
<Badge variant="error" size="
|
|
948
|
-
<Badge variant="warning" size="
|
|
946
|
+
<Badge variant="success" size="s">Success</Badge>
|
|
947
|
+
<Badge variant="error" size="s">Error</Badge>
|
|
948
|
+
<Badge variant="warning" size="s">Warning</Badge>
|
|
949
949
|
|
|
950
950
|
// Variants
|
|
951
951
|
<Badge variant="default">Default</Badge>
|
|
@@ -972,16 +972,16 @@ import { AlertCircle } from 'lucide-react';
|
|
|
972
972
|
<Modal
|
|
973
973
|
title="Modal Title"
|
|
974
974
|
onClose={handleClose}
|
|
975
|
-
size="
|
|
975
|
+
size="m"
|
|
976
976
|
>
|
|
977
977
|
<P1>Modal content here...</P1>
|
|
978
978
|
<Input label="Name" placeholder="Enter name" />
|
|
979
979
|
|
|
980
980
|
<ModalFooter>
|
|
981
|
-
<Button variant="secondary" size="
|
|
981
|
+
<Button variant="secondary" size="m" onClick={handleClose}>
|
|
982
982
|
Cancel
|
|
983
983
|
</Button>
|
|
984
|
-
<Button variant="primary" size="
|
|
984
|
+
<Button variant="primary" size="m">
|
|
985
985
|
Submit
|
|
986
986
|
</Button>
|
|
987
987
|
</ModalFooter>
|
package/package.json
CHANGED
package/src/components/Badge.css
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
/* Sizes */
|
|
10
|
-
.ds-badge--
|
|
10
|
+
.ds-badge--s {
|
|
11
11
|
padding: 0 4px;
|
|
12
12
|
font-size: var(--font-size-p3);
|
|
13
13
|
letter-spacing: var(--letter-spacing-p3);
|
|
14
14
|
border-radius: var(--radius-xs);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
.ds-badge--
|
|
17
|
+
.ds-badge--m {
|
|
18
18
|
padding: 2px var(--space-xs);
|
|
19
19
|
font-size: var(--font-size-p2);
|
|
20
20
|
letter-spacing: var(--letter-spacing-p2);
|
package/src/components/Badge.jsx
CHANGED
|
@@ -68,21 +68,21 @@
|
|
|
68
68
|
border-radius: var(--radius-xs);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
.ds-button--
|
|
71
|
+
.ds-button--s {
|
|
72
72
|
height: var(--height-s);
|
|
73
73
|
padding: 0 calc(var(--height-s) / 2);
|
|
74
74
|
font-size: var(--font-size-p2);
|
|
75
75
|
border-radius: var(--radius-xs);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
.ds-button--
|
|
78
|
+
.ds-button--m {
|
|
79
79
|
height: var(--height-m);
|
|
80
80
|
padding: 0 calc(var(--height-m) / 2);
|
|
81
81
|
font-size: var(--font-size-p1);
|
|
82
82
|
border-radius: var(--radius-s);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
.ds-button--
|
|
85
|
+
.ds-button--l {
|
|
86
86
|
height: var(--height-l);
|
|
87
87
|
padding: 0 calc(var(--height-l) / 2);
|
|
88
88
|
font-size: var(--font-size-h4);
|
package/src/components/Card.css
CHANGED
|
@@ -27,14 +27,14 @@
|
|
|
27
27
|
padding: 0;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
.ds-card--
|
|
30
|
+
.ds-card--s {
|
|
31
31
|
padding: var(--space-s);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
.ds-card--
|
|
34
|
+
.ds-card--m {
|
|
35
35
|
padding: var(--space-m);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
.ds-card--
|
|
38
|
+
.ds-card--l {
|
|
39
39
|
padding: var(--space-l);
|
|
40
40
|
}
|
|
@@ -58,31 +58,31 @@
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/* Small */
|
|
61
|
-
.ds-checkbox--
|
|
61
|
+
.ds-checkbox--s .ds-checkbox__box {
|
|
62
62
|
width: var(--icon-s);
|
|
63
63
|
height: var(--icon-s);
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
.ds-checkbox--
|
|
66
|
+
.ds-checkbox--s .ds-checkbox__label {
|
|
67
67
|
font-size: var(--font-size-p2);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
/* Medium */
|
|
71
|
-
.ds-checkbox--
|
|
71
|
+
.ds-checkbox--m .ds-checkbox__box {
|
|
72
72
|
width: var(--icon-m);
|
|
73
73
|
height: var(--icon-m);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
.ds-checkbox--
|
|
76
|
+
.ds-checkbox--m .ds-checkbox__label {
|
|
77
77
|
font-size: var(--font-size-p1);
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
/* Large */
|
|
81
|
-
.ds-checkbox--
|
|
81
|
+
.ds-checkbox--l .ds-checkbox__box {
|
|
82
82
|
width: var(--icon-l);
|
|
83
83
|
height: var(--icon-l);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
.ds-checkbox--
|
|
86
|
+
.ds-checkbox--l .ds-checkbox__label {
|
|
87
87
|
font-size: var(--font-size-p1);
|
|
88
88
|
}
|
package/src/components/Input.css
CHANGED
|
@@ -65,14 +65,14 @@
|
|
|
65
65
|
border-radius: var(--radius-xs);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
.ds-input--
|
|
68
|
+
.ds-input--s {
|
|
69
69
|
height: var(--height-s);
|
|
70
70
|
padding: 0 calc(var(--height-s) / 4);
|
|
71
71
|
font-size: var(--font-size-p2);
|
|
72
72
|
border-radius: var(--radius-xs);
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
.ds-input--
|
|
75
|
+
.ds-input--m {
|
|
76
76
|
height: var(--height-m);
|
|
77
77
|
padding: 0 calc(var(--height-m) / 4);
|
|
78
78
|
font-size: var(--font-size-p1);
|
|
@@ -83,11 +83,11 @@
|
|
|
83
83
|
padding-left: calc(var(--height-xs) / 4 + 16px + var(--height-xs) / 4);
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
.ds-input--with-icon.ds-input--
|
|
86
|
+
.ds-input--with-icon.ds-input--s {
|
|
87
87
|
padding-left: calc(var(--height-s) / 4 + 20px + var(--height-s) / 4);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
.ds-input--with-icon.ds-input--
|
|
90
|
+
.ds-input--with-icon.ds-input--m {
|
|
91
91
|
padding-left: calc(var(--height-m) / 4 + 24px + var(--height-m) / 4);
|
|
92
92
|
}
|
|
93
93
|
|
|
@@ -95,11 +95,11 @@
|
|
|
95
95
|
padding-right: calc(var(--height-xs) / 4 + 16px + var(--height-xs) / 4);
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
.ds-input--with-icon-right.ds-input--
|
|
98
|
+
.ds-input--with-icon-right.ds-input--s {
|
|
99
99
|
padding-right: calc(var(--height-s) / 4 + 20px + var(--height-s) / 4);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
.ds-input--with-icon-right.ds-input--
|
|
102
|
+
.ds-input--with-icon-right.ds-input--m {
|
|
103
103
|
padding-right: calc(var(--height-m) / 4 + 24px + var(--height-m) / 4);
|
|
104
104
|
}
|
|
105
105
|
|
|
@@ -115,11 +115,11 @@
|
|
|
115
115
|
left: 6px;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
.ds-input-icon--
|
|
118
|
+
.ds-input-icon--s {
|
|
119
119
|
left: 8px;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
.ds-input-icon--
|
|
122
|
+
.ds-input-icon--m {
|
|
123
123
|
left: 11px;
|
|
124
124
|
}
|
|
125
125
|
|
|
@@ -144,11 +144,11 @@
|
|
|
144
144
|
right: 6px;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
.ds-input-icon-right--
|
|
147
|
+
.ds-input-icon-right--s {
|
|
148
148
|
right: 8px;
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
-
.ds-input-icon-right--
|
|
151
|
+
.ds-input-icon-right--m {
|
|
152
152
|
right: 11px;
|
|
153
153
|
}
|
|
154
154
|
|
package/src/components/Input.jsx
CHANGED
package/src/components/Modal.css
CHANGED
|
@@ -22,17 +22,17 @@
|
|
|
22
22
|
margin: auto 0;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
.ds-modal--
|
|
25
|
+
.ds-modal--s {
|
|
26
26
|
width: 100%;
|
|
27
27
|
max-width: 400px;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
.ds-modal--
|
|
30
|
+
.ds-modal--m {
|
|
31
31
|
width: 100%;
|
|
32
32
|
max-width: 600px;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
.ds-modal--
|
|
35
|
+
.ds-modal--l {
|
|
36
36
|
width: 100%;
|
|
37
37
|
max-width: 900px;
|
|
38
38
|
}
|
package/src/components/Modal.jsx
CHANGED
package/src/components/Radio.css
CHANGED
|
@@ -70,46 +70,46 @@
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
/* Small */
|
|
73
|
-
.ds-radio--
|
|
73
|
+
.ds-radio--s .ds-radio__circle {
|
|
74
74
|
width: var(--icon-s);
|
|
75
75
|
height: var(--icon-s);
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
.ds-radio--
|
|
78
|
+
.ds-radio--s .ds-radio__dot {
|
|
79
79
|
width: 8px;
|
|
80
80
|
height: 8px;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
.ds-radio--
|
|
83
|
+
.ds-radio--s .ds-radio__label {
|
|
84
84
|
font-size: var(--font-size-p2);
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
/* Medium */
|
|
88
|
-
.ds-radio--
|
|
88
|
+
.ds-radio--m .ds-radio__circle {
|
|
89
89
|
width: var(--icon-m);
|
|
90
90
|
height: var(--icon-m);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
.ds-radio--
|
|
93
|
+
.ds-radio--m .ds-radio__dot {
|
|
94
94
|
width: 10px;
|
|
95
95
|
height: 10px;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
.ds-radio--
|
|
98
|
+
.ds-radio--m .ds-radio__label {
|
|
99
99
|
font-size: var(--font-size-p1);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
/* Large */
|
|
103
|
-
.ds-radio--
|
|
103
|
+
.ds-radio--l .ds-radio__circle {
|
|
104
104
|
width: var(--icon-l);
|
|
105
105
|
height: var(--icon-l);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
.ds-radio--
|
|
108
|
+
.ds-radio--l .ds-radio__dot {
|
|
109
109
|
width: 12px;
|
|
110
110
|
height: 12px;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
.ds-radio--
|
|
113
|
+
.ds-radio--l .ds-radio__label {
|
|
114
114
|
font-size: var(--font-size-p1);
|
|
115
115
|
}
|
package/src/components/Radio.jsx
CHANGED
|
@@ -67,14 +67,14 @@
|
|
|
67
67
|
border-radius: var(--radius-xs);
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
.ds-select-trigger--
|
|
70
|
+
.ds-select-trigger--s {
|
|
71
71
|
height: var(--height-s);
|
|
72
72
|
padding: 0 calc(var(--height-s) / 4);
|
|
73
73
|
font-size: var(--font-size-p2);
|
|
74
74
|
border-radius: var(--radius-xs);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
.ds-select-trigger--
|
|
77
|
+
.ds-select-trigger--m {
|
|
78
78
|
height: var(--height-m);
|
|
79
79
|
padding: 0 calc(var(--height-m) / 4);
|
|
80
80
|
font-size: var(--font-size-p1);
|
|
@@ -119,11 +119,11 @@
|
|
|
119
119
|
bottom: calc(100% + 4px);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
.ds-select-dropdown--
|
|
122
|
+
.ds-select-dropdown--s {
|
|
123
123
|
border-radius: var(--radius-xs);
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
.ds-select-dropdown--
|
|
126
|
+
.ds-select-dropdown--m {
|
|
127
127
|
border-radius: var(--radius-s);
|
|
128
128
|
}
|
|
129
129
|
|
|
@@ -141,13 +141,13 @@
|
|
|
141
141
|
word-wrap: break-word;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
.ds-select-option--
|
|
144
|
+
.ds-select-option--s {
|
|
145
145
|
min-height: var(--height-s);
|
|
146
146
|
padding: var(--space-xs) calc(var(--height-s) / 4);
|
|
147
147
|
font-size: var(--font-size-p2);
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
.ds-select-option--
|
|
150
|
+
.ds-select-option--m {
|
|
151
151
|
min-height: var(--height-m);
|
|
152
152
|
padding: var(--space-xs) calc(var(--height-m) / 4);
|
|
153
153
|
font-size: var(--font-size-p1);
|
|
@@ -115,32 +115,32 @@
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
/* Small */
|
|
118
|
-
.ds-stepper--
|
|
118
|
+
.ds-stepper--s {
|
|
119
119
|
height: var(--height-s);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
.ds-stepper--
|
|
122
|
+
.ds-stepper--s .ds-stepper-button {
|
|
123
123
|
width: var(--height-s);
|
|
124
124
|
padding: 0;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
.ds-stepper--
|
|
127
|
+
.ds-stepper--s .ds-stepper-input {
|
|
128
128
|
font-size: var(--font-size-p2);
|
|
129
129
|
letter-spacing: var(--letter-spacing-p2);
|
|
130
130
|
padding: 0 var(--space-xs);
|
|
131
131
|
}
|
|
132
132
|
|
|
133
133
|
/* Medium */
|
|
134
|
-
.ds-stepper--
|
|
134
|
+
.ds-stepper--m {
|
|
135
135
|
height: var(--height-m);
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
.ds-stepper--
|
|
138
|
+
.ds-stepper--m .ds-stepper-button {
|
|
139
139
|
width: var(--height-m);
|
|
140
140
|
padding: 0;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
.ds-stepper--
|
|
143
|
+
.ds-stepper--m .ds-stepper-input {
|
|
144
144
|
font-size: var(--font-size-p1);
|
|
145
145
|
letter-spacing: var(--letter-spacing-p1);
|
|
146
146
|
padding: 0 var(--space-s);
|
package/src/components/Tabs.css
CHANGED
|
@@ -44,21 +44,21 @@
|
|
|
44
44
|
border-radius: var(--radius-xs);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
.ds-tab--
|
|
47
|
+
.ds-tab--s {
|
|
48
48
|
height: var(--height-s);
|
|
49
49
|
padding: 0 calc(var(--height-s) / 2);
|
|
50
50
|
font-size: var(--font-size-p2);
|
|
51
51
|
border-radius: var(--radius-xs);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
.ds-tab--
|
|
54
|
+
.ds-tab--m {
|
|
55
55
|
height: var(--height-m);
|
|
56
56
|
padding: 0 calc(var(--height-m) / 2);
|
|
57
57
|
font-size: var(--font-size-p1);
|
|
58
58
|
border-radius: var(--radius-s);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
.ds-tab--
|
|
61
|
+
.ds-tab--l {
|
|
62
62
|
height: var(--height-l);
|
|
63
63
|
padding: 0 calc(var(--height-l) / 2);
|
|
64
64
|
font-size: var(--font-size-p1);
|
package/src/components/Tabs.jsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import './Tabs.css';
|
|
3
3
|
|
|
4
|
-
export function Tabs({ children, size = '
|
|
4
|
+
export function Tabs({ children, size = 'm', variant = 'ghost', ...props }) {
|
|
5
5
|
return (
|
|
6
6
|
<div className="ds-tabs" role="tablist" {...props}>
|
|
7
7
|
{React.Children.map(children, (child) => {
|
|
@@ -14,7 +14,7 @@ export function Tabs({ children, size = 'medium', variant = 'ghost', ...props })
|
|
|
14
14
|
);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
export function Tab({ children, selected = false, onClick, size = '
|
|
17
|
+
export function Tab({ children, selected = false, onClick, size = 'm', variant = 'ghost', disabled = false, icon, href, ...props }) {
|
|
18
18
|
const isIconOnly = icon && !children;
|
|
19
19
|
|
|
20
20
|
const className = [
|
|
@@ -93,13 +93,13 @@
|
|
|
93
93
|
border-radius: var(--radius-xs);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
.ds-textarea--
|
|
96
|
+
.ds-textarea--s {
|
|
97
97
|
padding: var(--space-xs) var(--space-s);
|
|
98
98
|
font-size: var(--font-size-p2);
|
|
99
99
|
border-radius: var(--radius-xs);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
.ds-textarea--
|
|
102
|
+
.ds-textarea--m {
|
|
103
103
|
padding: var(--space-s);
|
|
104
104
|
font-size: var(--font-size-p1);
|
|
105
105
|
border-radius: var(--radius-s);
|
|
@@ -70,64 +70,64 @@
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
/* Small */
|
|
73
|
-
.ds-toggle--
|
|
73
|
+
.ds-toggle--s .ds-toggle__track {
|
|
74
74
|
width: calc(var(--icon-s) * 1.75);
|
|
75
75
|
height: var(--icon-s);
|
|
76
76
|
border-radius: calc(var(--icon-s) / 2);
|
|
77
77
|
padding: 2px;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
.ds-toggle--
|
|
80
|
+
.ds-toggle--s .ds-toggle__thumb {
|
|
81
81
|
width: calc(var(--icon-s) - 4px);
|
|
82
82
|
height: calc(var(--icon-s) - 4px);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
.ds-toggle--
|
|
85
|
+
.ds-toggle--s .ds-toggle__input:checked + .ds-toggle__track .ds-toggle__thumb {
|
|
86
86
|
transform: translateX(calc(var(--icon-s) * 0.75));
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
.ds-toggle--
|
|
89
|
+
.ds-toggle--s .ds-toggle__label {
|
|
90
90
|
font-size: var(--font-size-p2);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
/* Medium */
|
|
94
|
-
.ds-toggle--
|
|
94
|
+
.ds-toggle--m .ds-toggle__track {
|
|
95
95
|
width: calc(var(--icon-m) * 1.75);
|
|
96
96
|
height: var(--icon-m);
|
|
97
97
|
border-radius: calc(var(--icon-m) / 2);
|
|
98
98
|
padding: 2px;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
.ds-toggle--
|
|
101
|
+
.ds-toggle--m .ds-toggle__thumb {
|
|
102
102
|
width: calc(var(--icon-m) - 4px);
|
|
103
103
|
height: calc(var(--icon-m) - 4px);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
-
.ds-toggle--
|
|
106
|
+
.ds-toggle--m .ds-toggle__input:checked + .ds-toggle__track .ds-toggle__thumb {
|
|
107
107
|
transform: translateX(calc(var(--icon-m) * 0.75));
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
.ds-toggle--
|
|
110
|
+
.ds-toggle--m .ds-toggle__label {
|
|
111
111
|
font-size: var(--font-size-p1);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
/* Large */
|
|
115
|
-
.ds-toggle--
|
|
115
|
+
.ds-toggle--l .ds-toggle__track {
|
|
116
116
|
width: calc(var(--icon-l) * 1.75);
|
|
117
117
|
height: var(--icon-l);
|
|
118
118
|
border-radius: calc(var(--icon-l) / 2);
|
|
119
119
|
padding: 3px;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
-
.ds-toggle--
|
|
122
|
+
.ds-toggle--l .ds-toggle__thumb {
|
|
123
123
|
width: calc(var(--icon-l) - 6px);
|
|
124
124
|
height: calc(var(--icon-l) - 6px);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
.ds-toggle--
|
|
127
|
+
.ds-toggle--l .ds-toggle__input:checked + .ds-toggle__track .ds-toggle__thumb {
|
|
128
128
|
transform: translateX(calc(var(--icon-l) * 0.75));
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
.ds-toggle--
|
|
131
|
+
.ds-toggle--l .ds-toggle__label {
|
|
132
132
|
font-size: var(--font-size-p1);
|
|
133
133
|
}
|