@grampro/kit 2.4.1 → 2.4.2

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/package.json +77 -77
  3. package/source/components/accordion/passport.json +2 -2
  4. package/source/components/accordion/styles.css +9 -9
  5. package/source/components/alert/passport.json +2 -2
  6. package/source/components/alert/styles.css +6 -6
  7. package/source/components/avatar/passport.json +2 -2
  8. package/source/components/avatar/styles.css +21 -21
  9. package/source/components/badge/passport.json +2 -2
  10. package/source/components/badge/styles.css +22 -22
  11. package/source/components/breadcrumb/passport.json +2 -2
  12. package/source/components/breadcrumb/styles.css +2 -2
  13. package/source/components/button/passport.json +2 -2
  14. package/source/components/button/styles.css +10 -10
  15. package/source/components/card/passport.json +2 -2
  16. package/source/components/card/styles.css +8 -8
  17. package/source/components/checkbox/passport.json +2 -2
  18. package/source/components/checkbox/styles.css +3 -3
  19. package/source/components/combobox/passport.json +2 -2
  20. package/source/components/combobox/styles.css +2 -2
  21. package/source/components/data-grid/passport.json +2 -2
  22. package/source/components/data-grid/styles.css +7 -7
  23. package/source/components/date-picker/passport.json +2 -2
  24. package/source/components/date-picker/styles.css +2 -2
  25. package/source/components/dialog/passport.json +2 -2
  26. package/source/components/dialog/styles.css +9 -9
  27. package/source/components/file-uploader/passport.json +2 -2
  28. package/source/components/file-uploader/styles.css +10 -10
  29. package/source/components/input/passport.json +2 -2
  30. package/source/components/input/styles.css +3 -3
  31. package/source/components/menu/passport.json +2 -2
  32. package/source/components/menu/styles.css +3 -3
  33. package/source/components/modal/passport.json +2 -2
  34. package/source/components/modal/styles.css +9 -9
  35. package/source/components/number-input/passport.json +2 -2
  36. package/source/components/number-input/styles.css +3 -3
  37. package/source/components/popover/passport.json +2 -2
  38. package/source/components/popover/styles.css +3 -3
  39. package/source/components/progress/passport.json +2 -2
  40. package/source/components/progress/styles.css +8 -8
  41. package/source/components/radio-group/passport.json +2 -2
  42. package/source/components/radio-group/styles.css +14 -14
  43. package/source/components/skeleton/passport.json +2 -2
  44. package/source/components/skeleton/styles.css +12 -12
  45. package/source/components/spinner/passport.json +2 -2
  46. package/source/components/spinner/styles.css +1 -1
  47. package/source/components/switch/passport.json +2 -2
  48. package/source/components/switch/styles.css +3 -3
  49. package/source/components/tabs/passport.json +2 -2
  50. package/source/components/tabs/styles.css +17 -17
  51. package/source/components/textarea/passport.json +2 -2
  52. package/source/components/textarea/styles.css +7 -7
  53. package/source/components/toaster/passport.json +2 -2
  54. package/source/components/toaster/styles.css +7 -7
  55. package/source/components/tooltip/passport.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.4.2
4
+
5
+ ### Fixed
6
+
7
+ **Your own class now beats a component's variant.**
8
+
9
+ Restyling a variant used to fail silently. A rule like
10
+
11
+ ```css
12
+ .btn-brand { --bt-fill: #7c3aed; }
13
+ ```
14
+
15
+ worked on a plain button and was ignored the moment anyone wrote
16
+ `variant="outline"`, because the shipped rule named two things
17
+ (`.bt-root[data-variant="outline"]`) where yours named one, and the browser
18
+ prefers the more specific selector. No error, nothing in devtools -- the
19
+ colour simply did not apply.
20
+
21
+ Selectors that carry an option you chose -- `variant`, `size`, `orientation`,
22
+ `appearance`, `placement` and the rest -- are now written so they add no
23
+ weight of their own. One class from you is enough, on any variant, in any
24
+ setup:
25
+
26
+ ```tsx
27
+ <Button variant="outline" className="btn-brand">Save</Button>
28
+ ```
29
+
30
+ **State deliberately still wins.** Disabled, invalid, selected, loading and
31
+ the other runtime states keep their weight, because a brand colour has no
32
+ business painting over a disabled control. To restyle a state, name the
33
+ state: `.btn-brand[data-disabled] { ... }`.
34
+
35
+ 215 selectors across 26 stylesheets. Verified by capturing the computed
36
+ styles of 3,716 elements across every demo in light and dark before and
37
+ after: the only differences were opacity on the shimmer and spinner, which
38
+ differ between two runs of the same build because they are mid-animation.
39
+ Nothing else moved.
40
+
41
+ Nothing in your code needs to change. If you had already worked around this
42
+ with a more specific selector, that still wins.
43
+
3
44
  ## 2.4.1
4
45
 
5
46
  ### Fixed
package/package.json CHANGED
@@ -1,77 +1,77 @@
1
- {
2
- "name": "@grampro/kit",
3
- "version": "2.4.1",
4
- "description": "GramproKit \u2014 an agent-native UI runtime for React. Copy-in components you own, each publishing a contract that software can read.",
5
- "type": "module",
6
- "files": [
7
- "index.cjs",
8
- "source",
9
- ".gbs",
10
- "tools",
11
- "schema",
12
- "!tools/eval",
13
- "!source/**/__tests__",
14
- "!**/*.test.ts",
15
- "!**/*.test.tsx",
16
- "CHANGELOG.md"
17
- ],
18
- "engines": {
19
- "node": ">=17"
20
- },
21
- "bin": {
22
- "grampro-kit": "index.cjs",
23
- "gbs-add-block": "index.cjs"
24
- },
25
- "scripts": {
26
- "prepublishOnly": "npm test && npm run passport:check",
27
- "version": "npm run passport && git add -A source",
28
- "test": "pnpm -C playground test",
29
- "passport": "node tools/passport/cli.cjs",
30
- "passport:check": "node tools/passport/cli.cjs --check",
31
- "eval:grid": "node tools/eval/grid/cli.cjs"
32
- },
33
- "keywords": [
34
- "react",
35
- "react-19",
36
- "component-library",
37
- "agent-native",
38
- "ui-runtime",
39
- "ai-agents",
40
- "webmcp",
41
- "data-grid",
42
- "copy-in",
43
- "accessibility"
44
- ],
45
- "author": "Anandhu Remanan",
46
- "license": "ISC",
47
- "dependencies": {
48
- "@grampro/headless-helpers": "^1.0.21",
49
- "fs-extra": "^11.0.4",
50
- "tailwind-merge": "^3.6.0",
51
- "yargs": "^17.7.2"
52
- },
53
- "devDependencies": {
54
- "@huggingface/transformers": "^4.3.1",
55
- "@huggingface/transformers-structured-output": "^4.3.1",
56
- "@types/fs-extra": "^11.0.4",
57
- "typescript": "^6.0.3"
58
- },
59
- "peerDependencies": {
60
- "react": "^19.0.0",
61
- "react-dom": "^19.0.0"
62
- },
63
- "overrides": {
64
- "dompurify": "^3.4.16"
65
- },
66
- "repository": {
67
- "type": "git",
68
- "url": "git+https://github.com/gramproindia/kit.git"
69
- },
70
- "homepage": "https://kit.gramproindia.com",
71
- "bugs": {
72
- "url": "https://github.com/gramproindia/kit/issues"
73
- },
74
- "publishConfig": {
75
- "access": "public"
76
- }
77
- }
1
+ {
2
+ "name": "@grampro/kit",
3
+ "version": "2.4.2",
4
+ "description": "GramproKit \u2014 an agent-native UI runtime for React. Copy-in components you own, each publishing a contract that software can read.",
5
+ "type": "module",
6
+ "files": [
7
+ "index.cjs",
8
+ "source",
9
+ ".gbs",
10
+ "tools",
11
+ "schema",
12
+ "!tools/eval",
13
+ "!source/**/__tests__",
14
+ "!**/*.test.ts",
15
+ "!**/*.test.tsx",
16
+ "CHANGELOG.md"
17
+ ],
18
+ "engines": {
19
+ "node": ">=17"
20
+ },
21
+ "bin": {
22
+ "grampro-kit": "index.cjs",
23
+ "gbs-add-block": "index.cjs"
24
+ },
25
+ "scripts": {
26
+ "prepublishOnly": "npm test && npm run passport:check",
27
+ "version": "npm run passport && git add -A source",
28
+ "test": "pnpm -C playground test",
29
+ "passport": "node tools/passport/cli.cjs",
30
+ "passport:check": "node tools/passport/cli.cjs --check",
31
+ "eval:grid": "node tools/eval/grid/cli.cjs"
32
+ },
33
+ "keywords": [
34
+ "react",
35
+ "react-19",
36
+ "component-library",
37
+ "agent-native",
38
+ "ui-runtime",
39
+ "ai-agents",
40
+ "webmcp",
41
+ "data-grid",
42
+ "copy-in",
43
+ "accessibility"
44
+ ],
45
+ "author": "Anandhu Remanan",
46
+ "license": "ISC",
47
+ "dependencies": {
48
+ "@grampro/headless-helpers": "^1.0.21",
49
+ "fs-extra": "^11.0.4",
50
+ "tailwind-merge": "^3.6.0",
51
+ "yargs": "^17.7.2"
52
+ },
53
+ "devDependencies": {
54
+ "@huggingface/transformers": "^4.3.1",
55
+ "@huggingface/transformers-structured-output": "^4.3.1",
56
+ "@types/fs-extra": "^11.0.4",
57
+ "typescript": "^6.0.3"
58
+ },
59
+ "peerDependencies": {
60
+ "react": "^19.0.0",
61
+ "react-dom": "^19.0.0"
62
+ },
63
+ "overrides": {
64
+ "dompurify": "^3.4.16"
65
+ },
66
+ "repository": {
67
+ "type": "git",
68
+ "url": "git+https://github.com/gramproindia/kit.git"
69
+ },
70
+ "homepage": "https://kit.gramproindia.com",
71
+ "bugs": {
72
+ "url": "https://github.com/gramproindia/kit/issues"
73
+ },
74
+ "publishConfig": {
75
+ "access": "public"
76
+ }
77
+ }
@@ -10,7 +10,7 @@
10
10
  ]
11
11
  },
12
12
  "source": {
13
- "libraryVersion": "2.4.1",
13
+ "libraryVersion": "2.4.2",
14
14
  "files": [
15
15
  "core/index.ts",
16
16
  "core/open.ts",
@@ -21,7 +21,7 @@
21
21
  "react/context.ts",
22
22
  "react/props.ts"
23
23
  ],
24
- "sourceHash": "sha256:cb253f4bd818d48805735b4f44c3a25fc66c3a074239558ccc97de1b4ed948bb"
24
+ "sourceHash": "sha256:87a51fb32f4a2b0982da7743b12adcbb8529dc7f02c4811f6213a42f481c8ffc"
25
25
  },
26
26
  "props": [
27
27
  {
@@ -47,12 +47,12 @@
47
47
  box-sizing: border-box;
48
48
  }
49
49
 
50
- .ac-root[data-size="sm"] {
50
+ .ac-root:where([data-size="sm"]) {
51
51
  --ac-px: 10px;
52
52
  --ac-py: 8px;
53
53
  --ac-font-size: 12px;
54
54
  }
55
- .ac-root[data-size="lg"] {
55
+ .ac-root:where([data-size="lg"]) {
56
56
  --ac-px: 18px;
57
57
  --ac-py: 16px;
58
58
  --ac-font-size: 14px;
@@ -68,35 +68,35 @@
68
68
  }
69
69
 
70
70
  /* Contained: one block with dividers instead of separate cards. */
71
- .ac-root[data-variant="contained"] {
71
+ .ac-root:where([data-variant="contained"]) {
72
72
  gap: 0;
73
73
  border: 1px solid var(--ac-border);
74
74
  border-radius: var(--ac-radius);
75
75
  overflow: hidden;
76
76
  }
77
- .ac-root[data-variant="contained"] .ac-item {
77
+ .ac-root:where([data-variant="contained"]) .ac-item {
78
78
  border: 0;
79
79
  border-block-end: 1px solid var(--ac-border);
80
80
  border-radius: 0;
81
81
  }
82
- .ac-root[data-variant="contained"] .ac-item:last-child {
82
+ .ac-root:where([data-variant="contained"]) .ac-item:last-child {
83
83
  border-block-end: 0;
84
84
  }
85
85
 
86
86
  /* Plain: rules only, for a sidebar or a FAQ. */
87
- .ac-root[data-variant="plain"] {
87
+ .ac-root:where([data-variant="plain"]) {
88
88
  gap: 0;
89
89
  }
90
- .ac-root[data-variant="plain"] .ac-item {
90
+ .ac-root:where([data-variant="plain"]) .ac-item {
91
91
  border: 0;
92
92
  border-block-end: 1px solid var(--ac-border);
93
93
  border-radius: 0;
94
94
  background: none;
95
95
  }
96
- .ac-root[data-variant="plain"] .ac-header {
96
+ .ac-root:where([data-variant="plain"]) .ac-header {
97
97
  padding-inline: 0;
98
98
  }
99
- .ac-root[data-variant="plain"] .ac-body {
99
+ .ac-root:where([data-variant="plain"]) .ac-body {
100
100
  padding-inline: 0;
101
101
  }
102
102
 
@@ -8,7 +8,7 @@
8
8
  ]
9
9
  },
10
10
  "source": {
11
- "libraryVersion": "2.4.1",
11
+ "libraryVersion": "2.4.2",
12
12
  "files": [
13
13
  "core/index.ts",
14
14
  "core/live.ts",
@@ -19,7 +19,7 @@
19
19
  "react/locale.ts",
20
20
  "react/props.ts"
21
21
  ],
22
- "sourceHash": "sha256:fb3baa3da19c07b09a7bebf3c96c8360ce4612c4b882f6dd2f95aa0616b6bead"
22
+ "sourceHash": "sha256:4c0ffa0d7cacb22dc9f3e577f604e7b692d7a79d7c316c6a74dda8018f383b8b"
23
23
  },
24
24
  "props": [
25
25
  {
@@ -58,20 +58,20 @@
58
58
  box-sizing: border-box;
59
59
  }
60
60
 
61
- .al-root[data-variant="success"] {
61
+ .al-root:where([data-variant="success"]) {
62
62
  --al-accent: var(--al-success);
63
63
  }
64
- .al-root[data-variant="warning"] {
64
+ .al-root:where([data-variant="warning"]) {
65
65
  --al-accent: var(--al-warning);
66
66
  }
67
- .al-root[data-variant="danger"] {
67
+ .al-root:where([data-variant="danger"]) {
68
68
  --al-accent: var(--al-danger);
69
69
  }
70
- .al-root[data-variant="neutral"] {
70
+ .al-root:where([data-variant="neutral"]) {
71
71
  --al-accent: var(--al-muted);
72
72
  }
73
73
 
74
- .al-root[data-size="sm"] {
74
+ .al-root:where([data-size="sm"]) {
75
75
  --al-px: 10px;
76
76
  --al-py: 8px;
77
77
  --al-font-size: 12px;
@@ -89,7 +89,7 @@
89
89
  width: 16px;
90
90
  height: 16px;
91
91
  }
92
- .al-root[data-size="sm"] .al-icon > svg {
92
+ .al-root:where([data-size="sm"]) .al-icon > svg {
93
93
  width: 14px;
94
94
  height: 14px;
95
95
  }
@@ -9,7 +9,7 @@
9
9
  ]
10
10
  },
11
11
  "source": {
12
- "libraryVersion": "2.4.1",
12
+ "libraryVersion": "2.4.2",
13
13
  "files": [
14
14
  "core/identity.ts",
15
15
  "core/index.ts",
@@ -20,7 +20,7 @@
20
20
  "react/locale.ts",
21
21
  "react/props.ts"
22
22
  ],
23
- "sourceHash": "sha256:b77d7514edf27df52d7bad888ae4ae24cac924a9f748dcce72ae8a92256ab54a"
23
+ "sourceHash": "sha256:a4c28c560e9abb816f4c55d1bb89fef4d63e7d60b13e86603a32bdb00d195e5c"
24
24
  },
25
25
  "props": [
26
26
  {
@@ -62,28 +62,28 @@
62
62
  user-select: none;
63
63
  vertical-align: middle;
64
64
  }
65
- .av-root[data-shape="square"] {
65
+ .av-root:where([data-shape="square"]) {
66
66
  border-radius: var(--av-radius);
67
67
  overflow: visible;
68
68
  }
69
- .av-root[data-shape="square"] .av-image,
70
- .av-root[data-shape="square"] .av-fallback {
69
+ .av-root:where([data-shape="square"]) .av-image,
70
+ .av-root:where([data-shape="square"]) .av-fallback {
71
71
  border-radius: var(--av-radius);
72
72
  }
73
73
 
74
- .av-root[data-size="xs"] {
74
+ .av-root:where([data-size="xs"]) {
75
75
  --av-size: 20px;
76
76
  --av-font-size: 10px;
77
77
  }
78
- .av-root[data-size="sm"] {
78
+ .av-root:where([data-size="sm"]) {
79
79
  --av-size: 24px;
80
80
  --av-font-size: 11px;
81
81
  }
82
- .av-root[data-size="lg"] {
82
+ .av-root:where([data-size="lg"]) {
83
83
  --av-size: 40px;
84
84
  --av-font-size: 15px;
85
85
  }
86
- .av-root[data-size="xl"] {
86
+ .av-root:where([data-size="xl"]) {
87
87
  --av-size: 56px;
88
88
  --av-font-size: 20px;
89
89
  }
@@ -124,7 +124,7 @@
124
124
  border-radius: 50%;
125
125
  background: var(--av-muted);
126
126
  }
127
- .av-root[data-shape="square"] .av-status {
127
+ .av-root:where([data-shape="square"]) .av-status {
128
128
  right: -2px;
129
129
  bottom: -2px;
130
130
  }
@@ -173,43 +173,43 @@
173
173
  font-variant-numeric: tabular-nums;
174
174
  line-height: 1;
175
175
  }
176
- .av-overflow[data-shape="square"] {
176
+ .av-overflow:where([data-shape="square"]) {
177
177
  border-radius: var(--av-radius);
178
178
  }
179
- .av-group[data-size="xs"],
180
- .av-overflow[data-size="xs"] {
179
+ .av-group:where([data-size="xs"]),
180
+ .av-overflow:where([data-size="xs"]) {
181
181
  --av-size: 20px;
182
182
  --av-font-size: 10px;
183
183
  }
184
- .av-group[data-size="sm"],
185
- .av-overflow[data-size="sm"] {
184
+ .av-group:where([data-size="sm"]),
185
+ .av-overflow:where([data-size="sm"]) {
186
186
  --av-size: 24px;
187
187
  --av-font-size: 11px;
188
188
  }
189
- .av-group[data-size="lg"],
190
- .av-overflow[data-size="lg"] {
189
+ .av-group:where([data-size="lg"]),
190
+ .av-overflow:where([data-size="lg"]) {
191
191
  --av-size: 40px;
192
192
  --av-font-size: 15px;
193
193
  }
194
- .av-group[data-size="xl"],
195
- .av-overflow[data-size="xl"] {
194
+ .av-group:where([data-size="xl"]),
195
+ .av-overflow:where([data-size="xl"]) {
196
196
  --av-size: 56px;
197
197
  --av-font-size: 20px;
198
198
  }
199
199
  /* The group's size reaches the avatars inside it, unless one sets its own. */
200
- .av-group[data-size="xs"] .av-root:not([data-size]) {
200
+ .av-group:where([data-size="xs"]) .av-root:not(:where([data-size])) {
201
201
  --av-size: 20px;
202
202
  --av-font-size: 10px;
203
203
  }
204
- .av-group[data-size="sm"] .av-root:not([data-size]) {
204
+ .av-group:where([data-size="sm"]) .av-root:not(:where([data-size])) {
205
205
  --av-size: 24px;
206
206
  --av-font-size: 11px;
207
207
  }
208
- .av-group[data-size="lg"] .av-root:not([data-size]) {
208
+ .av-group:where([data-size="lg"]) .av-root:not(:where([data-size])) {
209
209
  --av-size: 40px;
210
210
  --av-font-size: 15px;
211
211
  }
212
- .av-group[data-size="xl"] .av-root:not([data-size]) {
212
+ .av-group:where([data-size="xl"]) .av-root:not(:where([data-size])) {
213
213
  --av-size: 56px;
214
214
  --av-font-size: 20px;
215
215
  }
@@ -9,7 +9,7 @@
9
9
  ]
10
10
  },
11
11
  "source": {
12
- "libraryVersion": "2.4.1",
12
+ "libraryVersion": "2.4.2",
13
13
  "files": [
14
14
  "core/count.ts",
15
15
  "core/index.ts",
@@ -20,7 +20,7 @@
20
20
  "react/locale.ts",
21
21
  "react/props.ts"
22
22
  ],
23
- "sourceHash": "sha256:2f5c5c1d91e4edd8c8c6dc2a14ba66a140b738c9c7b889c7a0a54414513d3f2f"
23
+ "sourceHash": "sha256:0c10d8dc0e095394f6cb6dc51e86c551c942e3be90c70953479abd2db7d2a9e9"
24
24
  },
25
25
  "props": [
26
26
  {
@@ -59,53 +59,53 @@
59
59
  box-sizing: border-box;
60
60
  }
61
61
 
62
- .bd-root[data-variant="accent"],
63
- .bd-tag[data-variant="accent"] {
62
+ .bd-root:where([data-variant="accent"]),
63
+ .bd-tag:where([data-variant="accent"]) {
64
64
  --bd-accent: var(--bd-accent-color);
65
65
  }
66
- .bd-root[data-variant="success"],
67
- .bd-tag[data-variant="success"] {
66
+ .bd-root:where([data-variant="success"]),
67
+ .bd-tag:where([data-variant="success"]) {
68
68
  --bd-accent: var(--bd-success);
69
69
  }
70
- .bd-root[data-variant="warning"],
71
- .bd-tag[data-variant="warning"] {
70
+ .bd-root:where([data-variant="warning"]),
71
+ .bd-tag:where([data-variant="warning"]) {
72
72
  --bd-accent: var(--bd-warning);
73
73
  }
74
- .bd-root[data-variant="danger"],
75
- .bd-tag[data-variant="danger"] {
74
+ .bd-root:where([data-variant="danger"]),
75
+ .bd-tag:where([data-variant="danger"]) {
76
76
  --bd-accent: var(--bd-danger);
77
77
  }
78
- .bd-root[data-variant="info"],
79
- .bd-tag[data-variant="info"] {
78
+ .bd-root:where([data-variant="info"]),
79
+ .bd-tag:where([data-variant="info"]) {
80
80
  --bd-accent: var(--bd-info);
81
81
  }
82
82
 
83
83
  /* --------------------------------------------------------- appearances */
84
84
 
85
- .bd-root[data-appearance="soft"],
86
- .bd-tag[data-appearance="soft"] {
85
+ .bd-root:where([data-appearance="soft"]),
86
+ .bd-tag:where([data-appearance="soft"]) {
87
87
  background: color-mix(in oklab, var(--bd-accent) 12%, var(--bd-bg));
88
88
  color: color-mix(in oklab, var(--bd-accent) 85%, var(--bd-fg));
89
89
  }
90
- .bd-root[data-appearance="solid"],
91
- .bd-tag[data-appearance="solid"] {
90
+ .bd-root:where([data-appearance="solid"]),
91
+ .bd-tag:where([data-appearance="solid"]) {
92
92
  background: var(--bd-accent);
93
93
  color: var(--bd-on-accent);
94
94
  }
95
95
  /* Neutral solid would be black on near-black text; invert it instead. */
96
- .bd-root[data-variant="neutral"][data-appearance="solid"],
97
- .bd-tag[data-variant="neutral"][data-appearance="solid"] {
96
+ .bd-root:where([data-variant="neutral"]):where([data-appearance="solid"]),
97
+ .bd-tag:where([data-variant="neutral"]):where([data-appearance="solid"]) {
98
98
  background: var(--bd-fg);
99
99
  color: var(--bd-bg);
100
100
  }
101
- .bd-root[data-appearance="outline"],
102
- .bd-tag[data-appearance="outline"] {
101
+ .bd-root:where([data-appearance="outline"]),
102
+ .bd-tag:where([data-appearance="outline"]) {
103
103
  border-color: color-mix(in oklab, var(--bd-accent) 40%, var(--bd-border));
104
104
  color: color-mix(in oklab, var(--bd-accent) 85%, var(--bd-fg));
105
105
  }
106
106
 
107
- .bd-root[data-size="sm"],
108
- .bd-tag[data-size="sm"] {
107
+ .bd-root:where([data-size="sm"]),
108
+ .bd-tag:where([data-size="sm"]) {
109
109
  --bd-height: 17px;
110
110
  --bd-px: 6px;
111
111
  --bd-font-size: 11px;
@@ -195,8 +195,8 @@
195
195
  .bd-tag {
196
196
  border-color: CanvasText;
197
197
  }
198
- .bd-root[data-appearance="solid"],
199
- .bd-tag[data-appearance="solid"] {
198
+ .bd-root:where([data-appearance="solid"]),
199
+ .bd-tag:where([data-appearance="solid"]) {
200
200
  background: Highlight;
201
201
  color: HighlightText;
202
202
  }
@@ -8,7 +8,7 @@
8
8
  ]
9
9
  },
10
10
  "source": {
11
- "libraryVersion": "2.4.1",
11
+ "libraryVersion": "2.4.2",
12
12
  "files": [
13
13
  "core/index.ts",
14
14
  "core/trail.ts",
@@ -18,7 +18,7 @@
18
18
  "react/locale.ts",
19
19
  "react/props.ts"
20
20
  ],
21
- "sourceHash": "sha256:f3093ad51f16f3bae86b349a012218e71848f7c7d624d27d41ac578bb55da82c"
21
+ "sourceHash": "sha256:e58f3eaf22137155f0de8623f06ff1217cb2749ab10bd83bae64e69b739e25a9"
22
22
  },
23
23
  "props": [
24
24
  {
@@ -37,10 +37,10 @@
37
37
  box-sizing: border-box;
38
38
  }
39
39
 
40
- .bc-root[data-size="sm"] {
40
+ .bc-root:where([data-size="sm"]) {
41
41
  --bc-font-size: 12px;
42
42
  }
43
- .bc-root[data-size="lg"] {
43
+ .bc-root:where([data-size="lg"]) {
44
44
  --bc-font-size: 14px;
45
45
  }
46
46
 
@@ -8,7 +8,7 @@
8
8
  ]
9
9
  },
10
10
  "source": {
11
- "libraryVersion": "2.4.1",
11
+ "libraryVersion": "2.4.2",
12
12
  "files": [
13
13
  "core/index.ts",
14
14
  "core/state.ts",
@@ -18,7 +18,7 @@
18
18
  "react/locale.ts",
19
19
  "react/props.ts"
20
20
  ],
21
- "sourceHash": "sha256:85b2394bf3f7b37bd6bafd8ea93782b6c68a6ef4c5e207a6d3e6639a8ca23f9f"
21
+ "sourceHash": "sha256:b10547e2d34ee9c542458b1dc8b6e067878a5b47c364409de7f314412520d8a0"
22
22
  },
23
23
  "purpose": "Trigger an action. Not for navigation unless `render` supplies a link element.",
24
24
  "props": [