@brunosouzas/design-system 0.5.1 → 0.5.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.
- package/README.md +4 -4
- package/dist/src/pieces/cast.d.ts +3 -0
- package/dist/src/pieces/cast.js +60 -7
- package/dist/src/pieces/ink.d.ts +8 -0
- package/dist/tokens/generated/tokens.d.ts +8 -0
- package/dist/tokens/generated/tokens.js +8 -0
- package/package.json +1 -1
- package/tokens/generated/tokens.css +8 -0
- package/tokens/generated/tokens.json +8 -0
- package/tokens/generated/tokens.ts +8 -0
package/README.md
CHANGED
|
@@ -146,7 +146,7 @@ Thirteen pieces draw a metro map and its page diagrams, for [stackledger](https:
|
|
|
146
146
|
- `countBadge` takes `textSize` (6 to 48, default 11): without `height`, the height, width and baseline grow with it.
|
|
147
147
|
- A line's colour comes from the map's data, so `pipe.fill`, `lineBadge.fill` and `zone.fill` also accept `#RRGGBB`. Every other colour is a token path, and a cover spec rejects any hex.
|
|
148
148
|
- `map.bendRadius` (32) is the radius of a bundle's centre line at a 45° or 90° bend; no piece reads it, the map engine draws the arcs (`pipe.d` takes `A`).
|
|
149
|
-
- The `map.*` tokens hold the measures (outline 3, shadow 3.5, line 12, casing 6, badge 20, node 46, ring 3, halo 1.5, licence 10, zone padding 32, bend radius 32…), `surface.*.zoneOpacity` the zone's opacity (0.12, dark 0.22), and `site.*` the page palette, fonts and type scale of brunosouzas.com in light and dark.
|
|
149
|
+
- The `map.*` tokens hold the measures (outline 3, shadow 3.5, line 12, casing 6, badge 20, node 46, ring 3, halo 1.5, licence 10, zone padding 32, bend radius 32…), `surface.*.zoneOpacity` the zone's opacity (0.12, dark 0.22), `surface.*.backdropWater`, `backdropWaterEdge`, `backdropPark` and `backdropCredit` the colours of a city backdrop behind a map and its OpenStreetMap credit (no piece draws it; stackledger does), and `site.*` the page palette, fonts and type scale of brunosouzas.com in light and dark.
|
|
150
150
|
|
|
151
151
|
```ts
|
|
152
152
|
import { lineBadge, pipe, stationMarker, toSvg } from "@brunosouzas/design-system";
|
|
@@ -168,7 +168,7 @@ Ten pieces draw what the blog's body diagrams need beyond the map pieces: `diagr
|
|
|
168
168
|
|
|
169
169
|
### The cast and the emotes
|
|
170
170
|
|
|
171
|
-
`mascot({ who, x, y, face, action, scale, look, headTilt, prop })` draws one character standing with the centre of its ground line at `(x, y)`. Each one carries its identity in three layers, so no video has to introduce it: a body shape, a mark always visible, and a prop when its hands are free.
|
|
171
|
+
`mascot({ who, x, y, face, action, scale, look, headTilt, prop, surface })` draws one character standing with the centre of its ground line at `(x, y)`. Each one carries its identity in three layers, so no video has to introduce it: a body shape, a mark always visible, and a prop when its hands are free.
|
|
172
172
|
|
|
173
173
|
| `who` | Body | Mark | Prop | Colour |
|
|
174
174
|
|---|---|---|---|---|
|
|
@@ -184,7 +184,7 @@ Ten pieces draw what the blog's body diagrams need beyond the map pieces: `diagr
|
|
|
184
184
|
- `action`: `none` (the default: an expression has no hands or feet), `rest`, `wave`, `hold`, `reach`, `up`, `shrug`, `type`. Arms and legs start at the body's sides; hands are mittens.
|
|
185
185
|
- `look` (-1 to 1) moves the gaze, `headTilt` (-30 to 30) turns the agent's head on its neck, `prop: false` hides the prop. Every part is a group named by `data-part` (`body`, `face`, `eyes`, `brows`, `mouth`, `arm-left`, `arm-right`, `legs`, `prop`, `mark`, …), so a scene can animate it.
|
|
186
186
|
|
|
187
|
-
`emote({ kind, x, y, scale, burst })` draws a reaction beside a head, never over the face. Each kind keeps one meaning in every video, like the colours:
|
|
187
|
+
`emote({ kind, x, y, scale, burst, surface })` draws a reaction beside a head, never over the face. Each kind keeps one meaning in every video, like the colours:
|
|
188
188
|
|
|
189
189
|
| `kind` | Shape | Meaning |
|
|
190
190
|
|---|---|---|
|
|
@@ -199,7 +199,7 @@ Ten pieces draw what the blog's body diagrams need beyond the map pieces: `diagr
|
|
|
199
199
|
|
|
200
200
|
In a scene, an emote pops in on the frame the face changes (`emotePop` in `src/brand/cast-motion.ts`, with `leave`, `blinking`, `breathe`, `squashAfter` and `hop`), one at a time, and the body acts through `pose`. A mascot's colour is its identity and never changes with state. The approved motion test is the Studio composition `cast-motion-test` (folder `cast`): `npx remotion render src/index.ts cast-motion-test`. It is a proof of the cast, not an article scene, so `npm run stills` and `npm run render` do not list it.
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
On a dark page pass `surface: "dark"` (AB#187, 0.5.2): the hard shadows take `surface.dark.shadow`, the ground takes `surface.dark.grid`, and a light rim (`surface.dark.rim`) lines the whole outline, limbs and props included; faces are unchanged. Without `surface`, the cast draws as in 0.5.0.
|
|
203
203
|
|
|
204
204
|
### A cover
|
|
205
205
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type SvgNode } from "./node.ts";
|
|
2
|
+
import { type SurfaceName } from "./ink.ts";
|
|
2
3
|
export declare const MASCOTS: readonly ["dev", "agent", "architect", "devops", "data", "request", "message"];
|
|
3
4
|
export declare const MASCOT_FACES: readonly ["normal", "blink", "happy", "wink", "surprised", "worried", "thinking", "focused"];
|
|
4
5
|
export declare const MASCOT_ACTIONS: readonly ["none", "rest", "wave", "hold", "reach", "up", "shrug", "type"];
|
|
@@ -18,6 +19,7 @@ export type MascotParams = {
|
|
|
18
19
|
look?: number;
|
|
19
20
|
headTilt?: number;
|
|
20
21
|
prop?: boolean;
|
|
22
|
+
surface?: SurfaceName;
|
|
21
23
|
};
|
|
22
24
|
export type EmoteParams = {
|
|
23
25
|
kind: EmoteKind;
|
|
@@ -25,6 +27,7 @@ export type EmoteParams = {
|
|
|
25
27
|
y: number;
|
|
26
28
|
scale?: number;
|
|
27
29
|
burst?: boolean;
|
|
30
|
+
surface?: SurfaceName;
|
|
28
31
|
};
|
|
29
32
|
/** One character standing with the centre of its ground line at (x, y). */
|
|
30
33
|
export declare const mascot: import("./piece.ts").Piece<MascotParams>;
|
package/dist/src/pieces/cast.js
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
// (~/.hermes/spikes/design-system/cast-and-emotes/cast.mts). The frozen fixture
|
|
11
11
|
// test/fixtures/cast-0.5.0.json pins every call's output, so a refactor here
|
|
12
12
|
// must keep every hash.
|
|
13
|
+
import { tokens } from "../../tokens/generated/tokens.js";
|
|
13
14
|
import { drawn, el, g } from "./node.js";
|
|
15
|
+
import { surfaceParam } from "./ink.js";
|
|
14
16
|
import { colour, pos } from "./params.js";
|
|
15
17
|
import { definePiece } from "./piece.js";
|
|
16
18
|
const c = (path) => colour(path);
|
|
@@ -20,10 +22,59 @@ export const MASCOT_ACTIONS = ["none", "rest", "wave", "hold", "reach", "up", "s
|
|
|
20
22
|
export const EMOTE_KINDS = ["idea", "doubt", "problem", "worked", "refused", "pressure", "liked", "waiting"];
|
|
21
23
|
const ink = () => c("color.ink");
|
|
22
24
|
const O = () => ({ stroke: ink(), "stroke-width": 4, "stroke-linejoin": "round" });
|
|
23
|
-
|
|
25
|
+
// Every hard shadow is made by `hard`, so the dark drawing finds it by identity, not by its look.
|
|
26
|
+
const SHADOWS = new WeakSet();
|
|
27
|
+
const hard = (n) => (SHADOWS.add(n), n);
|
|
28
|
+
const shade = (d, dx = 8) => hard(el("path", { d, fill: ink(), transform: `translate(${dx} ${dx})` }));
|
|
24
29
|
const solid = (d, fill, dx = 8) => [shade(d, dx), el("path", { d, fill, ...O() })];
|
|
25
30
|
const shine = (d, col) => el("path", { d, fill: "none", stroke: col, "stroke-width": 9, "stroke-linecap": "round" });
|
|
26
31
|
const rr = (x, y, w, h, r) => `M${x + r},${y} H${x + w - r} Q${x + w},${y} ${x + w},${y + r} V${y + h - r} Q${x + w},${y + h} ${x + w - r},${y + h} H${x + r} Q${x},${y + h} ${x},${y + h - r} V${y + r} Q${x},${y} ${x + r},${y} Z`;
|
|
32
|
+
// ---------------------------------------------------------------- dark surface (card 187)
|
|
33
|
+
// On the dark surface (ADR 0003 amendment) the light drawing is rewritten, so the
|
|
34
|
+
// light output stays the frozen 0.5.0 tree: each hard shadow (made by `hard`) takes the surface's
|
|
35
|
+
// shadow colour, the ground takes the surface's grid colour, and a light rim
|
|
36
|
+
// (the drawing in the rim colour, every stroke widened by 2 × 2 × rimWidth) sits
|
|
37
|
+
// behind the whole outline, arms and legs included. The face is unchanged.
|
|
38
|
+
const walk = (n, f) => {
|
|
39
|
+
const m = f(n);
|
|
40
|
+
if (!m)
|
|
41
|
+
return null;
|
|
42
|
+
const kids = m.children.map((k) => (typeof k === "string" ? k : walk(k, f))).filter((k) => k !== null);
|
|
43
|
+
return { ...m, children: kids };
|
|
44
|
+
};
|
|
45
|
+
const part = (n) => String(n.attrs["data-part"] ?? "");
|
|
46
|
+
const onDark = (n) => {
|
|
47
|
+
const d = tokens.surface.dark;
|
|
48
|
+
return walk(n, (x) => {
|
|
49
|
+
if (SHADOWS.has(x))
|
|
50
|
+
return { ...x, attrs: { ...x.attrs, fill: d.shadow } };
|
|
51
|
+
if (part(x) === "ground")
|
|
52
|
+
return { ...x, children: x.children.map((k) => (typeof k === "string" ? k : { ...k, attrs: { ...k.attrs, fill: d.grid } })) };
|
|
53
|
+
return x;
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
const rimOf = (n) => {
|
|
57
|
+
const d = tokens.surface.dark;
|
|
58
|
+
return walk(n, (x) => {
|
|
59
|
+
if (SHADOWS.has(x) || ["ground", "face"].includes(part(x)) || x.attrs.opacity !== undefined)
|
|
60
|
+
return null;
|
|
61
|
+
if (x.tag === "g")
|
|
62
|
+
return x;
|
|
63
|
+
const sw = x.attrs.stroke !== undefined && x.attrs.stroke !== "none" ? Number(x.attrs["stroke-width"] ?? 4) : 0;
|
|
64
|
+
const attrs = { ...x.attrs, stroke: d.rim, "stroke-width": sw + 4 * d.rimWidth, "stroke-linejoin": "round" };
|
|
65
|
+
if (x.attrs.fill !== undefined && x.attrs.fill !== "none")
|
|
66
|
+
attrs.fill = d.rim;
|
|
67
|
+
return { ...x, attrs };
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
/** The light drawing redrawn for the dark surface: ground, rim, then the drawing. */
|
|
71
|
+
const darken = (root) => {
|
|
72
|
+
// The rim is taken from the light tree, where shadows are still known by identity.
|
|
73
|
+
const isGround = (k) => typeof k === "object" && part(k) === "ground";
|
|
74
|
+
const rim = rimOf({ ...root, attrs: {}, children: root.children.filter((k) => !isGround(k)) });
|
|
75
|
+
const dark = onDark(root);
|
|
76
|
+
return { ...dark, children: [...dark.children.filter(isGround), ...(rim ? [g({ "data-part": "rim" }, ...rim.children)] : []), ...dark.children.filter((k) => !isGround(k))] };
|
|
77
|
+
};
|
|
27
78
|
// ---------------------------------------------------------------- face (macs.ts)
|
|
28
79
|
export const face = (cx, cy, f, col, mouthFill) => {
|
|
29
80
|
const k = 1, dx = 24 * k;
|
|
@@ -206,7 +257,7 @@ const drawMascot = (p) => {
|
|
|
206
257
|
parts = [...parts, g({ "data-part": "head", transform: `rotate(${tilt} ${top[0]} ${top[1]})` }, ...solid(rr(top[0] - 96, 0, 192, 132, 22), c("color.white")), el("path", { d: rr(top[0] - 80, 14, 160, 104, 12), fill: c("illustration.codePanel"), stroke: ink(), "stroke-width": 4 }), faceWrapped)];
|
|
207
258
|
}
|
|
208
259
|
const root = g({ "data-mascot": p.who, transform: `translate(${p.x} ${p.y}) scale(${k}) translate(${-ax} ${-ay})`, stroke: "none" }, g({ "data-part": "ground" }, el("ellipse", { cx: ax, cy: ay, rx: ch.ground, ry: 9, fill: c("cast.ground") })), ...(front ? [] : arms), legs, ...parts, ch.faceInHead ? null : faceWrapped, showProp ? g({ "data-part": "prop" }, ...ch.prop()) : null, ...(front ? arms : []));
|
|
209
|
-
return drawn([root]);
|
|
260
|
+
return drawn([p.surface === "dark" ? darken(root) : root]);
|
|
210
261
|
};
|
|
211
262
|
// ---------------------------------------------------------------- emotes (emotes.ts)
|
|
212
263
|
const rays = (cx, cy, r1, r2, n, from = -150, to = -30) => Array.from({ length: n }, (_, i) => {
|
|
@@ -215,7 +266,7 @@ const rays = (cx, cy, r1, r2, n, from = -150, to = -30) => Array.from({ length:
|
|
|
215
266
|
return el("path", { d: `M${r(cx + r1 * Math.cos(a))},${r(cy + r1 * Math.sin(a))} L${r(cx + r2 * Math.cos(a))},${r(cy + r2 * Math.sin(a))}`, stroke: ink(), "stroke-width": 6, "stroke-linecap": "round" });
|
|
216
267
|
});
|
|
217
268
|
const EO = () => ({ stroke: ink(), "stroke-width": 5, "stroke-linejoin": "round", "stroke-linecap": "round" });
|
|
218
|
-
const disc = (cx, cy, r, fill) => [el("circle", { cx: cx + 6, cy: cy + 6, r, fill: ink() }), el("circle", { cx, cy, r, fill, ...EO() })];
|
|
269
|
+
const disc = (cx, cy, r, fill) => [hard(el("circle", { cx: cx + 6, cy: cy + 6, r, fill: ink() })), el("circle", { cx, cy, r, fill, ...EO() })];
|
|
219
270
|
const zed = (x, y, s) => {
|
|
220
271
|
// A Z of height s with its top-left at (x, y - s): ink casing, caller fill.
|
|
221
272
|
const w = s * 0.72, d = `M${x},${y - s} H${x + w} L${x},${y} H${x + w}`;
|
|
@@ -230,7 +281,7 @@ const drawEmote = (p) => {
|
|
|
230
281
|
if (burst)
|
|
231
282
|
parts.push(el("circle", { cx, cy: cy - 6, r: 62, fill: c("color.transitional"), opacity: 0.35 }), ...rays(cx, cy - 6, 50, 72, 7, -180, 0));
|
|
232
283
|
const bulb = `M${cx - 30},${cy - 10} A34,34 0 1 1 ${cx + 30},${cy - 10} Q${cx + 22},${cy + 6} ${cx + 18},${cy + 22} H${cx - 18} Q${cx - 22},${cy + 6} ${cx - 30},${cy - 10} Z`;
|
|
233
|
-
parts.push(el("path", { d: bulb, fill: ink(), transform: "translate(6 6)" }), el("path", { d: bulb, fill: c("color.transitional"), ...EO() }), el("path", { d: `M${cx - 16},${cy - 22} Q${cx - 12},${cy - 32} ${cx - 2},${cy - 34}`, fill: "none", stroke: c("color.white"), "stroke-width": 6, "stroke-linecap": "round" }), el("path", { d: `M${cx - 8},${cy + 22} V${cy} L${cx},${cy + 8} L${cx + 8},${cy} V${cy + 22}`, fill: "none", stroke: ink(), "stroke-width": 4, "stroke-linejoin": "round" }), el("rect", { x: cx - 18, y: cy + 22, width: 36, height: 12, rx: 3, fill: c("cast.metal"), ...EO(), "stroke-width": 4 }), el("rect", { x: cx - 14, y: cy + 34, width: 28, height: 10, rx: 5, fill: c("cast.metal"), ...EO(), "stroke-width": 4 }));
|
|
284
|
+
parts.push(hard(el("path", { d: bulb, fill: ink(), transform: "translate(6 6)" })), el("path", { d: bulb, fill: c("color.transitional"), ...EO() }), el("path", { d: `M${cx - 16},${cy - 22} Q${cx - 12},${cy - 32} ${cx - 2},${cy - 34}`, fill: "none", stroke: c("color.white"), "stroke-width": 6, "stroke-linecap": "round" }), el("path", { d: `M${cx - 8},${cy + 22} V${cy} L${cx},${cy + 8} L${cx + 8},${cy} V${cy + 22}`, fill: "none", stroke: ink(), "stroke-width": 4, "stroke-linejoin": "round" }), el("rect", { x: cx - 18, y: cy + 22, width: 36, height: 12, rx: 3, fill: c("cast.metal"), ...EO(), "stroke-width": 4 }), el("rect", { x: cx - 14, y: cy + 34, width: 28, height: 10, rx: 5, fill: c("cast.metal"), ...EO(), "stroke-width": 4 }));
|
|
234
285
|
break;
|
|
235
286
|
}
|
|
236
287
|
case "doubt":
|
|
@@ -239,7 +290,7 @@ const drawEmote = (p) => {
|
|
|
239
290
|
case "problem":
|
|
240
291
|
if (burst)
|
|
241
292
|
parts.push(...rays(cx, cy, 48, 70, 5));
|
|
242
|
-
parts.push(el("path", { d: `M${cx},${cy - 44} L${cx + 46},${cy + 34} H${cx - 46} Z`, fill: ink(), transform: "translate(6 6)" }), el("path", { d: `M${cx},${cy - 44} L${cx + 46},${cy + 34} H${cx - 46} Z`, fill: c("color.failure"), ...EO() }), el("path", { d: `M${cx},${cy - 18} V${cy + 8}`, stroke: ink(), "stroke-width": 9, "stroke-linecap": "round" }), el("circle", { cx, cy: cy + 22, r: 5.5, fill: ink() }));
|
|
293
|
+
parts.push(hard(el("path", { d: `M${cx},${cy - 44} L${cx + 46},${cy + 34} H${cx - 46} Z`, fill: ink(), transform: "translate(6 6)" })), el("path", { d: `M${cx},${cy - 44} L${cx + 46},${cy + 34} H${cx - 46} Z`, fill: c("color.failure"), ...EO() }), el("path", { d: `M${cx},${cy - 18} V${cy + 8}`, stroke: ink(), "stroke-width": 9, "stroke-linecap": "round" }), el("circle", { cx, cy: cy + 22, r: 5.5, fill: ink() }));
|
|
243
294
|
break;
|
|
244
295
|
case "pressure":
|
|
245
296
|
for (const [dx, dy, k] of [[0, 0, 1], [30, 22, 0.6]])
|
|
@@ -261,7 +312,8 @@ const drawEmote = (p) => {
|
|
|
261
312
|
break;
|
|
262
313
|
}
|
|
263
314
|
const attrs = s === 1 ? { "data-emote": kind, stroke: "none" } : { "data-emote": kind, stroke: "none", transform: `translate(${cx} ${cy}) scale(${s}) translate(${-cx} ${-cy})` };
|
|
264
|
-
|
|
315
|
+
const root = g(attrs, ...parts);
|
|
316
|
+
return drawn([p.surface === "dark" ? darken(root) : root]);
|
|
265
317
|
};
|
|
266
318
|
const unit = { kind: "number", min: 0, exclusiveMin: true, max: 10 };
|
|
267
319
|
/** One character standing with the centre of its ground line at (x, y). */
|
|
@@ -275,6 +327,7 @@ export const mascot = definePiece("mascot", {
|
|
|
275
327
|
look: { kind: "number", min: -1, max: 1 },
|
|
276
328
|
headTilt: { kind: "number", min: -30, max: 30 },
|
|
277
329
|
prop: { kind: "boolean" },
|
|
330
|
+
surface: surfaceParam,
|
|
278
331
|
}, drawMascot, ({ who, headTilt }) => (headTilt !== undefined && headTilt !== 0 && who !== "agent" ? [{ path: "headTilt", message: "applies only to the agent" }] : []));
|
|
279
332
|
/** One reaction symbol with a fixed meaning, centred on (x, y), beside a head. */
|
|
280
|
-
export const emote = definePiece("emote", { kind: { kind: "enum", required: true, values: EMOTE_KINDS }, x: pos(), y: pos(), scale: unit, burst: { kind: "boolean" } }, drawEmote);
|
|
333
|
+
export const emote = definePiece("emote", { kind: { kind: "enum", required: true, values: EMOTE_KINDS }, x: pos(), y: pos(), scale: unit, burst: { kind: "boolean" }, surface: surfaceParam }, drawEmote);
|
package/dist/src/pieces/ink.d.ts
CHANGED
|
@@ -15,6 +15,10 @@ export declare const limits: (...checks: (Problem | false)[]) => Problem[];
|
|
|
15
15
|
/** The surface's colours and the ink measures at a scale. */
|
|
16
16
|
export declare const inkOf: ({ surface, inkScale }: Ink) => {
|
|
17
17
|
s: {
|
|
18
|
+
readonly backdropCredit: "#9AA6D6";
|
|
19
|
+
readonly backdropPark: "#183F52";
|
|
20
|
+
readonly backdropWater: "#1E3175";
|
|
21
|
+
readonly backdropWaterEdge: "#2A3F8A";
|
|
18
22
|
readonly background: "#14215A";
|
|
19
23
|
readonly grid: "#1C2D74";
|
|
20
24
|
readonly muted: "#8F9BD0";
|
|
@@ -25,6 +29,10 @@ export declare const inkOf: ({ surface, inkScale }: Ink) => {
|
|
|
25
29
|
readonly text: "#EEF2FF";
|
|
26
30
|
readonly zoneOpacity: 0.22;
|
|
27
31
|
} | {
|
|
32
|
+
readonly backdropCredit: "#5A6385";
|
|
33
|
+
readonly backdropPark: "#D4F2DF";
|
|
34
|
+
readonly backdropWater: "#C9D8FF";
|
|
35
|
+
readonly backdropWaterEdge: "#B5C7F5";
|
|
28
36
|
readonly background: "#EEF2FF";
|
|
29
37
|
readonly grid: "#E0E7FB";
|
|
30
38
|
readonly muted: "#5B6694";
|
|
@@ -275,6 +275,10 @@ export declare const tokens: {
|
|
|
275
275
|
};
|
|
276
276
|
readonly surface: {
|
|
277
277
|
readonly dark: {
|
|
278
|
+
readonly backdropCredit: "#9AA6D6";
|
|
279
|
+
readonly backdropPark: "#183F52";
|
|
280
|
+
readonly backdropWater: "#1E3175";
|
|
281
|
+
readonly backdropWaterEdge: "#2A3F8A";
|
|
278
282
|
readonly background: "#14215A";
|
|
279
283
|
readonly grid: "#1C2D74";
|
|
280
284
|
readonly muted: "#8F9BD0";
|
|
@@ -286,6 +290,10 @@ export declare const tokens: {
|
|
|
286
290
|
readonly zoneOpacity: 0.22;
|
|
287
291
|
};
|
|
288
292
|
readonly light: {
|
|
293
|
+
readonly backdropCredit: "#5A6385";
|
|
294
|
+
readonly backdropPark: "#D4F2DF";
|
|
295
|
+
readonly backdropWater: "#C9D8FF";
|
|
296
|
+
readonly backdropWaterEdge: "#B5C7F5";
|
|
289
297
|
readonly background: "#EEF2FF";
|
|
290
298
|
readonly grid: "#E0E7FB";
|
|
291
299
|
readonly muted: "#5B6694";
|
|
@@ -276,6 +276,10 @@ export const tokens = {
|
|
|
276
276
|
},
|
|
277
277
|
"surface": {
|
|
278
278
|
"dark": {
|
|
279
|
+
"backdropCredit": "#9AA6D6",
|
|
280
|
+
"backdropPark": "#183F52",
|
|
281
|
+
"backdropWater": "#1E3175",
|
|
282
|
+
"backdropWaterEdge": "#2A3F8A",
|
|
279
283
|
"background": "#14215A",
|
|
280
284
|
"grid": "#1C2D74",
|
|
281
285
|
"muted": "#8F9BD0",
|
|
@@ -287,6 +291,10 @@ export const tokens = {
|
|
|
287
291
|
"zoneOpacity": 0.22
|
|
288
292
|
},
|
|
289
293
|
"light": {
|
|
294
|
+
"backdropCredit": "#5A6385",
|
|
295
|
+
"backdropPark": "#D4F2DF",
|
|
296
|
+
"backdropWater": "#C9D8FF",
|
|
297
|
+
"backdropWaterEdge": "#B5C7F5",
|
|
290
298
|
"background": "#EEF2FF",
|
|
291
299
|
"grid": "#E0E7FB",
|
|
292
300
|
"muted": "#5B6694",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brunosouzas/design-system",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.3",
|
|
4
4
|
"description": "Design tokens and illustration pieces of brunosouzas.com: tokens as CSS, JSON and TypeScript, pieces that draw SVG (and React), and a cover command.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -176,6 +176,10 @@
|
|
|
176
176
|
--ds-site-light-text: #444444;
|
|
177
177
|
--ds-site-light-text-dark: #040404;
|
|
178
178
|
--ds-site-light-text-light: #717171;
|
|
179
|
+
--ds-surface-dark-backdrop-credit: #9AA6D6;
|
|
180
|
+
--ds-surface-dark-backdrop-park: #183F52;
|
|
181
|
+
--ds-surface-dark-backdrop-water: #1E3175;
|
|
182
|
+
--ds-surface-dark-backdrop-water-edge: #2A3F8A;
|
|
179
183
|
--ds-surface-dark-background: #14215A;
|
|
180
184
|
--ds-surface-dark-grid: #1C2D74;
|
|
181
185
|
--ds-surface-dark-muted: #8F9BD0;
|
|
@@ -185,6 +189,10 @@
|
|
|
185
189
|
--ds-surface-dark-shadow: #4C5CB8;
|
|
186
190
|
--ds-surface-dark-text: #EEF2FF;
|
|
187
191
|
--ds-surface-dark-zone-opacity: 0.22;
|
|
192
|
+
--ds-surface-light-backdrop-credit: #5A6385;
|
|
193
|
+
--ds-surface-light-backdrop-park: #D4F2DF;
|
|
194
|
+
--ds-surface-light-backdrop-water: #C9D8FF;
|
|
195
|
+
--ds-surface-light-backdrop-water-edge: #B5C7F5;
|
|
188
196
|
--ds-surface-light-background: #EEF2FF;
|
|
189
197
|
--ds-surface-light-grid: #E0E7FB;
|
|
190
198
|
--ds-surface-light-muted: #5B6694;
|
|
@@ -275,6 +275,10 @@
|
|
|
275
275
|
},
|
|
276
276
|
"surface": {
|
|
277
277
|
"dark": {
|
|
278
|
+
"backdropCredit": "#9AA6D6",
|
|
279
|
+
"backdropPark": "#183F52",
|
|
280
|
+
"backdropWater": "#1E3175",
|
|
281
|
+
"backdropWaterEdge": "#2A3F8A",
|
|
278
282
|
"background": "#14215A",
|
|
279
283
|
"grid": "#1C2D74",
|
|
280
284
|
"muted": "#8F9BD0",
|
|
@@ -286,6 +290,10 @@
|
|
|
286
290
|
"zoneOpacity": 0.22
|
|
287
291
|
},
|
|
288
292
|
"light": {
|
|
293
|
+
"backdropCredit": "#5A6385",
|
|
294
|
+
"backdropPark": "#D4F2DF",
|
|
295
|
+
"backdropWater": "#C9D8FF",
|
|
296
|
+
"backdropWaterEdge": "#B5C7F5",
|
|
289
297
|
"background": "#EEF2FF",
|
|
290
298
|
"grid": "#E0E7FB",
|
|
291
299
|
"muted": "#5B6694",
|
|
@@ -277,6 +277,10 @@ export const tokens = {
|
|
|
277
277
|
},
|
|
278
278
|
"surface": {
|
|
279
279
|
"dark": {
|
|
280
|
+
"backdropCredit": "#9AA6D6",
|
|
281
|
+
"backdropPark": "#183F52",
|
|
282
|
+
"backdropWater": "#1E3175",
|
|
283
|
+
"backdropWaterEdge": "#2A3F8A",
|
|
280
284
|
"background": "#14215A",
|
|
281
285
|
"grid": "#1C2D74",
|
|
282
286
|
"muted": "#8F9BD0",
|
|
@@ -288,6 +292,10 @@ export const tokens = {
|
|
|
288
292
|
"zoneOpacity": 0.22
|
|
289
293
|
},
|
|
290
294
|
"light": {
|
|
295
|
+
"backdropCredit": "#5A6385",
|
|
296
|
+
"backdropPark": "#D4F2DF",
|
|
297
|
+
"backdropWater": "#C9D8FF",
|
|
298
|
+
"backdropWaterEdge": "#B5C7F5",
|
|
291
299
|
"background": "#EEF2FF",
|
|
292
300
|
"grid": "#E0E7FB",
|
|
293
301
|
"muted": "#5B6694",
|