@cychien/ezdesign 0.0.0-stage → 0.9.1

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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +615 -2
  3. package/dist/announcements/template-ERNKAKI5.svg +33 -0
  4. package/dist/cli.mjs +10095 -0
  5. package/dist/constants.d.ts +73 -0
  6. package/dist/events-worker.js +77 -0
  7. package/dist/extension/g/0.9.1-16d05e759b/dialog.css +1 -0
  8. package/dist/extension/g/0.9.1-16d05e759b/dialog.html +13 -0
  9. package/dist/extension/g/0.9.1-16d05e759b/dialog.js +1 -0
  10. package/dist/extension/g/0.9.1-16d05e759b/icon-128.png +0 -0
  11. package/dist/extension/g/0.9.1-16d05e759b/icon-16.png +0 -0
  12. package/dist/extension/g/0.9.1-16d05e759b/icon-32.png +0 -0
  13. package/dist/extension/g/0.9.1-16d05e759b/icon-48.png +0 -0
  14. package/dist/extension/g/0.9.1-16d05e759b/media.html +9 -0
  15. package/dist/extension/g/0.9.1-16d05e759b/media.js +1 -0
  16. package/dist/extension/g/0.9.1-16d05e759b/page.js +39 -0
  17. package/dist/extension/g/0.9.1-16d05e759b/setup.css +1 -0
  18. package/dist/extension/g/0.9.1-16d05e759b/setup.html +17 -0
  19. package/dist/extension/g/0.9.1-16d05e759b/setup.js +1 -0
  20. package/dist/extension/g/0.9.1-16d05e759b/worker.js +57 -0
  21. package/dist/extension/manifest.json +57 -0
  22. package/dist/native-host.mjs +20594 -0
  23. package/dist/overlay.css +422 -0
  24. package/dist/overlay.js +2642 -0
  25. package/dist/project-root.d.ts +10 -0
  26. package/dist/shell.css +4060 -0
  27. package/dist/shell.js +8284 -0
  28. package/dist/vite.d.ts +26 -0
  29. package/dist/vite.mjs +105 -0
  30. package/package.json +82 -4
  31. package/skills/ezdesign/SKILL.md +35 -0
  32. package/skills/ezdesign/reference/baseline.md +131 -0
  33. package/skills/ezdesign/reference/components.md +102 -0
  34. package/skills/ezdesign/reference/critique.md +129 -0
  35. package/skills/ezdesign/reference/design.md +247 -0
  36. package/skills/ezdesign/reference/inspiration.md +125 -0
  37. package/skills/ezdesign/reference/make.md +331 -0
  38. package/skills/ezdesign/reference/principles.md +130 -0
  39. package/skills/ezdesign/reference/product.md +127 -0
  40. package/skills/ezdesign/reference/stack.md +123 -0
  41. package/skills/ezdesign/reference/start.md +78 -0
  42. package/skills/ezdesign/scripts/page.d.mts +61 -0
  43. package/skills/ezdesign/scripts/page.mjs +908 -0
@@ -0,0 +1,422 @@
1
+ /* src/client/overlay.css */
2
+ [data-ez-mode=element]:not([data-ez-pick]),
3
+ [data-ez-mode=element]:not([data-ez-pick]) *:not([data-ez-ui], [data-ez-ui] *) {
4
+ cursor: pointer !important;
5
+ }
6
+ [data-ez-mode=region]:not([data-ez-pick]),
7
+ [data-ez-mode=region]:not([data-ez-pick]) *:not([data-ez-ui], [data-ez-ui] *) {
8
+ cursor: crosshair !important;
9
+ }
10
+ [data-ez-pick-hot],
11
+ [data-ez-pick-hot] *:not([data-ez-ui], [data-ez-ui] *) {
12
+ cursor: pointer !important;
13
+ }
14
+ [data-ez-framing],
15
+ [data-ez-framing] *:not([data-ez-ui], [data-ez-ui] *) {
16
+ cursor: crosshair !important;
17
+ }
18
+ .ez-popup {
19
+ cursor: auto;
20
+ }
21
+ .ez-input {
22
+ cursor: text;
23
+ }
24
+ .ez-marker {
25
+ cursor: default;
26
+ }
27
+ [data-ez-ui],
28
+ [data-ez-ui] * {
29
+ box-sizing: border-box;
30
+ }
31
+ [data-ez-ui] {
32
+ --ez-paper-sunken: #f2f0e9;
33
+ --ez-paper-edge: #e9e6dd;
34
+ --ez-ink: #171717;
35
+ --ez-ink-muted: #6e6e6e;
36
+ --ez-ink-faint: #878787;
37
+ --ez-ink-ghost: #b3b3b3;
38
+ --ez-ring: #b3b3b3;
39
+ --ez-ring-halo: color-mix(in oklab, var(--ez-ink) 12%, transparent);
40
+ --ez-mark: #e56d41;
41
+ --ez-attach: #cee7c1;
42
+ --ez-attach-ink: #3d5c36;
43
+ --ez-ref: #f4d3e2;
44
+ --ez-ref-ink: #7b3a5c;
45
+ --ez-ref-accent: #cf5f92;
46
+ --ez-explore-ink: #5e3f8c;
47
+ --ez-explore-accent: #6b3baa;
48
+ font-family:
49
+ -apple-system,
50
+ BlinkMacSystemFont,
51
+ "Segoe UI",
52
+ "Noto Sans TC",
53
+ sans-serif;
54
+ }
55
+ .ez-highlight {
56
+ position: fixed;
57
+ z-index: 2147483600;
58
+ pointer-events: none;
59
+ border: 3px solid var(--ez-mark);
60
+ border-radius: 4px;
61
+ background: color-mix(in oklab, var(--ez-mark) 10%, transparent);
62
+ box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.6), inset 0 0 0 1px oklch(100% 0 0 / 0.6);
63
+ display: none;
64
+ }
65
+ .ez-selection {
66
+ position: fixed;
67
+ inset: 0;
68
+ z-index: 2147483599;
69
+ pointer-events: none;
70
+ }
71
+ .ez-selection-band {
72
+ position: fixed;
73
+ border-radius: 2px;
74
+ background: color-mix(in oklab, var(--ez-mark) 30%, transparent);
75
+ box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--ez-mark) 45%, transparent);
76
+ }
77
+ .ez-pin {
78
+ position: fixed;
79
+ z-index: 2147483602;
80
+ pointer-events: none;
81
+ width: 14px;
82
+ height: 14px;
83
+ margin: -7px 0 0 -7px;
84
+ border-radius: 50%;
85
+ background: var(--ez-mark);
86
+ border: 2.5px solid #fff;
87
+ box-shadow: 0 1px 4px oklch(0% 0 0 / 0.35), 0 0 0 4px color-mix(in oklab, var(--ez-mark) 22%, transparent);
88
+ display: none;
89
+ transform-origin: center;
90
+ transform: scale(var(--ez-ui-scale, 1));
91
+ }
92
+ .ez-badge {
93
+ position: fixed;
94
+ z-index: 2147483601;
95
+ pointer-events: none;
96
+ background: var(--ez-ink);
97
+ color: #fff;
98
+ font-size: 11px;
99
+ font-weight: 500;
100
+ line-height: 1.6;
101
+ padding: 2px 8px;
102
+ border-radius: 5px;
103
+ box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.25);
104
+ max-width: calc(60vw / var(--ez-ui-scale, 1));
105
+ overflow: hidden;
106
+ text-overflow: ellipsis;
107
+ white-space: nowrap;
108
+ display: none;
109
+ transform-origin: top left;
110
+ transform: scale(var(--ez-ui-scale, 1));
111
+ }
112
+ .ez-markers {
113
+ position: fixed;
114
+ top: 0;
115
+ left: 0;
116
+ z-index: 2147483599;
117
+ pointer-events: none;
118
+ }
119
+ .ez-marker {
120
+ position: absolute;
121
+ width: 20px;
122
+ height: 20px;
123
+ border-radius: 50%;
124
+ background: var(--ez-mark);
125
+ color: #fff;
126
+ font-size: 11px;
127
+ font-weight: 700;
128
+ line-height: 20px;
129
+ text-align: center;
130
+ box-shadow: 0 0 0 2px oklch(100% 0 0 / 0.85);
131
+ pointer-events: auto;
132
+ transform-origin: center;
133
+ transform: scale(var(--ez-ui-scale, 1));
134
+ }
135
+ .ez-select-btn {
136
+ position: absolute;
137
+ display: inline-flex;
138
+ align-items: center;
139
+ gap: 5px;
140
+ z-index: 2147483602;
141
+ background: var(--ez-ink);
142
+ color: #fff;
143
+ border: none;
144
+ border-radius: 7px;
145
+ padding: 5px 10px;
146
+ font-size: 12px;
147
+ font-weight: 500;
148
+ line-height: 1.4;
149
+ cursor: pointer;
150
+ box-shadow: 0 0 0 1px oklch(100% 0 0 / 0.25), 0 2px 8px oklch(0% 0 0 / 0.3);
151
+ transform-origin: top left;
152
+ transform: scale(var(--ez-ui-scale, 1));
153
+ }
154
+ .ez-popup {
155
+ position: fixed;
156
+ z-index: 2147483603;
157
+ width: 300px;
158
+ max-width: calc((100vw - 24px) / var(--ez-ui-scale, 1));
159
+ transform-origin: top left;
160
+ transform: scale(var(--ez-ui-scale, 1));
161
+ background: #fff;
162
+ color: var(--ez-ink);
163
+ border: 1px solid var(--ez-paper-edge);
164
+ border-radius: 14px;
165
+ box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
166
+ padding: 8px;
167
+ }
168
+ .ez-attach-field {
169
+ border: 1px solid var(--ez-paper-edge);
170
+ border-radius: 10px;
171
+ padding: 7px 9px;
172
+ background: var(--ez-paper-sunken);
173
+ transition: border-color 0.12s ease, background 0.12s ease;
174
+ }
175
+ .ez-attach-field[data-drop] {
176
+ background: var(--ez-paper-edge);
177
+ }
178
+ .ez-input {
179
+ display: block;
180
+ position: relative;
181
+ min-height: 58px;
182
+ max-height: 180px;
183
+ overflow-y: auto;
184
+ font-family: inherit;
185
+ font-size: 13px;
186
+ font-weight: 400;
187
+ line-height: 1.5;
188
+ color: var(--ez-ink);
189
+ white-space: pre-wrap;
190
+ word-break: break-word;
191
+ outline: none;
192
+ overscroll-behavior: contain;
193
+ }
194
+ .ez-input[data-empty]::before {
195
+ content: attr(data-placeholder);
196
+ position: absolute;
197
+ inset: 0 0 auto 0;
198
+ color: var(--ez-ink-faint);
199
+ pointer-events: none;
200
+ }
201
+ .ez-attach-field:focus-within {
202
+ border-color: var(--ez-ring);
203
+ outline: 3px solid var(--ez-ring-halo);
204
+ outline-offset: 0;
205
+ }
206
+ .ez-chip {
207
+ display: inline-flex;
208
+ align-items: center;
209
+ gap: 3px;
210
+ max-width: 180px;
211
+ vertical-align: baseline;
212
+ padding: 1px 6px;
213
+ border-radius: 4px;
214
+ background: var(--ez-attach);
215
+ font-size: 11px;
216
+ font-weight: 500;
217
+ line-height: 1.55;
218
+ color: var(--ez-attach-ink);
219
+ white-space: nowrap;
220
+ user-select: none;
221
+ cursor: default;
222
+ }
223
+ .ez-chip-name {
224
+ overflow: hidden;
225
+ text-overflow: ellipsis;
226
+ min-width: 0;
227
+ }
228
+ .ez-chip svg {
229
+ flex-shrink: 0;
230
+ }
231
+ .ez-chip-ref {
232
+ background: var(--ez-ref);
233
+ color: var(--ez-ref-ink);
234
+ }
235
+ .ez-chip-ref.ez-chip-chosen svg {
236
+ color: var(--ez-explore-accent);
237
+ }
238
+ .ez-chip-pending {
239
+ opacity: 0.55;
240
+ }
241
+ .ez-attach-error {
242
+ margin-top: 4px;
243
+ font-size: 11px;
244
+ line-height: 1.5;
245
+ color: oklch(52% 0.2 25);
246
+ }
247
+ .ez-slash-menu {
248
+ position: fixed;
249
+ z-index: 2147483604;
250
+ min-width: 240px;
251
+ max-width: 300px;
252
+ padding: 4px 4px 5px;
253
+ border-radius: 10px;
254
+ background: #fff;
255
+ border: 1px solid var(--ez-paper-edge);
256
+ cursor: auto;
257
+ box-shadow: 0 12px 32px oklch(0% 0 0 / 0.12), 0 2px 8px oklch(0% 0 0 / 0.06);
258
+ }
259
+ .ez-slash-head {
260
+ padding: 7px 10px 5px;
261
+ font-size: 11px;
262
+ font-weight: 500;
263
+ line-height: 1.4;
264
+ color: var(--ez-ink-faint);
265
+ }
266
+ .ez-slash-item {
267
+ display: flex;
268
+ align-items: center;
269
+ gap: 6px;
270
+ padding: 6px 10px;
271
+ border-radius: 6px;
272
+ cursor: pointer;
273
+ color: var(--ez-ink);
274
+ }
275
+ .ez-slash-item[data-active] {
276
+ background: var(--ez-paper-sunken);
277
+ }
278
+ .ez-slash-item svg {
279
+ flex-shrink: 0;
280
+ color: var(--ez-ink-muted);
281
+ }
282
+ .ez-slash-label {
283
+ font-size: 13px;
284
+ line-height: 1;
285
+ white-space: nowrap;
286
+ }
287
+ .ez-slash-hint {
288
+ margin-left: auto;
289
+ padding-left: 14px;
290
+ min-width: 0;
291
+ overflow: hidden;
292
+ text-overflow: ellipsis;
293
+ white-space: nowrap;
294
+ font-size: 12px;
295
+ color: var(--ez-ink-faint);
296
+ }
297
+ .ez-actions {
298
+ display: flex;
299
+ justify-content: flex-end;
300
+ gap: 6px;
301
+ margin-top: 6px;
302
+ }
303
+ .ez-btn {
304
+ display: inline-flex;
305
+ align-items: center;
306
+ gap: 5px;
307
+ border: none;
308
+ background: transparent;
309
+ color: var(--ez-ink-muted);
310
+ border-radius: 8px;
311
+ padding: 6px 12px;
312
+ font-size: 13px;
313
+ font-family: inherit;
314
+ cursor: pointer;
315
+ transition: background 0.12s ease;
316
+ }
317
+ .ez-btn:hover {
318
+ background: var(--ez-paper-sunken);
319
+ }
320
+ .ez-btn-primary {
321
+ background: var(--ez-ink);
322
+ color: #fff;
323
+ font-weight: 600;
324
+ }
325
+ .ez-btn-primary:hover {
326
+ background: var(--ez-ink);
327
+ opacity: 0.88;
328
+ }
329
+ .ez-popup[data-ez-hidden] {
330
+ display: none;
331
+ }
332
+ [data-ez-pick] .ez-highlight {
333
+ border-color: var(--ez-ref-accent);
334
+ background: color-mix(in oklab, var(--ez-ref-accent) 10%, transparent);
335
+ }
336
+ [data-ez-pick] .ez-badge {
337
+ background: var(--ez-ref-accent);
338
+ }
339
+ .ez-region {
340
+ position: fixed;
341
+ z-index: 2147483598;
342
+ pointer-events: none;
343
+ display: none;
344
+ border: 1px dashed var(--ez-ref-accent);
345
+ background: color-mix(in oklab, var(--ez-ref-accent) 9%, transparent);
346
+ }
347
+ .ez-region-size {
348
+ position: absolute;
349
+ top: 100%;
350
+ right: 0;
351
+ margin-top: 4px;
352
+ transform-origin: top right;
353
+ transform: scale(var(--ez-ui-scale, 1));
354
+ padding: 1px 6px;
355
+ border-radius: 4px;
356
+ background: var(--ez-ref-accent);
357
+ color: #fff;
358
+ font-size: 10.5px;
359
+ font-weight: 600;
360
+ line-height: 1.6;
361
+ font-variant-numeric: tabular-nums;
362
+ white-space: nowrap;
363
+ }
364
+ .ez-region-size[data-ez-inside] {
365
+ top: auto;
366
+ bottom: 4px;
367
+ margin: 0 4px 0 0;
368
+ }
369
+ [data-ez-mode=region]:not([data-ez-pick]) .ez-region {
370
+ border-color: var(--ez-mark);
371
+ background: color-mix(in oklab, var(--ez-mark) 9%, transparent);
372
+ }
373
+ [data-ez-mode=region]:not([data-ez-pick]) .ez-region-size {
374
+ background: var(--ez-mark);
375
+ }
376
+ .ez-popup-notice {
377
+ margin-bottom: 8px;
378
+ padding: 7px 9px;
379
+ border-radius: 6px;
380
+ background: oklch(96% 0.045 85);
381
+ color: oklch(43% 0.1 70);
382
+ font-size: 11.5px;
383
+ line-height: 1.55;
384
+ }
385
+ [data-ez-swapped] {
386
+ display: none !important;
387
+ }
388
+ ez-variant {
389
+ display: contents;
390
+ }
391
+ .ez-explore-head {
392
+ display: flex;
393
+ align-items: center;
394
+ gap: 5px;
395
+ margin-bottom: 4px;
396
+ color: var(--ez-explore-ink);
397
+ }
398
+ .ez-explore-head[hidden] {
399
+ display: none;
400
+ }
401
+ .ez-explore-title {
402
+ font-size: 12px;
403
+ font-weight: 500;
404
+ letter-spacing: 0.01em;
405
+ }
406
+ .ez-popup-explore .ez-btn-primary {
407
+ background: var(--ez-explore-accent);
408
+ }
409
+ .ez-popup-explore .ez-btn-primary:hover {
410
+ background: var(--ez-explore-accent);
411
+ opacity: 0.88;
412
+ }
413
+ .ez-popup-explore .ez-attach-field {
414
+ padding-top: 6px;
415
+ }
416
+ .ez-popup-explore .ez-attach-field:focus-within {
417
+ border-color: color-mix(in oklab, var(--ez-explore-accent) 45%, var(--ez-paper-edge));
418
+ outline-color: color-mix(in oklab, var(--ez-explore-accent) 12%, transparent);
419
+ }
420
+ .ez-popup-explore .ez-btn-primary [hidden] {
421
+ display: none;
422
+ }