efficient-easel 0.106.0 → 1.0.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 (168) hide show
  1. package/README.md +70 -29
  2. package/dist/{LinkPicker-W2Rtxetz.d.ts → LinkPicker-hPEr1MJx.d.ts} +6 -4
  3. package/dist/autosave/index.d.ts +5 -5
  4. package/dist/chrome/chrome.css +50 -273
  5. package/dist/chrome/index.d.ts +61 -56
  6. package/dist/chrome/index.js +1 -1
  7. package/dist/chunk-4GNPKHV4.js +64 -0
  8. package/dist/chunk-5545A3PC.js +4 -0
  9. package/dist/chunk-7SQF6LZL.js +1 -0
  10. package/dist/chunk-BXMXTO36.js +1 -0
  11. package/dist/{chunk-JWMNPRTT.js → chunk-CKEPQNSQ.js} +1 -1
  12. package/dist/{chunk-LY4K2ECT.js → chunk-DJMMTWFP.js} +1 -1
  13. package/dist/chunk-EA2HTX37.js +5 -0
  14. package/dist/{chunk-VINYARYJ.js → chunk-FEK3S6HN.js} +1 -1
  15. package/dist/chunk-FPAVNX3Y.js +6 -0
  16. package/dist/chunk-HMJS344F.js +1 -0
  17. package/dist/chunk-JLTZQ4US.js +1 -0
  18. package/dist/chunk-JMGPPXNQ.js +24 -0
  19. package/dist/chunk-K56YDHYQ.js +1 -0
  20. package/dist/chunk-LOMEH6DG.js +1 -0
  21. package/dist/{chunk-FS5BLARH.js → chunk-MAEXP3KE.js} +1 -1
  22. package/dist/chunk-MJM6SFD3.js +3 -0
  23. package/dist/chunk-NLRW4BGG.js +8 -0
  24. package/dist/chunk-OJAJVH7S.js +5 -0
  25. package/dist/chunk-ONRYLR2D.js +2 -0
  26. package/dist/{chunk-WTMHT7BI.js → chunk-ORR3Q4WV.js} +1 -1
  27. package/dist/chunk-OTEXGJDU.js +5 -0
  28. package/dist/chunk-P2VEMZH5.js +1 -0
  29. package/dist/{chunk-MHKBLPQ2.js → chunk-PT6V53OO.js} +1 -1
  30. package/dist/{chunk-6WH7FA2M.js → chunk-PYCLHOSA.js} +2 -2
  31. package/dist/chunk-Q27BB5ZC.js +14 -0
  32. package/dist/chunk-QLD57GBB.js +6 -0
  33. package/dist/{chunk-PBSEUZD6.js → chunk-QMNML7XH.js} +1 -1
  34. package/dist/chunk-QR4DLZ3P.js +5 -0
  35. package/dist/chunk-TJ7YIRWQ.js +21 -0
  36. package/dist/{chunk-3P6AMTOS.js → chunk-VPFNZ7TB.js} +1 -1
  37. package/dist/chunk-W3XX2CNW.js +16 -0
  38. package/dist/chunk-X6DQWK2C.js +1 -0
  39. package/dist/chunk-XWR5YVA7.js +9 -0
  40. package/dist/chunk-YABL4EWX.js +7 -0
  41. package/dist/chunk-ZNNATBDC.js +1 -0
  42. package/dist/chunk-ZP4G3X44.js +4 -0
  43. package/dist/copy/copy.css +66 -177
  44. package/dist/copy/index.d.ts +0 -2
  45. package/dist/copy/index.js +31 -32
  46. package/dist/drag/drag.css +31 -11
  47. package/dist/drag/index.js +1 -1
  48. package/dist/easel/index.js +1 -1
  49. package/dist/fields/fields.css +35 -304
  50. package/dist/fields/index.d.ts +87 -95
  51. package/dist/fields/index.js +1 -1
  52. package/dist/gold/gold.css +3 -3
  53. package/dist/gold/index.d.ts +6 -5
  54. package/dist/gold/index.js +1 -1
  55. package/dist/index.d.ts +3 -3
  56. package/dist/index.js +1 -1
  57. package/dist/menu/index.d.ts +49 -93
  58. package/dist/menu/index.js +1 -1
  59. package/dist/menu/menu.css +37 -246
  60. package/dist/node-ops/index.d.ts +1 -1
  61. package/dist/panel/index.d.ts +46 -72
  62. package/dist/panel/index.js +17 -18
  63. package/dist/panel/panel.css +143 -372
  64. package/dist/pick/index.d.ts +52 -33
  65. package/dist/pick/index.js +7 -7
  66. package/dist/pick/pick.css +19 -150
  67. package/dist/rail/index.d.ts +48 -90
  68. package/dist/rail/index.js +1 -1
  69. package/dist/rail/rail.css +21 -108
  70. package/dist/screen/components/AddBlockRow.d.ts +8 -2
  71. package/dist/screen/components/AddBlockRow.js +1 -1
  72. package/dist/screen/components/AddChildRow.d.ts +4 -3
  73. package/dist/screen/components/AddChildRow.js +1 -1
  74. package/dist/screen/components/AddSidePanel.js +1 -1
  75. package/dist/screen/components/MediaSidePanel.d.ts +1 -1
  76. package/dist/screen/components/MediaSidePanel.js +1 -1
  77. package/dist/screen/components/NodeContextMenu.d.ts +12 -8
  78. package/dist/screen/components/NodeContextMenu.js +1 -1
  79. package/dist/screen/components/PageEditGuardNotices.js +1 -1
  80. package/dist/screen/components/ScreenChrome.js +1 -1
  81. package/dist/screen/components/ScreenDocumentContext.d.ts +1 -1
  82. package/dist/screen/components/ScreenDocumentContext.js +1 -1
  83. package/dist/screen/components/ScreenMount.d.ts +7 -7
  84. package/dist/screen/components/ScreenMount.js +1 -1
  85. package/dist/screen/components/ScreenStoreProvider.d.ts +7 -7
  86. package/dist/screen/components/ScreenStoreProvider.js +1 -1
  87. package/dist/screen/components/SectionScreenShell.js +16 -16
  88. package/dist/screen/components/SidePanelHead.d.ts +4 -2
  89. package/dist/screen/components/SidePanelHead.js +1 -1
  90. package/dist/screen/components/UiIcon.d.ts +10 -26
  91. package/dist/screen/components/UiIcon.js +2 -1
  92. package/dist/screen/components/panel-widths.js +1 -1
  93. package/dist/screen/components/usePartBridge.d.ts +7 -7
  94. package/dist/screen/components/usePartBridge.js +1 -1
  95. package/dist/screen/index.d.ts +7 -7
  96. package/dist/screen/index.js +1 -1
  97. package/dist/screen/lib/admin-bridge.d.ts +1 -1
  98. package/dist/screen/lib/admin-bridge.js +1 -1
  99. package/dist/screen/lib/chrome-theme.d.ts +20 -12
  100. package/dist/screen/lib/chrome-theme.js +1 -1
  101. package/dist/screen/lib/document-addressing.d.ts +1 -1
  102. package/dist/screen/lib/host-chrome.d.ts +1 -1
  103. package/dist/screen/lib/host.d.ts +1 -1
  104. package/dist/screen/lib/key-scope.js +1 -1
  105. package/dist/screen/lib/links/link-filters.d.ts +1 -1
  106. package/dist/screen/lib/media-panel.d.ts +1 -1
  107. package/dist/screen/lib/media-picker.d.ts +1 -1
  108. package/dist/screen/lib/page-lock.d.ts +1 -1
  109. package/dist/screen/lib/puck/style-clipboard.d.ts +7 -7
  110. package/dist/screen/lib/puck/use-section-ops.js +1 -1
  111. package/dist/screen/lib/screen-parts.d.ts +9 -8
  112. package/dist/screen/lib/screen-parts.js +1 -1
  113. package/dist/screen/lib/section-templates.d.ts +1 -1
  114. package/dist/screen/lib/session-context.d.ts +1 -1
  115. package/dist/screen/lib/session.d.ts +1 -1
  116. package/dist/screen/screen.css +33 -206
  117. package/dist/shell/index.d.ts +134 -118
  118. package/dist/shell/index.js +1 -1
  119. package/dist/shell/shell.css +130 -88
  120. package/dist/strings/catalogue.d.ts +5 -5
  121. package/dist/strings/catalogue.js +1 -1
  122. package/dist/strings/index.d.ts +5 -5
  123. package/dist/strings/index.js +1 -1
  124. package/dist/style-clipboard/index.d.ts +1 -1
  125. package/dist/text-styles/index.d.ts +12 -3
  126. package/dist/text-styles/index.js +33 -38
  127. package/dist/text-styles/text-styles.css +39 -71
  128. package/dist/tree/index.d.ts +49 -44
  129. package/dist/tree/index.js +1 -1
  130. package/dist/tree/tree.css +31 -653
  131. package/dist/{types-DJDBtdB2.d.ts → types-BqGnUVX5.d.ts} +32 -32
  132. package/dist/types-BsyPh6EW.d.ts +99 -0
  133. package/dist/{types-DWS-s9z-.d.ts → types-CsgMwHHa.d.ts} +14 -11
  134. package/dist/{types-CqY85foL.d.ts → types-Dt1CFR1S.d.ts} +4 -2
  135. package/dist/{wordFit-D4S36PvB.d.ts → wordFit-7XpmhcaW.d.ts} +3 -5
  136. package/dist/words-Cl9xMUYY.d.ts +41 -0
  137. package/dist/{words-D_Lnw1Gr.d.ts → words-CvFnwGSr.d.ts} +1 -1
  138. package/package.json +5 -1
  139. package/dist/chunk-2UX75JDP.js +0 -1
  140. package/dist/chunk-37OCQYNX.js +0 -65
  141. package/dist/chunk-3EDSDPIP.js +0 -1
  142. package/dist/chunk-3QVB4AG2.js +0 -3
  143. package/dist/chunk-3WSPDAK2.js +0 -1
  144. package/dist/chunk-5MZ3RNQQ.js +0 -13
  145. package/dist/chunk-5ZBBXZPV.js +0 -6
  146. package/dist/chunk-BZ5ASXOL.js +0 -1
  147. package/dist/chunk-C6BJB5AC.js +0 -2
  148. package/dist/chunk-DX4XELD6.js +0 -18
  149. package/dist/chunk-EOJNJCMJ.js +0 -16
  150. package/dist/chunk-EWVJSRRY.js +0 -6
  151. package/dist/chunk-H24N5TMZ.js +0 -11
  152. package/dist/chunk-I6T4TZ5Q.js +0 -8
  153. package/dist/chunk-KTVH2ZRL.js +0 -15
  154. package/dist/chunk-M7N2V4TG.js +0 -2
  155. package/dist/chunk-MS4QRBJ6.js +0 -5
  156. package/dist/chunk-ND55LTCA.js +0 -5
  157. package/dist/chunk-OWBO4WKA.js +0 -0
  158. package/dist/chunk-P6O363EE.js +0 -6
  159. package/dist/chunk-RW4XBUUW.js +0 -1
  160. package/dist/chunk-UEVTQBM7.js +0 -10
  161. package/dist/chunk-VCQVNPTG.js +0 -22
  162. package/dist/chunk-WZ7TGAAT.js +0 -3
  163. package/dist/chunk-YC4TB3CJ.js +0 -25
  164. package/dist/chunk-Z6SOLDWV.js +0 -1
  165. package/dist/chunk-ZFDCDJNZ.js +0 -16
  166. package/dist/chunk-ZNS7727Y.js +0 -12
  167. package/dist/types-Djdq6Xkd.d.ts +0 -138
  168. package/dist/words-DgHcY5qB.d.ts +0 -33
@@ -18,24 +18,22 @@
18
18
  --es-copy-gap: var(--es-space-8, 8px);
19
19
  /* efficient-shell's IconButton at its default size, md (design v5, 0.94.0). */
20
20
  --es-copy-mark-size: 32px;
21
- --es-copy-mark-ink: var(--es-text-muted, #6b7280);
22
- --es-copy-mark-ink-hover: var(--es-text, #111827);
23
- --es-copy-mark-hover: var(--es-hover, rgba(0, 0, 0, 0.06));
24
- --es-copy-rule: var(--es-border, #e5e7eb);
25
- --es-copy-field-border: var(--es-field-border, #d1d5db);
26
- --es-copy-field-bg: var(--es-field-bg, #ffffff);
21
+ --es-copy-rule: var(--es-border, var(--line));
22
+ --es-copy-field-border: var(--es-field-border, var(--line-strong));
23
+ --es-copy-field-bg: var(--es-field-bg, var(--surface));
27
24
  /** The field's inner inset. On the SURFACES, never on the box — see
28
25
  * `.es-copy-box` below for the caret bug that rule exists to stop. */
29
26
  --es-copy-field-pad: 4px 8px;
30
- --es-copy-field-ring: var(--es-accent, #2563eb);
31
- /* react-os-shell's inputClasses (design v5, 0.95.0): text-sm, a blue-400
32
- border and a 2px blue-400/30 ring while focused. One set of numbers for
33
- BOTH views, so flipping "Show marks" moves no word. */
27
+ --es-copy-field-ring: var(--es-accent, var(--accent-600, var(--submit-bg)));
28
+ /* efficient-shell's inputClasses (design v5, 0.95.0): text-sm, and while
29
+ focused the shell's own focus tokens — the solid ring colour as the border
30
+ and the 2px ring wash. One set of numbers for BOTH views, so flipping
31
+ "Show marks" moves no word. */
34
32
  --es-copy-field-font: 14px;
35
33
  --es-copy-field-line: 1.5;
36
- --es-copy-focus-border: #60a5fa;
37
- --es-copy-focus-ring: 0 0 0 2px rgba(96, 165, 250, 0.3);
38
- --es-copy-radius: 6px;
34
+ --es-copy-focus-border: var(--rosh-focus-ring-solid);
35
+ --es-copy-focus-ring: 0 0 0 2px var(--rosh-focus-ring);
36
+ --es-copy-radius: var(--radius-md);
39
37
 
40
38
  display: block;
41
39
  /* A container, so a host can query the box's own width. Never on
@@ -96,54 +94,23 @@
96
94
  background: var(--es-copy-rule);
97
95
  }
98
96
 
97
+ /* A mark button is efficient-shell's IconButton (harness UI-24): its look, its
98
+ hover, its disabled fade and — since efficient-shell 4.164.0 — its pressed
99
+ look from `aria-pressed` are the kit's; this bar used to draw a copy of each.
100
+ What stays is its size in this bar, the room a letter needs and the letter
101
+ styling below. */
99
102
  .es-copy-mark {
100
103
  height: var(--es-copy-mark-size);
101
104
  min-width: var(--es-copy-mark-size);
105
+ width: auto;
102
106
  padding: 0 4px;
103
- border: 0;
104
- border-radius: 6px;
105
- background: transparent;
106
- color: var(--es-copy-mark-ink);
107
- font: inherit;
108
107
  font-size: 11px;
109
108
  line-height: 1;
110
- cursor: pointer;
111
- }
112
-
113
- .es-copy-mark:hover:not(:disabled) {
114
- background: var(--es-copy-mark-hover);
115
- color: var(--es-copy-mark-ink-hover);
116
- }
117
-
118
- .es-copy-mark:disabled {
119
- opacity: 0.6;
120
- cursor: default;
121
- }
122
-
123
- /* A button carrying a drawing — the set's glyph (0.94.0) or the host's own —
124
- centres it and gets none of the letter styling below: an SVG must not be
125
- emboldened or slanted by us. */
126
- .es-copy-mark.has-glyph {
127
- display: inline-flex;
128
- align-items: center;
129
- justify-content: center;
130
109
  }
131
110
 
132
111
  /* The glyph looks like what it does. Safe here and NOT in the gold layer: a
133
- button is not sitting over a caret, so a wider glyph moves nothing. */
134
- /* PRESSED: the selection already wears this mark, so a press takes it off —
135
- or, for the link button, its window is open. efficient-shell has no pressed
136
- IconButton, so the design (v5) takes its PopupMenu's selected item:
137
- bg-blue-50, text-blue-700. */
138
- /* `:hover` too: the hover rule above is (0,3,0) and outranks a bare
139
- `.is-active`, so a pressed button turned grey under the very pointer that
140
- pressed it (seen in the 0.94.0 click-through). */
141
- .es-copy-mark.is-active,
142
- .es-copy-mark.is-active:hover:not(:disabled) {
143
- background: var(--es-accent-tint, #eff6ff);
144
- color: var(--es-accent-text, #1d4ed8);
145
- }
146
-
112
+ button is not sitting over a caret, so a wider glyph moves nothing. A
113
+ drawing — the set's glyph or the host's own — gets none of it. */
147
114
  .es-copy-mark.is-bold { font-weight: 700; }
148
115
  .es-copy-mark.is-italic { font-style: italic; }
149
116
  .es-copy-mark.is-strike { text-decoration: line-through; }
@@ -204,7 +171,7 @@
204
171
  }
205
172
 
206
173
  .es-copy-box.es-gold-is-off {
207
- background: var(--es-field-bg-off, #f9fafb);
174
+ background: var(--es-field-bg-off, var(--surface-sunken));
208
175
  }
209
176
 
210
177
  /* — the link button's window (blueprint 4.9) — */
@@ -221,43 +188,19 @@
221
188
  margin-top: var(--es-copy-gap);
222
189
  padding: 12px;
223
190
  border: 1px solid var(--es-copy-rule);
224
- border-radius: var(--es-row-radius, 8px);
191
+ border-radius: var(--es-row-radius, var(--radius-lg));
225
192
  background: var(--es-raised, var(--es-copy-field-bg));
226
- box-shadow: var(--es-raised-shadow, 0 4px 12px rgba(0, 0, 0, 0.08));
193
+ box-shadow: var(--es-raised-shadow, var(--rosh-glass-solid-shadow));
227
194
  }
228
195
 
229
- .es-copy-link-label {
230
- font-size: 11px;
231
- color: var(--es-copy-mark-ink);
232
- }
233
-
234
- .es-copy-link-input {
235
- box-sizing: border-box;
236
- width: 100%;
237
- height: 32px;
238
- padding: 0 12px;
239
- border: 1px solid var(--es-copy-field-border);
240
- border-radius: var(--es-field-radius, 6px);
241
- background: var(--es-copy-field-bg);
242
- color: var(--es-text, #111827);
243
- font: inherit;
244
- font-size: 12px;
245
- }
246
-
247
- .es-copy-link-input:focus {
248
- outline: none;
249
- border-color: var(--es-copy-field-ring);
250
- }
251
-
252
- .es-copy-link-input[aria-invalid='true'] {
253
- border-color: var(--es-danger, #dc2626);
254
- }
196
+ /* The window's parts are the shell's Label, Input and Buttons (UI-24): their
197
+ look is the kit's, never redrawn here. */
255
198
 
256
199
  .es-copy-link-why {
257
200
  margin: 0;
258
201
  font-size: 11px;
259
202
  line-height: 1.45;
260
- color: var(--es-danger, #dc2626);
203
+ color: var(--es-danger, var(--status-danger-soft-ink));
261
204
  }
262
205
 
263
206
  .es-copy-link-actions {
@@ -275,35 +218,6 @@
275
218
  margin-left: auto;
276
219
  }
277
220
 
278
- .es-copy-link-btn.is-danger {
279
- border-color: transparent;
280
- background: transparent;
281
- color: var(--es-danger, #dc2626);
282
- }
283
-
284
- .es-copy-link-btn {
285
- height: 28px;
286
- padding: 0 12px;
287
- border: 1px solid var(--es-btn-border, var(--es-copy-field-border));
288
- border-radius: var(--es-field-radius, 6px);
289
- background: var(--es-raised, #fff);
290
- color: var(--es-btn-text, var(--es-text, #111827));
291
- font: inherit;
292
- font-size: 12px;
293
- cursor: pointer;
294
- }
295
-
296
- .es-copy-link-btn.is-primary {
297
- border-color: var(--es-accent, #2563eb);
298
- background: var(--es-accent, #2563eb);
299
- color: var(--es-on-accent, #fff);
300
- }
301
-
302
- .es-copy-link-btn:disabled {
303
- opacity: 0.5;
304
- cursor: default;
305
- }
306
-
307
221
  /* — the rich view (0.95.0, rulings B + C) — */
308
222
 
309
223
  /*
@@ -329,7 +243,7 @@
329
243
  border: 1px solid var(--es-copy-field-border);
330
244
  border-radius: var(--es-copy-radius);
331
245
  background: var(--es-copy-field-bg);
332
- color: var(--es-text, #111827);
246
+ color: var(--es-text, var(--ink-strongest));
333
247
  font: inherit;
334
248
  font-size: var(--es-copy-field-font);
335
249
  line-height: var(--es-copy-field-line);
@@ -359,7 +273,7 @@
359
273
  }
360
274
 
361
275
  .es-rich.is-off {
362
- background: var(--es-field-bg-off, #f9fafb);
276
+ background: var(--es-field-bg-off, var(--surface-sunken));
363
277
  opacity: 0.6;
364
278
  cursor: not-allowed;
365
279
  }
@@ -375,7 +289,7 @@
375
289
  }
376
290
 
377
291
  .es-rich-line.is-bullet::marker {
378
- color: var(--es-text-muted, #9ca3af);
292
+ color: var(--es-text-muted, var(--ink-faintest));
379
293
  }
380
294
 
381
295
  /* A numbered line (E1's `12. words`) draws the number AS SAVED — `01` stays
@@ -393,7 +307,7 @@
393
307
  right: 100%;
394
308
  padding-right: 0.35em;
395
309
  white-space: nowrap;
396
- color: var(--es-text-muted, #9ca3af);
310
+ color: var(--es-text-muted, var(--ink-faintest));
397
311
  font-variant-numeric: tabular-nums;
398
312
  pointer-events: none;
399
313
  user-select: none;
@@ -422,12 +336,12 @@
422
336
  }
423
337
 
424
338
  .es-rich .es-rich-quiet {
425
- color: var(--es-gold-quiet, #6b7280);
339
+ color: var(--es-gold-quiet, var(--ink-faint));
426
340
  font-size: 0.86em;
427
341
  }
428
342
 
429
343
  .es-rich .es-rich-link {
430
- color: var(--es-accent, #2563eb);
344
+ color: var(--es-accent, var(--accent-600, var(--submit-bg)));
431
345
  text-decoration: underline;
432
346
  text-underline-offset: 3px;
433
347
  cursor: text;
@@ -438,7 +352,7 @@
438
352
  inset: 0;
439
353
  padding: var(--es-copy-field-pad);
440
354
  border: 1px solid transparent;
441
- color: var(--es-gold-placeholder, #9ca3af);
355
+ color: var(--es-gold-placeholder, var(--ink-faintest));
442
356
  font-size: var(--es-copy-field-font);
443
357
  line-height: var(--es-copy-field-line);
444
358
  pointer-events: none;
@@ -459,7 +373,7 @@
459
373
  .es-copy-marks-label {
460
374
  font-size: 13px;
461
375
  white-space: nowrap;
462
- color: var(--es-text-secondary, #374151);
376
+ color: var(--es-text-secondary, var(--ink));
463
377
  }
464
378
 
465
379
  /*
@@ -476,15 +390,21 @@
476
390
  gap: var(--es-space-4, 4px);
477
391
  padding: var(--es-space-4, 4px) var(--es-space-8, 8px);
478
392
  border: 0;
479
- border-radius: 6px;
393
+ border-radius: var(--radius-md);
480
394
  background: transparent;
481
395
  font: inherit;
482
396
  font-size: 13px;
483
397
  white-space: nowrap;
484
- color: var(--es-text-secondary, #374151);
398
+ color: var(--es-text-secondary, var(--ink));
485
399
  cursor: pointer;
486
400
  }
487
401
 
402
+ /* Off, it explains itself in the shell's Tooltip, whose wrapper is then the
403
+ line's last item: the wrapper takes the push to the end. */
404
+ .es-copy-marks > span:has(> .es-copy-clear) {
405
+ margin-left: auto;
406
+ }
407
+
488
408
  .es-copy-clear svg {
489
409
  flex: none;
490
410
  width: 16px;
@@ -492,7 +412,7 @@
492
412
  }
493
413
 
494
414
  .es-copy-clear:hover:not(:disabled) {
495
- background: var(--es-hover, #f3f4f6);
415
+ background: var(--es-hover, var(--surface-raised));
496
416
  }
497
417
 
498
418
  .es-copy-clear:focus-visible {
@@ -501,7 +421,7 @@
501
421
  }
502
422
 
503
423
  .es-copy-clear:disabled {
504
- color: var(--es-disabled, #9ca3af);
424
+ color: var(--es-disabled, var(--ink-faintest));
505
425
  cursor: default;
506
426
  }
507
427
 
@@ -557,19 +477,13 @@
557
477
  display: contents;
558
478
  }
559
479
 
480
+ /* A toolbar button is efficient-shell's IconButton look (harness UI-24): its
481
+ ground, hover, focus ring, disabled fade and lit state are the kit's
482
+ (`IconButton` from `aria-pressed`, else `iconButtonClasses({ pressed })`).
483
+ What stays is its size in the 9-column grid and the glyph inside. */
560
484
  .es-tb-btn {
561
- box-sizing: border-box;
562
485
  width: var(--es-tb-size);
563
486
  height: var(--es-tb-size);
564
- display: inline-flex;
565
- align-items: center;
566
- justify-content: center;
567
- padding: 0;
568
- border: 0;
569
- border-radius: 6px;
570
- background: transparent;
571
- color: var(--es-text-secondary, #374151);
572
- cursor: pointer;
573
487
  }
574
488
 
575
489
  .es-tb-btn svg {
@@ -577,28 +491,6 @@
577
491
  height: 16px;
578
492
  }
579
493
 
580
- .es-tb-btn:hover:not(:disabled) {
581
- background: var(--es-hover, #f3f4f6);
582
- }
583
-
584
- .es-tb-btn:focus-visible {
585
- outline: none;
586
- box-shadow: var(--es-copy-focus-ring);
587
- }
588
-
589
- /* Lit: the selection wears the mark (a press takes it off), the window is
590
- open, or the field holds that value — react-os-shell's selected tone. */
591
- .es-tb-btn.is-on,
592
- .es-tb-btn.is-on:hover:not(:disabled) {
593
- background: var(--es-accent-tint, #eff6ff);
594
- color: var(--es-accent-text, #1d4ed8);
595
- }
596
-
597
- .es-tb-btn:disabled {
598
- opacity: 0.6;
599
- cursor: not-allowed;
600
- }
601
-
602
494
  /* The bar under the A is the colour the selected words wear. */
603
495
  .es-tb-color svg rect {
604
496
  fill: var(--es-tb-run, currentColor);
@@ -615,10 +507,6 @@
615
507
  --es-tb-size: min(24px, calc(100cqw / 9));
616
508
  }
617
509
 
618
- .es-tb-btn {
619
- border-radius: 5px;
620
- }
621
-
622
510
  .es-tb-btn svg {
623
511
  width: 14px;
624
512
  height: 14px;
@@ -648,10 +536,10 @@
648
536
  flex-direction: column;
649
537
  gap: var(--es-space-8, 8px);
650
538
  padding: 12px;
651
- border: 1px solid var(--es-border, #e5e7eb);
652
- border-radius: 12px;
653
- background: var(--es-raised, #fff);
654
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
539
+ border: 1px solid var(--es-border, var(--line));
540
+ border-radius: var(--radius-xl);
541
+ background: var(--es-raised, var(--surface));
542
+ box-shadow: var(--rosh-glass-solid-shadow);
655
543
  }
656
544
 
657
545
  /* The point, aimed at its button: column k of row 1 across the box (100cqw),
@@ -663,8 +551,8 @@
663
551
  width: 10px;
664
552
  height: 10px;
665
553
  background: inherit;
666
- border-left: 1px solid var(--es-border, #e5e7eb);
667
- border-top: 1px solid var(--es-border, #e5e7eb);
554
+ border-left: 1px solid var(--es-border, var(--line));
555
+ border-top: 1px solid var(--es-border, var(--line));
668
556
  transform: rotate(45deg);
669
557
  }
670
558
 
@@ -684,23 +572,24 @@
684
572
  transform: rotate(225deg);
685
573
  }
686
574
 
687
- .es-copy-pop-label,
688
- .es-copy-pop .es-copy-link-label {
575
+ .es-copy-pop-label {
689
576
  font-size: 12px;
690
577
  font-weight: 500;
691
- color: var(--es-text-secondary, #4b5563);
578
+ color: var(--es-text-secondary, var(--ink));
692
579
  }
693
580
 
694
- /* The theme colours are pick's ONE theme row (`.es-pick-theme`, pick.css). */
581
+ /* The theme colours: efficient-shell `ColorSwatch`es in one row — the row is
582
+ drawn here, the swatches are the shell's (easel#199 step 4, UI-24). */
583
+ .es-copy-theme {
584
+ display: flex;
585
+ flex-wrap: wrap;
586
+ gap: var(--es-space-4, 4px);
587
+ }
695
588
 
696
- /* Any color (E1 widened 2026-10-06) is pick's own ColourWindow (pick.css):
697
- inside this window it is not a second box — no border, no inset. */
698
- .es-copy-colors .es-pick-window {
699
- padding: 0;
700
- border: 0;
701
- border-radius: 0;
702
- background: transparent;
703
- gap: var(--es-space-8, 8px);
589
+ /* Any color is the shell's ColorPickerPanel, as wide as this window: not the
590
+ panel's own popover width. */
591
+ .es-copy-colors .es-copy-any {
592
+ width: auto;
704
593
  }
705
594
 
706
595
  .es-copy-pop-foot {
@@ -46,8 +46,6 @@ declare function CopyCells({ cells, words, readOnly }: {
46
46
  readOnly?: boolean;
47
47
  }): react.JSX.Element;
48
48
 
49
- /** A theme colour the host offers: the NAME saved, what it is called, and the
50
- * value the box paints it in. */
51
49
  interface CopyThemeColor {
52
50
  name: string;
53
51
  label: string;