@astryxdesign/theme-stone 0.7.4-canary.b25f95e → 0.7.4-canary.eccc6ee
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/README.md +42 -5
- package/dist/source.d.ts +1 -1
- package/dist/source.d.ts.map +1 -1
- package/dist/source.js +201 -235
- package/dist/source.mjs +201 -235
- package/dist/stone.js +132 -132
- package/dist/stoneColorMapping.test.d.ts +2 -0
- package/dist/stoneColorMapping.test.d.ts.map +1 -0
- package/dist/stonePaletteRefs.generated.d.ts +158 -0
- package/dist/stonePaletteRefs.generated.d.ts.map +1 -0
- package/dist/stonePalettes.generated.d.ts +496 -0
- package/dist/stonePalettes.generated.d.ts.map +1 -0
- package/dist/stonePalettes.test.d.ts +2 -0
- package/dist/stonePalettes.test.d.ts.map +1 -0
- package/dist/stoneTheme.d.ts +5 -3
- package/dist/stoneTheme.d.ts.map +1 -1
- package/dist/theme.css +132 -132
- package/package.json +6 -5
- package/palette.config.json +262 -0
- package/src/source.ts +1 -1
- package/src/stoneColorMapping.test.ts +44 -0
- package/src/stonePaletteRefs.generated.ts +51 -0
- package/src/stonePalettes.generated.receipt.json +840 -0
- package/src/stonePalettes.generated.ts +501 -0
- package/src/stonePalettes.test.ts +87 -0
- package/src/stoneTheme.test.ts +124 -1
- package/src/stoneTheme.ts +190 -207
package/README.md
CHANGED
|
@@ -23,14 +23,51 @@ function App() {
|
|
|
23
23
|
|
|
24
24
|
### Import paths
|
|
25
25
|
|
|
26
|
-
| Path
|
|
27
|
-
|
|
|
28
|
-
| `@astryxdesign/theme-stone` | Source build (StyleX compilation via `@astryxdesign/build`)
|
|
29
|
-
| `@astryxdesign/theme-stone/built` | Pre-built dist (Tailwind, plain CSS, or no build step)
|
|
30
|
-
| `@astryxdesign/theme-stone/theme.css` | Pre-built CSS file (import in your stylesheet)
|
|
26
|
+
| Path | Use case |
|
|
27
|
+
| ------------------------------------- | ----------------------------------------------------------- |
|
|
28
|
+
| `@astryxdesign/theme-stone` | Source build (StyleX compilation via `@astryxdesign/build`) |
|
|
29
|
+
| `@astryxdesign/theme-stone/built` | Pre-built dist (Tailwind, plain CSS, or no build step) |
|
|
30
|
+
| `@astryxdesign/theme-stone/theme.css` | Pre-built CSS file (import in your stylesheet) |
|
|
31
31
|
|
|
32
32
|
If you're using `@astryxdesign/build` for StyleX source compilation, import from the bare path. Otherwise, use `/built`.
|
|
33
33
|
|
|
34
|
+
## Approved palette
|
|
35
|
+
|
|
36
|
+
Stone keeps its generation request in `palette.config.json`, the reviewed
|
|
37
|
+
`astryx-oklch-v1` output in `src/stonePalettes.generated.ts`, and the detached
|
|
38
|
+
generation receipt beside it. `stonePaletteRefs.generated.ts` provides the
|
|
39
|
+
small runtime projection consumed by the maintained theme.
|
|
40
|
+
|
|
41
|
+
The palette preserves Stone's exact configured neutral and pastel anchors while
|
|
42
|
+
generating separate light and dark ramps. Green, Yellow, Teal, and Cyan use
|
|
43
|
+
reviewed re-seeded midtones rather than preserving their released compatibility
|
|
44
|
+
ramp values. The complete palette remains available for authoring and audits; the
|
|
45
|
+
runtime theme imports only the selected stops in
|
|
46
|
+
`stonePaletteRefs.generated.ts`.
|
|
47
|
+
|
|
48
|
+
Use semantic theme tokens in components. Stone's theme source maps those roles
|
|
49
|
+
to named palette stops; components never read raw palette values directly. The
|
|
50
|
+
prebuilt theme and CSS contain resolved values. Changing the generated palette
|
|
51
|
+
must include the regenerated receipt, selected-reference module, token diff,
|
|
52
|
+
tests, and visual review. Keep `stoneTheme.ts` and the CLI template copy
|
|
53
|
+
synchronized when changing a mapping.
|
|
54
|
+
|
|
55
|
+
The bare package export preserves the original `stonePalettes.family[stop]`,
|
|
56
|
+
`stonePalettes.family.hue`, and `stonePalettes.family.chroma` shape. The generated
|
|
57
|
+
light and dark ramps are private authoring artifacts used by the maintained theme,
|
|
58
|
+
tests, and review tooling rather than an expanded public palette API:
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
import {stonePalettes} from '@astryxdesign/theme-stone';
|
|
62
|
+
|
|
63
|
+
const existingSharedRampValue = stonePalettes.orange[90];
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The palette is an authoring and audit reference, not a component styling API,
|
|
67
|
+
chart-color API, or accessibility guarantee. Components should read semantic
|
|
68
|
+
tokens, charts should use the data-visualization color API, and every custom
|
|
69
|
+
foreground/background pair still needs contextual contrast verification.
|
|
70
|
+
|
|
34
71
|
### CSS import
|
|
35
72
|
|
|
36
73
|
Add the theme CSS to your stylesheet:
|
package/dist/source.d.ts
CHANGED
package/dist/source.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AACvD,OAAO,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC"}
|
package/dist/source.js
CHANGED
|
@@ -68,58 +68,88 @@ var stoneIconRegistry = {
|
|
|
68
68
|
microphone: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.Mic, { ...iconProps })
|
|
69
69
|
};
|
|
70
70
|
|
|
71
|
+
// src/stonePaletteRefs.generated.ts
|
|
72
|
+
var stonePaletteRefs = {
|
|
73
|
+
green: {
|
|
74
|
+
light: { 30: "#354f31", 55: "#609757", 85: "#bfdfbb", 90: "#d2eccf" },
|
|
75
|
+
dark: { 25: "#2f412c", 35: "#3e5d38", 70: "#90ba8a", 80: "#b3d0af", 90: "#d5e9d2" }
|
|
76
|
+
},
|
|
77
|
+
yellow: {
|
|
78
|
+
light: { 30: "#524818", 40: "#736419", 55: "#a08c36", 85: "#e7d3a4", 90: "#f4e1b7" },
|
|
79
|
+
dark: { 25: "#433b1b", 35: "#615620", 70: "#c2af6e", 80: "#d9c794", 90: "#f1e1b9" }
|
|
80
|
+
},
|
|
81
|
+
red: {
|
|
82
|
+
light: { 30: "#603c37", 40: "#745752", 60: "#a98984", 85: "#f0cac4", 90: "#fbdad4" },
|
|
83
|
+
dark: { 25: "#50332e", 35: "#684a45", 70: "#c6a29c", 80: "#e0bdb8", 90: "#f7dbd7" }
|
|
84
|
+
},
|
|
85
|
+
purple: {
|
|
86
|
+
light: { 30: "#4c405b", 40: "#635a70", 85: "#d9cfea", 90: "#e7def5" },
|
|
87
|
+
dark: { 25: "#3f374c", 35: "#574e64", 70: "#b0a5c0", 90: "#e6def3" }
|
|
88
|
+
},
|
|
89
|
+
teal: {
|
|
90
|
+
light: { 30: "#2c4f44", 40: "#40675c", 85: "#c3dbd2", 90: "#d4e8e1" },
|
|
91
|
+
dark: { 25: "#274239", 35: "#3a5b50", 70: "#94b3a9", 90: "#d6e7e1" }
|
|
92
|
+
},
|
|
93
|
+
neutral: {
|
|
94
|
+
light: { 0: "#000000", 15: "#25252a", 30: "#46464e", 40: "#5f5f64", 55: "#848489", 85: "#d4d3dd", 90: "#e2e2e8", 95: "#f0f0f7", 100: "#ffffff" },
|
|
95
|
+
dark: { 0: "#000000", 5: "#101018", 10: "#1b1b21", 15: "#25252a", 20: "#302f36", 25: "#3a3a42", 35: "#525159", 40: "#5e5e64", 65: "#9d9ea5", 70: "#ababb3", 90: "#e2e2e8", 95: "#f0f0f9", 100: "#ffffff" }
|
|
96
|
+
},
|
|
97
|
+
orange: {
|
|
98
|
+
dark: { 25: "#4e3522", 35: "#684c34", 70: "#c9a382", 90: "#ffdcbb" },
|
|
99
|
+
light: { 30: "#5e3f27", 85: "#f2cdaa", 90: "#ffdcbb" }
|
|
100
|
+
},
|
|
101
|
+
blue: {
|
|
102
|
+
light: { 30: "#344861", 40: "#516074", 85: "#c2d6f1", 90: "#d3e4fc" },
|
|
103
|
+
dark: { 25: "#2c3c52", 35: "#445469", 70: "#9aadc7", 90: "#d5e4f8" }
|
|
104
|
+
},
|
|
105
|
+
cyan: {
|
|
106
|
+
light: { 30: "#264d57", 85: "#badbe4", 90: "#cbe9f0" },
|
|
107
|
+
dark: { 25: "#234048", 35: "#345761", 90: "#cfe8ee" }
|
|
108
|
+
},
|
|
109
|
+
pink: {
|
|
110
|
+
light: { 30: "#5a3c4f", 85: "#e9cadc", 90: "#f5d9ea" },
|
|
111
|
+
dark: { 25: "#4b3242", 35: "#624a59", 90: "#f2dbe8" }
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
|
|
71
115
|
// src/stoneTheme.ts
|
|
116
|
+
var { blue, cyan, green, neutral, orange, pink, purple, red, teal, yellow } = stonePaletteRefs;
|
|
117
|
+
var lightDark = (light, dark) => `light-dark(${light}, ${dark})`;
|
|
118
|
+
var withAlpha = (color, alpha) => `${color}${alpha}`;
|
|
72
119
|
var INPUT_STATUS_VARS = {
|
|
73
120
|
"status:success": {
|
|
74
|
-
"--color-success":
|
|
75
|
-
// Green T60 / T70
|
|
121
|
+
"--color-success": lightDark(green.light[55], green.dark[70])
|
|
76
122
|
},
|
|
77
123
|
"status:warning": {
|
|
78
|
-
"--color-warning":
|
|
79
|
-
// Yellow T60 / T70
|
|
124
|
+
"--color-warning": lightDark(yellow.light[55], yellow.dark[70])
|
|
80
125
|
},
|
|
81
126
|
"status:error": {
|
|
82
|
-
"--color-error":
|
|
83
|
-
// Red T60 / T70
|
|
127
|
+
"--color-error": lightDark(red.light[60], red.dark[70])
|
|
84
128
|
}
|
|
85
129
|
};
|
|
86
130
|
var stoneSyntax = (0, import_theme.defineSyntaxTheme)({
|
|
87
131
|
name: "astryx-stone",
|
|
88
132
|
tokens: {
|
|
89
|
-
keyword: [
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
//
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
attribute: ["#79693f", "#b6aa90"],
|
|
110
|
-
// Yellow T45 / T70
|
|
111
|
-
property: ["#4e6357", "#94b2a0"],
|
|
112
|
-
// Teal T40 / T70
|
|
113
|
-
punctuation: ["#5e5e5e", "#ababb0"],
|
|
114
|
-
// Stone Neutral T40 / T70
|
|
115
|
-
background: ["#f3f3f5", "#171719"],
|
|
116
|
-
// Diff rows: the muted green/red at 25% in light and 20% in dark keep
|
|
117
|
-
// every token at or above 4.5:1 on the tint; the markers are the tinted
|
|
118
|
-
// text tokens (8.1:1 light, 8.8:1 dark on their tints).
|
|
119
|
-
added: ["#d0e9ce40", "#b4cdb233"],
|
|
120
|
-
removed: ["#f9dcd740", "#dcc0bc33"],
|
|
121
|
-
"added-marker": ["#374c36", "#d0e9ce"],
|
|
122
|
-
"removed-marker": ["#58413e", "#f9dcd7"]
|
|
133
|
+
keyword: [purple.light[40], purple.dark[70]],
|
|
134
|
+
string: [teal.light[40], green.dark[70]],
|
|
135
|
+
comment: [neutral.light[40], neutral.dark[70]],
|
|
136
|
+
number: [red.light[40], orange.dark[70]],
|
|
137
|
+
function: [blue.light[40], blue.dark[70]],
|
|
138
|
+
type: [purple.light[40], purple.dark[70]],
|
|
139
|
+
variable: [neutral.light[40], neutral.dark[70]],
|
|
140
|
+
operator: [neutral.light[40], neutral.dark[70]],
|
|
141
|
+
constant: [red.light[40], orange.dark[70]],
|
|
142
|
+
tag: [red.light[40], red.dark[70]],
|
|
143
|
+
attribute: [yellow.light[40], yellow.dark[70]],
|
|
144
|
+
property: [teal.light[40], teal.dark[70]],
|
|
145
|
+
punctuation: [neutral.light[40], neutral.dark[70]],
|
|
146
|
+
background: [neutral.light[95], neutral.dark[5]],
|
|
147
|
+
// Translucent diff rows retain each token's contrast while the opaque
|
|
148
|
+
// markers carry the same Green and Red families as their row tint.
|
|
149
|
+
added: [withAlpha(green.light[90], "40"), withAlpha(green.dark[80], "33")],
|
|
150
|
+
removed: [withAlpha(red.light[90], "40"), withAlpha(red.dark[80], "33")],
|
|
151
|
+
"added-marker": [green.light[30], green.dark[90]],
|
|
152
|
+
"removed-marker": [red.light[30], red.dark[90]]
|
|
123
153
|
}
|
|
124
154
|
});
|
|
125
155
|
var SECONDARY_BUTTON = {
|
|
@@ -179,184 +209,132 @@ var stoneTheme = (0, import_theme.defineTheme)({
|
|
|
179
209
|
motion: { fast: 125, medium: 300, slow: 700, ratio: 0.75 },
|
|
180
210
|
syntax: stoneSyntax,
|
|
181
211
|
tokens: {
|
|
182
|
-
//
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
"--color-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
"--color-
|
|
193
|
-
|
|
194
|
-
"--color-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
"--color-overlay": [
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
"--color-overlay-pressed": [
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
//
|
|
210
|
-
//
|
|
211
|
-
"--color-text-secondary": [
|
|
212
|
-
|
|
213
|
-
"--color-text-
|
|
214
|
-
|
|
215
|
-
"--color-
|
|
216
|
-
|
|
217
|
-
"--color-on-
|
|
218
|
-
"--color-on-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
"--color-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
"--color-
|
|
228
|
-
|
|
229
|
-
//
|
|
230
|
-
"--color-
|
|
231
|
-
|
|
232
|
-
"--color-
|
|
233
|
-
|
|
234
|
-
"--color-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
"--color-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
"--color-success": ["#374c36", "#b4cdb2"],
|
|
247
|
-
// Green T30 / T80
|
|
248
|
-
"--color-success-muted": ["#d0e9ce", "#b4cdb2"],
|
|
249
|
-
// Green T90 / T80
|
|
250
|
-
"--color-error": ["#58413e", "#dcc0bc"],
|
|
251
|
-
// Red T30 / T80
|
|
252
|
-
"--color-error-muted": ["#f9dcd7", "#dcc0bc"],
|
|
253
|
-
// Red T90 / T80
|
|
254
|
-
"--color-warning": ["#524622", "#d7c59c"],
|
|
255
|
-
// Yellow T30 / T80
|
|
256
|
-
"--color-warning-muted": ["#f4e1b7", "#d7c59c"],
|
|
257
|
-
// Yellow T90 / T80
|
|
258
|
-
// Border — H=291
|
|
259
|
-
"--color-border": ["#e2e2e8", "#f3f3f51a"],
|
|
260
|
-
// light: Stone Neutral T90 / dark: T96 · 10%
|
|
261
|
-
"--color-border-emphasized": ["#83838a", "#5e5e61"],
|
|
262
|
-
// T55 C=4 / T40 C=2
|
|
263
|
-
// Effects — H=291
|
|
264
|
-
"--color-skeleton": ["#d4d4da", "#5e5e64"],
|
|
265
|
-
// T85 / T40 from H=291 C=3
|
|
266
|
-
"--color-shadow": ["#25252a1a", "#0000004d"],
|
|
267
|
-
// light: Stone Neutral T15 · 10% / dark: 30%
|
|
268
|
-
"--color-tint-hover": ["black", "white"],
|
|
212
|
+
// Core neutrals
|
|
213
|
+
"--color-accent": [neutral.light[15], neutral.dark[95]],
|
|
214
|
+
"--color-accent-muted": [
|
|
215
|
+
withAlpha(neutral.light[15], "14"),
|
|
216
|
+
withAlpha(neutral.dark[95], "20")
|
|
217
|
+
],
|
|
218
|
+
"--color-neutral": [
|
|
219
|
+
withAlpha(neutral.light[15], "0f"),
|
|
220
|
+
withAlpha(neutral.dark[95], "1a")
|
|
221
|
+
],
|
|
222
|
+
"--color-background-surface": [neutral.light[100], neutral.dark[10]],
|
|
223
|
+
"--color-background-body": [neutral.light[95], neutral.dark[5]],
|
|
224
|
+
"--color-overlay": [
|
|
225
|
+
withAlpha(neutral.light[15], "80"),
|
|
226
|
+
withAlpha(neutral.dark[15], "cc")
|
|
227
|
+
],
|
|
228
|
+
"--color-overlay-hover": [
|
|
229
|
+
withAlpha(neutral.light[15], "0d"),
|
|
230
|
+
withAlpha(neutral.dark[95], "0d")
|
|
231
|
+
],
|
|
232
|
+
"--color-overlay-pressed": [
|
|
233
|
+
withAlpha(neutral.light[15], "1a"),
|
|
234
|
+
withAlpha(neutral.dark[95], "1a")
|
|
235
|
+
],
|
|
236
|
+
"--color-background-muted": [neutral.light[90], neutral.dark[25]],
|
|
237
|
+
// Text
|
|
238
|
+
"--color-text-primary": [neutral.light[15], neutral.dark[95]],
|
|
239
|
+
// These stops keep normal secondary text readable on Stone's body,
|
|
240
|
+
// muted, and categorical surfaces.
|
|
241
|
+
"--color-text-secondary": [neutral.light[40], neutral.dark[70]],
|
|
242
|
+
"--color-text-disabled": [neutral.light[85], neutral.dark[40]],
|
|
243
|
+
"--color-text-accent": [neutral.light[15], neutral.dark[95]],
|
|
244
|
+
"--color-on-dark": neutral.light[100],
|
|
245
|
+
"--color-on-light": [neutral.light[15], neutral.dark[15]],
|
|
246
|
+
"--color-on-accent": [neutral.light[100], neutral.dark[15]],
|
|
247
|
+
"--color-on-success": [green.light[30], green.dark[90]],
|
|
248
|
+
"--color-on-error": [red.light[30], red.dark[90]],
|
|
249
|
+
"--color-on-warning": [yellow.light[30], yellow.dark[90]],
|
|
250
|
+
// Icon
|
|
251
|
+
"--color-icon-accent": [neutral.light[15], neutral.dark[95]],
|
|
252
|
+
"--color-icon-primary": [neutral.light[15], neutral.dark[95]],
|
|
253
|
+
"--color-icon-secondary": [neutral.light[55], neutral.dark[65]],
|
|
254
|
+
"--color-icon-disabled": [neutral.light[85], neutral.dark[40]],
|
|
255
|
+
// Surface variants
|
|
256
|
+
"--color-background-card": [neutral.light[100], neutral.dark[15]],
|
|
257
|
+
"--color-background-popover": [neutral.light[100], neutral.dark[20]],
|
|
258
|
+
"--color-background-inverted": [neutral.light[15], neutral.dark[95]],
|
|
259
|
+
// Status / sentiment
|
|
260
|
+
"--color-success": [green.light[30], green.dark[80]],
|
|
261
|
+
"--color-success-muted": [green.light[90], green.dark[80]],
|
|
262
|
+
"--color-error": [red.light[30], red.dark[80]],
|
|
263
|
+
"--color-error-muted": [red.light[90], red.dark[80]],
|
|
264
|
+
"--color-warning": [yellow.light[30], yellow.dark[80]],
|
|
265
|
+
"--color-warning-muted": [yellow.light[90], yellow.dark[80]],
|
|
266
|
+
// Border
|
|
267
|
+
"--color-border": [neutral.light[90], withAlpha(neutral.dark[95], "1a")],
|
|
268
|
+
"--color-border-emphasized": [neutral.light[55], neutral.dark[40]],
|
|
269
|
+
// Effects
|
|
270
|
+
"--color-skeleton": [neutral.light[85], neutral.dark[40]],
|
|
271
|
+
"--color-shadow": [
|
|
272
|
+
withAlpha(neutral.light[15], "1a"),
|
|
273
|
+
withAlpha(neutral.dark[0], "4d")
|
|
274
|
+
],
|
|
275
|
+
"--color-tint-hover": [neutral.light[0], neutral.dark[100]],
|
|
269
276
|
// Typography override
|
|
270
277
|
"--text-supporting-size": "12px",
|
|
271
|
-
// Categorical
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
//
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
"--color-
|
|
281
|
-
|
|
282
|
-
"--color-
|
|
283
|
-
|
|
284
|
-
"--color-
|
|
285
|
-
|
|
286
|
-
"--color-text-
|
|
287
|
-
|
|
288
|
-
"--color-
|
|
289
|
-
"--color-
|
|
290
|
-
"--color-
|
|
291
|
-
"--color-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
"--color-
|
|
295
|
-
|
|
296
|
-
"--color-border-
|
|
297
|
-
|
|
298
|
-
"--color-
|
|
299
|
-
|
|
300
|
-
"--color-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
"--color-background-
|
|
304
|
-
"--color-border-
|
|
305
|
-
"--color-icon-
|
|
306
|
-
"--color-text-
|
|
307
|
-
|
|
308
|
-
"--color-
|
|
309
|
-
"--color-
|
|
310
|
-
"--color-
|
|
311
|
-
"--color-
|
|
312
|
-
|
|
313
|
-
"--color-
|
|
314
|
-
"--color-
|
|
315
|
-
|
|
316
|
-
"--color-text-pink": ["#52424c", "#f0dde8"],
|
|
317
|
-
// Categorical — Purple H=307 C=11
|
|
318
|
-
"--color-background-purple": ["#e8dff3", "#564f60"],
|
|
319
|
-
"--color-border-purple": ["#d9d1e5", "#3f3949"],
|
|
320
|
-
"--color-icon-purple": ["#4b4454", "#e8dff3"],
|
|
321
|
-
"--color-text-purple": ["#4b4454", "#e8dff3"],
|
|
322
|
-
// Categorical — Red H=33 C=11
|
|
323
|
-
"--color-background-red": ["#f9dcd7", "#644d49"],
|
|
324
|
-
"--color-border-red": ["#ebcec9", "#4c3633"],
|
|
325
|
-
"--color-icon-red": ["#58413e", "#f9dcd7"],
|
|
326
|
-
"--color-text-red": ["#58413e", "#f9dcd7"],
|
|
327
|
-
// Categorical — Teal H=158 C=9
|
|
328
|
-
"--color-background-teal": ["#d4e7dc", "#46564d"],
|
|
329
|
-
"--color-border-teal": ["#c6d9ce", "#303f36"],
|
|
330
|
-
"--color-icon-teal": ["#3b4a41", "#d4e7dc"],
|
|
331
|
-
"--color-text-teal": ["#3b4a41", "#d4e7dc"],
|
|
332
|
-
// Categorical — Yellow H=90 C=23
|
|
333
|
-
"--color-background-yellow": ["#f4e1b7", "#5e512d"],
|
|
334
|
-
"--color-border-yellow": ["#e5d3a9", "#463a18"],
|
|
335
|
-
"--color-icon-yellow": ["#524622", "#f4e1b7"],
|
|
336
|
-
"--color-text-yellow": ["#524622", "#f4e1b7"],
|
|
337
|
-
// =========================================================================
|
|
338
|
-
// Radius — clean and subtle
|
|
339
|
-
// --radius-none and --radius-full are always fixed and must never be
|
|
340
|
-
// scaled by a theme (see defineTheme's radius config docs) — 0 and
|
|
341
|
-
// 9999px respectively, matching @astryxdesign/core's own defaults.
|
|
342
|
-
// =========================================================================
|
|
278
|
+
// Categorical
|
|
279
|
+
// Light mode pairs pastel stop 90 surfaces with stop 30 foregrounds.
|
|
280
|
+
// Dark mode pairs stop 35 surfaces with stop 90 foregrounds; borders move
|
|
281
|
+
// one step inward in both modes.
|
|
282
|
+
"--color-background-blue": [blue.light[90], blue.dark[35]],
|
|
283
|
+
"--color-border-blue": [blue.light[85], blue.dark[25]],
|
|
284
|
+
"--color-icon-blue": [blue.light[30], blue.dark[90]],
|
|
285
|
+
"--color-text-blue": [blue.light[30], blue.dark[90]],
|
|
286
|
+
"--color-background-cyan": [cyan.light[90], cyan.dark[35]],
|
|
287
|
+
"--color-border-cyan": [cyan.light[85], cyan.dark[25]],
|
|
288
|
+
"--color-icon-cyan": [cyan.light[30], cyan.dark[90]],
|
|
289
|
+
"--color-text-cyan": [cyan.light[30], cyan.dark[90]],
|
|
290
|
+
"--color-background-gray": [neutral.light[90], neutral.dark[35]],
|
|
291
|
+
"--color-border-gray": [neutral.light[85], neutral.dark[25]],
|
|
292
|
+
"--color-icon-gray": [neutral.light[30], neutral.dark[90]],
|
|
293
|
+
"--color-text-gray": [neutral.light[30], neutral.dark[90]],
|
|
294
|
+
"--color-background-green": [green.light[90], green.dark[35]],
|
|
295
|
+
"--color-border-green": [green.light[85], green.dark[25]],
|
|
296
|
+
"--color-icon-green": [green.light[30], green.dark[90]],
|
|
297
|
+
"--color-text-green": [green.light[30], green.dark[90]],
|
|
298
|
+
"--color-background-orange": [orange.light[90], orange.dark[35]],
|
|
299
|
+
"--color-border-orange": [orange.light[85], orange.dark[25]],
|
|
300
|
+
"--color-icon-orange": [orange.light[30], orange.dark[90]],
|
|
301
|
+
"--color-text-orange": [orange.light[30], orange.dark[90]],
|
|
302
|
+
"--color-background-pink": [pink.light[90], pink.dark[35]],
|
|
303
|
+
"--color-border-pink": [pink.light[85], pink.dark[25]],
|
|
304
|
+
"--color-icon-pink": [pink.light[30], pink.dark[90]],
|
|
305
|
+
"--color-text-pink": [pink.light[30], pink.dark[90]],
|
|
306
|
+
"--color-background-purple": [purple.light[90], purple.dark[35]],
|
|
307
|
+
"--color-border-purple": [purple.light[85], purple.dark[25]],
|
|
308
|
+
"--color-icon-purple": [purple.light[30], purple.dark[90]],
|
|
309
|
+
"--color-text-purple": [purple.light[30], purple.dark[90]],
|
|
310
|
+
"--color-background-red": [red.light[90], red.dark[35]],
|
|
311
|
+
"--color-border-red": [red.light[85], red.dark[25]],
|
|
312
|
+
"--color-icon-red": [red.light[30], red.dark[90]],
|
|
313
|
+
"--color-text-red": [red.light[30], red.dark[90]],
|
|
314
|
+
"--color-background-teal": [teal.light[90], teal.dark[35]],
|
|
315
|
+
"--color-border-teal": [teal.light[85], teal.dark[25]],
|
|
316
|
+
"--color-icon-teal": [teal.light[30], teal.dark[90]],
|
|
317
|
+
"--color-text-teal": [teal.light[30], teal.dark[90]],
|
|
318
|
+
"--color-background-yellow": [yellow.light[90], yellow.dark[35]],
|
|
319
|
+
"--color-border-yellow": [yellow.light[85], yellow.dark[25]],
|
|
320
|
+
"--color-icon-yellow": [yellow.light[30], yellow.dark[90]],
|
|
321
|
+
"--color-text-yellow": [yellow.light[30], yellow.dark[90]],
|
|
322
|
+
// Radius
|
|
343
323
|
"--radius-none": "0px",
|
|
344
324
|
"--radius-inner": "0.25rem",
|
|
345
325
|
"--radius-element": "0.5rem",
|
|
346
326
|
"--radius-container": "0.75rem",
|
|
347
327
|
"--radius-page": "1.5rem",
|
|
348
328
|
"--radius-full": "9999px",
|
|
349
|
-
// =========================================================================
|
|
350
329
|
// Shadows
|
|
351
|
-
|
|
352
|
-
"--shadow-
|
|
353
|
-
"--shadow-
|
|
354
|
-
"--shadow-
|
|
355
|
-
"--shadow-inset-
|
|
356
|
-
"--shadow-inset-
|
|
357
|
-
"--shadow-inset-
|
|
358
|
-
"--shadow-inset-
|
|
359
|
-
"--shadow-inset-error": "inset 0px 0px 0px 2px #83838a30"
|
|
330
|
+
"--shadow-low": `0 2px 4px ${withAlpha(neutral.light[15], "0d")}, 0 4px 8px ${withAlpha(neutral.light[15], "1a")}`,
|
|
331
|
+
"--shadow-med": `0 2px 4px ${withAlpha(neutral.light[15], "0d")}, 0 4px 12px ${withAlpha(neutral.light[15], "1a")}`,
|
|
332
|
+
"--shadow-high": `0 4px 6px ${withAlpha(neutral.light[15], "1a")}, 0 12px 24px ${withAlpha(neutral.light[15], "26")}`,
|
|
333
|
+
"--shadow-inset-hover": `inset 0 0 0 2px ${withAlpha(neutral.light[15], "30")}`,
|
|
334
|
+
"--shadow-inset-selected": `inset 0 0 0 2px ${withAlpha(neutral.light[15], "50")}`,
|
|
335
|
+
"--shadow-inset-success": `inset 0 0 0 2px ${withAlpha(neutral.light[55], "30")}`,
|
|
336
|
+
"--shadow-inset-warning": `inset 0 0 0 2px ${withAlpha(neutral.light[55], "30")}`,
|
|
337
|
+
"--shadow-inset-error": `inset 0 0 0 2px ${withAlpha(neutral.light[55], "30")}`
|
|
360
338
|
},
|
|
361
339
|
components: {
|
|
362
340
|
button: {
|
|
@@ -369,7 +347,8 @@ var stoneTheme = (0, import_theme.defineTheme)({
|
|
|
369
347
|
color: "var(--color-text-red)"
|
|
370
348
|
}
|
|
371
349
|
},
|
|
372
|
-
//
|
|
350
|
+
// Badges, banners, and field status messages share the categorical
|
|
351
|
+
// surfaces and foregrounds so each semantic state has one visual source.
|
|
373
352
|
badge: {
|
|
374
353
|
"variant:info": {
|
|
375
354
|
backgroundColor: "var(--color-background-blue)",
|
|
@@ -392,10 +371,8 @@ var stoneTheme = (0, import_theme.defineTheme)({
|
|
|
392
371
|
color: "var(--color-text-red)"
|
|
393
372
|
}
|
|
394
373
|
},
|
|
395
|
-
//
|
|
396
|
-
//
|
|
397
|
-
// cascade. Redefine the muted token instead so StyleX's var() resolves
|
|
398
|
-
// to the categorical bg in our scope.
|
|
374
|
+
// Banner surface declarations live above the theme layer, so redirect the
|
|
375
|
+
// semantic variables here instead of attempting a losing direct fill.
|
|
399
376
|
banner: {
|
|
400
377
|
"status:info": {
|
|
401
378
|
"--color-accent-muted": "var(--color-background-blue)",
|
|
@@ -422,45 +399,35 @@ var stoneTheme = (0, import_theme.defineTheme)({
|
|
|
422
399
|
"--color-error": "var(--color-text-red)"
|
|
423
400
|
}
|
|
424
401
|
},
|
|
425
|
-
//
|
|
426
|
-
// the
|
|
427
|
-
// Hexes from the preview Tonal Palettes ramp. accent (default) +
|
|
428
|
-
// indeterminate both route to blue for the in-progress / loading look.
|
|
402
|
+
// Progress fills use the same family as their matching status surface;
|
|
403
|
+
// the darker stop in dark mode keeps the channel visible on dark tracks.
|
|
429
404
|
"progress-bar-fill": {
|
|
430
405
|
"variant:accent": {
|
|
431
|
-
backgroundColor:
|
|
432
|
-
// Blue T90 / T70
|
|
406
|
+
backgroundColor: lightDark(blue.light[90], blue.dark[70])
|
|
433
407
|
},
|
|
434
408
|
"variant:success": {
|
|
435
|
-
backgroundColor:
|
|
436
|
-
// Green T90 / T70
|
|
409
|
+
backgroundColor: lightDark(green.light[90], green.dark[70])
|
|
437
410
|
},
|
|
438
411
|
"variant:warning": {
|
|
439
|
-
backgroundColor:
|
|
440
|
-
// Yellow T90 / T70
|
|
412
|
+
backgroundColor: lightDark(yellow.light[90], yellow.dark[70])
|
|
441
413
|
},
|
|
442
414
|
"variant:error": {
|
|
443
|
-
backgroundColor:
|
|
444
|
-
// Red T90 / T70
|
|
415
|
+
backgroundColor: lightDark(red.light[90], red.dark[70])
|
|
445
416
|
}
|
|
446
417
|
},
|
|
447
|
-
//
|
|
448
|
-
// redirect to --color-skeleton so the channel stays visible.
|
|
418
|
+
// The default muted track is too close to Stone's body surface.
|
|
449
419
|
"progress-bar-track": {
|
|
450
420
|
base: {
|
|
451
421
|
backgroundColor: "var(--color-skeleton)"
|
|
452
422
|
}
|
|
453
423
|
},
|
|
454
|
-
// Switch off-state track
|
|
455
|
-
// Redefine it inside the switch scope to --color-skeleton, matching
|
|
456
|
-
// the ProgressBar track. The on-state reads --color-accent (unaffected);
|
|
457
|
-
// disabled-off also picks up --color-skeleton for consistency.
|
|
424
|
+
// Match the Switch off-state track to the visible ProgressBar track.
|
|
458
425
|
switch: {
|
|
459
426
|
base: {
|
|
460
427
|
"--color-background-gray": "var(--color-skeleton)"
|
|
461
428
|
}
|
|
462
429
|
},
|
|
463
|
-
// FieldStatus
|
|
430
|
+
// FieldStatus surfaces match the corresponding badge and banner family.
|
|
464
431
|
"field-status": {
|
|
465
432
|
"type:success": {
|
|
466
433
|
backgroundColor: "var(--color-background-green)"
|
|
@@ -472,8 +439,7 @@ var stoneTheme = (0, import_theme.defineTheme)({
|
|
|
472
439
|
backgroundColor: "var(--color-background-red)"
|
|
473
440
|
}
|
|
474
441
|
},
|
|
475
|
-
//
|
|
476
|
-
// same softer T60/T70 redirection. See INPUT_STATUS_VARS above.
|
|
442
|
+
// Every input status border and icon uses INPUT_STATUS_VARS above.
|
|
477
443
|
"text-input": INPUT_STATUS_VARS,
|
|
478
444
|
"text-area": INPUT_STATUS_VARS,
|
|
479
445
|
"number-input": INPUT_STATUS_VARS,
|