@justai/cuts 0.124.0 → 0.125.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.
Files changed (2) hide show
  1. package/package.json +2 -2
  2. package/src/Toolbar.astro +39 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justai/cuts",
3
- "version": "0.124.0",
3
+ "version": "0.125.0",
4
4
  "description": "A persona's named parts — the page shell that holds them, and the cuts themselves.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@justai/core": "^0.32.0",
45
- "@justai/ui": "^0.21.0",
45
+ "@justai/ui": "^0.21.1",
46
46
  "@justai/atrium": "^0.1.9"
47
47
  }
48
48
  }
package/src/Toolbar.astro CHANGED
@@ -294,6 +294,45 @@ import AuthMount from "./AuthMount.astro";
294
294
  * there is nothing for an engine to compensate for — which is also why only a device ever showed
295
295
  * it: Blink scroll-anchors the step away and WebKit has no scroll anchoring. */
296
296
  .tb-slot { position: sticky; top: 0; z-index: 40; display: flow-root; }
297
+ /* queries: the title strip moves the fold · the page drifts after it lands · a band of posts under
298
+ * the game · tb-slot min-height · the slot follows the bar · the strip pushes the page down
299
+ *
300
+ * ── THE BOX IS THE SLOT'S OWN, SO IT TRAVELS WITH THE SLOT ─────────────────────────────────────
301
+ *
302
+ * `position: sticky` never leaves flow: it reserves its full border box, so whatever the bar's LIVE
303
+ * height is at any instant, that is where everything under it sits. The strip opens and closes over
304
+ * 0.35s inside that box — so without a reserved height the shell breathes 26px and the whole
305
+ * document below it breathes with it. That is the drift the founder lost days to.
306
+ *
307
+ * IT LIVED IN `@justai/ui`'s base.css UNTIL 2026-08-06, and measured on pin.games that was the same
308
+ * as not existing: a persona that never imports base.css got the slot's structure from here and its
309
+ * BOX from a file it does not load, so the slot collapsed to the bar and posts moved 26px between
310
+ * the kernel and the profile. The first law again — a component brings its own ground — and the
311
+ * slot is this component's element, so its box is this component's business. The rule that keeps
312
+ * the whole strip safe cannot be the one rule that lives somewhere the strip does not.
313
+ *
314
+ * AND THE RESERVED BAND WEARS THE BAR'S OWN MATERIAL, not the room's. A slot taller than its bar is
315
+ * 26px of SOMETHING under the shelf whenever the strip is shut — the state at the profile, on
316
+ * screen, at rest. Painted in the persona's ground it was a hard black band between a light profile
317
+ * and a light kernel: the founder photographed it within a minute. It is the BAR'S box, so it takes
318
+ * the bar's fill, bleeding by the same `--edge` expression so the two cannot leave slivers. */
319
+ .tb-slot { min-height: var(--shell-top, 78px); }
320
+ .tb-slot::before {
321
+ content: "";
322
+ position: absolute;
323
+ z-index: -1;
324
+ inset-block: 0;
325
+ inset-inline:
326
+ calc(-1 * max(var(--edge, 16px), env(safe-area-inset-left)))
327
+ calc(-1 * max(var(--edge, 16px), env(safe-area-inset-right)));
328
+ background: var(--toolbar-bg, #1e202a);
329
+ }
330
+ /* The shelf's fill has two branches and so must its box: `--toolbar-bg` is one token but its
331
+ FALLBACK differs by scheme, and a band carrying only the dark default is a black strip on a light
332
+ page — which is exactly what the founder photographed a minute after the first attempt. */
333
+ @media (prefers-color-scheme: light) {
334
+ .tb-slot::before { background: var(--toolbar-bg, #fbfcfe); }
335
+ }
297
336
  .toolbar {
298
337
  /* position, top and z-index live on .tb-slot above — this element is static inside it now. */
299
338
  display: flex; flex-direction: column;