editor-shell 0.17.0 → 0.19.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.
@@ -43,9 +43,72 @@
43
43
  `calc()` off it, which would claim an arithmetic relationship that does not
44
44
  exist: 28 was measured, it is not "10 plus 18". The max() is what makes this a
45
45
  FLOOR rather than a default — raise the token past a rhythm and that row rises
46
- with it instead of quietly staying tighter than everything around it. */
46
+ with it instead of quietly staying tighter than everything around it.
47
+
48
+ NOW 16, AND 10 WAS WORTH NOTHING ON SCREEN (card 66206). 66203 shipped the
49
+ token at 10 and Lewis could see no change at all, which is not a bug in it —
50
+ it is what a floor of 10 was always going to do here. Four of the six gaps
51
+ (36, 28, 16, 14) were already above it, and of the two that were not, one is
52
+ the dead `.es-group + .es-group` rule below. So 10 could only ever reach the
53
+ drill list, and there it landed on the number that list already had.
54
+
55
+ 16 is Lewis's own, picked on 2026-08-28 once that was shown to him, and it is
56
+ the first value that moves anything a merchant looks at. MEASURED in Chromium
57
+ against these stylesheets (`tests/fixtures/panel-row-spacing.html`):
58
+
59
+ one drill row to the next, word to word 23.40px → 35.40px
60
+ a group head to its first setting 14px → 16px
61
+ one setting to the next 28px unchanged
62
+ a one-line boolean row 16px unchanged
63
+ a heading, after the row above it 36px unchanged
64
+
65
+ The three measured rhythms do not move because 16 is still under them, which
66
+ is the floor doing exactly what it was built to do. */
67
+ /* ── the rhythms: the numbers under the floor, given names (card 66228) ────── */
68
+
69
+ /* THE FLOOR ABOVE IS NOT THE RHYTHM, and handing a consumer the floor was the
70
+ whole problem. `--es-row-gap` answers 16 for all five gaps below alike; what
71
+ the storefront's Layers tree needs in order to "follow the shell's spacing"
72
+ is the RHYTHM — 28 between two settings against 7 inside one. Under the floor
73
+ those were bare literals, so the only way to follow them was to COPY them
74
+ into `efficient-shop/components/storefront-editor.css`: a second source of
75
+ truth for numbers this sheet was already the source of.
76
+
77
+ THE VALUES DID NOT CHANGE. Every one is the number that was there before,
78
+ moved and named; `tests/panel-layout.test.ts` (g) asserts each still resolves
79
+ to what it resolved to, and (a) still reads the scale off the sheet.
80
+
81
+ NAMES, NOT ARITHMETIC, for the reason this sheet already gives one rule down:
82
+ 28 was measured (card 8802.d), it is not "16 plus 12". `calc()` off the floor
83
+ would claim a relationship nobody decided; a name states the value and the
84
+ job it does.
85
+
86
+ WHAT A CONSUMER IS ACTUALLY BUYING is the pair at the end. `--es-rhythm-between`
87
+ and `--es-rhythm-within` are the two halves of the one rule that has to
88
+ survive being re-scaled: the gap INSIDE a thing stays plainly smaller than
89
+ the gap BETWEEN things, because that inside gap is the ONLY thing saying
90
+ which label owns which control. A tree at 28px a row would scroll forever, so
91
+ a consumer is expected to scale these — and (g) is what stops the two from
92
+ drifting together while it does. */
47
93
  .es-editor {
48
- --es-row-gap: 10px;
94
+ /* THE FLOOR (card 66206) — no row-to-row gap on this panel resolves below it. */
95
+ --es-row-gap: 16px;
96
+
97
+ /* THE RHYTHMS. All five are declared in THIS rule and not a second
98
+ `.es-editor` block: the panel has ONE root, and a second block would put
99
+ half the panel's spacing somewhere a reader — and the spec, which reads the
100
+ root by selector — would not look. */
101
+ /* between one group heading and whatever is above it */
102
+ --es-rhythm-group: 36px;
103
+ /* between a group heading and the first setting under it — closer, because
104
+ that setting belongs to that heading */
105
+ --es-rhythm-group-first: 14px;
106
+ /* BETWEEN two settings */
107
+ --es-rhythm-between: 28px;
108
+ /* between two one-line rows, which are one line tall and need less air */
109
+ --es-rhythm-between-tight: 16px;
110
+ /* WITHIN one setting: its label to its own control */
111
+ --es-rhythm-within: 7px;
49
112
  }
50
113
 
51
114
  /* ── the tab strip: a segmented control ────────────────────────────────────── */
@@ -318,7 +381,7 @@
318
381
  /* A heading needs more air above it than the settings it heads have between
319
382
  them (28px), or it reads as one more row. Floored on `--es-row-gap` so it
320
383
  rises with the rest of the panel (card 66203). */
321
- margin: max(var(--es-row-gap), 36px) 0 0;
384
+ margin: max(var(--es-row-gap), var(--es-rhythm-group)) 0 0;
322
385
  }
323
386
 
324
387
  button.es-group-head {
@@ -361,7 +424,7 @@ button.es-group-head:hover { background: var(--es-chip-bg); }
361
424
  .es-group-body[hidden] { display: none; }
362
425
  /* The first setting under a head sits CLOSER than the settings below it do to
363
426
  each other — it belongs to that head, and 28px would cut it loose. */
364
- .es-group-body > .es-field:first-child { margin-top: max(var(--es-row-gap), 14px); }
427
+ .es-group-body > .es-field:first-child { margin-top: max(var(--es-row-gap), var(--es-rhythm-group-first)); }
365
428
 
366
429
  /* ── one setting ───────────────────────────────────────────────────────────── */
367
430
 
@@ -375,13 +438,16 @@ button.es-group-head:hover { background: var(--es-chip-bg); }
375
438
 
376
439
  Floored, not replaced, and not `calc()`: 28 was measured, it is not "10 plus
377
440
  18", so arithmetic off the token would claim a relationship nobody decided. */
378
- .es-field { margin-top: max(var(--es-row-gap), 28px); }
441
+ .es-field { margin-top: max(var(--es-row-gap), var(--es-rhythm-between)); }
379
442
 
380
443
  .es-field-head {
381
444
  display: flex;
382
445
  align-items: center;
383
446
  gap: 8px;
384
- margin-bottom: 7px;
447
+ /* THE ONE THAT SAYS WHICH LABEL OWNS WHICH CONTROL. Named so a consumer can
448
+ read it (card 66228) — it is half of the rule, and the half that is easiest
449
+ to lose when someone re-scales the other half. */
450
+ margin-bottom: var(--es-rhythm-within);
385
451
  min-height: 16px;
386
452
  }
387
453
 
@@ -441,7 +507,7 @@ button.es-group-head:hover { background: var(--es-chip-bg); }
441
507
  A one-line row is one line tall, so it needs less air above it than a
442
508
  two-line setting does — 16, not 28 — and it is floored on the token for the
443
509
  same reason everything else here is (card 66203). */
444
- .es-field.is-inline { margin-top: max(var(--es-row-gap), 16px); }
510
+ .es-field.is-inline { margin-top: max(var(--es-row-gap), var(--es-rhythm-between-tight)); }
445
511
  .es-field.is-inline .es-field-head { margin-bottom: 0; }
446
512
 
447
513
  /* ── the switch: one yes-or-no shape, both editors ─────────────────────────── */
@@ -542,7 +608,11 @@ button.es-group-head:hover { background: var(--es-chip-bg); }
542
608
  hairline between them and adds no margin — so the air a merchant sees is
543
609
  each row's own vertical padding, on its own side of the line. MEASURED in
544
610
  Chromium against these stylesheets (`tests/fixtures/panel-row-spacing.html`):
545
- 11.40px above the rule, 12.00px below it, 23.40px between two rows' words.
611
+ 17.40px above the rule, 18.00px below it, 35.40px between two rows' words.
612
+ At the 10px the token shipped with (card 66203) those were 11.40, 12.00 and
613
+ 23.40 — this list is the ONLY place on the panel where raising the token to
614
+ 16 moves a measured distance rather than a declared one, and it is the row
615
+ Lewis was looking at when he asked (card 66206).
546
616
 
547
617
  A MARGIN WOULD BE THE WRONG FIX. A border-top with space above it detaches
548
618
  from the row it belongs to and reads as a line floating in the panel rather
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "editor-shell",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "description": "Shared editor-chrome primitives for the EFFICIENT editors: EditorRail (a Next-16-safe left icon-rail leaf), the shell token layer, and GoldTextInput — type in place and watch the markup formatting appear as you type.",
5
5
  "license": "MIT",
6
6
  "author": "Lewis Liu",