@octane-xplat/workshop 0.0.0-nightly.g14544fe

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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/MOBILE.md +143 -0
  3. package/README.md +307 -0
  4. package/dist/build/discover.js +404 -0
  5. package/dist/build/macos-node.js +77 -0
  6. package/dist/build/mobile-node.js +96 -0
  7. package/dist/build/mobile-regex.js +40 -0
  8. package/dist/build/node.js +426 -0
  9. package/dist/build/vite-mobile.js +75 -0
  10. package/dist/build/vite.js +230 -0
  11. package/dist/build/windows/preflight.js +83 -0
  12. package/dist/contract.js +50 -0
  13. package/dist/index.js +2 -0
  14. package/package.json +127 -0
  15. package/src/build/discover.ts +585 -0
  16. package/src/build/macos/shell.macos.ts +674 -0
  17. package/src/build/macos-node.ts +98 -0
  18. package/src/build/macos-vite.ts +48 -0
  19. package/src/build/mobile-node.ts +127 -0
  20. package/src/build/mobile-regex.ts +60 -0
  21. package/src/build/node.d.ts +65 -0
  22. package/src/build/node.ts +537 -0
  23. package/src/build/vite-mobile.d.ts +21 -0
  24. package/src/build/vite-mobile.ts +102 -0
  25. package/src/build/vite.d.ts +11 -0
  26. package/src/build/vite.ts +316 -0
  27. package/src/build/windows/preflight.ts +113 -0
  28. package/src/catalog.ts +58 -0
  29. package/src/contract.ts +257 -0
  30. package/src/controls.ts +159 -0
  31. package/src/errors.ts +47 -0
  32. package/src/fixture.ts +158 -0
  33. package/src/index.ts +6 -0
  34. package/src/macos/controller.ts +170 -0
  35. package/src/macos/index.macos.ts +2 -0
  36. package/src/macos/stage.macos.ts +182 -0
  37. package/src/mobile/controller.ts +134 -0
  38. package/src/mobile/entry.mobile.ts +607 -0
  39. package/src/mobile/index.mobile.ts +3 -0
  40. package/src/mobile/mount.mobile.ts +60 -0
  41. package/src/mobile/tree.mobile.tsrx +17 -0
  42. package/src/session.ts +520 -0
  43. package/src/web/entry.web.ts +270 -0
  44. package/src/web/index.web.ts +7 -0
  45. package/src/web/mount.web.ts +86 -0
  46. package/src/web/shell.css +449 -0
  47. package/src/web/shell.web.tsrx +759 -0
  48. package/types/generated/.tsrx-typegen-manifest.json +24 -0
  49. package/types/generated/catalog.d.ts +30 -0
  50. package/types/generated/contract.d.ts +145 -0
  51. package/types/generated/controls.d.ts +28 -0
  52. package/types/generated/errors.d.ts +13 -0
  53. package/types/generated/fixture.d.ts +53 -0
  54. package/types/generated/index.d.ts +6 -0
  55. package/types/generated/macos/controller.d.ts +52 -0
  56. package/types/generated/macos/index.macos.d.ts +2 -0
  57. package/types/generated/macos/stage.macos.d.ts +10 -0
  58. package/types/generated/mobile/controller.d.ts +31 -0
  59. package/types/generated/mobile/entry.mobile.d.ts +22 -0
  60. package/types/generated/mobile/index.mobile.d.ts +3 -0
  61. package/types/generated/mobile/mount.mobile.d.ts +4 -0
  62. package/types/generated/mobile/tree.mobile.d.ts +4 -0
  63. package/types/generated/session.d.ts +84 -0
  64. package/types/generated/web/entry.web.d.ts +53 -0
  65. package/types/generated/web/index.web.d.ts +7 -0
  66. package/types/generated/web/mount.web.d.ts +2 -0
  67. package/types/generated/web/shell.web.d.ts +4 -0
@@ -0,0 +1,449 @@
1
+ /* Workshop shell — static chrome styles. The stage itself stays unstyled:
2
+ workshop chrome never imposes layout on the component under development. */
3
+ /* xplat-web-only:start */
4
+ .xw-root {
5
+ display: flex;
6
+ flex-direction: column;
7
+ height: 100%;
8
+ min-height: 0;
9
+ font:
10
+ 13px/1.45 system-ui,
11
+ sans-serif;
12
+ color: #1a1d23;
13
+ background: #f4f5f7;
14
+ }
15
+
16
+ .xw-statusbar {
17
+ display: flex;
18
+ align-items: center;
19
+ gap: 8px;
20
+ padding: 6px 10px;
21
+ background: #ffffff;
22
+ border-bottom: 1px solid #d8dbe0;
23
+ flex: none;
24
+ }
25
+
26
+ .xw-target-chip {
27
+ font:
28
+ 600 11px/1 ui-monospace,
29
+ monospace;
30
+ padding: 3px 7px;
31
+ border-radius: 4px;
32
+ background: #e8ecf3;
33
+ color: #33415e;
34
+ text-transform: uppercase;
35
+ letter-spacing: 0.04em;
36
+ }
37
+
38
+ .xw-title {
39
+ font-weight: 600;
40
+ max-width: 40ch;
41
+ overflow: hidden;
42
+ text-overflow: ellipsis;
43
+ white-space: nowrap;
44
+ }
45
+
46
+ .xw-phase {
47
+ font-size: 12px;
48
+ color: #5a6472;
49
+ }
50
+
51
+ .xw-phase-failed,
52
+ .xw-phase-restart-required {
53
+ color: #b3261e;
54
+ font-weight: 600;
55
+ }
56
+
57
+ .xw-spacer {
58
+ flex: 1;
59
+ }
60
+
61
+ .xw-body {
62
+ display: flex;
63
+ flex: 1;
64
+ min-height: 0;
65
+ position: relative;
66
+ }
67
+
68
+ .xw-panel {
69
+ display: flex;
70
+ flex-direction: column;
71
+ min-height: 0;
72
+ background: #ffffff;
73
+ }
74
+
75
+ .xw-catalog {
76
+ width: 264px;
77
+ border-right: 1px solid #d8dbe0;
78
+ }
79
+
80
+ .xw-controls {
81
+ width: 300px;
82
+ border-left: 1px solid #d8dbe0;
83
+ }
84
+
85
+ .xw-overlay {
86
+ position: absolute;
87
+ inset: 0;
88
+ z-index: 30;
89
+ width: auto;
90
+ border: none;
91
+ }
92
+
93
+ .xw-panel-head {
94
+ display: flex;
95
+ align-items: center;
96
+ gap: 8px;
97
+ padding: 8px;
98
+ border-bottom: 1px solid #e5e8ec;
99
+ flex: none;
100
+ }
101
+
102
+ .xw-panel-title {
103
+ font-weight: 600;
104
+ }
105
+
106
+ .xw-search {
107
+ flex: 1;
108
+ min-width: 0;
109
+ padding: 5px 8px;
110
+ border: 1px solid #c9ced6;
111
+ border-radius: 5px;
112
+ font: inherit;
113
+ }
114
+
115
+ .xw-panel-body {
116
+ flex: 1;
117
+ overflow-y: auto;
118
+ overflow-x: hidden;
119
+ padding: 6px;
120
+ }
121
+
122
+ .xw-group-head {
123
+ display: flex;
124
+ align-items: center;
125
+ gap: 4px;
126
+ width: 100%;
127
+ padding: 5px 6px;
128
+ border: none;
129
+ background: none;
130
+ font: inherit;
131
+ font-weight: 600;
132
+ color: #3c4657;
133
+ cursor: pointer;
134
+ text-align: left;
135
+ }
136
+
137
+ .xw-group .xw-group {
138
+ margin-left: 12px;
139
+ }
140
+
141
+ .xw-story {
142
+ display: flex;
143
+ align-items: center;
144
+ justify-content: space-between;
145
+ gap: 6px;
146
+ width: 100%;
147
+ padding: 6px 8px;
148
+ border: none;
149
+ border-radius: 5px;
150
+ background: none;
151
+ font: inherit;
152
+ text-align: left;
153
+ cursor: pointer;
154
+ color: #1a1d23;
155
+ }
156
+
157
+ .xw-story:hover:not(:disabled) {
158
+ background: #eef1f6;
159
+ }
160
+
161
+ .xw-story-active,
162
+ .xw-story-active:hover:not(:disabled) {
163
+ background: #dce6fb;
164
+ color: #1d3fae;
165
+ font-weight: 600;
166
+ }
167
+
168
+ .xw-story:disabled {
169
+ color: #8a93a3;
170
+ cursor: default;
171
+ }
172
+
173
+ .xw-story-name {
174
+ overflow: hidden;
175
+ text-overflow: ellipsis;
176
+ white-space: nowrap;
177
+ }
178
+
179
+ .xw-story-badge {
180
+ font-size: 10px;
181
+ text-transform: uppercase;
182
+ letter-spacing: 0.04em;
183
+ color: #8a93a3;
184
+ flex: none;
185
+ }
186
+
187
+ .xw-stage-area {
188
+ flex: 1;
189
+ min-width: 0;
190
+ min-height: 0;
191
+ position: relative;
192
+ display: flex;
193
+ overflow: auto;
194
+ }
195
+
196
+ .xw-stage-slot {
197
+ flex: 1;
198
+ min-width: 0;
199
+ min-height: 0;
200
+ position: relative;
201
+ }
202
+
203
+ .xw-stage-host {
204
+ min-height: 100%;
205
+ }
206
+
207
+ .xw-stage-mount {
208
+ min-height: 100%;
209
+ }
210
+
211
+ .xw-stage-note {
212
+ position: absolute;
213
+ top: 10px;
214
+ left: 50%;
215
+ transform: translateX(-50%);
216
+ max-width: min(560px, 90%);
217
+ padding: 10px 14px;
218
+ background: #ffffff;
219
+ border: 1px solid #d8dbe0;
220
+ border-radius: 8px;
221
+ box-shadow: 0 2px 10px rgb(0 0 0 / 8%);
222
+ z-index: 10;
223
+ }
224
+
225
+ .xw-stage-note.xw-error {
226
+ border-color: #e2a9a3;
227
+ background: #fdf6f5;
228
+ max-height: 80%;
229
+ overflow: auto;
230
+ }
231
+
232
+ .xw-error-title {
233
+ font-weight: 700;
234
+ margin: 0 0 6px;
235
+ color: #b3261e;
236
+ }
237
+
238
+ .xw-error-detail {
239
+ margin: 6px 0;
240
+ font:
241
+ 11px/1.5 ui-monospace,
242
+ monospace;
243
+ white-space: pre-wrap;
244
+ word-break: break-word;
245
+ }
246
+
247
+ .xw-error-actions {
248
+ display: flex;
249
+ gap: 8px;
250
+ margin-top: 8px;
251
+ }
252
+
253
+ .xw-stale-badge {
254
+ position: absolute;
255
+ top: 10px;
256
+ right: 10px;
257
+ z-index: 10;
258
+ padding: 3px 8px;
259
+ border-radius: 4px;
260
+ background: #fff4d6;
261
+ border: 1px solid #e2c96e;
262
+ color: #7a5b00;
263
+ font-size: 11px;
264
+ font-weight: 700;
265
+ text-transform: uppercase;
266
+ letter-spacing: 0.05em;
267
+ }
268
+
269
+ .xw-subtle {
270
+ color: #5a6472;
271
+ font-size: 12px;
272
+ }
273
+
274
+ .xw-error {
275
+ padding: 12px;
276
+ color: #b3261e;
277
+ }
278
+
279
+ .xw-empty {
280
+ padding: 12px;
281
+ color: #5a6472;
282
+ }
283
+
284
+ .xw-example {
285
+ font:
286
+ 11px/1.5 ui-monospace,
287
+ monospace;
288
+ background: #f4f5f7;
289
+ padding: 10px;
290
+ border-radius: 6px;
291
+ overflow-x: auto;
292
+ }
293
+
294
+ .xw-field {
295
+ padding: 6px 4px;
296
+ border-bottom: 1px solid #eef0f3;
297
+ }
298
+
299
+ .xw-field-row {
300
+ display: flex;
301
+ align-items: center;
302
+ gap: 8px;
303
+ }
304
+
305
+ .xw-field-label {
306
+ flex: none;
307
+ width: 90px;
308
+ font-weight: 600;
309
+ overflow: hidden;
310
+ text-overflow: ellipsis;
311
+ white-space: nowrap;
312
+ }
313
+
314
+ .xw-field input[type='text'],
315
+ .xw-field input[type='number'],
316
+ .xw-field select {
317
+ flex: 1;
318
+ min-width: 0;
319
+ padding: 4px 6px;
320
+ border: 1px solid #c9ced6;
321
+ border-radius: 5px;
322
+ font: inherit;
323
+ }
324
+
325
+ .xw-field-error {
326
+ margin-top: 4px;
327
+ font-size: 12px;
328
+ color: #b3261e;
329
+ }
330
+
331
+ .xw-btn {
332
+ padding: 4px 10px;
333
+ border: 1px solid #c9ced6;
334
+ border-radius: 5px;
335
+ background: #ffffff;
336
+ font: inherit;
337
+ cursor: pointer;
338
+ white-space: nowrap;
339
+ }
340
+
341
+ .xw-btn:hover:not(:disabled) {
342
+ background: #eef1f6;
343
+ }
344
+
345
+ .xw-btn:disabled {
346
+ color: #9aa2b1;
347
+ background: #f4f5f7;
348
+ cursor: default;
349
+ }
350
+
351
+ .xw-btn[aria-pressed='true'] {
352
+ background: #dce6fb;
353
+ border-color: #9db4ea;
354
+ color: #1d3fae;
355
+ }
356
+
357
+ .xw-reset {
358
+ font-weight: 600;
359
+ }
360
+
361
+ /* keyboard reachability must stay visible */
362
+ .xw-root :focus-visible {
363
+ outline: 2px solid #3b62d9;
364
+ outline-offset: 1px;
365
+ }
366
+
367
+ .xw-stageonly {
368
+ position: fixed;
369
+ inset: 0;
370
+ }
371
+
372
+ .xw-stageonly .xw-stage-area {
373
+ flex: 1;
374
+ }
375
+
376
+ .xw-stageonly-bar {
377
+ position: fixed;
378
+ bottom: 12px;
379
+ left: 50%;
380
+ transform: translateX(-50%);
381
+ display: flex;
382
+ gap: 8px;
383
+ z-index: 40;
384
+ padding: 6px;
385
+ border-radius: 8px;
386
+ background: rgb(255 255 255 / 92%);
387
+ border: 1px solid #d8dbe0;
388
+ box-shadow: 0 2px 10px rgb(0 0 0 / 12%);
389
+ }
390
+
391
+ .xw-stage-error-marker {
392
+ position: absolute;
393
+ inset: 0;
394
+ background: repeating-linear-gradient(
395
+ 45deg,
396
+ transparent,
397
+ transparent 10px,
398
+ rgb(179 38 30 / 4%) 10px,
399
+ rgb(179 38 30 / 4%) 20px
400
+ );
401
+ pointer-events: none;
402
+ }
403
+
404
+ .xw-live {
405
+ position: absolute;
406
+ width: 1px;
407
+ height: 1px;
408
+ overflow: hidden;
409
+ clip: rect(0 0 0 0);
410
+ white-space: nowrap;
411
+ }
412
+
413
+ /* xplat-web-only:end */
414
+
415
+ /* xplat-web-only:start */
416
+ .xw-target-menu {
417
+ position: relative;
418
+ }
419
+ .xw-target-menu summary {
420
+ cursor: pointer;
421
+ }
422
+ .xw-target-menu ul {
423
+ position: absolute;
424
+ z-index: 10;
425
+ background: white;
426
+ border: 1px solid #d8dbe0;
427
+ padding: 12px 24px;
428
+ width: 220px;
429
+ }
430
+ .xw-environment {
431
+ margin-bottom: 12px;
432
+ }
433
+ .xw-environment label {
434
+ display: block;
435
+ margin: 6px 0;
436
+ }
437
+ .xw-background-light {
438
+ background: white;
439
+ }
440
+ .xw-background-dark {
441
+ background: #202124;
442
+ }
443
+ /* xplat-web-only:end */
444
+
445
+ /* xplat-web-only:start */
446
+ .xw-unset {
447
+ flex: none;
448
+ }
449
+ /* xplat-web-only:end */