@skipleague/design 0.4.9 → 0.5.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/dist/AppLogo.d.ts +1 -1
- package/dist/AppLogo.js +18 -10
- package/package.json +1 -1
- package/src/AppLogo.tsx +55 -29
package/dist/AppLogo.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** A SkipLeague app's logo glyph (monoline, drawn on the brand tile). */
|
|
2
|
-
export type AppGlyph = "lists" | "racquetball" | "trips" | "gifts" | "reading" | "today" | "flow";
|
|
2
|
+
export type AppGlyph = "lists" | "racquetball" | "trips" | "gifts" | "reading" | "today" | "guide" | "flow";
|
|
3
3
|
/**
|
|
4
4
|
* The per-app logo mark — a brand-green rounded tile holding a white monoline
|
|
5
5
|
* glyph. Replaces the single-letter {@link AppBadge}; gives each SkipLeague app a
|
package/dist/AppLogo.js
CHANGED
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
// Exact 24×24 glyph paths (
|
|
3
|
-
// racquetball
|
|
2
|
+
// Exact 24×24 glyph paths (design_handoff_app_glyphs — the finalized round that
|
|
3
|
+
// fixed racquetball, trips, and flow and added the guide mark). `color` only
|
|
4
|
+
// matters for filled sub-shapes (e.g. the racquetball ball), which are filled
|
|
5
|
+
// rather than stroked.
|
|
4
6
|
function glyphPaths(app, color) {
|
|
5
7
|
switch (app) {
|
|
6
8
|
case "lists":
|
|
9
|
+
// Checklist ticks.
|
|
7
10
|
return (_jsxs(_Fragment, { children: [_jsx("path", { d: "M3.5 7l1.8 1.8L8.5 5.6" }), _jsx("path", { d: "M12.5 7H20.5" }), _jsx("path", { d: "M3.5 16l1.8 1.8L8.5 14.6" }), _jsx("path", { d: "M12.5 16.5H20.5" })] }));
|
|
8
11
|
case "racquetball":
|
|
9
|
-
|
|
12
|
+
// Racquet (teardrop head + handle rotated 40°) with a filled ball.
|
|
13
|
+
return (_jsxs(_Fragment, { children: [_jsxs("g", { transform: "rotate(40 10 9)", children: [_jsx("path", { d: "M10 3C13.2 3 14.8 5.6 14.8 8.4C14.8 11.4 12.6 13.6 10 15.6C7.4 13.6 5.2 11.4 5.2 8.4C5.2 5.6 6.8 3 10 3Z" }), _jsx("path", { d: "M10 15.6L10 21" })] }), _jsx("circle", { cx: "17.8", cy: "17", r: "2.3", fill: color, stroke: "none" })] }));
|
|
10
14
|
case "trips":
|
|
11
|
-
|
|
15
|
+
// Hard-shell suitcase: top handle and two clasps on the body.
|
|
16
|
+
return (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3.5", y: "8", width: "17", height: "11.5", rx: "2.2" }), _jsx("path", { d: "M8.5 8V6.2a1.6 1.6 0 0 1 1.6-1.6h3.8a1.6 1.6 0 0 1 1.6 1.6V8" }), _jsx("path", { d: "M9.5 12.4h1.8" }), _jsx("path", { d: "M12.7 12.4h1.8" })] }));
|
|
12
17
|
case "gifts":
|
|
13
|
-
// Gift box: lid band,
|
|
14
|
-
return (_jsxs(_Fragment, { children: [_jsx("
|
|
18
|
+
// Gift box: body, lid band, vertical ribbon, and a two-loop bow.
|
|
19
|
+
return (_jsxs(_Fragment, { children: [_jsx("path", { d: "M4 11h16v8.5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1z" }), _jsx("path", { d: "M3 7.5h18v3.5H3z" }), _jsx("path", { d: "M12 7.5v13" }), _jsx("path", { d: "M12 7.5C11 5.2 7.6 4.6 7.6 6.5C7.6 7.7 9.7 8 12 7.5z" }), _jsx("path", { d: "M12 7.5C13 5.2 16.4 4.6 16.4 6.5C16.4 7.7 14.3 8 12 7.5z" })] }));
|
|
15
20
|
case "reading":
|
|
16
21
|
// Open book: two pages meeting at a center spine.
|
|
17
|
-
return (_jsxs(_Fragment, { children: [_jsx("path", { d: "M12 6.
|
|
22
|
+
return (_jsxs(_Fragment, { children: [_jsx("path", { d: "M12 6.6C9.8 5.1 6.4 4.8 4 5.4v12.8c2.4-.6 5.8-.3 8 1.2 2.2-1.5 5.6-1.8 8-1.2V5.4c-2.4-.6-5.8-.3-8 1.2z" }), _jsx("path", { d: "M12 6.6v12.8" })] }));
|
|
18
23
|
case "today":
|
|
19
24
|
// Sun = "today" / the day.
|
|
20
|
-
return (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "
|
|
25
|
+
return (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "4" }), _jsx("path", { d: "M12 2.4v2.2" }), _jsx("path", { d: "M12 19.4v2.2" }), _jsx("path", { d: "M4.6 4.6l1.6 1.6" }), _jsx("path", { d: "M17.8 17.8l1.6 1.6" }), _jsx("path", { d: "M2.4 12h2.2" }), _jsx("path", { d: "M19.4 12h2.2" }), _jsx("path", { d: "M6.2 17.8l-1.6 1.6" }), _jsx("path", { d: "M17.8 6.2l1.6-1.6" })] }));
|
|
26
|
+
case "guide":
|
|
27
|
+
// Folded map.
|
|
28
|
+
return (_jsxs(_Fragment, { children: [_jsx("path", { d: "M9 4L3 6.4v13.6L9 17.6l6 2.4 6-2.4V6L15 8.4z" }), _jsx("path", { d: "M9 4v13.6" }), _jsx("path", { d: "M15 8.4V20" })] }));
|
|
21
29
|
case "flow":
|
|
22
|
-
// Two
|
|
30
|
+
// Two rounded cards linked by an elbow connector — orchestration
|
|
23
31
|
// ("when X happens, do Y").
|
|
24
|
-
return (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3", y: "
|
|
32
|
+
return (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3.5", y: "4.5", width: "7", height: "6", rx: "1.6" }), _jsx("rect", { x: "13.5", y: "13", width: "7", height: "6", rx: "1.6" }), _jsx("path", { d: "M10.5 7.5h2.5a2 2 0 0 1 2 2v3.5" })] }));
|
|
25
33
|
}
|
|
26
34
|
}
|
|
27
35
|
/**
|
package/package.json
CHANGED
package/src/AppLogo.tsx
CHANGED
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import type { CSSProperties, ReactNode } from "react";
|
|
2
2
|
|
|
3
3
|
/** A SkipLeague app's logo glyph (monoline, drawn on the brand tile). */
|
|
4
|
-
export type AppGlyph =
|
|
4
|
+
export type AppGlyph =
|
|
5
|
+
| "lists"
|
|
6
|
+
| "racquetball"
|
|
7
|
+
| "trips"
|
|
8
|
+
| "gifts"
|
|
9
|
+
| "reading"
|
|
10
|
+
| "today"
|
|
11
|
+
| "guide"
|
|
12
|
+
| "flow";
|
|
5
13
|
|
|
6
|
-
// Exact 24×24 glyph paths (
|
|
7
|
-
// racquetball
|
|
14
|
+
// Exact 24×24 glyph paths (design_handoff_app_glyphs — the finalized round that
|
|
15
|
+
// fixed racquetball, trips, and flow and added the guide mark). `color` only
|
|
16
|
+
// matters for filled sub-shapes (e.g. the racquetball ball), which are filled
|
|
17
|
+
// rather than stroked.
|
|
8
18
|
function glyphPaths(app: AppGlyph, color: string): ReactNode {
|
|
9
19
|
switch (app) {
|
|
10
20
|
case "lists":
|
|
21
|
+
// Checklist ticks.
|
|
11
22
|
return (
|
|
12
23
|
<>
|
|
13
24
|
<path d="M3.5 7l1.8 1.8L8.5 5.6" />
|
|
@@ -17,62 +28,77 @@ function glyphPaths(app: AppGlyph, color: string): ReactNode {
|
|
|
17
28
|
</>
|
|
18
29
|
);
|
|
19
30
|
case "racquetball":
|
|
31
|
+
// Racquet (teardrop head + handle rotated 40°) with a filled ball.
|
|
20
32
|
return (
|
|
21
33
|
<>
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
34
|
+
<g transform="rotate(40 10 9)">
|
|
35
|
+
<path d="M10 3C13.2 3 14.8 5.6 14.8 8.4C14.8 11.4 12.6 13.6 10 15.6C7.4 13.6 5.2 11.4 5.2 8.4C5.2 5.6 6.8 3 10 3Z" />
|
|
36
|
+
<path d="M10 15.6L10 21" />
|
|
37
|
+
</g>
|
|
38
|
+
<circle cx="17.8" cy="17" r="2.3" fill={color} stroke="none" />
|
|
25
39
|
</>
|
|
26
40
|
);
|
|
27
41
|
case "trips":
|
|
42
|
+
// Hard-shell suitcase: top handle and two clasps on the body.
|
|
28
43
|
return (
|
|
29
44
|
<>
|
|
30
|
-
<
|
|
31
|
-
<
|
|
45
|
+
<rect x="3.5" y="8" width="17" height="11.5" rx="2.2" />
|
|
46
|
+
<path d="M8.5 8V6.2a1.6 1.6 0 0 1 1.6-1.6h3.8a1.6 1.6 0 0 1 1.6 1.6V8" />
|
|
47
|
+
<path d="M9.5 12.4h1.8" />
|
|
48
|
+
<path d="M12.7 12.4h1.8" />
|
|
32
49
|
</>
|
|
33
50
|
);
|
|
34
51
|
case "gifts":
|
|
35
|
-
// Gift box: lid band,
|
|
52
|
+
// Gift box: body, lid band, vertical ribbon, and a two-loop bow.
|
|
36
53
|
return (
|
|
37
54
|
<>
|
|
38
|
-
<
|
|
39
|
-
<path d="
|
|
40
|
-
<path d="M12
|
|
41
|
-
<path d="M12
|
|
42
|
-
<path d="M12
|
|
55
|
+
<path d="M4 11h16v8.5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1z" />
|
|
56
|
+
<path d="M3 7.5h18v3.5H3z" />
|
|
57
|
+
<path d="M12 7.5v13" />
|
|
58
|
+
<path d="M12 7.5C11 5.2 7.6 4.6 7.6 6.5C7.6 7.7 9.7 8 12 7.5z" />
|
|
59
|
+
<path d="M12 7.5C13 5.2 16.4 4.6 16.4 6.5C16.4 7.7 14.3 8 12 7.5z" />
|
|
43
60
|
</>
|
|
44
61
|
);
|
|
45
62
|
case "reading":
|
|
46
63
|
// Open book: two pages meeting at a center spine.
|
|
47
64
|
return (
|
|
48
65
|
<>
|
|
49
|
-
<path d="M12 6.
|
|
50
|
-
<path d="M12 6.
|
|
66
|
+
<path d="M12 6.6C9.8 5.1 6.4 4.8 4 5.4v12.8c2.4-.6 5.8-.3 8 1.2 2.2-1.5 5.6-1.8 8-1.2V5.4c-2.4-.6-5.8-.3-8 1.2z" />
|
|
67
|
+
<path d="M12 6.6v12.8" />
|
|
51
68
|
</>
|
|
52
69
|
);
|
|
53
70
|
case "today":
|
|
54
71
|
// Sun = "today" / the day.
|
|
55
72
|
return (
|
|
56
73
|
<>
|
|
57
|
-
<circle cx="12" cy="12" r="
|
|
58
|
-
<path d="M12 2.
|
|
59
|
-
<path d="M12
|
|
60
|
-
<path d="
|
|
61
|
-
<path d="
|
|
62
|
-
<path d="
|
|
63
|
-
<path d="
|
|
64
|
-
<path d="
|
|
65
|
-
<path d="
|
|
74
|
+
<circle cx="12" cy="12" r="4" />
|
|
75
|
+
<path d="M12 2.4v2.2" />
|
|
76
|
+
<path d="M12 19.4v2.2" />
|
|
77
|
+
<path d="M4.6 4.6l1.6 1.6" />
|
|
78
|
+
<path d="M17.8 17.8l1.6 1.6" />
|
|
79
|
+
<path d="M2.4 12h2.2" />
|
|
80
|
+
<path d="M19.4 12h2.2" />
|
|
81
|
+
<path d="M6.2 17.8l-1.6 1.6" />
|
|
82
|
+
<path d="M17.8 6.2l1.6-1.6" />
|
|
83
|
+
</>
|
|
84
|
+
);
|
|
85
|
+
case "guide":
|
|
86
|
+
// Folded map.
|
|
87
|
+
return (
|
|
88
|
+
<>
|
|
89
|
+
<path d="M9 4L3 6.4v13.6L9 17.6l6 2.4 6-2.4V6L15 8.4z" />
|
|
90
|
+
<path d="M9 4v13.6" />
|
|
91
|
+
<path d="M15 8.4V20" />
|
|
66
92
|
</>
|
|
67
93
|
);
|
|
68
94
|
case "flow":
|
|
69
|
-
// Two
|
|
95
|
+
// Two rounded cards linked by an elbow connector — orchestration
|
|
70
96
|
// ("when X happens, do Y").
|
|
71
97
|
return (
|
|
72
98
|
<>
|
|
73
|
-
<rect x="3" y="
|
|
74
|
-
<rect x="13" y="13" width="
|
|
75
|
-
<path d="
|
|
99
|
+
<rect x="3.5" y="4.5" width="7" height="6" rx="1.6" />
|
|
100
|
+
<rect x="13.5" y="13" width="7" height="6" rx="1.6" />
|
|
101
|
+
<path d="M10.5 7.5h2.5a2 2 0 0 1 2 2v3.5" />
|
|
76
102
|
</>
|
|
77
103
|
);
|
|
78
104
|
}
|