@semcore/ui 13.1.1 → 13.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.
package/CHANGELOG.md CHANGED
@@ -1,12 +1,162 @@
1
- ## [13.1.1] - 2022-11-09
1
+ ## [13.3.0] - 2022-12-02
2
+
3
+ ### @semcore/dropdown-menu
4
+
5
+ - **Changed** Changed size of shadow in `DropdownMenu.List` from `9px` to `16px`.
6
+
7
+ ### @semcore/flags
8
+
9
+ - **Added** Added missed object `iso3iso2` in `index.d.ts` for exporting.
10
+
11
+ ### @semcore/input-tags
12
+
13
+ - **Fixed** Fixed exported types of components.
14
+
15
+ ### @semcore/wizard
16
+
17
+ - **Fixed** Fixed layout so that the white background in the rounded borders of the modal would not be visible.
18
+
19
+ ## [13.2.0] - 2022-11-30
2
20
 
3
21
  ### @semcore/base-trigger
4
22
 
5
- - **Fixed** Fixed `FilterTrigger` accessability.
23
+ - **Added** Added support text ellipsis in `LinkTrigger.Text`.
6
24
 
7
- ### @semcore/ellipsis
25
+ ### @semcore/checkbox
8
26
 
9
- - **Added** Component was added to export of `@semcore/ui`.
27
+ - **Changed** Updated border-color in focus state from `--blue-400` to `--blue-500`, `--red-400` to `--red-500`.
28
+
29
+ ### @semcore/d3-chart
30
+
31
+ - **Fixed** Allowed to pass any svg attributes.
32
+ - **Fixed** Fixed `Bar` click handler typings.
33
+ - **Fixed** Fixed support handling of bars event handling with `paddingOuter`.
34
+ - **Added** `Bar` component now supports `onClick` handler with bar data in callback.
35
+
36
+ ### @semcore/date-picker
37
+
38
+ - **Fixed** Fixed InputTrigger subcomponent types.
39
+
40
+ ### @semcore/dot
41
+
42
+ - **Added** Added css property `isolation` to container.
43
+
44
+ ### @semcore/drag-and-drop
45
+
46
+ - **Changed** Component was fully rebuilt internally. Backward capability mostly preserved, legacy apis was marked as deprecated.
47
+
48
+ ### @semcore/dropdown-menu
49
+
50
+ - **Changed** Due to the effect of cutting off the last line, it was decided to add a shadow to the container (`DropdownMenu.List`) when scrolling.
51
+ - **Changed** Changed `margin` to `padding` to make the scrollbar look better.
52
+ - **Changed** Now highlighted tabs are also browser focused.
53
+
54
+ ### @semcore/flags
55
+
56
+ - **Changed** Fixed few countries flag displaying.
57
+ - **Changed** Removed North Ireland flag as far as image of North Ireland flag was always missing in repository and random image was displayed instead.
58
+
59
+ ### @semcore/flex-box
60
+
61
+ - **Fixed** Fixed showing types in autocomplete IDE.
62
+
63
+ ### @semcore/format-text
64
+
65
+ - **Fixed** Fixed showing types in autocomplete IDE.
66
+
67
+ ### @semcore/icon
68
+
69
+ - **Added** Added `Rephrase`, `SimplifyText`, `ExpandText` icons.
70
+
71
+ ### @semcore/inline-input
72
+
73
+ - **Fixed** Disabled moving focus in tooltips.
74
+ - **Changed** Updated border-color in focus state from `--blue-400` to `--blue-500`, `--red-400` to `--red-500`, `--green-400` to `--green-500`.
75
+
76
+ ### @semcore/input
77
+
78
+ - **Fixed** Fix style for disabled state.
79
+ - **Changed** Updated border-color in focus state from `--blue-400` to `--blue-500`, `--red-400` to `--red-500`, `--green-400` to `--green-500`.
80
+ - **Added** Added `aria-invalid` for input in invalid state.
81
+
82
+ ### @semcore/input-mask
83
+
84
+ - **Fixed** Fixed showing types in autocomplete IDE.
85
+
86
+ ### @semcore/input-tags
87
+
88
+ - **Fixed** Fixed showing types in autocomplete IDE.
89
+
90
+ ### @semcore/notice-bubble
91
+
92
+ - **Fixed** Replaced `NoticeBubbleManager` instance typings with `NoticeBubbleManager` typing.
93
+ - **Fixed** Export of `NoticeBubbleManager` was missing in typings.
94
+
95
+ ### @semcore/outside-click
96
+
97
+ - **Fixed** Fixed showing types in autocomplete IDE.
98
+
99
+ ### @semcore/pagination
100
+
101
+ - **Fixed** Fixed attributes and line-height for last page
102
+
103
+ ### @semcore/pills
104
+
105
+ - **Added** Added css property `isolation` to container.
106
+
107
+ ### @semcore/portal
108
+
109
+ - **Fixed** Fixed showing types in autocomplete IDE.
110
+
111
+ ### @semcore/product-head
112
+
113
+ - **Fixed** Fixed showing types in autocomplete IDE.
114
+ - **Changed** Changed margin-bottom from 16px to 24px.
115
+
116
+ ### @semcore/radio
117
+
118
+ - **Changed** Updated border-color in focus state from `--blue-400` to `--blue-500`, `--red-400` to `--red-500`.
119
+
120
+ ### @semcore/skeleton
121
+
122
+ - **Changed** Removed `width` and `height` properties from `VennChartSkeleton` and `PieChartSkeleton`.
123
+
124
+ ### @semcore/sticky
125
+
126
+ - **Fixed** Fixed showing types in autocomplete IDE.
127
+
128
+ ### @semcore/tab-line
129
+
130
+ - **Changed** Changed `font-weight` of tab's text and `height` of underline.
131
+
132
+ ### @semcore/tab-panel
133
+
134
+ - **Changed** Tabs focus doesn't trigger tab select.
135
+ - **Changed** Pressing "Enter" and "Space" keys focuses current tab.
136
+ - **Changed** Changed `font-weight` of tab's text.
137
+
138
+ ### @semcore/tag
139
+
140
+ - **Added** Added hover styles for close icon.
141
+
142
+ ### @semcore/textarea
143
+
144
+ - **Changed** Updated border-color in focus state from `--blue-400` to `--blue-500`, `--red-400` to `--red-500`, `--green-400` to `--green-500`.
145
+
146
+ ### @semcore/tooltip
147
+
148
+ - **Changed** Updated border-color for `warning` theme from `--red-400` to `--red-500`.
149
+
150
+ ### @semcore/utils
151
+
152
+ - **Changed** Changed `keyboard-focus` opacity
153
+ - **Added** Added ability to merge `styles` field for `assignProps` function.
154
+
155
+ ## [13.1.1] - 2022-11-09
156
+
157
+ ### @semcore/base-trigger
158
+
159
+ - **Fixed** Fixed `FilterTrigger` accessability.
10
160
 
11
161
  ### @semcore/checkbox
12
162
 
@@ -21,6 +171,10 @@
21
171
  - **Fixed** Fixed input trigger visual divergence from initial design.
22
172
  - **Fixed** Removed lock on fixed version of `@semcore/input`.
23
173
 
174
+ ### @semcore/ellipsis
175
+
176
+ - **Added** Component was added to export of `@semcore/ui`.
177
+
24
178
  ### @semcore/icon
25
179
 
26
180
  - **Added** Added `LookerStudio` icon.
@@ -1,10 +1,8 @@
1
- import { execSync } from 'child_process';
2
1
  import path from 'path';
3
2
  import fs from 'fs-extra';
4
3
  import glob from 'fast-glob';
5
4
  import { fileURLToPath } from 'url';
6
5
  import { createRequire } from 'module';
7
- import { fetchVersionsFromNpm } from '@semcore/continuous-delivery';
8
6
 
9
7
  const filename = fileURLToPath(import.meta.url);
10
8
  const dirname = path.resolve(filename, '..');
@@ -13,40 +11,6 @@ const components = fs.readJSONSync(path.resolve(dirname, './components.json'));
13
11
 
14
12
  const EXPORT_DEFAULT_REG = /export ({ default }|default)/gm;
15
13
 
16
- const installComponents = async (packages: string[]) => {
17
- const latestVersions = await fetchVersionsFromNpm(packages);
18
- const packageFile = await fs.readJSON(path.resolve(dirname, './package.json'));
19
- packageFile.dependencies = {};
20
- for (const packageName of packages) {
21
- packageFile.dependencies[packageName] = latestVersions[packageName];
22
- }
23
- await fs.writeJSON(path.resolve(dirname, './package.json'), packageFile, { spaces: 2 });
24
- execSync(`pnpm install --frozen-lockfile false`, {
25
- stdio: 'inherit',
26
- cwd: dirname,
27
- });
28
-
29
- const nestedNodeModules = glob
30
- .sync('**/node_modules/**/package.json', {
31
- cwd: path.resolve(dirname, 'node_modules/@semcore'),
32
- followSymbolicLinks: false,
33
- })
34
- .map(
35
- (packageFilePath) =>
36
- './node_modules/@semcore/' +
37
- packageFilePath.substring(0, packageFilePath.length - '/package.json'.length),
38
- )
39
- .map((relativePath) => {
40
- const { version } = fs.readJsonSync(path.resolve(dirname, relativePath, 'package.json'));
41
-
42
- return `${relativePath} @${version}`;
43
- });
44
-
45
- if (nestedNodeModules.length > 0) {
46
- throw new Error(`Nested node_modules found:\n- ${nestedNodeModules.join('\n- ')}\n`);
47
- }
48
- };
49
-
50
14
  const hasExportDefault = async (dependency: string) => {
51
15
  const require = createRequire(import.meta.url);
52
16
 
@@ -207,10 +171,4 @@ const generateFiles = async (packages: string[]) => {
207
171
  }
208
172
  };
209
173
 
210
- await installComponents(components.packages);
211
174
  await generateFiles(components.packages);
212
-
213
- execSync('pnpm test', {
214
- stdio: 'inherit',
215
- cwd: dirname,
216
- });
@@ -0,0 +1 @@
1
+ module.exports = require('@semcore/icon/ExpandText/l');
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/ExpandText/l';
2
+ export * from '@semcore/icon/ExpandText/l';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/ExpandText/l';
2
+ export * from '@semcore/icon/ExpandText/l';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/ExpandText/l';
2
+ export * from '@semcore/icon/ExpandText/l';
@@ -0,0 +1 @@
1
+ module.exports = require('@semcore/icon/ExpandText/m');
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/ExpandText/m';
2
+ export * from '@semcore/icon/ExpandText/m';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/ExpandText/m';
2
+ export * from '@semcore/icon/ExpandText/m';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/ExpandText/m';
2
+ export * from '@semcore/icon/ExpandText/m';
@@ -0,0 +1 @@
1
+ module.exports = require('@semcore/icon/Rephrase/l');
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/Rephrase/l';
2
+ export * from '@semcore/icon/Rephrase/l';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/Rephrase/l';
2
+ export * from '@semcore/icon/Rephrase/l';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/Rephrase/l';
2
+ export * from '@semcore/icon/Rephrase/l';
@@ -0,0 +1 @@
1
+ module.exports = require('@semcore/icon/Rephrase/m');
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/Rephrase/m';
2
+ export * from '@semcore/icon/Rephrase/m';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/Rephrase/m';
2
+ export * from '@semcore/icon/Rephrase/m';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/Rephrase/m';
2
+ export * from '@semcore/icon/Rephrase/m';
@@ -0,0 +1 @@
1
+ module.exports = require('@semcore/icon/SimplifyText/l');
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/SimplifyText/l';
2
+ export * from '@semcore/icon/SimplifyText/l';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/SimplifyText/l';
2
+ export * from '@semcore/icon/SimplifyText/l';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/SimplifyText/l';
2
+ export * from '@semcore/icon/SimplifyText/l';
@@ -0,0 +1 @@
1
+ module.exports = require('@semcore/icon/SimplifyText/m');
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/SimplifyText/m';
2
+ export * from '@semcore/icon/SimplifyText/m';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/SimplifyText/m';
2
+ export * from '@semcore/icon/SimplifyText/m';
@@ -0,0 +1,2 @@
1
+ export { default } from '@semcore/icon/SimplifyText/m';
2
+ export * from '@semcore/icon/SimplifyText/m';
package/package.json CHANGED
@@ -1,87 +1,88 @@
1
1
  {
2
2
  "name": "@semcore/ui",
3
- "version": "13.1.1",
3
+ "version": "13.2.1",
4
4
  "license": "MIT",
5
5
  "module": "./index.js",
6
6
  "sideEffects": false,
7
7
  "scripts": {
8
8
  "clear": "tsm --require=../../.ci/tsm-filter-warnings.js clear.ts",
9
- "generate": "pnpm run clear && tsm --require=../../.ci/tsm-filter-warnings.js generate.ts",
9
+ "generate-reexport": "pnpm run clear && tsm --require=../../.ci/tsm-filter-warnings.js generate-reexport.ts",
10
+ "update-dependencies": "tsm --require=../../.ci/tsm-filter-warnings.js update-dependencies.ts",
10
11
  "test": "jest"
11
12
  },
12
13
  "dependencies": {
13
- "@semcore/accordion": "4.1.7",
14
- "@semcore/animation": "1.7.1",
15
- "@semcore/badge": "3.2.3",
16
- "@semcore/base-trigger": "3.2.6",
17
- "@semcore/breadcrumbs": "4.2.6",
18
- "@semcore/breakpoints": "1.2.3",
19
- "@semcore/button": "4.2.3",
20
- "@semcore/card": "4.1.6",
21
- "@semcore/carousel": "2.1.7",
22
- "@semcore/checkbox": "6.1.4",
23
- "@semcore/color-picker": "1.2.7",
24
- "@semcore/core": "1.13.4",
25
- "@semcore/counter": "2.1.3",
26
- "@semcore/data-table": "3.5.1",
27
- "@semcore/date-picker": "3.4.9",
28
- "@semcore/divider": "3.1.3",
29
- "@semcore/dot": "4.1.4",
30
- "@semcore/drag-and-drop": "2.1.6",
31
- "@semcore/dropdown": "3.2.4",
32
- "@semcore/dropdown-menu": "3.3.3",
33
- "@semcore/d3-chart": "2.4.10",
34
- "@semcore/ellipsis": "1.0.3",
14
+ "@semcore/accordion": "4.1.10",
15
+ "@semcore/animation": "1.7.3",
16
+ "@semcore/badge": "3.2.5",
17
+ "@semcore/base-trigger": "3.2.11",
18
+ "@semcore/breadcrumbs": "4.2.9",
19
+ "@semcore/breakpoints": "1.2.5",
20
+ "@semcore/button": "4.2.5",
21
+ "@semcore/card": "4.1.9",
22
+ "@semcore/carousel": "2.1.10",
23
+ "@semcore/checkbox": "6.2.0",
24
+ "@semcore/color-picker": "1.2.11",
25
+ "@semcore/core": "1.13.6",
26
+ "@semcore/counter": "2.1.5",
27
+ "@semcore/data-table": "3.5.4",
28
+ "@semcore/date-picker": "3.4.16",
29
+ "@semcore/divider": "3.1.5",
30
+ "@semcore/dot": "4.1.7",
31
+ "@semcore/drag-and-drop": "2.2.2",
32
+ "@semcore/dropdown": "3.2.6",
33
+ "@semcore/dropdown-menu": "3.4.2",
34
+ "@semcore/d3-chart": "2.5.4",
35
+ "@semcore/ellipsis": "1.0.5",
35
36
  "@semcore/email": "1.0.2",
36
- "@semcore/errors": "3.5.4",
37
- "@semcore/feature-popover": "3.1.8",
38
- "@semcore/feedback-form": "5.2.3",
39
- "@semcore/flags": "3.1.3",
40
- "@semcore/flex-box": "4.6.3",
41
- "@semcore/format-text": "3.1.3",
42
- "@semcore/fullscreen-modal": "2.1.7",
43
- "@semcore/grid": "4.2.3",
44
- "@semcore/icon": "3.2.0",
45
- "@semcore/illustration": "1.3.3",
46
- "@semcore/inline-input": "3.1.6",
47
- "@semcore/inline-edit": "2.1.5",
48
- "@semcore/input": "3.2.3",
49
- "@semcore/input-mask": "4.3.4",
50
- "@semcore/input-number": "4.1.3",
51
- "@semcore/input-tags": "3.2.3",
52
- "@semcore/link": "4.2.3",
53
- "@semcore/modal": "3.1.8",
54
- "@semcore/neighbor-location": "3.1.3",
55
- "@semcore/notice": "4.2.7",
56
- "@semcore/notice-global": "1.2.7",
57
- "@semcore/notice-bubble": "4.2.7",
58
- "@semcore/outside-click": "2.5.3",
59
- "@semcore/pagination": "3.3.7",
60
- "@semcore/pills": "4.3.3",
61
- "@semcore/popper": "4.13.4",
62
- "@semcore/portal": "2.4.3",
63
- "@semcore/product-head": "3.1.3",
64
- "@semcore/progress-bar": "3.2.3",
65
- "@semcore/radio": "5.1.3",
66
- "@semcore/scroll-area": "4.1.3",
67
- "@semcore/select": "3.2.9",
68
- "@semcore/side-panel": "2.1.8",
69
- "@semcore/skeleton": "4.2.3",
70
- "@semcore/slider": "3.2.3",
71
- "@semcore/spin": "4.1.3",
72
- "@semcore/spin-container": "6.1.4",
73
- "@semcore/sticky": "2.3.3",
74
- "@semcore/switch": "4.2.3",
75
- "@semcore/tab-line": "3.1.3",
76
- "@semcore/tab-panel": "3.1.3",
77
- "@semcore/tag": "4.2.6",
78
- "@semcore/textarea": "4.1.3",
79
- "@semcore/time-picker": "3.2.8",
80
- "@semcore/tooltip": "5.1.4",
81
- "@semcore/typography": "4.2.6",
82
- "@semcore/utils": "3.40.0",
83
- "@semcore/widget-empty": "3.6.3",
84
- "@semcore/wizard": "1.1.8"
37
+ "@semcore/errors": "3.5.6",
38
+ "@semcore/feature-popover": "3.1.11",
39
+ "@semcore/feedback-form": "5.2.5",
40
+ "@semcore/flags": "3.2.3",
41
+ "@semcore/flex-box": "4.6.5",
42
+ "@semcore/format-text": "3.1.5",
43
+ "@semcore/fullscreen-modal": "2.1.10",
44
+ "@semcore/grid": "4.2.5",
45
+ "@semcore/icon": "3.3.2",
46
+ "@semcore/illustration": "1.3.5",
47
+ "@semcore/inline-input": "3.2.1",
48
+ "@semcore/inline-edit": "2.1.7",
49
+ "@semcore/input": "3.4.1",
50
+ "@semcore/input-mask": "4.3.7",
51
+ "@semcore/input-number": "4.1.6",
52
+ "@semcore/input-tags": "3.2.8",
53
+ "@semcore/link": "4.2.5",
54
+ "@semcore/modal": "3.1.11",
55
+ "@semcore/neighbor-location": "3.1.5",
56
+ "@semcore/notice": "4.2.10",
57
+ "@semcore/notice-global": "1.2.10",
58
+ "@semcore/notice-bubble": "4.2.12",
59
+ "@semcore/outside-click": "2.5.5",
60
+ "@semcore/pagination": "3.3.12",
61
+ "@semcore/pills": "4.3.6",
62
+ "@semcore/popper": "4.13.6",
63
+ "@semcore/portal": "2.4.5",
64
+ "@semcore/product-head": "3.2.2",
65
+ "@semcore/progress-bar": "3.2.5",
66
+ "@semcore/radio": "5.2.0",
67
+ "@semcore/scroll-area": "4.1.5",
68
+ "@semcore/select": "3.2.17",
69
+ "@semcore/side-panel": "2.1.11",
70
+ "@semcore/skeleton": "4.3.2",
71
+ "@semcore/slider": "3.2.5",
72
+ "@semcore/spin": "4.1.5",
73
+ "@semcore/spin-container": "6.1.6",
74
+ "@semcore/sticky": "2.3.5",
75
+ "@semcore/switch": "4.2.5",
76
+ "@semcore/tab-line": "3.1.6",
77
+ "@semcore/tab-panel": "3.2.5",
78
+ "@semcore/tag": "4.2.9",
79
+ "@semcore/textarea": "4.2.0",
80
+ "@semcore/time-picker": "3.2.16",
81
+ "@semcore/tooltip": "5.2.0",
82
+ "@semcore/typography": "4.2.9",
83
+ "@semcore/utils": "3.42.0",
84
+ "@semcore/widget-empty": "3.6.5",
85
+ "@semcore/wizard": "1.1.11"
85
86
  },
86
87
  "devDependencies": {
87
88
  "@types/react": "18.0.21",
@@ -0,0 +1,47 @@
1
+ import { execSync } from 'child_process';
2
+ import path from 'path';
3
+ import fs from 'fs-extra';
4
+ import glob from 'fast-glob';
5
+ import { fileURLToPath } from 'url';
6
+ import { fetchFromNpm } from '@semcore/continuous-delivery';
7
+
8
+ const filename = fileURLToPath(import.meta.url);
9
+ const dirname = path.resolve(filename, '..');
10
+
11
+ const components = fs.readJSONSync(path.resolve(dirname, './components.json'));
12
+
13
+ const installComponents = async (packages: string[]) => {
14
+ const npmPackages = await fetchFromNpm(packages);
15
+ const packageFile = await fs.readJSON(path.resolve(dirname, './package.json'));
16
+ packageFile.dependencies = {};
17
+ for (const packageName of packages) {
18
+ packageFile.dependencies[packageName] = npmPackages[packageName].version;
19
+ }
20
+ await fs.writeJSON(path.resolve(dirname, './package.json'), packageFile, { spaces: 2 });
21
+ execSync(`pnpm install --frozen-lockfile false`, {
22
+ stdio: 'inherit',
23
+ cwd: dirname,
24
+ });
25
+
26
+ const nestedNodeModules = glob
27
+ .sync('**/node_modules/**/package.json', {
28
+ cwd: path.resolve(dirname, 'node_modules/@semcore'),
29
+ followSymbolicLinks: false,
30
+ })
31
+ .map(
32
+ (packageFilePath) =>
33
+ './node_modules/@semcore/' +
34
+ packageFilePath.substring(0, packageFilePath.length - '/package.json'.length),
35
+ )
36
+ .map((relativePath) => {
37
+ const { version } = fs.readJsonSync(path.resolve(dirname, relativePath, 'package.json'));
38
+
39
+ return `${relativePath} @${version}`;
40
+ });
41
+
42
+ if (nestedNodeModules.length > 0) {
43
+ throw new Error(`Nested node_modules found:\n- ${nestedNodeModules.join('\n- ')}\n`);
44
+ }
45
+ };
46
+
47
+ await installComponents(components.packages);
@@ -93,10 +93,10 @@
93
93
  --google-blue: #1a0dab;
94
94
  --google-green: #016723;
95
95
 
96
- --keyboard-focus: 0 0 0 3px color-mod(var(--blue-400) a(20%));
96
+ --keyboard-focus: 0 0 0 3px color-mod(var(--blue-400) a(30%));
97
97
  --keyborad-focus: var(--keyboard-focus);
98
- --keyboard-focus-valid: 0px 0px 0px 3px color-mod(var(--green-400) a(20%));
99
- --keyboard-focus-invalid: 0px 0px 0px 3px color-mod(var(--red-400) a(20%));
98
+ --keyboard-focus-valid: 0px 0px 0px 3px color-mod(var(--green-400) a(30%));
99
+ --keyboard-focus-invalid: 0px 0px 0px 3px color-mod(var(--red-400) a(30%));
100
100
 
101
101
  --rounded-s: 4px;
102
102
  --rounded-m: 6px;