@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 CHANGED
@@ -37,22 +37,22 @@ npm install @donkit-ai/design-system@latest
37
37
 
38
38
  ## Компоненты
39
39
 
40
- - **Button** - кнопки с вариантами (primary, secondary, ghost) и размерами (xs, small, medium, large). Поддерживает `href` для рендера как ссылка
41
- - **Tabs** - вкладки с состоянием selected в четырех размерах (xs, small, medium, large). Поддерживает `href` для рендера как ссылка
42
- - **Input** - текстовые поля с поддержкой иконок, ошибок и подсказок (xs, small, medium)
43
- - **Textarea** - многострочное текстовое поле (xs, small, medium)
44
- - **Select** - выпадающий список с кастомным дизайном (xs, small, medium)
45
- - **Stepper** - числовое поле с кнопками +/- для изменения значения (xs, small, medium)
46
- - **Toggle** - переключатель для включения/выключения опций (xs, small, medium, large)
47
- - **Checkbox** - чекбокс для выбора опций (xs, small, medium, large)
48
- - **Radio** - радиокнопка для выбора одного варианта из группы (xs, small, medium, large)
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) в двух размерах (small, medium)
53
+ - **Badge** - бейджи для статусов (success, error, warning, accent) в двух размерах (s, m)
54
54
  - **Modal** - модальные окна с header и footer
55
- - **Select** - выпадающий список с кастомным дизайном (small, medium)
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="medium"
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="small"`)
124
- - Small табы (`size="small"`)
123
+ - Small кнопки (`size="s"`)
124
+ - Small табы (`size="s"`)
125
125
  - Modal (иконка закрытия)
126
126
  - Accordion, CodeAccordion
127
127
 
128
128
  - **24px (m)** - стандартные элементы
129
- - Medium кнопки (`size="medium"`, по умолчанию)
130
- - Medium табы (`size="medium"`)
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="large"`)
137
- - Large табы (`size="large"`)
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="small" icon={<Mail size={iconSizes.s} strokeWidth={1.5} />}>
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="medium" icon={<Search size={iconSizes.m} strokeWidth={1.5} />}>
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="large" icon={<Mail size={iconSizes.l} strokeWidth={1.5} />}>
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="small" icon={<Mail size={20} strokeWidth={1.5} />}>
348
+ <Button size="s" icon={<Mail size={20} strokeWidth={1.5} />}>
349
349
  Small
350
350
  </Button>
351
- <Button size="medium" icon={<Mail size={24} strokeWidth={1.5} />}>
351
+ <Button size="m" icon={<Mail size={24} strokeWidth={1.5} />}>
352
352
  Medium
353
353
  </Button>
354
- <Button size="large" icon={<Mail size={28} strokeWidth={1.5} />}>
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="medium"
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="medium">
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="small">
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="medium">
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="medium">
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="medium"
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="small"
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="medium"
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="medium"
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="medium"
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="medium"
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="small"
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` - размер: "small" или "medium" (default: "medium")
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="small"
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="medium"
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="large"
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="small"
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="medium"
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="large"
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="small"
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="medium"
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="large"
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="medium">Success</Badge>
941
- <Badge variant="error" size="medium">Error</Badge>
942
- <Badge variant="warning" size="medium">Warning</Badge>
943
- <Badge variant="info" size="medium">Info</Badge>
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="small">Success</Badge>
947
- <Badge variant="error" size="small">Error</Badge>
948
- <Badge variant="warning" size="small">Warning</Badge>
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="medium"
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="medium" onClick={handleClose}>
981
+ <Button variant="secondary" size="m" onClick={handleClose}>
982
982
  Cancel
983
983
  </Button>
984
- <Button variant="primary" size="medium">
984
+ <Button variant="primary" size="m">
985
985
  Submit
986
986
  </Button>
987
987
  </ModalFooter>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@donkit-ai/design-system",
3
- "version": "0.2.19",
3
+ "version": "0.3.0",
4
4
  "description": "Donkit Design System - minimal design tokens and React components",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -7,14 +7,14 @@
7
7
  }
8
8
 
9
9
  /* Sizes */
10
- .ds-badge--small {
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--medium {
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);
@@ -4,7 +4,7 @@ import './Badge.css';
4
4
  export function Badge({
5
5
  children,
6
6
  variant = 'default',
7
- size = 'medium',
7
+ size = 'm',
8
8
  role,
9
9
  ...props
10
10
  }) {
@@ -68,21 +68,21 @@
68
68
  border-radius: var(--radius-xs);
69
69
  }
70
70
 
71
- .ds-button--small {
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--medium {
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--large {
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);
@@ -4,7 +4,7 @@ import './Button.css';
4
4
  export function Button({
5
5
  children,
6
6
  variant = 'primary',
7
- size = 'medium',
7
+ size = 'm',
8
8
  fullWidth = false,
9
9
  icon,
10
10
  disabled = false,
@@ -27,14 +27,14 @@
27
27
  padding: 0;
28
28
  }
29
29
 
30
- .ds-card--small {
30
+ .ds-card--s {
31
31
  padding: var(--space-s);
32
32
  }
33
33
 
34
- .ds-card--medium {
34
+ .ds-card--m {
35
35
  padding: var(--space-m);
36
36
  }
37
37
 
38
- .ds-card--large {
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--small .ds-checkbox__box {
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--small .ds-checkbox__label {
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--medium .ds-checkbox__box {
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--medium .ds-checkbox__label {
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--large .ds-checkbox__box {
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--large .ds-checkbox__label {
86
+ .ds-checkbox--l .ds-checkbox__label {
87
87
  font-size: var(--font-size-p1);
88
88
  }
@@ -5,7 +5,7 @@ import './Checkbox.css';
5
5
  export function Checkbox({
6
6
  checked = false,
7
7
  onChange,
8
- size = 'medium',
8
+ size = 'm',
9
9
  disabled = false,
10
10
  label,
11
11
  id,
@@ -65,14 +65,14 @@
65
65
  border-radius: var(--radius-xs);
66
66
  }
67
67
 
68
- .ds-input--small {
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--medium {
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--small {
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--medium {
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--small {
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--medium {
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--small {
118
+ .ds-input-icon--s {
119
119
  left: 8px;
120
120
  }
121
121
 
122
- .ds-input-icon--medium {
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--small {
147
+ .ds-input-icon-right--s {
148
148
  right: 8px;
149
149
  }
150
150
 
151
- .ds-input-icon-right--medium {
151
+ .ds-input-icon-right--m {
152
152
  right: 11px;
153
153
  }
154
154
 
@@ -9,7 +9,7 @@ export function Input({
9
9
  icon,
10
10
  iconRight,
11
11
  onIconRightClick,
12
- size = 'medium',
12
+ size = 'm',
13
13
  disabled,
14
14
  id,
15
15
  ...props
@@ -22,17 +22,17 @@
22
22
  margin: auto 0;
23
23
  }
24
24
 
25
- .ds-modal--small {
25
+ .ds-modal--s {
26
26
  width: 100%;
27
27
  max-width: 400px;
28
28
  }
29
29
 
30
- .ds-modal--medium {
30
+ .ds-modal--m {
31
31
  width: 100%;
32
32
  max-width: 600px;
33
33
  }
34
34
 
35
- .ds-modal--large {
35
+ .ds-modal--l {
36
36
  width: 100%;
37
37
  max-width: 900px;
38
38
  }
@@ -8,7 +8,7 @@ export function Modal({
8
8
  children,
9
9
  title,
10
10
  onClose,
11
- size = 'medium',
11
+ size = 'm',
12
12
  ...props
13
13
  }) {
14
14
  const modalRef = useRef(null);
@@ -70,46 +70,46 @@
70
70
  }
71
71
 
72
72
  /* Small */
73
- .ds-radio--small .ds-radio__circle {
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--small .ds-radio__dot {
78
+ .ds-radio--s .ds-radio__dot {
79
79
  width: 8px;
80
80
  height: 8px;
81
81
  }
82
82
 
83
- .ds-radio--small .ds-radio__label {
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--medium .ds-radio__circle {
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--medium .ds-radio__dot {
93
+ .ds-radio--m .ds-radio__dot {
94
94
  width: 10px;
95
95
  height: 10px;
96
96
  }
97
97
 
98
- .ds-radio--medium .ds-radio__label {
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--large .ds-radio__circle {
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--large .ds-radio__dot {
108
+ .ds-radio--l .ds-radio__dot {
109
109
  width: 12px;
110
110
  height: 12px;
111
111
  }
112
112
 
113
- .ds-radio--large .ds-radio__label {
113
+ .ds-radio--l .ds-radio__label {
114
114
  font-size: var(--font-size-p1);
115
115
  }
@@ -4,7 +4,7 @@ import './Radio.css';
4
4
  export function Radio({
5
5
  checked = false,
6
6
  onChange,
7
- size = 'medium',
7
+ size = 'm',
8
8
  disabled = false,
9
9
  label,
10
10
  name,
@@ -67,14 +67,14 @@
67
67
  border-radius: var(--radius-xs);
68
68
  }
69
69
 
70
- .ds-select-trigger--small {
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--medium {
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--small {
122
+ .ds-select-dropdown--s {
123
123
  border-radius: var(--radius-xs);
124
124
  }
125
125
 
126
- .ds-select-dropdown--medium {
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--small {
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--medium {
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);
@@ -11,7 +11,7 @@ export function Select({
11
11
  placeholder = 'Select option',
12
12
  error,
13
13
  fullWidth = true,
14
- size = 'medium',
14
+ size = 'm',
15
15
  disabled = false,
16
16
  id,
17
17
  ...props
@@ -115,32 +115,32 @@
115
115
  }
116
116
 
117
117
  /* Small */
118
- .ds-stepper--small {
118
+ .ds-stepper--s {
119
119
  height: var(--height-s);
120
120
  }
121
121
 
122
- .ds-stepper--small .ds-stepper-button {
122
+ .ds-stepper--s .ds-stepper-button {
123
123
  width: var(--height-s);
124
124
  padding: 0;
125
125
  }
126
126
 
127
- .ds-stepper--small .ds-stepper-input {
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--medium {
134
+ .ds-stepper--m {
135
135
  height: var(--height-m);
136
136
  }
137
137
 
138
- .ds-stepper--medium .ds-stepper-button {
138
+ .ds-stepper--m .ds-stepper-button {
139
139
  width: var(--height-m);
140
140
  padding: 0;
141
141
  }
142
142
 
143
- .ds-stepper--medium .ds-stepper-input {
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);
@@ -10,7 +10,7 @@ export function Stepper({
10
10
  min = 0,
11
11
  max = 100,
12
12
  step = 1,
13
- size = 'medium',
13
+ size = 'm',
14
14
  disabled = false,
15
15
  hint,
16
16
  error,
@@ -44,21 +44,21 @@
44
44
  border-radius: var(--radius-xs);
45
45
  }
46
46
 
47
- .ds-tab--small {
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--medium {
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--large {
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);
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import './Tabs.css';
3
3
 
4
- export function Tabs({ children, size = 'medium', variant = 'ghost', ...props }) {
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 = 'medium', variant = 'ghost', disabled = false, icon, href, ...props }) {
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--small {
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--medium {
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);
@@ -6,7 +6,7 @@ export function Textarea({
6
6
  error,
7
7
  hint,
8
8
  fullWidth = true,
9
- size = 'medium',
9
+ size = 'm',
10
10
  disabled,
11
11
  id,
12
12
  resize = true,
@@ -70,64 +70,64 @@
70
70
  }
71
71
 
72
72
  /* Small */
73
- .ds-toggle--small .ds-toggle__track {
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--small .ds-toggle__thumb {
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--small .ds-toggle__input:checked + .ds-toggle__track .ds-toggle__thumb {
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--small .ds-toggle__label {
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--medium .ds-toggle__track {
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--medium .ds-toggle__thumb {
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--medium .ds-toggle__input:checked + .ds-toggle__track .ds-toggle__thumb {
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--medium .ds-toggle__label {
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--large .ds-toggle__track {
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--large .ds-toggle__thumb {
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--large .ds-toggle__input:checked + .ds-toggle__track .ds-toggle__thumb {
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--large .ds-toggle__label {
131
+ .ds-toggle--l .ds-toggle__label {
132
132
  font-size: var(--font-size-p1);
133
133
  }
@@ -4,7 +4,7 @@ import './Toggle.css';
4
4
  export function Toggle({
5
5
  checked = false,
6
6
  onChange,
7
- size = 'medium',
7
+ size = 'm',
8
8
  disabled = false,
9
9
  label,
10
10
  id,