draft-components 3.5.0 → 3.6.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.
@@ -953,6 +953,8 @@
953
953
  .dc-button {
954
954
  --dc-button-height: 36px;
955
955
  --dc-button-radius: 9px;
956
+ --dc-button-padding-left: 16px;
957
+ --dc-button-padding-right: 16px;
956
958
  --dc-button-text-color: var(--dc-button-gray-text-color);
957
959
  --dc-button-border-color: var(--dc-button-gray-border-color);
958
960
  --dc-button-bg: var(--dc-button-gray-bg);
@@ -967,7 +969,7 @@
967
969
  place-items: center;
968
970
  justify-content: center;
969
971
  height: var(--dc-button-height);
970
- padding: 0 16px;
972
+ padding: 0 var(--dc-button-padding-right) 0 var(--dc-button-padding-left);
971
973
  font: 500 var(--dc-text-sm);
972
974
  color: var(--dc-button-text-color);
973
975
  text-align: center;
@@ -1043,6 +1045,14 @@
1043
1045
  grid-template-columns: repeat(3, auto);
1044
1046
  }
1045
1047
 
1048
+ .dc-button_has_icon-left {
1049
+ padding-left: calc(var(--dc-button-padding-left) / 1.6);
1050
+ }
1051
+
1052
+ .dc-button_has_icon-right {
1053
+ padding-right: calc(var(--dc-button-padding-right) / 1.6);
1054
+ }
1055
+
1046
1056
  .dc-button_style_tinted {
1047
1057
  --dc-button-text-color: var(--dc-button-gray-tinted-text-color);
1048
1058
  --dc-button-bg: var(--dc-button-gray-tinted-bg);
@@ -1064,36 +1074,36 @@
1064
1074
  .dc-button_xs {
1065
1075
  --dc-button-height: 28px;
1066
1076
  --dc-button-radius: 7px;
1077
+ --dc-button-padding-left: 8px;
1078
+ --dc-button-padding-right: 8px;
1067
1079
 
1068
- padding-right: 8px;
1069
- padding-left: 8px;
1070
1080
  font: 500 var(--dc-text-xs);
1071
1081
  }
1072
1082
 
1073
1083
  .dc-button_sm {
1074
1084
  --dc-button-height: 32px;
1075
1085
  --dc-button-radius: 8px;
1086
+ --dc-button-padding-left: 12px;
1087
+ --dc-button-padding-right: 12px;
1076
1088
 
1077
- padding-right: 12px;
1078
- padding-left: 12px;
1079
1089
  font: 500 var(--dc-text-sm);
1080
1090
  }
1081
1091
 
1082
1092
  .dc-button_lg {
1083
1093
  --dc-button-height: 40px;
1084
1094
  --dc-button-radius: 10px;
1095
+ --dc-button-padding-left: 18px;
1096
+ --dc-button-padding-right: 18px;
1085
1097
 
1086
- padding-right: 18px;
1087
- padding-left: 18px;
1088
1098
  font: 500 var(--dc-text-md);
1089
1099
  }
1090
1100
 
1091
1101
  .dc-button_xl {
1092
1102
  --dc-button-height: 44px;
1093
1103
  --dc-button-radius: 11px;
1104
+ --dc-button-padding-left: 20px;
1105
+ --dc-button-padding-right: 20px;
1094
1106
 
1095
- padding-right: 20px;
1096
- padding-left: 20px;
1097
1107
  font: 500 var(--dc-text-md);
1098
1108
  }
1099
1109
 
@@ -1687,14 +1697,17 @@
1687
1697
  border-radius: var(--dc-input-border-radius);
1688
1698
  }
1689
1699
 
1690
- .dc-text-input > :first-child {
1691
- border-top-left-radius: calc(var(--dc-input-border-radius) - 1px);
1692
- border-bottom-left-radius: calc(var(--dc-input-border-radius) - 1px);
1700
+ .dc-text-input_full-width {
1701
+ display: flex;
1702
+ width: 100%;
1693
1703
  }
1694
1704
 
1695
- .dc-text-input > :last-child {
1696
- border-top-right-radius: calc(var(--dc-input-border-radius) - 1px);
1697
- border-bottom-right-radius: calc(var(--dc-input-border-radius) - 1px);
1705
+ .dc-text-input_invalid {
1706
+ border-color: var(--dc-input-border-color-error);
1707
+ }
1708
+
1709
+ .dc-text-input_disabled {
1710
+ opacity: var(--dc-disabled-state-opacity);
1698
1711
  }
1699
1712
 
1700
1713
  .dc-text-input_focused {
@@ -1702,17 +1715,14 @@
1702
1715
  box-shadow: 0 0 0 1px var(--dc-input-focus-ring-color);
1703
1716
  }
1704
1717
 
1705
- .dc-text-input_disabled {
1706
- opacity: var(--dc-disabled-state-opacity);
1707
- }
1708
-
1709
- .dc-text-input_invalid {
1710
- border-color: var(--dc-input-border-color-error);
1718
+ .dc-text-input > :first-child {
1719
+ border-top-left-radius: calc(var(--dc-input-border-radius) - 1px);
1720
+ border-bottom-left-radius: calc(var(--dc-input-border-radius) - 1px);
1711
1721
  }
1712
1722
 
1713
- .dc-text-input_full-width {
1714
- display: flex;
1715
- width: 100%;
1723
+ .dc-text-input > :last-child {
1724
+ border-top-right-radius: calc(var(--dc-input-border-radius) - 1px);
1725
+ border-bottom-right-radius: calc(var(--dc-input-border-radius) - 1px);
1716
1726
  }
1717
1727
 
1718
1728
  .dc-text-input_sm {
@@ -3521,9 +3531,9 @@
3521
3531
  box-sizing: border-box;
3522
3532
  width: 100%;
3523
3533
  overflow-x: auto;
3534
+ scroll-snap-type: x mandatory;
3524
3535
  border: 0 solid var(--dc-table-border-color);
3525
3536
  scroll-behavior: smooth;
3526
- scroll-snap-type: x mandatory;
3527
3537
  }
3528
3538
 
3529
3539
  .dc-table-container_border_all {
@@ -3560,9 +3570,9 @@
3560
3570
  padding:
3561
3571
  var(--dc-table-cell-padding-y)
3562
3572
  var(--dc-table-cell-padding-x);
3573
+ scroll-snap-align: start;
3563
3574
  background: var(--dc-table-bg);
3564
3575
  border-bottom: 1px solid var(--dc-table-border-color);
3565
- scroll-snap-align: start;
3566
3576
  }
3567
3577
 
3568
3578
  .dc-table-cell_head {
@@ -4106,6 +4116,10 @@
4106
4116
  color-scheme: light;
4107
4117
  }
4108
4118
 
4119
+ .dc-empty-state_full_height {
4120
+ height: 100%;
4121
+ }
4122
+
4109
4123
  .dc-empty-state__image {
4110
4124
  color: var(--dc-empty-state-secondary-color);
4111
4125
  }
@@ -4644,9 +4658,9 @@
4644
4658
 
4645
4659
  .dc-filter-value-list > li {
4646
4660
  display: flex;
4647
- scroll-snap-align: start;
4648
4661
  align-items: center;
4649
4662
  min-height: 32px;
4663
+ scroll-snap-align: start;
4650
4664
  }
4651
4665
 
4652
4666
  .dc-filter-popover {
@@ -1,6 +1,8 @@
1
1
  .dc-button {
2
2
  --dc-button-height: 36px;
3
3
  --dc-button-radius: 9px;
4
+ --dc-button-padding-left: 16px;
5
+ --dc-button-padding-right: 16px;
4
6
  --dc-button-text-color: var(--dc-button-gray-text-color);
5
7
  --dc-button-border-color: var(--dc-button-gray-border-color);
6
8
  --dc-button-bg: var(--dc-button-gray-bg);
@@ -15,7 +17,7 @@
15
17
  place-items: center;
16
18
  justify-content: center;
17
19
  height: var(--dc-button-height);
18
- padding: 0 16px;
20
+ padding: 0 var(--dc-button-padding-right) 0 var(--dc-button-padding-left);
19
21
  font: 500 var(--dc-text-sm);
20
22
  color: var(--dc-button-text-color);
21
23
  text-align: center;
@@ -91,6 +93,14 @@
91
93
  grid-template-columns: repeat(3, auto);
92
94
  }
93
95
 
96
+ .dc-button_has_icon-left {
97
+ padding-left: calc(var(--dc-button-padding-left) / 1.6);
98
+ }
99
+
100
+ .dc-button_has_icon-right {
101
+ padding-right: calc(var(--dc-button-padding-right) / 1.6);
102
+ }
103
+
94
104
  .dc-button_style_tinted {
95
105
  --dc-button-text-color: var(--dc-button-gray-tinted-text-color);
96
106
  --dc-button-bg: var(--dc-button-gray-tinted-bg);
@@ -112,36 +122,36 @@
112
122
  .dc-button_xs {
113
123
  --dc-button-height: 28px;
114
124
  --dc-button-radius: 7px;
125
+ --dc-button-padding-left: 8px;
126
+ --dc-button-padding-right: 8px;
115
127
 
116
- padding-right: 8px;
117
- padding-left: 8px;
118
128
  font: 500 var(--dc-text-xs);
119
129
  }
120
130
 
121
131
  .dc-button_sm {
122
132
  --dc-button-height: 32px;
123
133
  --dc-button-radius: 8px;
134
+ --dc-button-padding-left: 12px;
135
+ --dc-button-padding-right: 12px;
124
136
 
125
- padding-right: 12px;
126
- padding-left: 12px;
127
137
  font: 500 var(--dc-text-sm);
128
138
  }
129
139
 
130
140
  .dc-button_lg {
131
141
  --dc-button-height: 40px;
132
142
  --dc-button-radius: 10px;
143
+ --dc-button-padding-left: 18px;
144
+ --dc-button-padding-right: 18px;
133
145
 
134
- padding-right: 18px;
135
- padding-left: 18px;
136
146
  font: 500 var(--dc-text-md);
137
147
  }
138
148
 
139
149
  .dc-button_xl {
140
150
  --dc-button-height: 44px;
141
151
  --dc-button-radius: 11px;
152
+ --dc-button-padding-left: 20px;
153
+ --dc-button-padding-right: 20px;
142
154
 
143
- padding-right: 20px;
144
- padding-left: 20px;
145
155
  font: 500 var(--dc-text-md);
146
156
  }
147
157
 
@@ -14,6 +14,10 @@
14
14
  color-scheme: light;
15
15
  }
16
16
 
17
+ .dc-empty-state_full_height {
18
+ height: 100%;
19
+ }
20
+
17
21
  .dc-empty-state__image {
18
22
  color: var(--dc-empty-state-secondary-color);
19
23
  }
@@ -7,6 +7,7 @@ export type EmptyStateProps = {
7
7
  message?: ReactNode;
8
8
  primaryAction?: ReactNode;
9
9
  secondaryAction?: ReactNode;
10
+ fullHeight?: boolean;
10
11
  } & EmptyStateBaseProps;
11
- export declare function EmptyState({ className, image, title, message, primaryAction, secondaryAction, children, ...props }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function EmptyState({ className, image, title, message, primaryAction, secondaryAction, fullHeight, children, ...props }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
12
13
  export {};
@@ -1,7 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { classNames } from '../../lib/react-helpers.js';
3
- export function EmptyState({ className, image, title, message, primaryAction, secondaryAction, children, ...props }) {
4
- return (_jsxs("div", { ...props, className: classNames('dc-empty-state', className), children: [image
3
+ export function EmptyState({ className, image, title, message, primaryAction, secondaryAction, fullHeight, children, ...props }) {
4
+ return (_jsxs("div", { ...props, className: classNames(className, {
5
+ 'dc-empty-state': true,
6
+ 'dc-empty-state_full_height': fullHeight,
7
+ }), children: [image
5
8
  ? _jsx("div", { className: "dc-empty-state__image", children: image })
6
9
  : null, title
7
10
  ? _jsx("h2", { className: "dc-empty-state__title", children: title })
@@ -11,7 +11,7 @@
11
11
 
12
12
  .dc-filter-value-list > li {
13
13
  display: flex;
14
- scroll-snap-align: start;
15
14
  align-items: center;
16
15
  min-height: 32px;
16
+ scroll-snap-align: start;
17
17
  }
@@ -94,9 +94,9 @@
94
94
 
95
95
  .dc-filter-value-list > li {
96
96
  display: flex;
97
- scroll-snap-align: start;
98
97
  align-items: center;
99
98
  min-height: 32px;
99
+ scroll-snap-align: start;
100
100
  }
101
101
 
102
102
  .dc-filter-popover {
@@ -19,9 +19,9 @@
19
19
  box-sizing: border-box;
20
20
  width: 100%;
21
21
  overflow-x: auto;
22
+ scroll-snap-type: x mandatory;
22
23
  border: 0 solid var(--dc-table-border-color);
23
24
  scroll-behavior: smooth;
24
- scroll-snap-type: x mandatory;
25
25
  }
26
26
 
27
27
  .dc-table-container_border_all {
@@ -58,9 +58,9 @@
58
58
  padding:
59
59
  var(--dc-table-cell-padding-y)
60
60
  var(--dc-table-cell-padding-x);
61
+ scroll-snap-align: start;
61
62
  background: var(--dc-table-bg);
62
63
  border-bottom: 1px solid var(--dc-table-border-color);
63
- scroll-snap-align: start;
64
64
  }
65
65
 
66
66
  .dc-table-cell_head {
@@ -29,14 +29,17 @@
29
29
  border-radius: var(--dc-input-border-radius);
30
30
  }
31
31
 
32
- .dc-text-input > :first-child {
33
- border-top-left-radius: calc(var(--dc-input-border-radius) - 1px);
34
- border-bottom-left-radius: calc(var(--dc-input-border-radius) - 1px);
32
+ .dc-text-input_full-width {
33
+ display: flex;
34
+ width: 100%;
35
35
  }
36
36
 
37
- .dc-text-input > :last-child {
38
- border-top-right-radius: calc(var(--dc-input-border-radius) - 1px);
39
- border-bottom-right-radius: calc(var(--dc-input-border-radius) - 1px);
37
+ .dc-text-input_invalid {
38
+ border-color: var(--dc-input-border-color-error);
39
+ }
40
+
41
+ .dc-text-input_disabled {
42
+ opacity: var(--dc-disabled-state-opacity);
40
43
  }
41
44
 
42
45
  .dc-text-input_focused {
@@ -44,17 +47,14 @@
44
47
  box-shadow: 0 0 0 1px var(--dc-input-focus-ring-color);
45
48
  }
46
49
 
47
- .dc-text-input_disabled {
48
- opacity: var(--dc-disabled-state-opacity);
49
- }
50
-
51
- .dc-text-input_invalid {
52
- border-color: var(--dc-input-border-color-error);
50
+ .dc-text-input > :first-child {
51
+ border-top-left-radius: calc(var(--dc-input-border-radius) - 1px);
52
+ border-bottom-left-radius: calc(var(--dc-input-border-radius) - 1px);
53
53
  }
54
54
 
55
- .dc-text-input_full-width {
56
- display: flex;
57
- width: 100%;
55
+ .dc-text-input > :last-child {
56
+ border-top-right-radius: calc(var(--dc-input-border-radius) - 1px);
57
+ border-bottom-right-radius: calc(var(--dc-input-border-radius) - 1px);
58
58
  }
59
59
 
60
60
  .dc-text-input_sm {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "draft-components",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "description": "The React based UI components library.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -26,7 +26,7 @@
26
26
  "test": "vitest run",
27
27
  "coverage": "vitest run --coverage",
28
28
  "lint": "npm run lint-js && npm run lint-css",
29
- "lint-js": "eslint '**/*.[jt]s?(x)'",
29
+ "lint-js": "eslint",
30
30
  "lint-css": "stylelint 'src/**/*.css'",
31
31
  "typecheck": "tsc --project 'tsconfig.json' --noEmit",
32
32
  "prebuild": "npm run typecheck && npm run lint && npm run test",
@@ -55,49 +55,50 @@
55
55
  "react-dom": ">= 18"
56
56
  },
57
57
  "devDependencies": {
58
- "@heroicons/react": "2.1.5",
59
- "@storybook/addon-actions": "^8.2.7",
60
- "@storybook/addon-essentials": "^8.2.7",
61
- "@storybook/addon-links": "^8.2.7",
62
- "@storybook/addon-themes": "^8.2.7",
63
- "@storybook/core-common": "^8.2.7",
64
- "@storybook/react": "^8.2.7",
65
- "@storybook/react-vite": "^8.2.7",
66
- "@stylistic/eslint-plugin": "2.6.1",
58
+ "@eslint/js": "9.16.0",
59
+ "@heroicons/react": "2.2.0",
60
+ "@storybook/addon-actions": "8.4.7",
61
+ "@storybook/addon-essentials": "8.4.7",
62
+ "@storybook/addon-links": "8.4.7",
63
+ "@storybook/addon-themes": "8.4.7",
64
+ "@storybook/core-common": "8.4.7",
65
+ "@storybook/react": "8.4.7",
66
+ "@storybook/react-vite": "8.4.7",
67
+ "@stylistic/eslint-plugin": "2.12.1",
67
68
  "@testing-library/dom": "10.4.0",
68
- "@testing-library/jest-dom": "6.4.8",
69
- "@testing-library/react": "16.0.0",
69
+ "@testing-library/jest-dom": "6.6.3",
70
+ "@testing-library/react": "16.1.0",
70
71
  "@testing-library/user-event": "14.5.2",
71
- "@types/node": "20.14.13",
72
- "@types/react": "18.3.3",
73
- "@types/react-dom": "18.3.0",
74
- "@typescript-eslint/eslint-plugin": "8.0.0",
75
- "@typescript-eslint/parser": "8.0.0",
76
- "@vitejs/plugin-react": "4.3.1",
77
- "@vitest/coverage-istanbul": "2.0.5",
78
- "autoprefixer": "10.4.19",
72
+ "@types/node": "20.17.10",
73
+ "@types/react": "18.3.16",
74
+ "@types/react-dom": "18.3.5",
75
+ "@vitejs/plugin-react": "4.3.4",
76
+ "@vitest/coverage-istanbul": "2.1.8",
77
+ "autoprefixer": "10.4.20",
79
78
  "color": "4.2.3",
80
- "eslint": "8.57.0",
81
- "eslint-plugin-jsx-a11y": "6.9.0",
82
- "eslint-plugin-react": "7.35.0",
83
- "eslint-plugin-react-hooks": "4.6.2",
84
- "eslint-plugin-storybook": "0.8.0",
85
- "eslint-plugin-testing-library": "6.2.2",
79
+ "eslint": "9.16.0",
80
+ "eslint-plugin-jsx-a11y": "6.10.2",
81
+ "eslint-plugin-react": "7.37.2",
82
+ "eslint-plugin-react-hooks": "5.1.0",
83
+ "eslint-plugin-storybook": "0.11.1",
84
+ "eslint-plugin-testing-library": "7.1.1",
86
85
  "glob": "11.0.0",
87
- "husky": "9.1.4",
88
- "jsdom": "24.1.1",
89
- "lint-staged": "15.2.7",
90
- "postcss": "8.4.40",
86
+ "globals": "15.13.0",
87
+ "husky": "9.1.7",
88
+ "jsdom": "25.0.1",
89
+ "lint-staged": "15.2.11",
90
+ "postcss": "8.4.49",
91
91
  "postcss-import": "16.1.0",
92
92
  "react": "18.3.1",
93
93
  "react-dom": "18.3.1",
94
- "storybook": "^8.2.7",
95
- "stylelint": "16.8.1",
96
- "stylelint-config-recess-order": "5.0.1",
94
+ "storybook": "^8.4.7",
95
+ "stylelint": "16.11.0",
96
+ "stylelint-config-recess-order": "5.1.1",
97
97
  "stylelint-config-standard": "36.0.1",
98
- "typescript": "5.5.4",
99
- "vite": "5.3.5",
100
- "vitest": "2.0.5"
98
+ "typescript": "5.7.2",
99
+ "typescript-eslint": "8.18.0",
100
+ "vite": "6.0.3",
101
+ "vitest": "2.1.8"
101
102
  },
102
103
  "lint-staged": {
103
104
  "*.ts?(x)": "npm run lint-js",