@extenshi/cli 0.6.0 → 0.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"icon-preview.d.ts","sourceRoot":"","sources":["../src/icon-preview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,WAAW,gBAAgB;IAChC,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAA;IACf,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAA;IACd,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,uDAAuD;IACvD,WAAW,EAAE,IAAI,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB;AAgyBD,eAAO,MAAM,gBAAgB,mRAa3B,CAAA;AAEF,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAoGrE"}
1
+ {"version":3,"file":"icon-preview.d.ts","sourceRoot":"","sources":["../src/icon-preview.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,WAAW,gBAAgB;IAChC,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAA;IACf,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAA;IACd,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,uDAAuD;IACvD,WAAW,EAAE,IAAI,CAAA;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB;AA+5BD,eAAO,MAAM,gBAAgB,mRAa3B,CAAA;AAEF,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CA6JrE"}
@@ -58,6 +58,18 @@ const NEIGHBOR_BOLT = svgDataUrl('<svg xmlns="http://www.w3.org/2000/svg" viewBo
58
58
  const PUZZLE_ICON = '<svg viewBox="0 0 20 20" width="16" height="16" fill="currentColor" aria-hidden="true"><path d="M8.5 3.5a1.75 1.75 0 1 1 3.5 0V5h2.25c.69 0 1.25.56 1.25 1.25V8.5h-1a1.75 1.75 0 1 0 0 3.5h1v2.25c0 .69-.56 1.25-1.25 1.25H12v-1a1.75 1.75 0 1 0-3.5 0v1H6.25C5.56 15.5 5 14.94 5 14.25V12H4a1.75 1.75 0 1 1 0-3.5h1V6.25C5 5.56 5.56 5 6.25 5H8.5V3.5z"/></svg>';
59
59
  const PIN_ICON = '<svg viewBox="0 0 16 16" width="13" height="13" fill="currentColor" aria-hidden="true"><path d="M9.5 1.5 14 6l-2.7.7-2 2V13l-1.5 1.5-2-3.5L2.3 7.5 3.8 6h4.3l2-2L9.5 1.5z"/></svg>';
60
60
  const LOCK_ICON = '<svg viewBox="0 0 12 12" width="11" height="11" fill="currentColor" aria-hidden="true"><path d="M3.5 5V3.8a2.5 2.5 0 0 1 5 0V5h.4c.6 0 1.1.5 1.1 1.1v3.8c0 .6-.5 1.1-1.1 1.1H3.1c-.6 0-1.1-.5-1.1-1.1V6.1C2 5.5 2.5 5 3.1 5h.4zm1.2 0h2.6V3.8a1.3 1.3 0 0 0-2.6 0V5z"/></svg>';
61
+ // The Extenshi mark, lifted verbatim from the scan report (catalog-frontend
62
+ // logo). `fill="currentColor"` picks up --primary in either theme.
63
+ const LOGO_SVG = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400" width="28" height="28" aria-hidden="true">' +
64
+ '<g transform="translate(200, 200) scale(1.1) translate(-219, -169)">' +
65
+ '<path fill="currentColor" fill-rule="evenodd" d="M 43 29.961 C 43 32.246, 47.125 48.247, 49.888 56.680 C 55.762 74.610, 62.198 83.944, 72.096 88.890 C 78.191 91.936, 78.614 92, 92.660 92 L 107 92 106.994 96.250 C 106.991 98.588, 106.697 104.233, 106.342 108.795 L 105.697 117.091 92.098 116.996 C 84.619 116.943, 77.938 116.923, 77.250 116.950 C 76.300 116.988, 76 121.193, 76 134.500 L 76 152 90.487 152 L 104.974 152 104.449 159.250 C 104.161 163.237, 103.503 174.150, 102.987 183.500 C 102.472 192.850, 101.387 211.300, 100.578 224.500 C 98.475 258.794, 96.671 304.700, 97.356 306.487 C 97.875 307.839, 111.424 307.980, 219.220 307.754 L 340.500 307.500 340.255 287.609 C 340.096 274.661, 339.617 267.243, 338.883 266.359 C 338.004 265.299, 333.491 265, 318.397 265 L 299.038 265 298.411 267.500 C 298.066 268.875, 298.066 271.125, 298.411 272.500 L 299.038 275 222.519 275 L 146 275 146 213.500 L 146 152 218.300 152 C 273.200 152, 290.889 152.289, 291.800 153.200 C 293.565 154.965, 293.269 163.776, 291.257 169.391 C 289.026 175.614, 283.255 182.192, 277.770 184.762 C 265.607 190.461, 266.274 190.383, 224.500 190.961 L 185.500 191.500 185.229 211.226 L 184.958 230.951 187.533 231.598 C 191.687 232.640, 262.673 231.320, 272.308 230.021 C 306.918 225.355, 331.983 202.503, 332.006 175.593 C 332.009 171.692, 332.300 164.799, 332.652 160.277 L 333.292 152.053 347.396 151.777 L 361.500 151.500 361.500 134.500 L 361.500 117.500 347.219 117.222 L 332.939 116.945 333.219 104.722 L 333.500 92.500 347.500 91.947 C 357.308 91.560, 362.626 90.900, 365.261 89.744 C 371.234 87.122, 379.834 78.279, 383.489 71 C 388.795 60.434, 397.405 31.072, 395.699 29.365 C 395.464 29.130, 391.723 30.083, 387.386 31.483 C 379.737 33.952, 356.811 38.101, 340.500 39.969 C 320.691 42.238, 283.099 43.185, 214.975 43.131 C 145.730 43.077, 109.789 42.106, 94.500 39.878 C 90.650 39.316, 84.575 38.430, 81 37.907 C 65.459 35.634, 56.790 33.817, 50.373 31.490 C 42.436 28.611, 43 28.728, 43 29.961 M 146.673 92.660 C 146.303 93.030, 146 98.658, 146 105.167 L 146 117 219.531 117 L 293.062 117 292.781 104.750 L 292.500 92.500 219.923 92.244 C 180.006 92.102, 147.043 92.290, 146.673 92.660"/>' +
66
+ '</g></svg>';
67
+ // ── Next-steps CTA icons ─────────────────────────────────────────────────────
68
+ const SHIP_ICON = '<svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 2.5c3.4 1.7 5 4.8 5 8.5 0 1.4-.3 2.8-.8 4l-2 3.5H9.8l-2-3.5A9 9 0 0 1 7 11c0-3.7 1.6-6.8 5-8.5z"/><circle cx="12" cy="9.5" r="1.9"/><path d="M8 18l-2 3.5M16 18l2 3.5"/></svg>';
69
+ const RISK_ICON = '<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3.5 4.5 6.5v5c0 4.4 3 8 7.5 9.5 4.5-1.5 7.5-5.1 7.5-9.5v-5L12 3.5z"/><path d="M9 11.5l2 2 4-4.5"/></svg>';
70
+ const SCAN_ICON = '<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="6.5"/><path d="M20.5 20.5 16 16"/></svg>';
71
+ const BOX_ICON = '<svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 2.5 20.5 7v10L12 21.5 3.5 17V7L12 2.5z"/><path d="M3.5 7 12 11.5 20.5 7M12 11.5v10"/></svg>';
72
+ const CROP_ICON = '<svg viewBox="0 0 24 24" width="19" height="19" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 2v14a2 2 0 0 0 2 2h14"/><path d="M2 6h14a2 2 0 0 1 2 2v14"/></svg>';
61
73
  // ── Mockup HTML fragments ───────────────────────────────────────────────────
62
74
  /** The pinned-extensions cluster shared by every toolbar mockup. */
63
75
  function pinsHtml(iconUrl, name) {
@@ -142,27 +154,73 @@ function browserMockup(kind, input) {
142
154
  }
143
155
  // ── Page CSS ────────────────────────────────────────────────────────────────
144
156
  const CSS = `
157
+ /* Report palette — the real extenshi.io tokens, shared with the scan report:
158
+ warm terracotta on paper (light), green on near-black (dark). The --t-*
159
+ variables are the SIMULATED browser toolbar colors and are independent of
160
+ the report theme (they're driven by the palette chips). */
145
161
  :root {
162
+ --bg: oklch(0.9711 0.0074 80.7211);
163
+ --surface: oklch(0.99 0.005 80);
164
+ --surface-2: oklch(0.937 0.0142 74.4218);
165
+ --fg: oklch(0.3 0.0358 30.2042);
166
+ --muted-fg: oklch(0.4495 0.0486 39.211);
167
+ --border: oklch(0.8805 0.0208 74.6428);
168
+ --primary: oklch(0.7234 0.1783 41.1468);
169
+ --primary-fg: oklch(1 0 0);
170
+ --shadow: 0 1px 3px hsl(0 0% 0% / 0.10), 0 1px 2px -1px hsl(0 0% 0% / 0.10);
171
+ --font-sans: 'Space Grotesk', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
172
+ --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
173
+ /* Back-compat aliases so the rest of the sheet keeps its names. */
174
+ --page-bg: var(--bg); --page-text: var(--fg); --card: var(--surface); --card-border: var(--border); --accent: var(--primary);
175
+ /* Simulated browser toolbar (chip-controlled, theme-independent). */
146
176
  --t-toolbar: #ffffff; --t-tabstrip: #dfe1e5; --t-url: #f1f3f4;
147
177
  --t-text: #202124; --t-muted: #5f6368; --t-border: rgba(0,0,0,.12);
148
- --page-bg: #f6f7f9; --page-text: #1c1e21; --card: #ffffff; --card-border: #e4e6ea;
149
- --accent: #5e5ce6;
150
178
  }
151
- @media (prefers-color-scheme: dark) {
152
- :root { --page-bg: #131417; --page-text: #e8eaed; --card: #1c1e22; --card-border: #2a2d33; }
179
+ html.dark {
180
+ --bg: oklch(0.1377 0.0167 150.7681);
181
+ --surface: oklch(0.1961 0.0163 146.9867);
182
+ --surface-2: oklch(0.2335 0.0184 146.9867);
183
+ --fg: oklch(0.9423 0.0097 72.6595);
184
+ --muted-fg: oklch(0.79 0.0174 76.0955);
185
+ --border: oklch(0.2644 0.0159 142.9926);
186
+ --primary: oklch(0.6731 0.1624 144.2083);
187
+ --primary-fg: oklch(0.2157 0.0453 145.7256);
188
+ --shadow: 0 1px 3px hsl(0 0% 0% / 0.4), 0 1px 2px -1px hsl(0 0% 0% / 0.4);
153
189
  }
154
190
  * { box-sizing: border-box; margin: 0; padding: 0; }
155
191
  body {
156
- font: 14px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
157
- background: var(--page-bg); color: var(--page-text); padding: 28px 20px 60px;
158
- }
159
- main { max-width: 1080px; margin: 0 auto; display: grid; gap: 22px; }
160
- .page-head .brand { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); font-weight: 600; }
161
- .page-head h1 { font-size: 24px; margin-top: 2px; }
162
- .page-head .meta { color: color-mix(in srgb, var(--page-text) 55%, transparent); font-size: 12.5px; margin-top: 2px; }
163
- section.card { background: var(--card); border: 1px solid var(--card-border); border-radius: 12px; padding: 18px; }
192
+ font-family: var(--font-sans); font-size: 14px; line-height: 1.5;
193
+ font-feature-settings: "ss01", "ss02", "cv11"; -webkit-font-smoothing: antialiased;
194
+ background: var(--bg); color: var(--fg);
195
+ }
196
+ code, .mono { font-family: var(--font-mono); }
197
+ main { max-width: 1080px; margin: 0 auto; display: grid; gap: 22px; padding: 28px 20px 72px; }
198
+
199
+ /* Sticky topbar mirrors the scan report chrome. */
200
+ .topbar {
201
+ position: sticky; top: 0; z-index: 20;
202
+ display: flex; align-items: center; gap: 12px; padding: 14px 24px;
203
+ background: color-mix(in oklab, var(--bg) 85%, transparent);
204
+ backdrop-filter: blur(8px); border-bottom: 1px solid var(--border);
205
+ }
206
+ .topbar .logo { color: var(--primary); display: inline-flex; }
207
+ .topbar .brand { font-weight: 700; font-size: 1.05rem; letter-spacing: -0.01em; }
208
+ .topbar .sep { color: var(--muted-fg); }
209
+ .topbar .subtitle { color: var(--muted-fg); font-size: 0.9rem; }
210
+ .topbar .spacer { flex: 1; }
211
+ .tg {
212
+ display: inline-flex; align-items: center; gap: 6px;
213
+ border: 1px solid var(--border); background: var(--surface); color: var(--fg);
214
+ border-radius: 999px; padding: 6px 12px; font: inherit; font-size: 0.85rem; cursor: pointer;
215
+ }
216
+ .tg:hover { border-color: var(--primary); }
217
+
218
+ .page-head .brand { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--primary); font-weight: 600; }
219
+ .page-head h1 { font-size: 24px; margin-top: 2px; letter-spacing: -0.01em; }
220
+ .page-head .meta { color: var(--muted-fg); font-size: 12.5px; margin-top: 2px; }
221
+ section.card { background: var(--surface); border: 1px solid var(--border); border-radius: 14px; padding: 20px 22px; box-shadow: var(--shadow); }
164
222
  section.card > h2 { font-size: 15px; margin-bottom: 12px; }
165
- h2 .hint { font-weight: 400; font-size: 12.5px; color: color-mix(in srgb, var(--page-text) 55%, transparent); margin-left: 8px; }
223
+ h2 .hint { font-weight: 400; font-size: 12.5px; color: var(--muted-fg); margin-left: 8px; }
166
224
 
167
225
  /* Palette chips */
168
226
  .chips { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
@@ -247,9 +305,9 @@ h2 .hint { font-weight: 400; font-size: 12.5px; color: color-mix(in srgb, var(--
247
305
  .badge.ok { background: color-mix(in srgb, #22c55e 18%, transparent); color: #15803d; }
248
306
  .badge.weak { background: color-mix(in srgb, #f59e0b 20%, transparent); color: #b45309; }
249
307
  .badge.bad { background: color-mix(in srgb, #ef4444 20%, transparent); color: #b91c1c; }
250
- @media (prefers-color-scheme: dark) {
251
- .badge.ok { color: #4ade80; } .badge.weak { color: #fbbf24; } .badge.bad { color: #f87171; }
252
- }
308
+ html.dark .badge.ok { color: #4ade80; }
309
+ html.dark .badge.weak { color: #fbbf24; }
310
+ html.dark .badge.bad { color: #f87171; }
253
311
 
254
312
  /* Size matrix + magnifier */
255
313
  .size-flex { display: flex; flex-wrap: wrap; gap: 26px; align-items: flex-end; }
@@ -262,13 +320,31 @@ h2 .hint { font-weight: 400; font-size: 12.5px; color: color-mix(in srgb, var(--
262
320
  #mag { image-rendering: pixelated; width: 128px; height: 128px; border-radius: 8px; }
263
321
  .mag-box { display: inline-flex; padding: 10px; border-radius: 10px; background: var(--t-toolbar); border: 1px solid var(--t-border); }
264
322
  .mag-note { font-size: 12.5px; color: color-mix(in srgb, var(--page-text) 60%, transparent); max-width: 380px; }
265
- .fill-note { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12.5px; margin-top: 14px; color: color-mix(in srgb, var(--page-text) 72%, transparent); }
266
- label.toggle.trim { margin: 10px 0 0; display: flex; }
323
+ .fill-note { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12.5px; margin-top: 14px; color: var(--muted-fg); }
324
+ /* Trim callout a highlighted, hard-to-miss action tied to the fill warning. */
325
+ .trim-callout {
326
+ display: flex; align-items: center; gap: 13px; margin-top: 12px; padding: 13px 15px; border-radius: 12px;
327
+ border: 1.5px solid color-mix(in oklab, var(--primary) 55%, var(--border));
328
+ background: color-mix(in oklab, var(--primary) 9%, var(--surface));
329
+ box-shadow: 0 0 0 3px color-mix(in oklab, var(--primary) 10%, transparent);
330
+ }
331
+ .trim-ico { flex: none; width: 34px; height: 34px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; color: var(--primary-fg); background: var(--primary); }
332
+ .trim-text { flex: 1; min-width: 0; }
333
+ .trim-text strong { font-size: 13.5px; }
334
+ .trim-text p { font-size: 12.5px; color: var(--muted-fg); margin-top: 1px; }
335
+ /* iOS-style switch so the control reads as an actionable toggle, not a stray checkbox. */
336
+ .switch { flex: none; position: relative; display: inline-flex; cursor: pointer; }
337
+ .switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
338
+ .switch-track { width: 42px; height: 24px; border-radius: 999px; background: color-mix(in oklab, var(--muted-fg) 45%, transparent); transition: background .18s; display: inline-flex; align-items: center; padding: 0 3px; }
339
+ .switch-thumb { width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.35); transition: transform .18s; }
340
+ .switch input:checked + .switch-track { background: var(--primary); }
341
+ .switch input:checked + .switch-track .switch-thumb { transform: translateX(18px); }
342
+ .switch input:focus-visible + .switch-track { outline: 2px solid var(--primary); outline-offset: 2px; }
267
343
  .note-warn {
268
344
  font-size: 12.5px; line-height: 1.45; padding: 9px 12px; border-radius: 8px; margin-bottom: 12px;
269
345
  background: color-mix(in srgb, #f59e0b 14%, transparent); color: #b45309;
270
346
  }
271
- @media (prefers-color-scheme: dark) { .note-warn { color: #fbbf24; } }
347
+ html.dark .note-warn { color: #fbbf24; }
272
348
 
273
349
  /* Export */
274
350
  .export-row { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 13px; }
@@ -279,6 +355,34 @@ button.btn {
279
355
  button.btn.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
280
356
  button.btn:hover { filter: brightness(1.06); }
281
357
  pre.snippet { background: color-mix(in srgb, var(--page-text) 7%, transparent); border-radius: 8px; padding: 12px; font-size: 12px; overflow-x: auto; }
358
+ .next-steps {
359
+ border-color: color-mix(in srgb, var(--accent) 40%, var(--card-border));
360
+ background:
361
+ linear-gradient(180deg, color-mix(in srgb, var(--accent) 9%, transparent), transparent 60%),
362
+ var(--card);
363
+ }
364
+ .next-head { display: flex; align-items: center; gap: 13px; margin-bottom: 16px; }
365
+ .next-badge {
366
+ flex: none; width: 40px; height: 40px; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center;
367
+ color: var(--primary-fg); background: linear-gradient(135deg, var(--primary), color-mix(in oklab, var(--primary) 68%, #000));
368
+ box-shadow: 0 4px 12px color-mix(in oklab, var(--primary) 35%, transparent);
369
+ }
370
+ .next-head h2 { font-size: 16px; margin: 0; }
371
+ .next-sub { font-size: 12.5px; color: color-mix(in srgb, var(--page-text) 62%, transparent); margin-top: 2px; }
372
+ .next-grid { display: grid; gap: 9px; }
373
+ .next-item {
374
+ display: flex; gap: 11px; align-items: flex-start; padding: 11px 13px; border-radius: 10px;
375
+ background: color-mix(in srgb, var(--page-text) 4%, transparent);
376
+ border: 1px solid color-mix(in srgb, var(--accent) 12%, transparent);
377
+ transition: border-color .15s, background .15s;
378
+ }
379
+ .next-item:hover { border-color: color-mix(in srgb, var(--accent) 45%, transparent); background: color-mix(in srgb, var(--accent) 7%, transparent); }
380
+ .next-ico { flex: none; margin-top: 1px; color: var(--accent); display: inline-flex; }
381
+ .next-body { display: grid; gap: 3px; min-width: 0; }
382
+ .next-body code { font-size: 12.5px; background: color-mix(in srgb, var(--page-text) 8%, transparent); border-radius: 5px; padding: 2px 7px; justify-self: start; }
383
+ .next-body a { font-size: 13.5px; font-weight: 600; color: var(--accent); text-decoration: none; }
384
+ .next-body a:hover { text-decoration: underline; }
385
+ .next-body p { font-size: 12.5px; color: color-mix(in srgb, var(--page-text) 68%, transparent); }
282
386
  .foot { text-align: center; font-size: 12px; color: color-mix(in srgb, var(--page-text) 45%, transparent); }
283
387
  .foot a { color: var(--accent); }
284
388
  .raster-note { font-size: 12.5px; color: #b45309; margin-bottom: 10px; }
@@ -738,8 +842,23 @@ function copySnippet() {
738
842
  }, function () { alert('Clipboard unavailable — copy the snippet below manually.'); });
739
843
  }
740
844
 
845
+ // ---- report light/dark theme (matches the scan report) ----
846
+ function initReportTheme() {
847
+ var root = document.documentElement;
848
+ var btn = document.getElementById('theme-toggle');
849
+ if (!btn) return; // embedded mode has no topbar
850
+ function syncLabel() { btn.textContent = root.classList.contains('dark') ? '☀ Light' : '☾ Dark'; }
851
+ syncLabel();
852
+ btn.addEventListener('click', function () {
853
+ var dark = root.classList.toggle('dark');
854
+ try { localStorage.setItem('extenshi-report-theme', dark ? 'dark' : 'light'); } catch (e) {}
855
+ syncLabel();
856
+ });
857
+ }
858
+
741
859
  // ---- boot ----
742
860
  function boot() {
861
+ initReportTheme();
743
862
  var chips = document.getElementById('theme-chips');
744
863
  THEMES.forEach(function (theme, i) {
745
864
  var chip = document.createElement('button');
@@ -837,6 +956,19 @@ export function renderIconPreviewHtml(input) {
837
956
  const rasterNote = input.isSvg
838
957
  ? ''
839
958
  : '<p class="raster-note">Source is a raster PNG — exports are resized from it; sizes above its native resolution will look soft. Prefer an SVG source when possible.</p>';
959
+ // Full page gets the sticky Extenshi topbar with the theme toggle; the dojo
960
+ // embed drops it (the host page supplies its own chrome and theme control).
961
+ const topbar = input.embedded
962
+ ? ''
963
+ : `<header class="topbar">
964
+ <span class="logo">${LOGO_SVG}</span>
965
+ <span class="brand">extenshi</span>
966
+ <span class="sep">·</span>
967
+ <span class="subtitle">Icon preview</span>
968
+ <span class="spacer"></span>
969
+ <button class="tg" id="theme-toggle" type="button" aria-label="Toggle colour theme"></button>
970
+ </header>
971
+ `;
840
972
  const header = input.embedded
841
973
  ? ''
842
974
  : `<header class="page-head">
@@ -861,6 +993,39 @@ export function renderIconPreviewHtml(input) {
861
993
  <pre class="snippet"><code>${esc(MANIFEST_SNIPPET)}</code></pre>
862
994
  </section>
863
995
 
996
+ <section class="card next-steps">
997
+ <div class="next-head">
998
+ <span class="next-badge">${SHIP_ICON}</span>
999
+ <div>
1000
+ <h2>Ship the rest with Extenshi</h2>
1001
+ <p class="next-sub">The same free CLI takes you from icon to a clean store submission.</p>
1002
+ </div>
1003
+ </div>
1004
+ <div class="next-grid">
1005
+ <div class="next-item">
1006
+ <span class="next-ico">${RISK_ICON}</span>
1007
+ <div class="next-body">
1008
+ <code>npx @extenshi/cli review-risk dist.zip</code>
1009
+ <p>Predict the Chrome Web Store review outcome before you submit — offline, no account.</p>
1010
+ </div>
1011
+ </div>
1012
+ <div class="next-item">
1013
+ <span class="next-ico">${SCAN_ICON}</span>
1014
+ <div class="next-body">
1015
+ <code>npx @extenshi/cli scan dist.zip</code>
1016
+ <p>Pre-publish security scan of the built artifact, with a free monthly allowance.</p>
1017
+ </div>
1018
+ </div>
1019
+ <div class="next-item">
1020
+ <span class="next-ico">${BOX_ICON}</span>
1021
+ <div class="next-body">
1022
+ <a href="https://catalog.extenshi.io/developers#tools">The full developer toolbox →</a>
1023
+ <p>Manifest generator, privacy-policy generator, and more — free at extenshi.io.</p>
1024
+ </div>
1025
+ </div>
1026
+ </div>
1027
+ </section>
1028
+
864
1029
  <p class="foot">Generated locally by <a href="https://extenshi.io">@extenshi/cli</a> — no data left your machine.</p>`;
865
1030
  return `<!doctype html>
866
1031
  <html lang="en">
@@ -868,10 +1033,11 @@ export function renderIconPreviewHtml(input) {
868
1033
  <meta charset="utf-8">
869
1034
  <meta name="viewport" content="width=device-width, initial-scale=1">
870
1035
  <title>${esc(input.name)} — icon preview · Extenshi</title>
1036
+ <script>(function(){try{var t=localStorage.getItem('extenshi-report-theme');if(!t)t=(window.matchMedia&&window.matchMedia('(prefers-color-scheme: dark)').matches)?'dark':'light';if(t==='dark')document.documentElement.classList.add('dark');}catch(e){}})();</script>
871
1037
  <style>${CSS}</style>
872
1038
  </head>
873
1039
  <body>
874
- <main>
1040
+ ${topbar}<main>
875
1041
  ${header}<section class="card">
876
1042
  <div class="themes-head">
877
1043
  <h2>Palette<span class="hint">how the toolbar around your icon is colored</span></h2>
@@ -900,7 +1066,17 @@ export function renderIconPreviewHtml(input) {
900
1066
  ${sizeCells}
901
1067
  </div>
902
1068
  <p class="fill-note" id="fill-note"></p>
903
- <label class="toggle trim" id="trim-row" hidden><input type="checkbox" id="trim-toggle"> Trim empty margins — rescale the artwork edge-to-edge in every preview and export</label>
1069
+ <div class="trim-callout" id="trim-row" hidden>
1070
+ <span class="trim-ico">${CROP_ICON}</span>
1071
+ <div class="trim-text">
1072
+ <strong>Trim empty margins</strong>
1073
+ <p>Rescale the artwork edge-to-edge — applied to every preview, the size matrix, and all exports.</p>
1074
+ </div>
1075
+ <label class="switch" title="Toggle edge-to-edge trim">
1076
+ <input type="checkbox" id="trim-toggle">
1077
+ <span class="switch-track"><span class="switch-thumb"></span></span>
1078
+ </label>
1079
+ </div>
904
1080
  <div class="mag-wrap">
905
1081
  <span class="mag-box" id="mag-box"><canvas id="mag" width="16" height="16"></canvas></span>
906
1082
  <p class="mag-note">The 16&nbsp;px render at 8× magnification on the selected toolbar color — this is the version most users will actually see. Check that the silhouette stays readable and edges don't dissolve.</p>
@@ -1 +1 @@
1
- {"version":3,"file":"icon-preview.js","sourceRoot":"","sources":["../src/icon-preview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"icon-preview.js","sourceRoot":"","sources":["../src/icon-preview.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@extenshi/cli",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Pre-publish security scanner for browser extensions",
5
5
  "type": "module",
6
6
  "publishConfig": {