@hozu/devtools 0.16.0 → 0.17.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.
@@ -0,0 +1,294 @@
1
+ import { h } from './dom.js';
2
+ const json = async (url) => {
3
+ const res = await fetch(url, { cache: 'no-store' }).catch(() => null);
4
+ return res?.ok ? (await res.json()) : null;
5
+ };
6
+ /** The default, each variant value on its own, then the named previews (ADR 0058 G). */
7
+ export function tilesOf(c) {
8
+ const children = c.children ? { children: c.name } : {};
9
+ const tiles = [{ label: 'Default', use: { variant: {}, ...children }, preview: false }];
10
+ for (const [dim, values] of Object.entries(c.variants))
11
+ for (const value of values)
12
+ if (value !== c.defaults[dim])
13
+ tiles.push({
14
+ label: `${dim}: ${value}`,
15
+ use: { variant: { [dim]: value }, ...children },
16
+ preview: false,
17
+ });
18
+ for (const p of c.previews)
19
+ tiles.push({ label: p.name, use: { ...children, ...p.use }, preview: true });
20
+ return tiles;
21
+ }
22
+ const schemaRows = (props) => Object.entries((props.properties ?? {})).map(([k, s]) => [k, Array.isArray(s.enum) ? s.enum.map(String).join(' | ') : String(s.type ?? 'any')]);
23
+ export function assetsBoard(host) {
24
+ const board = h('div', { class: 'assets', hidden: true, role: 'dialog', 'aria-label': 'Assets' });
25
+ for (const type of ['pointerdown', 'pointermove', 'mousedown', 'click', 'dragstart'])
26
+ board.addEventListener(type, (event) => event.stopPropagation());
27
+ let tab = 'components';
28
+ let catalog = [];
29
+ let screens = { pages: [] };
30
+ let query = '';
31
+ let detail = null;
32
+ const watched = new IntersectionObserver((entries) => {
33
+ for (const e of entries)
34
+ if (e.isIntersecting) {
35
+ watched.unobserve(e.target);
36
+ void fill(e.target);
37
+ }
38
+ });
39
+ const fill = async (frame) => {
40
+ const id = frame.dataset.id ?? '';
41
+ const use = frame.dataset.use ?? '{}';
42
+ const out = await json(`/_hozu/dev/component?id=${encodeURIComponent(id)}&use=${encodeURIComponent(use)}`);
43
+ if (!out?.ok) {
44
+ frame.replaceWith(h('div', { class: 'tile-problem' }, [out?.problems.join('; ') || 'Could not render this use']));
45
+ return;
46
+ }
47
+ const links = host
48
+ .stylesheets()
49
+ .map((href) => `<link rel="stylesheet" href="${href.replace(/"/g, '&quot;')}">`)
50
+ .join('');
51
+ frame.addEventListener('load', () => {
52
+ const body = frame.contentDocument?.body;
53
+ if (body)
54
+ frame.style.height = `${Math.min(320, Math.max(72, body.scrollHeight))}px`;
55
+ });
56
+ frame.srcdoc = `<!doctype html><html><head><meta charset="utf-8">${links}<style>html,body{margin:0;background:transparent}body{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;padding:16px;min-height:72px;box-sizing:border-box}</style></head><body>${out.html}</body></html>`;
57
+ };
58
+ const frameFor = (c, t) => {
59
+ const frame = h('iframe', {
60
+ class: 'tile-frame',
61
+ sandbox: 'allow-same-origin',
62
+ title: `${c.id} · ${t.label}`,
63
+ 'data-id': c.id,
64
+ 'data-use': JSON.stringify(t.use),
65
+ });
66
+ watched.observe(frame);
67
+ return frame;
68
+ };
69
+ const pagesOf = (c) => [
70
+ ...new Map(c.uses.flatMap((u) => u.pages).map((p) => [p.route, p])).values(),
71
+ ];
72
+ const where = (c) => {
73
+ const pages = pagesOf(c);
74
+ return pages.length
75
+ ? pages.map((p) => h('span', { class: 'chip' }, [p.path]))
76
+ : [h('span', { class: 'hint-text' }, ['Not used on a page yet'])];
77
+ };
78
+ const cards = new Map();
79
+ const card = (c) => {
80
+ const kept = cards.get(c.id);
81
+ if (kept)
82
+ return kept;
83
+ const made = cardOf(c);
84
+ cards.set(c.id, made);
85
+ return made;
86
+ };
87
+ const cardOf = (c) => h('section', { class: 'asset', 'data-component': c.id }, [
88
+ h('div', { class: 'asset-head' }, [
89
+ h('button', {
90
+ class: 'asset-name',
91
+ type: 'button',
92
+ onclick: () => {
93
+ detail = c;
94
+ void render();
95
+ },
96
+ }, [h('b', {}, [c.name]), host.plain ? '' : h('code', {}, [` ${c.id}`])]),
97
+ h('span', { class: 'asset-uses' }, [
98
+ `${c.places} ${c.places === 1 ? 'place' : 'places'}`,
99
+ ` · ${pagesOf(c).length} ${pagesOf(c).length === 1 ? 'page' : 'pages'}`,
100
+ c.client ? ' · runs in the browser (shown as its server render)' : '',
101
+ ]),
102
+ ]),
103
+ h('div', { class: 'tiles' }, tilesOf(c).map((t) => h('figure', { class: t.preview ? 'tile preview' : 'tile' }, [
104
+ frameFor(c, t),
105
+ h('figcaption', {}, [t.preview ? `★ ${t.label}` : t.label]),
106
+ ]))),
107
+ ]);
108
+ const detailView = (c) => {
109
+ const note = h('textarea', {
110
+ rows: '3',
111
+ placeholder: c.uses.length ? `What should change in every ${c.name}?` : 'Not used on a page yet',
112
+ 'aria-label': `Change the main component ${c.name}`,
113
+ disabled: c.uses.length === 0,
114
+ oninput: (e) => {
115
+ const add = e.target.parentElement?.querySelector('[data-add]');
116
+ if (add)
117
+ add.disabled = !e.target.value.trim();
118
+ },
119
+ });
120
+ return h('aside', { class: 'asset-detail' }, [
121
+ h('button', {
122
+ class: 'link',
123
+ type: 'button',
124
+ onclick: () => {
125
+ detail = null;
126
+ void render();
127
+ },
128
+ }, ['← All assets']),
129
+ h('h2', {}, [c.name]),
130
+ h('p', { class: 'hint-text' }, [
131
+ `${c.owner.kind === 'kit' ? 'Kit' : 'Feature'} ${c.owner.id}`,
132
+ c.location ? ` · ${c.location.file}:${c.location.line}` : '',
133
+ ]),
134
+ h('div', { class: 'label' }, ['Variants']),
135
+ ...(Object.keys(c.variants).length
136
+ ? Object.entries(c.variants).map(([k, v]) => h('p', {}, [h('b', {}, [k]), `: ${v.join(', ')}`]))
137
+ : [h('p', { class: 'hint-text' }, ['None'])]),
138
+ h('div', { class: 'label' }, ['Properties']),
139
+ ...(schemaRows(c.props).length
140
+ ? schemaRows(c.props).map(([k, t]) => h('p', {}, [h('code', {}, [k]), ` ${t}`]))
141
+ : [h('p', { class: 'hint-text' }, ['None'])]),
142
+ c.slots.length ? h('p', {}, [h('b', {}, ['Slots']), `: ${c.slots.join(', ')}`]) : null,
143
+ h('div', { class: 'label' }, ['Where used']),
144
+ h('div', { class: 'chips' }, where(c)),
145
+ c.uses.length
146
+ ? h('button', { class: 'act', type: 'button', onclick: () => host.show(c) }, ['Show the instances'])
147
+ : null,
148
+ h('div', { class: 'label' }, ['Change the main component']),
149
+ note,
150
+ h('button', {
151
+ class: 'primary',
152
+ type: 'button',
153
+ disabled: true,
154
+ 'data-add': true,
155
+ onclick: () => {
156
+ if (note.value.trim())
157
+ host.change(c, note.value.trim());
158
+ },
159
+ }, ['Add to the request']),
160
+ ]);
161
+ };
162
+ const styles = async () => {
163
+ const t = await host.theme();
164
+ if (!t)
165
+ return h('p', { class: 'hint-text' }, ['No theme found']);
166
+ const own = t.own.length ? t.own : Object.keys(t.colors).slice(0, 16);
167
+ const sorted = (table) => Object.entries(table).sort((a, b) => a[1] - b[1]);
168
+ return h('div', { class: 'styles' }, [
169
+ h('div', { class: 'label' }, ['Colours']),
170
+ h('div', { class: 'swatches' }, own.map((name) => {
171
+ const sw = h('span', { class: 'big-swatch' });
172
+ sw.style.background = t.colors[name] ?? '';
173
+ return h('figure', { class: 'colour' }, [
174
+ sw,
175
+ h('figcaption', {}, [h('b', {}, [name]), ` ${t.colors[name]}`]),
176
+ ]);
177
+ })),
178
+ h('div', { class: 'label' }, ['Text sizes']),
179
+ h('div', { class: 'type-rows' }, sorted(t.text).map(([name, px]) => {
180
+ const sample = h('span', { class: 'type-sample' }, ['Aa']);
181
+ sample.style.fontSize = `${Math.min(px, 64)}px`;
182
+ return h('div', { class: 'type-row' }, [sample, h('code', {}, [`${name} · ${px}px`])]);
183
+ })),
184
+ h('div', { class: 'label' }, ['Corner radius']),
185
+ h('div', { class: 'swatches' }, sorted(t.radius).map(([name, px]) => {
186
+ const box = h('span', { class: 'radius-box' });
187
+ box.style.borderRadius = `${px}px`;
188
+ return h('figure', { class: 'colour' }, [box, h('figcaption', {}, [`${name} · ${px}px`])]);
189
+ })),
190
+ h('div', { class: 'label' }, ['Shadows']),
191
+ h('div', { class: 'swatches' }, Object.entries(t.shadow).map(([name, value]) => {
192
+ const box = h('span', { class: 'shadow-box' });
193
+ box.style.boxShadow = value;
194
+ return h('figure', { class: 'colour' }, [box, h('figcaption', {}, [name])]);
195
+ })),
196
+ h('p', { class: 'hint-text' }, [`Spacing unit ${t.spacing}px: p-4 is ${t.spacing * 4}px.`]),
197
+ ]);
198
+ };
199
+ const screensView = () => screens.pages.some((p) => p.previews.length)
200
+ ? h('div', { class: 'screens' }, [
201
+ h('div', { class: 'label' }, ['Screens']),
202
+ ...screens.pages.flatMap((p) => p.previews.map((s) => h('div', { class: 'screen' }, [
203
+ h('code', {}, [p.path]),
204
+ h('b', {}, [s.name]),
205
+ p.path.includes(':')
206
+ ? h('span', { class: 'hint-text' }, ['open the page, then Layers → Previews'])
207
+ : h('button', { class: 'act', type: 'button', onclick: () => host.screen(p.route, p.path, s.name) }, ['Open']),
208
+ ]))),
209
+ ])
210
+ : null;
211
+ const listBody = () => {
212
+ const q = query.trim().toLowerCase();
213
+ const shown = catalog.filter((c) => !q || c.id.toLowerCase().includes(q));
214
+ const owners = [...new Set(shown.map((c) => c.owner.id))];
215
+ return h('div', { class: 'assets-body' }, [
216
+ ...owners.map((o) => h('div', { class: 'owner' }, [
217
+ h('div', { class: 'label' }, [`${o} · ${shown.filter((c) => c.owner.id === o).length}`]),
218
+ ...shown.filter((c) => c.owner.id === o).map(card),
219
+ ])),
220
+ shown.length ? null : h('p', { class: 'hint-text' }, ['No components match']),
221
+ q ? null : screensView(),
222
+ ]);
223
+ };
224
+ const search = h('input', {
225
+ type: 'search',
226
+ class: 'outcome',
227
+ placeholder: 'Find a component…',
228
+ 'aria-label': 'Find a component',
229
+ oninput: (e) => {
230
+ query = e.target.value;
231
+ board.querySelector(':scope > .assets-body')?.replaceWith(listBody());
232
+ },
233
+ });
234
+ const render = async () => {
235
+ search.value = query;
236
+ const head = h('header', { class: 'assets-head' }, [
237
+ h('b', {}, ['Assets']),
238
+ h('div', { class: 'seg' }, [
239
+ h('button', {
240
+ class: 'mode',
241
+ type: 'button',
242
+ 'aria-pressed': String(tab === 'components'),
243
+ onclick: () => {
244
+ tab = 'components';
245
+ void render();
246
+ },
247
+ }, ['Components']),
248
+ h('button', {
249
+ class: 'mode',
250
+ type: 'button',
251
+ 'aria-pressed': String(tab === 'styles'),
252
+ onclick: () => {
253
+ tab = 'styles';
254
+ void render();
255
+ },
256
+ }, ['Styles']),
257
+ ]),
258
+ tab === 'components' && !detail ? search : null,
259
+ h('button', { class: 'act', type: 'button', onclick: () => close() }, ['Close']),
260
+ ]);
261
+ if (tab === 'styles') {
262
+ board.replaceChildren(head, h('div', { class: 'assets-body' }, [await styles()]));
263
+ return;
264
+ }
265
+ if (detail) {
266
+ board.replaceChildren(head, h('div', { class: 'assets-body detail' }, [
267
+ h('div', { class: 'assets-main' }, [card(detail)]),
268
+ detailView(detail),
269
+ ]));
270
+ return;
271
+ }
272
+ board.replaceChildren(head, listBody());
273
+ };
274
+ const open = async () => {
275
+ board.hidden = false;
276
+ board.replaceChildren(h('p', { class: 'hint-text' }, ['Loading the components…']));
277
+ catalog = (await json('/_hozu/dev/components')) ?? [];
278
+ cards.clear();
279
+ screens = (await json('/_hozu/dev/previews')) ?? { pages: [] };
280
+ await render();
281
+ };
282
+ const close = () => {
283
+ board.hidden = true;
284
+ detail = null;
285
+ };
286
+ return {
287
+ board,
288
+ open,
289
+ close,
290
+ isOpen: () => !board.hidden,
291
+ catalog: () => json('/_hozu/dev/components'),
292
+ };
293
+ }
294
+ //# sourceMappingURL=assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/overlay/assets.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { StyleChange } from '../prompt.ts';
2
2
  import { type StyleProp, type Theme } from '../theme.ts';
3
+ /** Figma's Design panel, in its order (ADR 0058 B1). */
4
+ export declare const groups: [string, StyleProp[]][];
3
5
  export declare function current(el: Element, prop: StyleProp): string;
4
6
  export declare function preview(el: Element | null, changes: StyleChange[]): void;
5
7
  export declare function lookSection(el: Element | null, changes: StyleChange[], theme: Theme | null, plain: boolean, onChange: (changes: StyleChange[]) => void): HTMLElement;
@@ -1 +1 @@
1
- {"version":3,"file":"look.d.ts","sourceRoot":"","sources":["../../src/overlay/look.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AA0BnE,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAO5D;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAKjE;AAyBD,wBAAgB,WAAW,CACzB,EAAE,EAAE,OAAO,GAAG,IAAI,EAClB,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,GACzC,WAAW,CAyDb"}
1
+ {"version":3,"file":"look.d.ts","sourceRoot":"","sources":["../../src/overlay/look.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/C,OAAO,EAA0B,KAAK,SAAS,EAAE,KAAK,KAAK,EAAc,MAAM,aAAa,CAAA;AAqC5F,wDAAwD;AACxD,eAAO,MAAM,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,EAQzC,CAAA;AAOD,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAc5D;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QASjE;AAyDD,wBAAgB,WAAW,CACzB,EAAE,EAAE,OAAO,GAAG,IAAI,EAClB,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,GACzC,WAAW,CAwEb"}
@@ -1,35 +1,71 @@
1
- import { normalHex } from '../theme.js';
1
+ import { borderSteps, normalHex, utilityFor } from '../theme.js';
2
2
  import { h } from './dom.js';
3
3
  const css = {
4
+ width: 'width',
5
+ height: 'height',
6
+ borderRadius: 'border-radius',
7
+ gap: 'gap',
8
+ paddingInline: 'padding-inline',
9
+ paddingBlock: 'padding-block',
10
+ opacity: 'opacity',
11
+ backgroundColor: 'background-color',
12
+ borderWidth: 'border-width',
13
+ borderColor: 'border-color',
14
+ boxShadow: 'box-shadow',
4
15
  fontSize: 'font-size',
5
16
  fontWeight: 'font-weight',
6
17
  color: 'color',
7
- backgroundColor: 'background-color',
8
- paddingInline: 'padding-inline',
9
- paddingBlock: 'padding-block',
10
- borderRadius: 'border-radius',
11
18
  };
12
- const plainNames = {
13
- fontSize: 'Text size',
14
- fontWeight: 'Boldness',
19
+ const figmaNames = {
20
+ width: 'W',
21
+ height: 'H',
22
+ borderRadius: 'Corner radius',
23
+ gap: 'Gap',
24
+ paddingInline: 'Horizontal padding',
25
+ paddingBlock: 'Vertical padding',
26
+ opacity: 'Opacity',
27
+ backgroundColor: 'Fill',
28
+ borderWidth: 'Stroke weight',
29
+ borderColor: 'Stroke',
30
+ boxShadow: 'Drop shadow',
31
+ fontSize: 'Font size',
32
+ fontWeight: 'Weight',
15
33
  color: 'Text colour',
16
- backgroundColor: 'Background',
17
- paddingInline: 'Space at the sides',
18
- paddingBlock: 'Space above and below',
19
- borderRadius: 'Corners',
20
34
  };
21
- const props = Object.keys(css);
35
+ /** Figma's Design panel, in its order (ADR 0058 B1). */
36
+ export const groups = [
37
+ ['Frame', ['width', 'height', 'borderRadius']],
38
+ ['Auto layout', ['gap', 'paddingInline', 'paddingBlock']],
39
+ ['Layer', ['opacity']],
40
+ ['Fill', ['backgroundColor']],
41
+ ['Stroke', ['borderWidth', 'borderColor']],
42
+ ['Effects', ['boxShadow']],
43
+ ['Text', ['fontSize', 'fontWeight', 'color']],
44
+ ];
45
+ const props = groups.flatMap(([, list]) => list);
46
+ const colours = ['color', 'backgroundColor', 'borderColor'];
22
47
  const steps = [0, 0.5, 1, 1.5, 2, 2.5, 3, 4, 5, 6, 8, 10, 12, 16];
48
+ const sizes = [0, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64, 72, 80, 96];
23
49
  export function current(el, prop) {
24
50
  const s = (el.ownerDocument.defaultView ?? window).getComputedStyle(el);
25
- if (prop === 'color' || prop === 'backgroundColor')
26
- return normalHex(s[prop]) ?? s[prop];
51
+ if (colours.includes(prop)) {
52
+ const v = prop === 'borderColor' ? s.borderTopColor : s[prop];
53
+ if (v === 'transparent' || /^rgba\(.*,\s*0\)$/.test(v))
54
+ return 'transparent';
55
+ return normalHex(v) ?? v;
56
+ }
27
57
  if (prop === 'paddingInline')
28
58
  return s.paddingLeft;
29
59
  if (prop === 'paddingBlock')
30
60
  return s.paddingTop;
31
61
  if (prop === 'borderRadius')
32
62
  return s.borderTopLeftRadius;
63
+ if (prop === 'borderWidth')
64
+ return s.borderTopStyle === 'none' ? '0px' : s.borderTopWidth;
65
+ if (prop === 'gap')
66
+ return s.columnGap === 'normal' ? '0px' : s.columnGap;
67
+ if (prop === 'width' || prop === 'height')
68
+ return `${Math.round(el.getBoundingClientRect()[prop])}px`;
33
69
  return s[prop];
34
70
  }
35
71
  export function preview(el, changes) {
@@ -38,14 +74,20 @@ export function preview(el, changes) {
38
74
  const style = el.style;
39
75
  for (const prop of props)
40
76
  style.removeProperty(css[prop]);
41
- for (const c of changes)
77
+ style.removeProperty('border-style');
78
+ for (const c of changes) {
42
79
  style.setProperty(css[c.prop], c.to, 'important');
80
+ if (c.prop === 'borderWidth' && c.to !== '0px')
81
+ style.setProperty('border-style', 'solid', 'important');
82
+ }
43
83
  }
44
84
  function options(prop, theme) {
45
85
  const t = theme;
46
- const sorted = (table, unit, prefix) => Object.entries(table)
86
+ const unit = t?.spacing ?? 4;
87
+ const sorted = (table, suffix, prefix) => Object.entries(table)
47
88
  .sort((a, b) => a[1] - b[1])
48
- .map(([name, v]) => [`${v}${unit}`, `${prefix}${name} · ${v}${unit}`]);
89
+ .map(([name, v]) => [`${v}${suffix}`, name, `${prefix}${name}`]);
90
+ const scale = (list, prefix) => list.map((n) => [`${n * unit}px`, null, `${prefix}-${n}`]);
49
91
  if (prop === 'fontSize')
50
92
  return t ? sorted(t.text, 'px', 'text-') : [];
51
93
  if (prop === 'fontWeight')
@@ -53,17 +95,47 @@ function options(prop, theme) {
53
95
  if (prop === 'borderRadius')
54
96
  return t
55
97
  ? [
56
- ['0px', 'rounded-none · 0px'],
98
+ ['0px', 'none', 'rounded-none'],
57
99
  ...sorted(t.radius, 'px', 'rounded-'),
58
- ['9999px', 'rounded-full · round'],
100
+ ['9999px', 'full', 'rounded-full'],
59
101
  ]
60
102
  : [];
61
- if (prop === 'paddingInline' || prop === 'paddingBlock') {
62
- const p = prop === 'paddingInline' ? 'px' : 'py';
63
- return steps.map((n) => [`${n * (t?.spacing ?? 4)}px`, `${p}-${n} · ${n * (t?.spacing ?? 4)}px`]);
103
+ if (prop === 'paddingInline')
104
+ return scale(steps, 'px');
105
+ if (prop === 'paddingBlock')
106
+ return scale(steps, 'py');
107
+ if (prop === 'gap')
108
+ return scale(steps, 'gap');
109
+ if (prop === 'width' || prop === 'height') {
110
+ const p = prop === 'width' ? 'w' : 'h';
111
+ return [['auto', 'auto', `${p}-auto`], ['100%', 'fill', `${p}-full`], ...scale(sizes, p)];
64
112
  }
113
+ if (prop === 'opacity')
114
+ return Array.from({ length: 21 }, (_, i) => [`${i / 20}`, `${i * 5}%`, `opacity-${i * 5}`]);
115
+ if (prop === 'borderWidth')
116
+ return borderSteps.map((n) => [`${n}px`, null, n === 1 ? 'border' : `border-${n}`]);
117
+ if (prop === 'boxShadow')
118
+ return t
119
+ ? [
120
+ ['none', 'none', 'shadow-none'],
121
+ ...Object.entries(t.shadow).map(([n, v]) => [v, n, `shadow-${n}`]),
122
+ ]
123
+ : [];
65
124
  return [];
66
125
  }
126
+ /** Builder reads the token first (`2xl · 24px`), Developer the class (`text-2xl · 24px`) (ADR 0058 B2). */
127
+ const optionText = (prop, [value, token, utility], plain) => {
128
+ const shown = prop === 'boxShadow' ? (token === 'none' ? 'none' : 'shadow') : value;
129
+ if (!plain)
130
+ return `${utility} · ${shown}`;
131
+ return token && token !== shown ? `${token} · ${shown}` : shown;
132
+ };
133
+ const tokenOf = (prop, value, theme) => {
134
+ if (!theme || !/^#[0-9a-f]{6}$/.test(value))
135
+ return null;
136
+ const u = utilityFor(prop, value, theme);
137
+ return u.exact ? u.utility.replace(/^(text|bg|border)-/, '') : null;
138
+ };
67
139
  export function lookSection(el, changes, theme, plain, onChange) {
68
140
  const set = (prop, to) => {
69
141
  const from = changes.find((c) => c.prop === prop)?.from ?? (el ? current(el, prop) : '');
@@ -72,14 +144,15 @@ export function lookSection(el, changes, theme, plain, onChange) {
72
144
  next.push({ prop, from, to });
73
145
  onChange(next);
74
146
  };
147
+ const nameOf = (prop) => (plain ? figmaNames[prop] : css[prop]);
75
148
  const row = (prop) => {
76
149
  const now = changes.find((c) => c.prop === prop)?.to ?? (el ? current(el, prop) : '');
77
- const label = h('span', { class: 'what' }, [plain ? plainNames[prop] : css[prop]]);
78
- if (prop === 'color' || prop === 'backgroundColor') {
150
+ const label = h('span', { class: 'what' }, [nameOf(prop)]);
151
+ if (colours.includes(prop)) {
79
152
  const input = h('input', {
80
153
  type: 'color',
81
154
  value: /^#[0-9a-f]{6}$/.test(now) ? now : '#000000',
82
- 'aria-label': plainNames[prop],
155
+ 'aria-label': figmaNames[prop],
83
156
  onchange: (e) => set(prop, e.target.value),
84
157
  });
85
158
  const swatches = (theme?.own ?? []).slice(0, 8).map((name) => h('button', {
@@ -92,22 +165,34 @@ export function lookSection(el, changes, theme, plain, onChange) {
92
165
  }));
93
166
  for (const s of swatches)
94
167
  s.style.background = s.getAttribute('data-color') ?? '';
168
+ const token = plain ? tokenOf(prop, now, theme) : null;
95
169
  return h('div', { class: 'look' }, [
96
170
  label,
97
- h('div', { class: 'pick' }, [input, h('code', {}, [now]), ...swatches]),
171
+ h('div', { class: 'pick' }, [
172
+ input,
173
+ h('code', {}, [now === 'transparent' ? 'none' : token ? `${token} · ${now}` : now]),
174
+ ...swatches,
175
+ ]),
98
176
  ]);
99
177
  }
100
178
  const list = options(prop, theme);
101
179
  const known = list.some(([v]) => v === now);
102
- const select = h('select', { 'aria-label': plainNames[prop], onchange: (e) => set(prop, e.target.value) }, [
103
- known ? null : h('option', { value: now, selected: true }, [`${now} (now)`]),
104
- ...list.map(([v, text]) => h('option', { value: v, selected: v === now }, [plain ? text.split(' · ')[1] : text])),
180
+ const select = h('select', { 'aria-label': figmaNames[prop], onchange: (e) => set(prop, e.target.value) }, [
181
+ known
182
+ ? null
183
+ : h('option', { value: now, selected: true }, [
184
+ `${prop === 'boxShadow' && now !== 'none' ? 'shadow' : now} (now)`,
185
+ ]),
186
+ ...list.map((o) => h('option', { value: o[0], selected: o[0] === now }, [optionText(prop, o, plain)])),
105
187
  ]);
106
188
  return h('div', { class: 'look' }, [label, select]);
107
189
  };
108
190
  return h('div', { class: 'sec' }, [
109
- h('div', { class: 'label' }, [plain ? 'Look' : 'Style (preview)']),
110
- ...props.map(row),
191
+ h('div', { class: 'label' }, [plain ? 'Design' : 'Style (preview)']),
192
+ ...groups.map(([title, list]) => h('div', { class: 'look-group', 'data-group': title }, [
193
+ h('div', { class: 'look-title' }, [title]),
194
+ ...list.map(row),
195
+ ])),
111
196
  h('div', { class: 'row-end' }, [
112
197
  h('span', { class: 'hint-text' }, ['Preview only: the agent makes the real change.']),
113
198
  changes.length
@@ -1 +1 @@
1
- {"version":3,"file":"look.js","sourceRoot":"","sources":["../../src/overlay/look.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"look.js","sourceRoot":"","sources":["../../src/overlay/look.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface Box {
2
+ left: number;
3
+ top: number;
4
+ right: number;
5
+ bottom: number;
6
+ width: number;
7
+ height: number;
8
+ }
9
+ export interface Distance {
10
+ axis: 'h' | 'v';
11
+ from: number;
12
+ to: number;
13
+ at: number;
14
+ }
15
+ export declare const sizeOf: (r: Box) => string;
16
+ /** Figma's Alt: the gaps between two separate parts, or the insets when one holds the other (ADR 0058 A3). */
17
+ export declare function distances(a: Box, b: Box): Distance[];
18
+ //# sourceMappingURL=measure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../src/overlay/measure.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,GAAG,GAAG,GAAG,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;CACX;AAED,eAAO,MAAM,MAAM,MAAO,GAAG,WAAuD,CAAA;AAEpF,8GAA8G;AAC9G,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,QAAQ,EAAE,CAyBpD"}