@grampro/kit 2.4.1 → 2.4.3

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 (56) hide show
  1. package/CHANGELOG.md +66 -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 +2 -2
  56. package/tools/passport/extract.cjs +7 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,71 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.4.3
4
+
5
+ ### Fixed
6
+
7
+ **`passport --check` reported every component as stale on a machine whose
8
+ line endings differed from the one that generated the passport.**
9
+
10
+ A passport records a hash of the source it was derived from, and that hash
11
+ was taken over the file bytes exactly as they sat on disk. A checkout on
12
+ Windows holds CRLF and one on Linux holds LF, so the same unchanged file
13
+ produced two different hashes, and the check announced that all 27
14
+ components had drifted when nothing had changed at all.
15
+
16
+ It now normalises line endings before hashing, so the hash describes the
17
+ content rather than the checkout. If you have been seeing
18
+
19
+ ```
20
+ passport stale - source changed since the passport was generated
21
+ ```
22
+
23
+ on components you never touched, this is why, and it stops.
24
+
25
+ Running `npm run passport` once after upgrading rewrites the hashes in your
26
+ own copies.
27
+
28
+ ## 2.4.2
29
+
30
+ ### Fixed
31
+
32
+ **Your own class now beats a component's variant.**
33
+
34
+ Restyling a variant used to fail silently. A rule like
35
+
36
+ ```css
37
+ .btn-brand { --bt-fill: #7c3aed; }
38
+ ```
39
+
40
+ worked on a plain button and was ignored the moment anyone wrote
41
+ `variant="outline"`, because the shipped rule named two things
42
+ (`.bt-root[data-variant="outline"]`) where yours named one, and the browser
43
+ prefers the more specific selector. No error, nothing in devtools -- the
44
+ colour simply did not apply.
45
+
46
+ Selectors that carry an option you chose -- `variant`, `size`, `orientation`,
47
+ `appearance`, `placement` and the rest -- are now written so they add no
48
+ weight of their own. One class from you is enough, on any variant, in any
49
+ setup:
50
+
51
+ ```tsx
52
+ <Button variant="outline" className="btn-brand">Save</Button>
53
+ ```
54
+
55
+ **State deliberately still wins.** Disabled, invalid, selected, loading and
56
+ the other runtime states keep their weight, because a brand colour has no
57
+ business painting over a disabled control. To restyle a state, name the
58
+ state: `.btn-brand[data-disabled] { ... }`.
59
+
60
+ 215 selectors across 26 stylesheets. Verified by capturing the computed
61
+ styles of 3,716 elements across every demo in light and dark before and
62
+ after: the only differences were opacity on the shimmer and spinner, which
63
+ differ between two runs of the same build because they are mid-animation.
64
+ Nothing else moved.
65
+
66
+ Nothing in your code needs to change. If you had already worked around this
67
+ with a more specific selector, that still wins.
68
+
3
69
  ## 2.4.1
4
70
 
5
71
  ### 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.3",
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.3",
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:719b5c18a3e0f3f7479cd1c4f59d729b335053fc47708cc5ab5763b6d69a206a"
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.3",
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:1d3329cee22213d4fb81062f401b481902600b2a2b3a81edf12c6738934f6923"
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.3",
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:2e50d4901b3c6a436a1c8ee35fb43eb11488e305b0466874f007ee325aa02896"
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.3",
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:f6db45647bfab522ced894c388fb16f6a7fac5ebd20a7114d351b812a1f73d34"
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.3",
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:ea18a9023e99fd751d8295a40f257e4471948a5cc9878d808501471718da32aa"
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.3",
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:7666d0807d7131796ced32c99da380d3a6db2cf011fd2dcfa7904878799c1871"
22
22
  },
23
23
  "purpose": "Trigger an action. Not for navigation unless `render` supplies a link element.",
24
24
  "props": [