@justai/cuts 0.147.0 → 0.149.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 +1 -1
- package/src/BackToZone.astro +62 -15
package/package.json
CHANGED
package/src/BackToZone.astro
CHANGED
|
@@ -11,9 +11,12 @@
|
|
|
11
11
|
// to keep the behaviour it already has. A pin.games citizen passes apex="pin.games".
|
|
12
12
|
//
|
|
13
13
|
// THE TWO MARKS ARE SIBLINGS, DRAWN THE SAME WAY. app.zone is four separated corner brackets around a
|
|
14
|
-
// centre — a zone is the space the corners enclose. pin.games is three
|
|
15
|
-
//
|
|
16
|
-
//
|
|
14
|
+
// centre — a zone is the space the corners enclose. pin.games is three vertex brackets around a play
|
|
15
|
+
// triangle, drawn with app.zone's own part (pin-games, 2026-08-25). The zone has four corners; the
|
|
16
|
+
// play has three. City in Motion is a marker: two chevrons, the circle its head (app-zone,
|
|
17
|
+
// the-family-of-marks). Same
|
|
18
|
+
// radii, same palette, same idea of a figure assembled from pieces, which is what keeps them reading
|
|
19
|
+
// as one family at 20px.
|
|
17
20
|
//
|
|
18
21
|
// Home affordance → the apex (the platform / App Store home). Standard on every app:
|
|
19
22
|
// always visible at the top-left of the toolbar. Also tidies the ?ref / ?lang hints
|
|
@@ -42,6 +45,13 @@
|
|
|
42
45
|
// lighting was never visible at this size, and in one flat ink there is nothing to shade. The
|
|
43
46
|
// geometry here is a second copy of the one in that file, which is authored by hand and generated by
|
|
44
47
|
// nothing — a redraw has to be carried across to this component as well.
|
|
48
|
+
//
|
|
49
|
+
// queries: the pin.games logo in the toolbar is old · a redrawn apex mark did not reach the personas
|
|
50
|
+
//
|
|
51
|
+
// AND IT WAS NOT, ONCE. pin.games redrew its mark on 2026-08-25 (three bars became three brackets
|
|
52
|
+
// around a play triangle) and this copy kept the bars for six weeks, on every game persona, until the
|
|
53
|
+
// founder saw it on 2026-10-05. Nothing compared the two. A redraw of an apex's public/mark.svg is
|
|
54
|
+
// not finished until this file carries it and the fleet is bumped (publishing-a-cut-is-not-shipping-it).
|
|
45
55
|
interface Props {
|
|
46
56
|
/**
|
|
47
57
|
* Which storefront "home" means here. Defaults to app.zone — the fleet as it stood.
|
|
@@ -75,7 +85,11 @@ const href = `https://${apex}`;
|
|
|
75
85
|
* It self-corrects: the day a household has a mark here, every persona under it grows the affordance
|
|
76
86
|
* on its next build, with no persona-level change anywhere.
|
|
77
87
|
*/
|
|
78
|
-
|
|
88
|
+
//
|
|
89
|
+
// cityinmotion.nl joined the table on 2026-10-05. For six weeks its personas had declined the control,
|
|
90
|
+
// exactly as written above — the honest outcome while there was no mark here, and a missing way home
|
|
91
|
+
// once there was one: every CiM persona already passed apex="cityinmotion.nl" and was waiting for it.
|
|
92
|
+
const MARKS = ["app.zone", "pin.games", "cityinmotion.nl"];
|
|
79
93
|
const drawable = MARKS.includes(apex);
|
|
80
94
|
|
|
81
95
|
// queries: the home mark is missing arms · the mark is the wrong size · 36px · scoped styles do
|
|
@@ -99,10 +113,23 @@ const drawable = MARKS.includes(apex);
|
|
|
99
113
|
{drawable && (
|
|
100
114
|
<a class="home" href={href} data-home aria-label={apex} title={apex}>
|
|
101
115
|
{apex === "pin.games" ? (
|
|
102
|
-
<svg class="pgmark" viewBox="
|
|
103
|
-
<
|
|
104
|
-
<
|
|
105
|
-
<
|
|
116
|
+
<svg class="pgmark" viewBox="-48.45 -332.01 654.02 664.02" aria-hidden="true">
|
|
117
|
+
<path class="arm a1" d="M115.37 -319.24L266.42 -240.14A17.93 17.93 0 0 1 273.99 -215.94L245.67 -161.86A17.93 17.93 0 0 1 221.47 -154.29L70.41 -233.39A15 15 0 0 0 48.45 -220.11L48.45 -70.77A17.93 17.93 0 0 1 30.53 -52.84L-30.53 -52.84A17.93 17.93 0 0 1 -48.45 -70.77L-48.45 -220.11A111.91 111.91 0 0 1 115.37 -319.24Z"/>
|
|
118
|
+
<path class="arm a2" d="M-48.45 220.11L-48.45 70.77A17.93 17.93 0 0 1 -30.53 52.84L30.53 52.84A17.93 17.93 0 0 1 48.45 70.77L48.45 220.11A15 15 0 0 0 70.41 233.39L221.47 154.29A17.93 17.93 0 0 1 245.67 161.86L273.99 215.94A17.93 17.93 0 0 1 266.42 240.14L115.37 319.24A111.91 111.91 0 0 1 -48.45 220.11Z"/>
|
|
119
|
+
<path class="arm a3" d="M550.15 91.57L399.09 170.67A17.93 17.93 0 0 1 374.89 163.1L346.57 109.02A17.93 17.93 0 0 1 354.14 84.82L505.19 5.72A6.45 6.45 0 0 0 505.19 -5.72L354.14 -84.82A17.93 17.93 0 0 1 346.57 -109.02L374.89 -163.1A17.93 17.93 0 0 1 399.09 -170.67L550.15 -91.57A103.36 103.36 0 0 1 550.15 91.57Z"/>
|
|
120
|
+
<path class="ctr" d="M158.3 -92.3Q143.0 -100.3 143.0 -83.1L143.0 83.1Q143.0 100.3 158.3 92.3L319.3 8.0Q334.6 0.0 319.3 -8.0Z"/>
|
|
121
|
+
</svg>
|
|
122
|
+
) : apex === "cityinmotion.nl" ? (
|
|
123
|
+
<svg class="cimmark" viewBox="-353.2 -386.42 706.39 725.18" aria-hidden="true">
|
|
124
|
+
<g transform="scale(1.04)">
|
|
125
|
+
<path class="arm a1" d="M-110.04 -35.11L-333.8 -240.15A17.93 17.93 0 0 1 -334.9 -265.48L-293.66 -310.49A17.93 17.93 0 0 1 -268.33 -311.6L-44.57 -106.56A65.97 65.97 0 0 0 44.57 -106.56L268.33 -311.6A17.93 17.93 0 0 1 293.66 -310.49L334.9 -265.48A17.93 17.93 0 0 1 333.8 -240.15L110.04 -35.11A162.88 162.88 0 0 1 -110.04 -35.11Z"/>
|
|
126
|
+
<path class="arm a2" d="M-110.04 282.94L-333.8 77.9A17.93 17.93 0 0 1 -334.9 52.57L-293.66 7.56A17.93 17.93 0 0 1 -268.33 6.46L-44.57 211.49A65.97 65.97 0 0 0 44.57 211.49L268.33 6.46A17.93 17.93 0 0 1 293.66 7.56L334.9 52.57A17.93 17.93 0 0 1 333.8 77.9L110.04 282.94A162.88 162.88 0 0 1 -110.04 282.94Z"/>
|
|
127
|
+
<circle class="ctr" cx="0" cy="-278.85" r="92.71"/>
|
|
128
|
+
</g>
|
|
129
|
+
<defs>
|
|
130
|
+
<linearGradient id="cimHome1" x1="0" y1="-287.99" x2="0" y2="96.91" gradientUnits="userSpaceOnUse"><stop stop-color="#5285DC"/><stop offset="1" stop-color="#2E62C6"/></linearGradient>
|
|
131
|
+
<linearGradient id="cimHome2" x1="0" y1="30.07" x2="0" y2="414.96" gradientUnits="userSpaceOnUse"><stop stop-color="#F2694A"/><stop offset="1" stop-color="#E04A30"/></linearGradient>
|
|
132
|
+
</defs>
|
|
106
133
|
</svg>
|
|
107
134
|
) : (
|
|
108
135
|
<svg class="azmark" viewBox="-8.5 0 928 928" aria-hidden="true">
|
|
@@ -140,16 +167,36 @@ const drawable = MARKS.includes(apex);
|
|
|
140
167
|
.azmark .arm,
|
|
141
168
|
.azmark .ctr { fill: currentColor; }
|
|
142
169
|
|
|
143
|
-
/* queries: the home icon is smaller than the other glyphs · 20px of ink · pgmark size
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
170
|
+
/* queries: the home icon is smaller than the other glyphs · 20px of ink · pgmark size · the
|
|
171
|
+
pin.games mark in the toolbar is the old one · three bars instead of three brackets
|
|
172
|
+
FILLED, AND THE viewBox IS THE INK'S OWN BOUNDS — measured from the paths, arcs included, not
|
|
173
|
+
copied from mark.svg, whose viewBox carries a margin. The ink is 654 by 664 units, so in the 20px
|
|
174
|
+
box it paints 20px tall, level with the glyphs beside it.
|
|
175
|
+
THE CENTRE IS INK AT REST for the reason app.zone's is: in one colour a knocked-out triangle would
|
|
176
|
+
be a gap the mark does not have. Engaged, it takes the ground's cream or charcoal, the same pair
|
|
177
|
+
pin.games' own favicon and toolbar use. */
|
|
178
|
+
.pgmark .arm,
|
|
179
|
+
.pgmark .ctr { fill: currentColor; }
|
|
150
180
|
.home:hover .pgmark .a1, .home:focus-visible .pgmark .a1 { fill: #3D6FD9; }
|
|
151
181
|
.home:hover .pgmark .a2, .home:focus-visible .pgmark .a2 { fill: #E8503A; }
|
|
152
182
|
.home:hover .pgmark .a3, .home:focus-visible .pgmark .a3 { fill: #F5A623; }
|
|
183
|
+
.home:hover .pgmark .ctr, .home:focus-visible .pgmark .ctr { fill: #F5F1E8; }
|
|
184
|
+
@media (prefers-color-scheme: light) {
|
|
185
|
+
:global(html:not([data-theme="dark"])) .home:hover .pgmark .ctr, :global(html:not([data-theme="dark"])) .home:focus-visible .pgmark .ctr { fill: #2B2724; }
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* queries: City in Motion's mark in the toolbar · cimmark · the CiM home control
|
|
189
|
+
cityinmotion.nl's own public/mark.svg, unlit, by the same rules: a marker, two chevrons and the
|
|
190
|
+
circle for its head, the viewBox the ink's own bounds (measured with the arcs and the 1.04 scale the apex draws
|
|
191
|
+
at), ink at rest, its own gradients and the ground's centre when engaged. */
|
|
192
|
+
.cimmark .arm,
|
|
193
|
+
.cimmark .ctr { fill: currentColor; }
|
|
194
|
+
.home:hover .cimmark .a1, .home:focus-visible .cimmark .a1 { fill: url(#cimHome1); }
|
|
195
|
+
.home:hover .cimmark .a2, .home:focus-visible .cimmark .a2 { fill: url(#cimHome2); }
|
|
196
|
+
.home:hover .cimmark .ctr, .home:focus-visible .cimmark .ctr { fill: #F5F1E8; }
|
|
197
|
+
@media (prefers-color-scheme: light) {
|
|
198
|
+
:global(html:not([data-theme="dark"])) .home:hover .cimmark .ctr, :global(html:not([data-theme="dark"])) .home:focus-visible .cimmark .ctr { fill: #2B2724; }
|
|
199
|
+
}
|
|
153
200
|
|
|
154
201
|
.home:hover .azmark .a1, .home:focus-visible .azmark .a1 { fill: url(#azHome1); }
|
|
155
202
|
.home:hover .azmark .a2, .home:focus-visible .azmark .a2 { fill: url(#azHome2); }
|