@proteos/ui 0.38.0 → 0.39.0
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/package.json +2 -2
- package/src/styles.css +81 -67
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proteos/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.39.0",
|
|
4
4
|
"license": "FSL-1.1-Apache-2.0",
|
|
5
5
|
"description": "Proteos React component library (React Aria Components + Tailwind v4).",
|
|
6
6
|
"repository": {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"tailwind-merge": "^3.5.0",
|
|
56
56
|
"tailwind-variants": "^3.2.2",
|
|
57
57
|
"tailwindcss": "^4.2.4",
|
|
58
|
-
"@proteos/sdk": "0.
|
|
58
|
+
"@proteos/sdk": "0.39.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@biomejs/biome": "^2.4.13",
|
package/src/styles.css
CHANGED
|
@@ -25,28 +25,31 @@
|
|
|
25
25
|
/* Base — the page/chrome background the app shell paints. The majority
|
|
26
26
|
surface: pages, panels, headers, toolbars, tables, ghost buttons.
|
|
27
27
|
Split from --color-surface so themes can lift raised blocks off it;
|
|
28
|
-
in paper the two are identical.
|
|
29
|
-
|
|
28
|
+
in paper the two are identical.
|
|
29
|
+
|
|
30
|
+
These base values are the LIGHT theme — light is the default, i.e. the
|
|
31
|
+
absence of data-theme (see the theme-mode blocks below). */
|
|
32
|
+
--color-bg: #fbfbfc;
|
|
30
33
|
|
|
31
34
|
/* Surfaces — raised blocks that sit ON the base: cards, popovers, modals,
|
|
32
35
|
inputs. surface-2/-3 are the recessed tint steps (hovers, read-only
|
|
33
|
-
boxes, chips, table-header fill)
|
|
34
|
-
--color-surface: #
|
|
35
|
-
--color-surface-2: #
|
|
36
|
-
--color-surface-3: #
|
|
36
|
+
boxes, chips, table-header fill). */
|
|
37
|
+
--color-surface: #ffffff;
|
|
38
|
+
--color-surface-2: #f0f0f2;
|
|
39
|
+
--color-surface-3: #e5e5e9;
|
|
37
40
|
|
|
38
41
|
/* Ink — indigo-tinted slate */
|
|
39
42
|
--color-ink: #1a1d2b;
|
|
40
|
-
--color-ink-2: #
|
|
41
|
-
--color-ink-3: #
|
|
42
|
-
--color-ink-4: #
|
|
43
|
+
--color-ink-2: #383d4e;
|
|
44
|
+
--color-ink-3: #63677a;
|
|
45
|
+
--color-ink-4: #7e818f;
|
|
43
46
|
|
|
44
47
|
/* Hairlines. rule-strong marks interactive-control borders (inputs,
|
|
45
|
-
ghost buttons, segmented tracks) —
|
|
46
|
-
|
|
47
|
-
--color-rule: #
|
|
48
|
-
--color-rule-2: #
|
|
49
|
-
--color-rule-strong: #
|
|
48
|
+
ghost buttons, segmented tracks) — darker than rule in light/dark so
|
|
49
|
+
touchable chrome pops; equal to rule in paper. */
|
|
50
|
+
--color-rule: #d7d7dc;
|
|
51
|
+
--color-rule-2: #e6e6ea;
|
|
52
|
+
--color-rule-strong: #b0b1ba;
|
|
50
53
|
|
|
51
54
|
/* Accent — deep indigo */
|
|
52
55
|
--color-accent: #2f3a66;
|
|
@@ -90,17 +93,15 @@
|
|
|
90
93
|
--radius-xl: 18px;
|
|
91
94
|
--radius-pill: 999px;
|
|
92
95
|
|
|
93
|
-
/* Shadows —
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
--shadow-rest: 0 1px
|
|
97
|
-
0
|
|
98
|
-
--shadow-raised: 0
|
|
99
|
-
0
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
0 30px 60px -30px rgba(26, 29, 43, 0.28),
|
|
103
|
-
0 2px 6px rgba(26, 29, 43, 0.06);
|
|
96
|
+
/* Shadows — cool, crisp. No white top-inset highlight: it's invisible on
|
|
97
|
+
white surfaces (paper re-adds it in its override block). */
|
|
98
|
+
--shadow-inset: 0 1px 2px rgba(23, 25, 45, 0.05);
|
|
99
|
+
--shadow-rest: 0 1px 2px rgba(23, 25, 45, 0.05),
|
|
100
|
+
0 3px 10px -3px rgba(23, 25, 45, 0.07);
|
|
101
|
+
--shadow-raised: 0 2px 4px rgba(23, 25, 45, 0.05),
|
|
102
|
+
0 12px 28px -10px rgba(23, 25, 45, 0.14);
|
|
103
|
+
--shadow-float: 0 4px 10px rgba(23, 25, 45, 0.06),
|
|
104
|
+
0 28px 60px -20px rgba(23, 25, 45, 0.22);
|
|
104
105
|
--shadow-focus: 0 0 0 4px color-mix(in oklab, var(--color-accent) 22%, transparent);
|
|
105
106
|
--shadow-focus-danger: 0 0 0 4px
|
|
106
107
|
color-mix(in oklab, var(--color-danger) 18%, transparent);
|
|
@@ -165,54 +166,67 @@
|
|
|
165
166
|
|
|
166
167
|
/* Table zebra-stripe + row-hover strength — the % of ink mixed into the
|
|
167
168
|
page bg per row (see Table). Per-theme so each mode tunes independently:
|
|
168
|
-
near-white bases show a given delta more, so light
|
|
169
|
-
|
|
170
|
-
--row-stripe:
|
|
171
|
-
--row-hover:
|
|
169
|
+
near-white bases show a given delta more, so light (the default here)
|
|
170
|
+
dials down; paper lifts back to 3%. */
|
|
171
|
+
--row-stripe: 2%;
|
|
172
|
+
--row-hover: 4%;
|
|
172
173
|
|
|
173
174
|
color-scheme: light;
|
|
174
175
|
}
|
|
175
176
|
|
|
176
177
|
/* ==========================================================
|
|
177
|
-
Theme modes —
|
|
178
|
+
Theme modes — light (default, tokens above) · paper · dark.
|
|
178
179
|
Switched via data-theme on <html> (see clients/web lib/theme.ts).
|
|
180
|
+
Light = the ABSENCE of the attribute, so anything rendering these
|
|
181
|
+
tokens without the pre-paint script (iframes, public pages, Storybook)
|
|
182
|
+
lands on light.
|
|
179
183
|
Plain unlayered blocks: they beat Tailwind's @layer theme :root
|
|
180
184
|
declarations, and [data-theme] beats :root on specificity. Tailwind
|
|
181
185
|
utilities resolve var(--color-*) / var(--shadow-*) at use-time, so
|
|
182
186
|
redefining the custom properties re-skins every component.
|
|
183
187
|
========================================================== */
|
|
184
188
|
|
|
185
|
-
/* Light —
|
|
189
|
+
/* Light — same tokens as the base above. The attribute is never written for
|
|
190
|
+
light (setTheme removes it), but a stale stored value or a module bundle
|
|
191
|
+
may still set it, so it must resolve to the light ramp rather than dark. */
|
|
186
192
|
:root[data-theme='light'] {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
193
|
+
color-scheme: light;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/* Paper — warm sand surfaces, the original Proteos skin. Opt-in. */
|
|
197
|
+
:root[data-theme='paper'] {
|
|
198
|
+
--color-bg: #f2f0ea;
|
|
199
|
+
--color-surface: #f2f0ea;
|
|
200
|
+
--color-surface-2: #e7e4db;
|
|
201
|
+
--color-surface-3: #dcd8cc;
|
|
191
202
|
|
|
192
203
|
--color-ink: #1a1d2b;
|
|
193
|
-
--color-ink-2: #
|
|
194
|
-
--color-ink-3: #
|
|
195
|
-
--color-ink-4: #
|
|
204
|
+
--color-ink-2: #353a4b;
|
|
205
|
+
--color-ink-3: #686c7a;
|
|
206
|
+
--color-ink-4: #9a9ca6;
|
|
196
207
|
|
|
197
|
-
|
|
198
|
-
--color-rule
|
|
199
|
-
--color-rule-
|
|
208
|
+
/* rule-strong equals rule here — the warm hairline already reads. */
|
|
209
|
+
--color-rule: #cfcbbd;
|
|
210
|
+
--color-rule-2: #dbd7c9;
|
|
211
|
+
--color-rule-strong: #cfcbbd;
|
|
200
212
|
|
|
201
|
-
/*
|
|
202
|
-
--row-stripe:
|
|
203
|
-
--row-hover:
|
|
213
|
+
/* Stronger stripes — the sand base swallows a delta the white one shows. */
|
|
214
|
+
--row-stripe: 3%;
|
|
215
|
+
--row-hover: 6%;
|
|
204
216
|
|
|
205
|
-
/* Accent, semantics, indigo ramp, tiles — unchanged from
|
|
217
|
+
/* Accent, semantics, indigo ramp, tiles — unchanged from light. */
|
|
206
218
|
|
|
207
|
-
/*
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
--shadow-rest: 0 1px
|
|
211
|
-
0
|
|
212
|
-
--shadow-raised: 0
|
|
213
|
-
0
|
|
214
|
-
|
|
215
|
-
|
|
219
|
+
/* Warm, low-key shadows with a white top-inset highlight. */
|
|
220
|
+
--shadow-inset: 0 1px 0 rgba(255, 255, 255, 0.6) inset,
|
|
221
|
+
0 1px 2px rgba(26, 29, 43, 0.05);
|
|
222
|
+
--shadow-rest: 0 1px 0 rgba(255, 255, 255, 0.6) inset,
|
|
223
|
+
0 4px 10px -4px rgba(26, 29, 43, 0.1), 0 1px 2px rgba(26, 29, 43, 0.05);
|
|
224
|
+
--shadow-raised: 0 1px 0 rgba(255, 255, 255, 0.6) inset,
|
|
225
|
+
0 14px 30px -14px rgba(26, 29, 43, 0.18),
|
|
226
|
+
0 2px 4px rgba(26, 29, 43, 0.05);
|
|
227
|
+
--shadow-float: 0 1px 0 rgba(255, 255, 255, 0.6) inset,
|
|
228
|
+
0 30px 60px -30px rgba(26, 29, 43, 0.28),
|
|
229
|
+
0 2px 6px rgba(26, 29, 43, 0.06);
|
|
216
230
|
}
|
|
217
231
|
|
|
218
232
|
/* Dark — parallel ramp, not an inversion. Accent lifts to a lighter
|
|
@@ -276,9 +290,13 @@
|
|
|
276
290
|
color-mix(in oklab, var(--color-danger) 28%, transparent);
|
|
277
291
|
}
|
|
278
292
|
|
|
279
|
-
/* Paper grain — faint dotted multiply overlay, identical to the design system
|
|
280
|
-
|
|
281
|
-
|
|
293
|
+
/* Paper grain — faint dotted multiply overlay, identical to the design system
|
|
294
|
+
spec. A fixed decorative layer above content but below interactive chrome.
|
|
295
|
+
Paper-mode signature ONLY: on white it reads as dirt, and the multiply dots
|
|
296
|
+
vanish or muddy on dark — so it is gated on the attribute (absent = light =
|
|
297
|
+
no grain). `.proteos-grain-dots` gates inline-styled dot overlays
|
|
298
|
+
(page-designer canvas) the same way. */
|
|
299
|
+
:root[data-theme='paper'] .proteos-grain::before {
|
|
282
300
|
content: "";
|
|
283
301
|
position: fixed;
|
|
284
302
|
inset: 0;
|
|
@@ -293,18 +311,14 @@
|
|
|
293
311
|
background-position: 0 0, 1px 2px;
|
|
294
312
|
}
|
|
295
313
|
|
|
296
|
-
/*
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
:root[data-theme='light'] .proteos-grain::before,
|
|
301
|
-
:root[data-theme='dark'] .proteos-grain::before {
|
|
302
|
-
content: none;
|
|
314
|
+
/* Hidden everywhere but paper (the canvas overlay is a plain <div>, so the
|
|
315
|
+
paper state is `block`). */
|
|
316
|
+
.proteos-grain-dots {
|
|
317
|
+
display: none;
|
|
303
318
|
}
|
|
304
319
|
|
|
305
|
-
:root[data-theme='
|
|
306
|
-
:
|
|
307
|
-
display: none;
|
|
320
|
+
:root[data-theme='paper'] .proteos-grain-dots {
|
|
321
|
+
display: block;
|
|
308
322
|
}
|
|
309
323
|
|
|
310
324
|
/* DEPRECATED aliases for module components built before the surface rename
|