@mantaq/viz 0.0.0 → 0.1.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,406 @@
1
+ .viz {
2
+ --fuzz: #138a4a;
3
+ --bg: #fbfbfa;
4
+ --fg: #1d1d1f;
5
+ --muted: #6b6b70;
6
+ --line: #4a4a52;
7
+ --state-bg: #ffffff;
8
+ --state-border: #3b3b44;
9
+ --region-bg: #f1f1ef;
10
+ --accent: #2463eb;
11
+ --unknown: #a35c00;
12
+ --banner-bg: #fff6e0;
13
+ --banner-fg: #5a3e00;
14
+ color-scheme: light;
15
+ background: var(--bg);
16
+ color: var(--fg);
17
+ }
18
+
19
+ @media (prefers-color-scheme: dark) {
20
+ .viz {
21
+ --bg: #141416;
22
+ --fg: #ececf0;
23
+ --muted: #9a9aa3;
24
+ --line: #b4b4bf;
25
+ --state-bg: #1f1f23;
26
+ --state-border: #c9c9d2;
27
+ --region-bg: #1a1a1e;
28
+ --accent: #7aa7ff;
29
+ --unknown: #f0a742;
30
+ --fuzz: #4cc98a;
31
+ --banner-bg: #2e2510;
32
+ --banner-fg: #f3d58c;
33
+ color-scheme: dark;
34
+ }
35
+ }
36
+
37
+ .viz .viz-header {
38
+ display: flex;
39
+ flex-wrap: wrap;
40
+ gap: 16px;
41
+ align-items: center;
42
+ }
43
+
44
+ .viz .viz-header :is(h1, h2, h3) {
45
+ font-size: 18px;
46
+ margin: 0;
47
+ }
48
+
49
+ .viz .banner {
50
+ background: var(--banner-bg);
51
+ color: var(--banner-fg);
52
+ padding: 8px 12px;
53
+ border-radius: 6px;
54
+ }
55
+
56
+ .viz .legend {
57
+ display: flex;
58
+ flex-wrap: wrap;
59
+ gap: 4px 18px;
60
+ padding: 0;
61
+ list-style: none;
62
+ color: var(--muted);
63
+ font-size: 12px;
64
+ }
65
+
66
+ .viz .viz-main {
67
+ display: grid;
68
+ grid-template-columns: minmax(0, 1fr) 320px;
69
+ gap: 16px;
70
+ }
71
+
72
+ @media (max-width: 760px) {
73
+ .viz .viz-main {
74
+ grid-template-columns: minmax(0, 1fr);
75
+ }
76
+ }
77
+
78
+ .viz .canvas {
79
+ overflow: auto;
80
+ }
81
+
82
+ .viz .panel {
83
+ border-left: 1px solid var(--region-bg);
84
+ padding-left: 16px;
85
+ }
86
+
87
+ .viz .panel dl {
88
+ display: grid;
89
+ grid-template-columns: auto 1fr;
90
+ gap: 4px 12px;
91
+ }
92
+
93
+ .viz .panel dt {
94
+ color: var(--muted);
95
+ }
96
+
97
+ .viz .panel dd {
98
+ margin: 0;
99
+ }
100
+
101
+ .viz .panel ul {
102
+ margin: 0;
103
+ padding-left: 16px;
104
+ }
105
+
106
+ .viz .link {
107
+ color: var(--accent);
108
+ cursor: pointer;
109
+ }
110
+
111
+ .viz .graph {
112
+ width: 100%;
113
+ height: auto;
114
+ }
115
+
116
+ .viz .graph text {
117
+ fill: var(--fg);
118
+ font-size: 12px;
119
+ paint-order: stroke;
120
+ stroke: var(--bg);
121
+ stroke-width: 4px;
122
+ stroke-linejoin: round;
123
+ }
124
+
125
+ .viz .graph .arrow-head {
126
+ fill: var(--line);
127
+ }
128
+
129
+ .viz .region rect {
130
+ fill: var(--region-bg);
131
+ stroke: var(--muted);
132
+ stroke-dasharray: 2 3;
133
+ }
134
+
135
+ .viz .region text {
136
+ fill: var(--muted);
137
+ }
138
+
139
+ .viz .state .frame {
140
+ fill: var(--state-bg);
141
+ stroke: var(--state-border);
142
+ stroke-width: 1.5;
143
+ }
144
+
145
+ .viz .state.final .inner {
146
+ fill: none;
147
+ }
148
+
149
+ .viz .state,
150
+ .viz .edge {
151
+ cursor: pointer;
152
+ outline: none;
153
+ }
154
+
155
+ .viz .edge path {
156
+ fill: none;
157
+ stroke: var(--line);
158
+ stroke-width: 1.5;
159
+ }
160
+
161
+ .viz .edge.internal path {
162
+ stroke-dasharray: 1 3;
163
+ stroke-linecap: round;
164
+ }
165
+
166
+ .viz .edge.internal text {
167
+ font-style: italic;
168
+ }
169
+
170
+ .viz .edge.effect {
171
+ opacity: 0.45;
172
+ }
173
+
174
+ .viz .edge.undetermined path {
175
+ stroke: var(--unknown);
176
+ stroke-dasharray: 6 4;
177
+ }
178
+
179
+ .viz .edge.fuzz path {
180
+ stroke: var(--fuzz);
181
+ }
182
+
183
+ .viz .edge.fuzz text {
184
+ fill: var(--fuzz);
185
+ }
186
+
187
+ .viz .edge.stay path {
188
+ stroke-dasharray: 1 3;
189
+ stroke-linecap: round;
190
+ }
191
+
192
+ .viz .steps {
193
+ margin: 0;
194
+ padding-left: 20px;
195
+ font-family: ui-monospace, monospace;
196
+ font-size: 12px;
197
+ }
198
+
199
+ .viz .unknown-node circle {
200
+ fill: var(--state-bg);
201
+ stroke: var(--unknown);
202
+ stroke-dasharray: 4 3;
203
+ }
204
+
205
+ .viz .unknown-node text {
206
+ fill: var(--unknown);
207
+ font-weight: 700;
208
+ }
209
+
210
+ .viz .any-node rect {
211
+ fill: none;
212
+ stroke: var(--state-border);
213
+ stroke-width: 1.5;
214
+ stroke-dasharray: 2 3;
215
+ }
216
+
217
+ .viz .any-node text {
218
+ fill: var(--muted);
219
+ font-style: italic;
220
+ }
221
+
222
+ .viz .entry circle {
223
+ fill: var(--line);
224
+ }
225
+
226
+ .viz .entry path {
227
+ stroke: var(--line);
228
+ stroke-width: 1.5;
229
+ }
230
+
231
+ .viz.coverage-on .unreached {
232
+ opacity: 0.35;
233
+ }
234
+
235
+ .viz.coverage-on .state.unreached .frame,
236
+ .viz.coverage-on .edge.unreached path {
237
+ stroke-dasharray: 3 3;
238
+ }
239
+
240
+ .viz .highlight path,
241
+ .viz .highlight .frame,
242
+ .viz .highlight circle,
243
+ .viz .selected path,
244
+ .viz .selected .frame {
245
+ stroke: var(--accent);
246
+ stroke-width: 2.5;
247
+ }
248
+
249
+ .viz .state:focus-visible .frame,
250
+ .viz .edge:focus-visible path {
251
+ stroke: var(--accent);
252
+ stroke-width: 3;
253
+ }
254
+
255
+ .viz .load-error {
256
+ color: var(--unknown);
257
+ }
258
+
259
+ .viz .muted {
260
+ color: var(--muted);
261
+ }
262
+
263
+ .viz .explanation p {
264
+ margin: 2px 0;
265
+ }
266
+
267
+ .viz .explanation pre {
268
+ overflow-x: auto;
269
+ font-size: 12px;
270
+ background: var(--region-bg);
271
+ padding: 6px;
272
+ border-radius: 4px;
273
+ }
274
+
275
+ .viz .branches {
276
+ padding-left: 16px;
277
+ }
278
+
279
+ .viz .branch[data-branch-status="not in graph"] .branch-status {
280
+ color: var(--unknown);
281
+ font-weight: 600;
282
+ }
283
+
284
+ .viz .branch[data-branch-status="this edge"] .branch-status {
285
+ color: var(--accent);
286
+ }
287
+
288
+ .viz .prediction-note,
289
+ .viz .routing-note {
290
+ background: var(--banner-bg);
291
+ color: var(--banner-fg);
292
+ padding: 6px 8px;
293
+ border-radius: 4px;
294
+ }
295
+
296
+ /* Explore: the walk over the drawn graph. */
297
+ .viz .taken path,
298
+ .viz .current .frame {
299
+ stroke: var(--accent);
300
+ stroke-width: 2.5;
301
+ }
302
+
303
+ .viz .current .frame {
304
+ stroke-width: 3.5;
305
+ }
306
+
307
+ .viz .next path {
308
+ stroke: var(--accent);
309
+ stroke-width: 3;
310
+ stroke-dasharray: 8 5;
311
+ animation: viz-march 0.8s linear infinite;
312
+ }
313
+
314
+ .viz .next text {
315
+ fill: var(--accent);
316
+ font-weight: 700;
317
+ }
318
+
319
+ .viz .edge.effect.running {
320
+ opacity: 1;
321
+ }
322
+
323
+ .viz .running path {
324
+ stroke: var(--accent);
325
+ stroke-width: 2.5;
326
+ }
327
+
328
+ .viz .running text {
329
+ fill: var(--accent);
330
+ font-weight: 700;
331
+ }
332
+
333
+ @keyframes viz-march {
334
+ to {
335
+ stroke-dashoffset: -13;
336
+ }
337
+ }
338
+
339
+ @media (prefers-reduced-motion: reduce) {
340
+ .viz .next path {
341
+ animation: none;
342
+ }
343
+ }
344
+
345
+ .viz .explore {
346
+ background: var(--region-bg);
347
+ border-radius: 6px;
348
+ padding: 6px 10px;
349
+ margin-bottom: 12px;
350
+ }
351
+
352
+ .viz .explore h3 {
353
+ font-size: 13px;
354
+ margin: 10px 0 4px;
355
+ color: var(--muted);
356
+ }
357
+
358
+ .viz .explore ul,
359
+ .viz .explore ol {
360
+ margin: 0;
361
+ padding-left: 18px;
362
+ }
363
+
364
+ .viz .explore li {
365
+ margin: 3px 0;
366
+ }
367
+
368
+ .viz .explore li > button + button {
369
+ margin-left: 6px;
370
+ }
371
+
372
+ .viz .explore button {
373
+ cursor: pointer;
374
+ }
375
+
376
+ .viz .explore-path li[aria-current="step"] button {
377
+ font-weight: 700;
378
+ }
379
+
380
+ .viz .explore-controls {
381
+ display: flex;
382
+ gap: 6px;
383
+ margin: 8px 0;
384
+ }
385
+
386
+ .viz .explore .unhandled code {
387
+ text-decoration: line-through;
388
+ color: var(--unknown);
389
+ }
390
+
391
+ .viz .explore-done {
392
+ border-left: 3px solid var(--accent);
393
+ padding: 4px 8px;
394
+ }
395
+
396
+ .viz .explore-warning {
397
+ background: var(--banner-bg);
398
+ color: var(--banner-fg);
399
+ padding: 4px 8px;
400
+ border-radius: 4px;
401
+ }
402
+
403
+ .viz .reachable .frame {
404
+ stroke: var(--accent);
405
+ stroke-dasharray: 4 3;
406
+ }