@bramas/simulant-ui 0.0.0-stage → 0.1.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 (53) hide show
  1. package/LICENCE.txt +515 -0
  2. package/dist/SimulatorApp.jsx +601 -0
  3. package/dist/components/AlgorithmViewer.css +270 -0
  4. package/dist/components/AlgorithmViewer.jsx +218 -0
  5. package/dist/components/BranchPicker.css +96 -0
  6. package/dist/components/BranchPicker.jsx +65 -0
  7. package/dist/components/ConfigGraphGenerator.css +129 -0
  8. package/dist/components/ConfigGraphGenerator.jsx +408 -0
  9. package/dist/components/GenericEditor.jsx +228 -0
  10. package/dist/components/LeanView.jsx +133 -0
  11. package/dist/components/ModelView.css +520 -0
  12. package/dist/components/ModelView.jsx +272 -0
  13. package/dist/components/SettingsLibrary.jsx +61 -0
  14. package/dist/components/StateInspector.css +136 -0
  15. package/dist/components/StateInspector.jsx +103 -0
  16. package/dist/components/highlight.js +99 -0
  17. package/dist/pico.min.css +4 -0
  18. package/dist/renderers/define.js +28 -0
  19. package/dist/renderers/ring.js +103 -0
  20. package/dist/sim/branches.js +28 -0
  21. package/dist/sim/describe.js +408 -0
  22. package/dist/sim/execution.js +42 -0
  23. package/dist/sim/project.js +349 -0
  24. package/dist/sim/snapshot.js +29 -0
  25. package/dist/sim/types.js +1 -0
  26. package/dist/simulator.css +593 -0
  27. package/package.json +50 -3
  28. package/src/SimulatorApp.tsx +661 -0
  29. package/src/components/AlgorithmViewer.css +270 -0
  30. package/src/components/AlgorithmViewer.tsx +256 -0
  31. package/src/components/BranchPicker.css +96 -0
  32. package/src/components/BranchPicker.tsx +90 -0
  33. package/src/components/ConfigGraphGenerator.css +129 -0
  34. package/src/components/ConfigGraphGenerator.tsx +448 -0
  35. package/src/components/GenericEditor.tsx +413 -0
  36. package/src/components/LeanView.tsx +162 -0
  37. package/src/components/ModelView.css +520 -0
  38. package/src/components/ModelView.tsx +317 -0
  39. package/src/components/SettingsLibrary.tsx +84 -0
  40. package/src/components/StateInspector.css +136 -0
  41. package/src/components/StateInspector.tsx +125 -0
  42. package/src/components/highlight.ts +100 -0
  43. package/src/pico.min.css +4 -0
  44. package/src/renderers/define.ts +54 -0
  45. package/src/renderers/ring.ts +112 -0
  46. package/src/sim/branches.ts +30 -0
  47. package/src/sim/describe.ts +416 -0
  48. package/src/sim/execution.ts +65 -0
  49. package/src/sim/project.ts +377 -0
  50. package/src/sim/snapshot.ts +60 -0
  51. package/src/sim/types.ts +28 -0
  52. package/src/simulator.css +593 -0
  53. package/README.md +0 -3
@@ -0,0 +1,593 @@
1
+ @import './pico.min.css';
2
+
3
+ /*
4
+ * Design tokens of the simulator, for both themes. The theme follows the system unless the
5
+ * user picks one (`data-theme` on <html>, remembered by the page).
6
+ */
7
+ :root {
8
+ --pico-font-size: 100%;
9
+
10
+ --sim-surface: #ffffff;
11
+ --sim-surface-2: #f6f7f9;
12
+ --sim-border: #e1e4e8;
13
+ --sim-text: #1f2328;
14
+ --sim-muted: #6a737d;
15
+ --sim-accent: #2563eb;
16
+ --sim-accent-soft: rgba(37, 99, 235, 0.1);
17
+ --sim-highlight: #f5b301;
18
+ --sim-highlight-soft: rgba(245, 179, 1, 0.16);
19
+ --sim-highlight-faint: rgba(245, 179, 1, 0.07);
20
+ --sim-success: #1a7f37;
21
+ --sim-success-soft: #dcf5e3;
22
+ --sim-failure: #cf222e;
23
+ --sim-failure-soft: #fde2e1;
24
+ --sim-progress: #9a6700;
25
+ --sim-progress-soft: #fff4d6;
26
+ --sim-radius: 10px;
27
+ --sim-mono: ui-monospace, 'SF Mono', 'Consolas', 'Monaco', monospace;
28
+
29
+ --tok-keyword: #0033b3;
30
+ --tok-action: #c2410c;
31
+ --tok-function: #00796b;
32
+ --tok-comment: #6a737d;
33
+ --tok-constant: #8250df;
34
+ --tok-number: #1750eb;
35
+ --tok-type: #795548;
36
+ --tok-key: #0550ae;
37
+ --tok-string: #8250df;
38
+ }
39
+
40
+ :root[data-theme='dark'] {
41
+ --sim-surface: #161b22;
42
+ --sim-surface-2: #0d1117;
43
+ --sim-border: #30363d;
44
+ --sim-text: #e6edf3;
45
+ --sim-muted: #8b949e;
46
+ --sim-accent: #58a6ff;
47
+ --sim-accent-soft: rgba(88, 166, 255, 0.15);
48
+ --sim-highlight-soft: rgba(245, 179, 1, 0.18);
49
+ --sim-highlight-faint: rgba(245, 179, 1, 0.08);
50
+ --sim-success: #3fb950;
51
+ --sim-success-soft: rgba(63, 185, 80, 0.15);
52
+ --sim-failure: #f85149;
53
+ --sim-failure-soft: rgba(248, 81, 73, 0.15);
54
+ --sim-progress: #d29922;
55
+ --sim-progress-soft: rgba(210, 153, 34, 0.15);
56
+
57
+ --tok-keyword: #79c0ff;
58
+ --tok-action: #ffa657;
59
+ --tok-function: #d2a8ff;
60
+ --tok-comment: #8b949e;
61
+ --tok-constant: #ff7b72;
62
+ --tok-number: #a5d6ff;
63
+ --tok-type: #7ee787;
64
+ --tok-key: #79c0ff;
65
+ --tok-string: #a5d6ff;
66
+ }
67
+
68
+ @media (prefers-color-scheme: dark) {
69
+ :root:not([data-theme='light']) {
70
+ --sim-surface: #161b22;
71
+ --sim-surface-2: #0d1117;
72
+ --sim-border: #30363d;
73
+ --sim-text: #e6edf3;
74
+ --sim-muted: #8b949e;
75
+ --sim-accent: #58a6ff;
76
+ --sim-accent-soft: rgba(88, 166, 255, 0.15);
77
+ --sim-highlight-soft: rgba(245, 179, 1, 0.18);
78
+ --sim-highlight-faint: rgba(245, 179, 1, 0.08);
79
+ --sim-success: #3fb950;
80
+ --sim-success-soft: rgba(63, 185, 80, 0.15);
81
+ --sim-failure: #f85149;
82
+ --sim-failure-soft: rgba(248, 81, 73, 0.15);
83
+ --sim-progress: #d29922;
84
+ --sim-progress-soft: rgba(210, 153, 34, 0.15);
85
+
86
+ --tok-keyword: #79c0ff;
87
+ --tok-action: #ffa657;
88
+ --tok-function: #d2a8ff;
89
+ --tok-comment: #8b949e;
90
+ --tok-constant: #ff7b72;
91
+ --tok-number: #a5d6ff;
92
+ --tok-type: #7ee787;
93
+ --tok-key: #79c0ff;
94
+ --tok-string: #a5d6ff;
95
+ }
96
+ }
97
+
98
+ /* Layout */
99
+
100
+ .sim-app {
101
+ max-width: 1440px;
102
+ margin: 0 auto;
103
+ padding: 1rem 1.5rem 3rem;
104
+ color: var(--sim-text);
105
+ }
106
+
107
+ .sim-header {
108
+ display: flex;
109
+ align-items: center;
110
+ gap: 1rem;
111
+ flex-wrap: wrap;
112
+ margin-bottom: 1rem;
113
+ }
114
+
115
+ .sim-header h1 {
116
+ margin: 0;
117
+ font-size: 1.5rem;
118
+ }
119
+
120
+ .sim-header select {
121
+ width: auto;
122
+ min-width: 18rem;
123
+ margin: 0;
124
+ }
125
+
126
+ .sim-header .sim-spacer {
127
+ flex: 1;
128
+ }
129
+
130
+ .sim-tabs {
131
+ display: inline-flex;
132
+ padding: 0.2rem;
133
+ gap: 0.2rem;
134
+ border-radius: 999px;
135
+ background: var(--sim-surface-2);
136
+ border: 1px solid var(--sim-border);
137
+ }
138
+
139
+ .sim-app button.sim-tab {
140
+ border: none;
141
+ border-radius: 999px;
142
+ background: transparent;
143
+ color: var(--sim-muted);
144
+ font-weight: 600;
145
+ --pico-form-element-spacing-vertical: 0.2rem;
146
+ --pico-form-element-spacing-horizontal: 0.9rem;
147
+ }
148
+
149
+ .sim-app button.sim-tab:hover:not(.sim-tab-current) {
150
+ color: var(--sim-text);
151
+ }
152
+
153
+ .sim-app button.sim-tab.sim-tab-current {
154
+ background: var(--sim-surface);
155
+ color: var(--sim-text);
156
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
157
+ }
158
+
159
+ /* The model at a glance, above the simulation: opens the model view. */
160
+
161
+ .sim-app button.sim-model-strip {
162
+ display: flex;
163
+ flex-wrap: wrap;
164
+ align-items: baseline;
165
+ gap: 0.25rem 0;
166
+ width: 100%;
167
+ margin: 0 0 0.75rem;
168
+ padding: 0.35rem 0.75rem;
169
+ background: transparent;
170
+ border: 1px dashed var(--sim-border);
171
+ border-radius: var(--sim-radius);
172
+ color: var(--sim-text);
173
+ font-size: 0.82rem;
174
+ text-align: left;
175
+ }
176
+
177
+ .sim-app button.sim-model-strip:hover {
178
+ background: var(--sim-surface-2);
179
+ border-style: solid;
180
+ }
181
+
182
+ .sim-model-strip-label {
183
+ font-weight: 600;
184
+ margin-right: 0.6rem;
185
+ }
186
+
187
+ .sim-model-strip-item {
188
+ font-family: var(--sim-mono);
189
+ font-size: 0.78rem;
190
+ }
191
+
192
+ .sim-model-strip-item + .sim-model-strip-item::before {
193
+ content: '·';
194
+ margin: 0 0.5rem;
195
+ color: var(--sim-muted);
196
+ }
197
+
198
+ .sim-model-strip-more {
199
+ margin-left: auto;
200
+ padding-left: 1rem;
201
+ color: var(--sim-accent);
202
+ white-space: nowrap;
203
+ }
204
+
205
+ .sim-card {
206
+ background: var(--sim-surface);
207
+ border: 1px solid var(--sim-border);
208
+ border-radius: var(--sim-radius);
209
+ padding: 0.85rem 1rem;
210
+ }
211
+
212
+ .sim-card > h3,
213
+ .sim-card-title {
214
+ margin: 0 0 0.75rem;
215
+ font-size: 1rem;
216
+ font-weight: 600;
217
+ display: flex;
218
+ align-items: center;
219
+ gap: 0.6rem;
220
+ }
221
+
222
+ .sim-muted {
223
+ color: var(--sim-muted);
224
+ font-size: 0.85rem;
225
+ }
226
+
227
+ .sim-main {
228
+ display: grid;
229
+ grid-template-columns: 520px minmax(0, 1fr);
230
+ gap: 1.25rem;
231
+ align-items: start;
232
+ margin-top: 1rem;
233
+ }
234
+
235
+ .sim-main > .sim-left {
236
+ position: sticky;
237
+ top: 0.75rem;
238
+ }
239
+
240
+ @media (max-width: 1100px) {
241
+ .sim-main { grid-template-columns: minmax(0, 1fr); }
242
+ .sim-main > .sim-left { position: static; }
243
+ }
244
+
245
+ .sim-panels {
246
+ display: grid;
247
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
248
+ gap: 1.25rem;
249
+ margin-top: 1.25rem;
250
+ }
251
+
252
+ @media (max-width: 900px) {
253
+ .sim-panels { grid-template-columns: minmax(0, 1fr); }
254
+ }
255
+
256
+ .sim-section {
257
+ margin-top: 1.25rem;
258
+ }
259
+
260
+ /* Buttons: compact, in three weights */
261
+
262
+ .sim-app button {
263
+ --pico-form-element-spacing-vertical: 0.3rem;
264
+ --pico-form-element-spacing-horizontal: 0.7rem;
265
+ margin: 0;
266
+ width: auto;
267
+ font-size: 0.9rem;
268
+ }
269
+
270
+ .sim-app button.sim-ghost {
271
+ background: transparent;
272
+ color: var(--sim-text);
273
+ border-color: var(--sim-border);
274
+ }
275
+
276
+ .sim-app button.sim-ghost:hover:not(:disabled) {
277
+ background: var(--sim-surface-2);
278
+ }
279
+
280
+ .sim-app button.sim-icon {
281
+ --pico-form-element-spacing-horizontal: 0.45rem;
282
+ min-width: 2rem;
283
+ }
284
+
285
+ .sim-app button.sim-danger {
286
+ color: var(--sim-failure);
287
+ }
288
+
289
+ /* The execution toolbar */
290
+
291
+ .sim-toolbar {
292
+ display: flex;
293
+ align-items: center;
294
+ gap: 0.75rem 1.25rem;
295
+ flex-wrap: wrap;
296
+ }
297
+
298
+ .sim-toolbar .sim-group {
299
+ display: flex;
300
+ align-items: center;
301
+ gap: 0.4rem;
302
+ }
303
+
304
+ .sim-toolbar .sim-round {
305
+ font-weight: 600;
306
+ min-width: 5.5rem;
307
+ text-align: center;
308
+ font-variant-numeric: tabular-nums;
309
+ }
310
+
311
+ .sim-toolbar .sim-divider {
312
+ width: 1px;
313
+ align-self: stretch;
314
+ background: var(--sim-border);
315
+ }
316
+
317
+ .sim-step-label {
318
+ font-family: var(--sim-mono);
319
+ font-size: 0.8rem;
320
+ color: var(--sim-muted);
321
+ }
322
+
323
+ .sim-path {
324
+ display: flex;
325
+ flex-wrap: wrap;
326
+ gap: 0.25rem;
327
+ margin-top: 0.6rem;
328
+ align-items: center;
329
+ }
330
+
331
+ .sim-path .sim-path-label {
332
+ font-size: 0.8rem;
333
+ color: var(--sim-muted);
334
+ margin-right: 0.25rem;
335
+ }
336
+
337
+ .sim-step {
338
+ font-family: var(--sim-mono);
339
+ font-size: 0.75rem;
340
+ padding: 0.05rem 0.4rem;
341
+ border-radius: 999px;
342
+ border: 1px solid var(--sim-border);
343
+ background: var(--sim-surface-2);
344
+ color: var(--sim-text);
345
+ cursor: pointer;
346
+ line-height: 1.4;
347
+ }
348
+
349
+ .sim-step.sim-current {
350
+ border-color: var(--sim-highlight);
351
+ background: var(--sim-highlight-soft);
352
+ font-weight: 600;
353
+ }
354
+
355
+ .sim-step.sim-future {
356
+ opacity: 0.45;
357
+ }
358
+
359
+ /* Status chips (verdicts) */
360
+
361
+ .sim-chip {
362
+ display: inline-flex;
363
+ align-items: center;
364
+ gap: 0.3rem;
365
+ font-size: 0.78rem;
366
+ font-weight: 600;
367
+ padding: 0.1rem 0.55rem;
368
+ border-radius: 999px;
369
+ white-space: nowrap;
370
+ background: var(--sim-surface-2);
371
+ color: var(--sim-muted);
372
+ border: 1px solid var(--sim-border);
373
+ }
374
+
375
+ .sim-chip.sim-success { background: var(--sim-success-soft); color: var(--sim-success); border-color: transparent; }
376
+ .sim-chip.sim-failure { background: var(--sim-failure-soft); color: var(--sim-failure); border-color: transparent; }
377
+ .sim-chip.sim-inProgress { background: var(--sim-progress-soft); color: var(--sim-progress); border-color: transparent; }
378
+
379
+ /* Notices */
380
+
381
+ .sim-notice {
382
+ margin: 0 0 1rem;
383
+ padding: 0.6rem 0.8rem;
384
+ border-radius: var(--sim-radius);
385
+ font-size: 0.85rem;
386
+ white-space: pre-wrap;
387
+ font-family: var(--sim-mono);
388
+ background: var(--sim-progress-soft);
389
+ color: var(--sim-text);
390
+ border: 1px solid var(--sim-progress);
391
+ }
392
+
393
+ .sim-notice.sim-error {
394
+ background: var(--sim-failure-soft);
395
+ border-color: var(--sim-failure);
396
+ }
397
+
398
+ .sim-settings-feedback {
399
+ font-family: inherit;
400
+ margin: 0;
401
+ }
402
+
403
+ .sim-settings-warning {
404
+ white-space: normal;
405
+ }
406
+
407
+ .sim-toast {
408
+ position: fixed;
409
+ bottom: 1.25rem;
410
+ left: 50%;
411
+ transform: translateX(-50%);
412
+ background: var(--sim-text);
413
+ color: var(--sim-surface);
414
+ padding: 0.45rem 0.9rem;
415
+ border-radius: 999px;
416
+ font-size: 0.85rem;
417
+ z-index: 100;
418
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
419
+ }
420
+
421
+ /* The configuration's canvas: drawings assume a white background. */
422
+
423
+ .sim-canvas {
424
+ display: block;
425
+ background: white;
426
+ border-radius: 8px;
427
+ border: 1px solid var(--sim-border);
428
+ cursor: pointer;
429
+ max-width: 100%;
430
+ }
431
+
432
+ .theme-toggle {
433
+ min-width: 2.2rem;
434
+ }
435
+
436
+ /* Forms inside the simulator */
437
+
438
+ .sim-app input,
439
+ .sim-app select,
440
+ .sim-app textarea {
441
+ --pico-form-element-spacing-vertical: 0.35rem;
442
+ --pico-form-element-spacing-horizontal: 0.55rem;
443
+ margin-bottom: 0;
444
+ font-size: 0.9rem;
445
+ }
446
+
447
+ .sim-app label {
448
+ font-size: 0.85rem;
449
+ margin-bottom: 0;
450
+ }
451
+
452
+ .sim-form {
453
+ display: grid;
454
+ grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr));
455
+ gap: 0.6rem 0.9rem;
456
+ }
457
+
458
+ .sim-form .sim-field-wide {
459
+ grid-column: 1 / -1;
460
+ }
461
+
462
+ .sim-form label {
463
+ display: flex;
464
+ flex-direction: column;
465
+ gap: 0.2rem;
466
+ }
467
+
468
+ .sim-form input[type='checkbox'] {
469
+ margin-right: 0.4rem;
470
+ }
471
+
472
+ .sim-form label:has(input[type='checkbox']) {
473
+ flex-direction: row;
474
+ align-items: center;
475
+ }
476
+
477
+ /* Presets and saved settings */
478
+
479
+ .sim-library h4 {
480
+ margin: 0 0 0.35rem;
481
+ font-size: 0.75rem;
482
+ font-weight: 600;
483
+ text-transform: uppercase;
484
+ letter-spacing: 0.04em;
485
+ color: var(--sim-muted);
486
+ }
487
+
488
+ .sim-library h4:not(:first-child) {
489
+ margin-top: 0.9rem;
490
+ }
491
+
492
+ .sim-entries {
493
+ list-style: none;
494
+ margin: 0;
495
+ padding: 0;
496
+ }
497
+
498
+ .sim-entries li.sim-entry {
499
+ list-style: none;
500
+ display: flex;
501
+ align-items: center;
502
+ gap: 0.75rem;
503
+ padding: 0.35rem 0.5rem;
504
+ margin: 0;
505
+ border-radius: 6px;
506
+ border-left: 3px solid transparent;
507
+ }
508
+
509
+ .sim-entries li.sim-entry:hover {
510
+ background: var(--sim-surface-2);
511
+ }
512
+
513
+ .sim-entries li.sim-entry-current {
514
+ border-left-color: var(--sim-accent);
515
+ background: var(--sim-accent-soft);
516
+ }
517
+
518
+ .sim-entry-text {
519
+ display: flex;
520
+ flex-direction: column;
521
+ min-width: 0;
522
+ flex: 1;
523
+ }
524
+
525
+ .sim-entry-text .sim-muted {
526
+ font-family: var(--sim-mono);
527
+ font-size: 0.75rem;
528
+ overflow: hidden;
529
+ text-overflow: ellipsis;
530
+ white-space: nowrap;
531
+ }
532
+
533
+ .sim-entry-name {
534
+ font-weight: 600;
535
+ font-size: 0.9rem;
536
+ }
537
+
538
+ .sim-entry-actions {
539
+ display: flex;
540
+ gap: 0.3rem;
541
+ flex-shrink: 0;
542
+ }
543
+
544
+ .sim-entry-actions button {
545
+ font-size: 0.78rem !important;
546
+ --pico-form-element-spacing-vertical: 0.15rem;
547
+ --pico-form-element-spacing-horizontal: 0.5rem;
548
+ }
549
+
550
+ .sim-save {
551
+ display: flex;
552
+ gap: 0.5rem;
553
+ margin: 0.9rem 0 0;
554
+ }
555
+
556
+ .sim-save input {
557
+ flex: 1;
558
+ }
559
+
560
+ .sim-notice mark {
561
+ background: none;
562
+ color: inherit;
563
+ padding: 0;
564
+ }
565
+
566
+ .sim-choices button {
567
+ font-size: 0.8rem !important;
568
+ }
569
+
570
+ .sim-left .state-inspector {
571
+ width: 100%;
572
+ }
573
+
574
+ .sim-choices button {
575
+ max-width: 20rem;
576
+ overflow: hidden;
577
+ text-overflow: ellipsis;
578
+ white-space: nowrap;
579
+ }
580
+
581
+ .sim-branch {
582
+ font-weight: 600;
583
+ font-size: 0.9rem;
584
+ white-space: nowrap;
585
+ font-variant-numeric: tabular-nums;
586
+ }
587
+
588
+ .sim-branch-label {
589
+ max-width: 18rem;
590
+ overflow: hidden;
591
+ text-overflow: ellipsis;
592
+ white-space: nowrap;
593
+ }
package/package.json CHANGED
@@ -1,6 +1,53 @@
1
1
  {
2
2
  "name": "@bramas/simulant-ui",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.1",
4
+ "private": false,
5
+ "license": "CECILL-B",
6
+ "type": "module",
7
+ "publishConfig": {
8
+ "registry": "https://registry.npmjs.org",
9
+ "access": "public"
10
+ },
11
+ "exports": {
12
+ "./SimulatorApp": {
13
+ "types": "./src/SimulatorApp.tsx",
14
+ "solid": "./dist/SimulatorApp.jsx",
15
+ "default": "./dist/SimulatorApp.jsx"
16
+ },
17
+ "./simulator.css": "./src/simulator.css",
18
+ "./pico.min.css": "./src/pico.min.css",
19
+ "./components/*": {
20
+ "types": "./src/components/*.tsx",
21
+ "solid": "./dist/components/*.jsx",
22
+ "default": "./dist/components/*.jsx"
23
+ },
24
+ "./sim/*": {
25
+ "types": "./src/sim/*.ts",
26
+ "default": "./dist/sim/*.js"
27
+ },
28
+ "./renderers/*": {
29
+ "types": "./src/renderers/*.ts",
30
+ "default": "./dist/renderers/*.js"
31
+ }
32
+ },
33
+ "dependencies": {
34
+ "@bramas/simulant-lang": "0.1.1",
35
+ "@bramas/simulant-lean-gen": "0.1.1",
36
+ "@bramas/simulant-engine": "0.1.1",
37
+ "@bramas/simulant-core": "0.1.1",
38
+ "@bramas/simulant-vite-plugin": "0.1.1"
39
+ },
40
+ "peerDependencies": {
41
+ "solid-js": "^1.9.3"
42
+ },
43
+ "files": [
44
+ "src",
45
+ "dist",
46
+ "LICENCE.txt"
47
+ ],
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "git+https://github.com/Bramas/simulant.git",
51
+ "directory": "packages/simulator-ui"
52
+ }
6
53
  }