@rackbops/styles 0.1.5 → 0.1.7

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 (45) hide show
  1. package/amber-ember/components/button.css +4 -4
  2. package/amber-ember/components/link.css +4 -2
  3. package/amber-ember/components/stepper.css +6 -3
  4. package/amber-ember/components/tabs.css +4 -2
  5. package/amber-hearth/components/button.css +4 -4
  6. package/amber-hearth/components/link.css +4 -2
  7. package/amber-hearth/components/stepper.css +6 -3
  8. package/amber-hearth/components/tabs.css +4 -2
  9. package/arcane-obsidian/components/button.css +4 -4
  10. package/arcane-obsidian/components/link.css +4 -2
  11. package/arcane-obsidian/components/stepper.css +6 -3
  12. package/arcane-obsidian/components/tabs.css +4 -2
  13. package/arcane-parchment/components/button.css +4 -4
  14. package/arcane-parchment/components/link.css +4 -2
  15. package/arcane-parchment/components/stepper.css +6 -3
  16. package/arcane-parchment/components/tabs.css +4 -2
  17. package/concrete-signal/components/button.css +3 -3
  18. package/concrete-signal/components/link.css +4 -2
  19. package/concrete-signal/components/stepper.css +6 -3
  20. package/concrete-signal-light/components/button.css +3 -3
  21. package/concrete-signal-light/components/link.css +4 -2
  22. package/concrete-signal-light/components/stepper.css +6 -3
  23. package/contract.json +7 -41
  24. package/luminous-precision/components/button.css +6 -6
  25. package/luminous-precision/components/link.css +2 -1
  26. package/luminous-precision/components/stepper.css +6 -3
  27. package/mono-field/components/button.css +5 -5
  28. package/mono-field/components/link.css +4 -2
  29. package/mono-field/components/stepper.css +6 -3
  30. package/neon-butterfly/components/button.css +3 -3
  31. package/neon-butterfly/components/dialog.css +1 -1
  32. package/neon-butterfly/components/link.css +4 -2
  33. package/neon-butterfly/components/stepper.css +6 -3
  34. package/package.json +1 -1
  35. package/rackbops-noir/components/button.css +5 -5
  36. package/rackbops-noir/components/link.css +2 -1
  37. package/rackbops-noir/components/stepper.css +6 -3
  38. package/rackbops-noir/components/tabs.css +4 -2
  39. package/rackbops-studio/components/button.css +5 -5
  40. package/rackbops-studio/components/link.css +2 -1
  41. package/rackbops-studio/components/stepper.css +6 -3
  42. package/rackbops-studio/components/tabs.css +4 -2
  43. package/summer-cloud/components/button.css +6 -6
  44. package/summer-cloud/components/dialog.css +1 -1
  45. package/summer-cloud/components/stepper.css +6 -3
package/contract.json CHANGED
@@ -27,7 +27,7 @@
27
27
  "link": {
28
28
  "react": "NavLink",
29
29
  "classes": ["rb-link", "rb-link--active"],
30
- "notes": "active prop; SHOULD also match [aria-current=\"page\"] (pending CSS sweep, #65)"
30
+ "notes": "active prop; also matches [aria-current=\"page\"] in every theme"
31
31
  },
32
32
  "nav-rail": {
33
33
  "react": "NavRail",
@@ -57,7 +57,7 @@
57
57
  "tabs": {
58
58
  "react": "Tabs",
59
59
  "classes": ["rb-tabs", "rb-tab", "rb-tab--active", "rb-tabpanel"],
60
- "notes": "items: {id, label, content}[]; --active SHOULD also match [aria-selected=\"true\"] (pending CSS sweep, #65)"
60
+ "notes": "items: {id, label, content}[]; --active also matches [aria-selected=\"true\"] in every theme"
61
61
  },
62
62
  "table": {
63
63
  "react": null,
@@ -87,7 +87,7 @@
87
87
  "stepper": {
88
88
  "react": "Stepper",
89
89
  "classes": ["rb-stepper", "rb-stepper__step", "rb-stepper__node", "rb-stepper__label", "rb-stepper--complete", "rb-stepper--current", "rb-stepper--upcoming"],
90
- "notes": "--upcoming is the resting state (allowlisted, no rule needed); --current SHOULD also match [aria-current=\"step\"] (pending CSS sweep, #65)"
90
+ "notes": "--upcoming is the resting state (allowlisted, no rule needed); --current also matches [aria-current=\"step\"] in every theme"
91
91
  }
92
92
  },
93
93
  "allowlist": [
@@ -131,62 +131,28 @@
131
131
  "class": "rb-tab--active",
132
132
  "attribute": "[aria-selected=\"true\"]",
133
133
  "baseSelector": "rb-tab",
134
- "exempt": [
135
- { "theme": "arcane-obsidian", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
136
- { "theme": "arcane-parchment", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
137
- { "theme": "rackbops-studio", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
138
- { "theme": "rackbops-noir", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
139
- { "theme": "amber-hearth", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
140
- { "theme": "amber-ember", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" }
141
- ]
134
+ "exempt": []
142
135
  },
143
136
  {
144
137
  "component": "link",
145
138
  "class": "rb-link--active",
146
139
  "attribute": "[aria-current=\"page\"]",
147
140
  "baseSelector": "rb-link",
148
- "exempt": [
149
- { "theme": "amber-ember", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
150
- { "theme": "amber-hearth", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
151
- { "theme": "arcane-obsidian", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
152
- { "theme": "arcane-parchment", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
153
- { "theme": "concrete-signal", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
154
- { "theme": "concrete-signal-light", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
155
- { "theme": "luminous-precision", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
156
- { "theme": "mono-field", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
157
- { "theme": "neon-butterfly", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
158
- { "theme": "rackbops-noir", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
159
- { "theme": "rackbops-studio", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" }
160
- ]
141
+ "exempt": []
161
142
  },
162
143
  {
163
144
  "component": "stepper",
164
145
  "class": "rb-stepper--current",
165
146
  "attribute": "[aria-current=\"step\"]",
166
147
  "baseSelector": "rb-stepper__step",
167
- "exempt": [
168
- { "theme": "amber-ember", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
169
- { "theme": "amber-hearth", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
170
- { "theme": "arcane-obsidian", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
171
- { "theme": "arcane-parchment", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
172
- { "theme": "concrete-signal", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
173
- { "theme": "concrete-signal-light", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
174
- { "theme": "luminous-precision", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
175
- { "theme": "mono-field", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
176
- { "theme": "neon-butterfly", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
177
- { "theme": "rackbops-noir", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
178
- { "theme": "rackbops-studio", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" },
179
- { "theme": "summer-cloud", "reason": "pending ARIA-pairing CSS sweep, tracked in #65" }
180
- ]
148
+ "exempt": []
181
149
  }
182
150
  ],
183
151
  "dialogBackdropBlur": {
184
152
  "token": "--rb-blur",
185
153
  "exempt": [
186
154
  { "theme": "concrete-signal", "reason": "flat scrim by design, no blur/glass anywhere in this theme", "permanent": true },
187
- { "theme": "concrete-signal-light", "reason": "flat scrim by design, no blur/glass anywhere in this theme", "permanent": true },
188
- { "theme": "neon-butterfly", "reason": "hard-codes blur(4px), pending CSS fix, tracked in #65" },
189
- { "theme": "summer-cloud", "reason": "hard-codes blur(4px), pending CSS fix, tracked in #65" }
155
+ { "theme": "concrete-signal-light", "reason": "flat scrim by design, no blur/glass anywhere in this theme", "permanent": true }
190
156
  ]
191
157
  }
192
158
  }
@@ -34,7 +34,7 @@
34
34
  justify-content: center;
35
35
  line-height: 1;
36
36
  }
37
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn:hover,
37
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn:not(:disabled):hover,
38
38
  :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn:focus-visible {
39
39
  border-color: var(--rb-accent-border);
40
40
  color: var(--rb-accent);
@@ -48,7 +48,7 @@
48
48
  border-color: var(--rb-accent);
49
49
  color: var(--rb-accent-fg);
50
50
  }
51
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--primary:hover,
51
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--primary:not(:disabled):hover,
52
52
  :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--primary:focus-visible {
53
53
  border-color: var(--rb-accent);
54
54
  color: var(--rb-accent-fg);
@@ -59,7 +59,7 @@
59
59
  border-color: var(--rb-accent-2);
60
60
  color: var(--rb-accent-2);
61
61
  }
62
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--accent:hover,
62
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--accent:not(:disabled):hover,
63
63
  :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--accent:focus-visible {
64
64
  border-color: var(--rb-accent-2);
65
65
  color: var(--rb-accent-2);
@@ -70,7 +70,7 @@
70
70
  border-color: var(--rb-danger);
71
71
  color: var(--rb-danger);
72
72
  }
73
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--danger:hover,
73
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--danger:not(:disabled):hover,
74
74
  :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--danger:focus-visible {
75
75
  border-color: var(--rb-danger);
76
76
  color: var(--rb-danger);
@@ -81,7 +81,7 @@
81
81
  border-color: transparent;
82
82
  color: var(--rb-text-soft);
83
83
  }
84
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--ghost:hover,
84
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--ghost:not(:disabled):hover,
85
85
  :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn--ghost:focus-visible {
86
86
  background: var(--rb-surface-2);
87
87
  }
@@ -106,7 +106,7 @@
106
106
  :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn {
107
107
  transition: none;
108
108
  }
109
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn:hover,
109
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn:not(:disabled):hover,
110
110
  :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-btn:focus-visible {
111
111
  animation: none;
112
112
  }
@@ -29,7 +29,8 @@
29
29
  0 0 12px var(--rb-accent-2-glow);
30
30
  }
31
31
  /* --active: the current route, styled as the resting version of :hover */
32
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-link--active {
32
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-link--active,
33
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-link[aria-current="page"] {
33
34
  background: var(--rb-surface);
34
35
  color: var(--rb-accent-2);
35
36
  box-shadow:
@@ -43,7 +43,8 @@
43
43
  transition: background-color var(--rb-transition), box-shadow var(--rb-transition);
44
44
  }
45
45
  :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper__step:not(:first-child).rb-stepper--complete::before,
46
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before {
46
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before,
47
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper__step[aria-current="step"]::before {
47
48
  background: var(--rb-accent);
48
49
  box-shadow: 0 0 8px var(--rb-accent-glow);
49
50
  }
@@ -71,13 +72,15 @@
71
72
  :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper--complete .rb-stepper__label {
72
73
  color: var(--rb-text);
73
74
  }
74
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper--current .rb-stepper__node {
75
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper--current .rb-stepper__node,
76
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper__step[aria-current="step"] .rb-stepper__node {
75
77
  background: var(--rb-surface);
76
78
  border-color: var(--rb-accent);
77
79
  color: var(--rb-accent);
78
80
  box-shadow: 0 0 8px var(--rb-accent-glow);
79
81
  }
80
- :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper--current .rb-stepper__label {
82
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper--current .rb-stepper__label,
83
+ :where([data-rb-style="luminous-precision"], [data-rb-style="luminous-precision"] *).rb-stepper__step[aria-current="step"] .rb-stepper__label {
81
84
  color: var(--rb-accent);
82
85
  font-weight: var(--rb-font-weight-medium);
83
86
  }
@@ -39,7 +39,7 @@
39
39
  justify-content: center;
40
40
  line-height: 1;
41
41
  }
42
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn:hover {
42
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn:not(:disabled):hover {
43
43
  border-color: var(--rb-border-strong);
44
44
  }
45
45
  :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn:focus-visible {
@@ -54,7 +54,7 @@
54
54
  color: var(--rb-accent-fg);
55
55
  box-shadow: var(--rb-shadow-sm);
56
56
  }
57
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn--primary:hover {
57
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn--primary:not(:disabled):hover {
58
58
  box-shadow: var(--rb-shadow-lg);
59
59
  }
60
60
 
@@ -64,7 +64,7 @@
64
64
  border-color: transparent;
65
65
  color: var(--rb-accent);
66
66
  }
67
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn--accent:hover {
67
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn--accent:not(:disabled):hover {
68
68
  border-color: var(--rb-accent);
69
69
  }
70
70
 
@@ -74,7 +74,7 @@
74
74
  border-color: var(--rb-border);
75
75
  color: var(--rb-danger);
76
76
  }
77
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn--danger:hover {
77
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn--danger:not(:disabled):hover {
78
78
  border-color: var(--rb-danger);
79
79
  }
80
80
 
@@ -84,7 +84,7 @@
84
84
  border-color: transparent;
85
85
  color: var(--rb-text-soft);
86
86
  }
87
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn--ghost:hover {
87
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-btn--ghost:not(:disabled):hover {
88
88
  border-color: transparent;
89
89
  color: var(--rb-text);
90
90
  }
@@ -32,10 +32,12 @@
32
32
  transition: background var(--rb-transition);
33
33
  }
34
34
  :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-link:hover::before,
35
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-link.rb-link--active::before {
35
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-link.rb-link--active::before,
36
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-link[aria-current="page"]::before {
36
37
  background: var(--rb-accent);
37
38
  }
38
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-link.rb-link--active {
39
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-link.rb-link--active,
40
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-link[aria-current="page"] {
39
41
  background: var(--rb-surface-2);
40
42
  color: var(--rb-accent);
41
43
  }
@@ -42,7 +42,8 @@
42
42
  transition: background-color var(--rb-transition);
43
43
  }
44
44
  :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper__step:not(:first-child).rb-stepper--complete::before,
45
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before {
45
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before,
46
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper__step[aria-current="step"]::before {
46
47
  background: var(--rb-accent);
47
48
  }
48
49
  :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper__node {
@@ -69,12 +70,14 @@
69
70
  :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper--complete .rb-stepper__label {
70
71
  color: var(--rb-text);
71
72
  }
72
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper--current .rb-stepper__node {
73
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper--current .rb-stepper__node,
74
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper__step[aria-current="step"] .rb-stepper__node {
73
75
  background: var(--rb-surface);
74
76
  border-color: var(--rb-accent);
75
77
  color: var(--rb-accent);
76
78
  }
77
- :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper--current .rb-stepper__label {
79
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper--current .rb-stepper__label,
80
+ :where([data-rb-style="mono-field"], [data-rb-style="mono-field"] *).rb-stepper__step[aria-current="step"] .rb-stepper__label {
78
81
  color: var(--rb-accent);
79
82
  font-weight: var(--rb-font-weight-medium);
80
83
  }
@@ -33,7 +33,7 @@
33
33
  justify-content: center;
34
34
  line-height: 1;
35
35
  }
36
- :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn:hover,
36
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn:not(:disabled):hover,
37
37
  :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn:focus-visible {
38
38
  border-color: var(--rb-accent-border);
39
39
  color: var(--rb-accent);
@@ -58,7 +58,7 @@
58
58
  border-color: transparent;
59
59
  color: var(--rb-text-soft);
60
60
  }
61
- :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn--ghost:hover,
61
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn--ghost:not(:disabled):hover,
62
62
  :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn--ghost:focus-visible {
63
63
  background: var(--rb-surface-glass);
64
64
  }
@@ -73,7 +73,7 @@
73
73
  :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn {
74
74
  transition: none;
75
75
  }
76
- :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn:hover,
76
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn:not(:disabled):hover,
77
77
  :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-btn:focus-visible {
78
78
  animation: none;
79
79
  }
@@ -12,7 +12,7 @@
12
12
  }
13
13
  :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-dialog::backdrop {
14
14
  background: rgba(11, 19, 38, 0.7);
15
- backdrop-filter: blur(4px);
15
+ backdrop-filter: blur(var(--rb-blur));
16
16
  }
17
17
  :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-dialog__title {
18
18
  margin: 0 0 var(--rb-space-3);
@@ -36,11 +36,13 @@
36
36
  }
37
37
  /* --active: the current route — the hover color/glow, resting, without the
38
38
  * hover-only slide (that's a click-me cue; an active item is already "here"). */
39
- :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-link--active {
39
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-link--active,
40
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-link[aria-current="page"] {
40
41
  border-color: var(--rb-accent-border);
41
42
  color: var(--rb-accent);
42
43
  }
43
- :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-link--active::before {
44
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-link--active::before,
45
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-link[aria-current="page"]::before {
44
46
  color: var(--rb-accent-2);
45
47
  text-shadow: 0 0 5px var(--rb-accent-2-glow);
46
48
  }
@@ -43,7 +43,8 @@
43
43
  transition: background-color var(--rb-transition), box-shadow var(--rb-transition);
44
44
  }
45
45
  :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step:not(:first-child).rb-stepper--complete::before,
46
- :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before {
46
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before,
47
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step[aria-current="step"]::before {
47
48
  background: var(--rb-accent);
48
49
  box-shadow: 0 0 8px var(--rb-accent-glow);
49
50
  }
@@ -71,13 +72,15 @@
71
72
  :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper--complete .rb-stepper__label {
72
73
  color: var(--rb-text);
73
74
  }
74
- :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper--current .rb-stepper__node {
75
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper--current .rb-stepper__node,
76
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step[aria-current="step"] .rb-stepper__node {
75
77
  background: var(--rb-surface);
76
78
  border-color: var(--rb-accent);
77
79
  color: var(--rb-accent);
78
80
  box-shadow: 0 0 8px var(--rb-accent-glow);
79
81
  }
80
- :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper--current .rb-stepper__label {
82
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper--current .rb-stepper__label,
83
+ :where([data-rb-style="neon-butterfly"], [data-rb-style="neon-butterfly"] *).rb-stepper__step[aria-current="step"] .rb-stepper__label {
81
84
  color: var(--rb-accent);
82
85
  font-weight: var(--rb-font-weight-medium);
83
86
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rackbops/styles",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Rackbops design-system styles: tokens, base styles, and component classes per theme.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -43,7 +43,7 @@
43
43
  background: var(--rb-text); /* light in this theme — a bright neutral fill */
44
44
  color: var(--rb-bg); /* dark ink on the light fill */
45
45
  }
46
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--primary:hover,
46
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--primary:not(:disabled):hover,
47
47
  :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--primary:focus-visible {
48
48
  background: var(--rb-accent);
49
49
  color: var(--rb-accent-fg);
@@ -52,7 +52,7 @@
52
52
  background: var(--rb-accent);
53
53
  color: var(--rb-accent-fg);
54
54
  }
55
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--accent:hover,
55
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--accent:not(:disabled):hover,
56
56
  :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--accent:focus-visible {
57
57
  /* mix toward the text colour: lightens in a dark theme, darkens in a light one */
58
58
  background: color-mix(in srgb, var(--rb-accent), var(--rb-text) 15%);
@@ -62,7 +62,7 @@
62
62
  color: var(--rb-text);
63
63
  border-color: var(--rb-border-strong);
64
64
  }
65
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--ghost:hover,
65
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--ghost:not(:disabled):hover,
66
66
  :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--ghost:focus-visible {
67
67
  border-color: var(--rb-text);
68
68
  background: var(--rb-surface-2);
@@ -72,7 +72,7 @@
72
72
  color: var(--rb-danger);
73
73
  border-color: color-mix(in srgb, var(--rb-danger) 45%, var(--rb-border));
74
74
  }
75
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--danger:hover,
75
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--danger:not(:disabled):hover,
76
76
  :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn--danger:focus-visible {
77
77
  border-color: var(--rb-danger);
78
78
  }
@@ -83,7 +83,7 @@
83
83
  :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn__arrow {
84
84
  transition: transform var(--rb-transition) ease;
85
85
  }
86
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn:hover .rb-btn__arrow {
86
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-btn:not(:disabled):hover .rb-btn__arrow {
87
87
  transform: translateX(3px);
88
88
  }
89
89
 
@@ -20,7 +20,8 @@
20
20
  color: var(--rb-text);
21
21
  background: var(--rb-surface-2);
22
22
  }
23
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-link.rb-link--active {
23
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-link.rb-link--active,
24
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-link[aria-current="page"] {
24
25
  color: var(--rb-accent);
25
26
  }
26
27
 
@@ -42,7 +42,8 @@
42
42
  transition: background-color var(--rb-transition);
43
43
  }
44
44
  :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper__step:not(:first-child).rb-stepper--complete::before,
45
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before {
45
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before,
46
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper__step[aria-current="step"]::before {
46
47
  background: var(--rb-accent);
47
48
  }
48
49
  :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper__node {
@@ -69,13 +70,15 @@
69
70
  :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper--complete .rb-stepper__label {
70
71
  color: var(--rb-text);
71
72
  }
72
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper--current .rb-stepper__node {
73
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper--current .rb-stepper__node,
74
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper__step[aria-current="step"] .rb-stepper__node {
73
75
  background: var(--rb-surface);
74
76
  border-color: var(--rb-accent);
75
77
  color: var(--rb-accent);
76
78
  box-shadow: var(--rb-shadow-lg);
77
79
  }
78
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper--current .rb-stepper__label {
80
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper--current .rb-stepper__label,
81
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-stepper__step[aria-current="step"] .rb-stepper__label {
79
82
  color: var(--rb-accent);
80
83
  font-weight: var(--rb-font-weight-medium);
81
84
  }
@@ -21,10 +21,12 @@
21
21
  :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-tab:hover {
22
22
  color: var(--rb-text);
23
23
  }
24
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-tab.rb-tab--active {
24
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-tab.rb-tab--active,
25
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-tab[aria-selected="true"] {
25
26
  color: var(--rb-text);
26
27
  }
27
- :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-tab.rb-tab--active::after {
28
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-tab.rb-tab--active::after,
29
+ :where([data-rb-style="rackbops-noir"], [data-rb-style="rackbops-noir"] *).rb-tab[aria-selected="true"]::after {
28
30
  content: "";
29
31
  position: absolute;
30
32
  left: 0;
@@ -43,7 +43,7 @@
43
43
  background: var(--rb-text);
44
44
  color: var(--rb-bg);
45
45
  }
46
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--primary:hover,
46
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--primary:not(:disabled):hover,
47
47
  :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--primary:focus-visible {
48
48
  background: var(--rb-accent);
49
49
  color: var(--rb-accent-fg);
@@ -52,7 +52,7 @@
52
52
  background: var(--rb-accent);
53
53
  color: var(--rb-accent-fg);
54
54
  }
55
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--accent:hover,
55
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--accent:not(:disabled):hover,
56
56
  :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--accent:focus-visible {
57
57
  background: color-mix(in srgb, var(--rb-accent), var(--rb-text) 15%);
58
58
  }
@@ -61,7 +61,7 @@
61
61
  color: var(--rb-text);
62
62
  border-color: var(--rb-border-strong);
63
63
  }
64
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--ghost:hover,
64
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--ghost:not(:disabled):hover,
65
65
  :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--ghost:focus-visible {
66
66
  border-color: var(--rb-text);
67
67
  background: var(--rb-surface-2);
@@ -71,7 +71,7 @@
71
71
  color: var(--rb-danger);
72
72
  border-color: color-mix(in srgb, var(--rb-danger) 45%, var(--rb-border));
73
73
  }
74
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--danger:hover,
74
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--danger:not(:disabled):hover,
75
75
  :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn--danger:focus-visible {
76
76
  border-color: var(--rb-danger);
77
77
  }
@@ -82,7 +82,7 @@
82
82
  :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn__arrow {
83
83
  transition: transform var(--rb-transition) ease;
84
84
  }
85
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn:hover .rb-btn__arrow {
85
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-btn:not(:disabled):hover .rb-btn__arrow {
86
86
  transform: translateX(3px);
87
87
  }
88
88
 
@@ -20,7 +20,8 @@
20
20
  color: var(--rb-text);
21
21
  background: var(--rb-surface-2);
22
22
  }
23
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-link.rb-link--active {
23
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-link.rb-link--active,
24
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-link[aria-current="page"] {
24
25
  color: var(--rb-accent);
25
26
  }
26
27
 
@@ -42,7 +42,8 @@
42
42
  transition: background-color var(--rb-transition);
43
43
  }
44
44
  :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper__step:not(:first-child).rb-stepper--complete::before,
45
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before {
45
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper__step:not(:first-child).rb-stepper--current::before,
46
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper__step[aria-current="step"]::before {
46
47
  background: var(--rb-accent);
47
48
  }
48
49
  :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper__node {
@@ -69,13 +70,15 @@
69
70
  :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper--complete .rb-stepper__label {
70
71
  color: var(--rb-text);
71
72
  }
72
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper--current .rb-stepper__node {
73
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper--current .rb-stepper__node,
74
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper__step[aria-current="step"] .rb-stepper__node {
73
75
  background: var(--rb-surface);
74
76
  border-color: var(--rb-accent);
75
77
  color: var(--rb-accent);
76
78
  box-shadow: var(--rb-shadow-lg);
77
79
  }
78
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper--current .rb-stepper__label {
80
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper--current .rb-stepper__label,
81
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-stepper__step[aria-current="step"] .rb-stepper__label {
79
82
  color: var(--rb-accent);
80
83
  font-weight: var(--rb-font-weight-medium);
81
84
  }
@@ -21,10 +21,12 @@
21
21
  :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-tab:hover {
22
22
  color: var(--rb-text);
23
23
  }
24
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-tab.rb-tab--active {
24
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-tab.rb-tab--active,
25
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-tab[aria-selected="true"] {
25
26
  color: var(--rb-text);
26
27
  }
27
- :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-tab.rb-tab--active::after {
28
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-tab.rb-tab--active::after,
29
+ :where([data-rb-style="rackbops-studio"], [data-rb-style="rackbops-studio"] *).rb-tab[aria-selected="true"]::after {
28
30
  content: "";
29
31
  position: absolute;
30
32
  left: 0;
@@ -37,7 +37,7 @@
37
37
  justify-content: center;
38
38
  line-height: 1;
39
39
  }
40
- :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn:hover,
40
+ :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn:not(:disabled):hover,
41
41
  :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn:focus-visible {
42
42
  background: rgba(255, 255, 255, 0.6);
43
43
  border-color: var(--rb-accent-border);
@@ -60,7 +60,7 @@
60
60
  font-weight: var(--rb-font-weight-bold);
61
61
  box-shadow: var(--rb-shadow-raised);
62
62
  }
63
- :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--primary:hover {
63
+ :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--primary:not(:disabled):hover {
64
64
  background: var(--rb-accent-bright);
65
65
  color: #fff;
66
66
  box-shadow: var(--rb-shadow-raised-hover);
@@ -76,7 +76,7 @@
76
76
  border-color: var(--rb-accent-2);
77
77
  color: var(--rb-accent-2-deep);
78
78
  }
79
- :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--accent:hover,
79
+ :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--accent:not(:disabled):hover,
80
80
  :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--accent:focus-visible {
81
81
  color: var(--rb-accent-2-deep);
82
82
  box-shadow: 0 0 0 4px var(--rb-accent-2-glow);
@@ -88,7 +88,7 @@
88
88
  border-color: transparent;
89
89
  box-shadow: none;
90
90
  }
91
- :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--ghost:hover,
91
+ :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--ghost:not(:disabled):hover,
92
92
  :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--ghost:focus-visible {
93
93
  background: var(--rb-sky-tint);
94
94
  }
@@ -100,7 +100,7 @@
100
100
  font-weight: var(--rb-font-weight-bold);
101
101
  box-shadow: 0 4px 14px rgba(204, 31, 31, 0.39);
102
102
  }
103
- :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--danger:hover,
103
+ :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--danger:not(:disabled):hover,
104
104
  :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn--danger:focus-visible {
105
105
  background: var(--rb-danger);
106
106
  color: #4a0000;
@@ -118,7 +118,7 @@
118
118
  :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn {
119
119
  transition: background var(--rb-transition), color var(--rb-transition);
120
120
  }
121
- :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn:hover,
121
+ :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn:not(:disabled):hover,
122
122
  :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn:focus-visible,
123
123
  :where([data-rb-style="summer-cloud"], [data-rb-style="summer-cloud"] *).rb-btn:active {
124
124
  transform: none;