@w6w/ui 0.2.11 → 0.2.54
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.
- package/CHANGELOG.md +139 -2
- package/README.md +28 -10
- package/dist/AppPicker.d.ts +12 -1
- package/dist/CanvasContextMenu.d.ts +19 -0
- package/dist/{CodeBlock-BqXDA35P.js → CodeBlock-C-oIIYfC.js} +1436 -555
- package/dist/CodeBlock-C-oIIYfC.js.map +1 -0
- package/dist/CodeBlock-CymlfyeA.cjs +15 -0
- package/dist/CodeBlock-CymlfyeA.cjs.map +1 -0
- package/dist/CodeEditor.d.ts +4 -1
- package/dist/ConditionEditor.d.ts +11 -0
- package/dist/JsonEditor.d.ts +12 -0
- package/dist/ParamCustomization.d.ts +5 -0
- package/dist/ParamsForm.d.ts +11 -3
- package/dist/RouterEditor.d.ts +5 -0
- package/dist/StepBuilderModal.d.ts +83 -13
- package/dist/StepNameEditor.d.ts +11 -0
- package/dist/StopEditor.d.ts +5 -0
- package/dist/TriggerFillForm.d.ts +14 -1
- package/dist/WebhookListenPanel.d.ts +28 -0
- package/dist/WorkflowConnections.d.ts +29 -0
- package/dist/WorkflowFlowEditor.d.ts +64 -8
- package/dist/assets/script-completion.worker-DDJKkj5M.js +8290 -0
- package/dist/assets/script-completion.worker-DDJKkj5M.js.map +1 -0
- package/dist/canvas-context-menu.d.ts +27 -0
- package/dist/code.cjs +1 -1
- package/dist/code.mjs +3 -4
- package/dist/code.mjs.map +1 -1
- package/dist/components/AnchoredFlyout.d.ts +7 -0
- package/dist/components/ColumnsEditor.d.ts +27 -0
- package/dist/components/Combobox.d.ts +12 -1
- package/dist/components/CsvPanel.d.ts +21 -0
- package/dist/components/DataEntryEditor.d.ts +38 -0
- package/dist/components/DataEntryList.d.ts +33 -0
- package/dist/components/DataStoreList.d.ts +33 -0
- package/dist/components/DataTableGrid.d.ts +46 -0
- package/dist/components/EventbriteTriggerPicker.d.ts +7 -0
- package/dist/components/ExecutionDetail.d.ts +17 -1
- package/dist/components/ExecutionList.d.ts +19 -1
- package/dist/components/ExecutionLogPanel.d.ts +61 -3
- package/dist/components/ExpressionEditorModal.d.ts +33 -10
- package/dist/components/ExpressionOptions.d.ts +101 -15
- package/dist/components/HtmlPreview.d.ts +7 -0
- package/dist/components/JsonTree.d.ts +32 -0
- package/dist/components/ResolvedParams.d.ts +6 -1
- package/dist/components/ResultViewer.d.ts +46 -0
- package/dist/components/ScriptBindingsNotice.d.ts +31 -0
- package/dist/components/ScriptCodeField.d.ts +13 -0
- package/dist/components/StepStatusPill.d.ts +7 -0
- package/dist/components/expression-authoring.d.ts +13 -0
- package/dist/components/expression-dom.d.ts +17 -2
- package/dist/components/expression-template.d.ts +25 -3
- package/dist/components/icons.d.ts +1 -1
- package/dist/components/json-compose.d.ts +53 -0
- package/dist/components/result-format.d.ts +13 -0
- package/dist/condition-editor.d.ts +44 -0
- package/dist/data-stores/data-store-view.d.ts +371 -0
- package/dist/eventbrite-trigger-selection.d.ts +13 -0
- package/dist/flow-connect.d.ts +22 -16
- package/dist/flow-delete.d.ts +16 -0
- package/dist/flow-history.d.ts +75 -0
- package/dist/flow-layout.d.ts +13 -0
- package/dist/flow-loop-colors.d.ts +39 -0
- package/dist/flow-loop.d.ts +98 -0
- package/dist/flow-node-flags.d.ts +14 -0
- package/dist/flow-problems.d.ts +69 -0
- package/dist/flow-state.d.ts +20 -0
- package/dist/flow-types.d.ts +137 -9
- package/dist/flow-utils.d.ts +27 -13
- package/dist/flow.cjs +4 -2
- package/dist/flow.cjs.map +1 -1
- package/dist/flow.d.ts +7 -3
- package/dist/flow.mjs +3563 -1557
- package/dist/flow.mjs.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +30 -4
- package/dist/index.mjs +2555 -1272
- package/dist/index.mjs.map +1 -1
- package/dist/node-samples-ChdyMBnJ.cjs +22 -0
- package/dist/node-samples-ChdyMBnJ.cjs.map +1 -0
- package/dist/node-samples-DkJL07EX.js +12302 -0
- package/dist/node-samples-DkJL07EX.js.map +1 -0
- package/dist/node-samples.d.ts +80 -0
- package/dist/output-shape.d.ts +30 -14
- package/dist/param-customization.d.ts +7 -0
- package/dist/provider.d.ts +119 -7
- package/dist/resolve-params.d.ts +45 -11
- package/dist/run-visuals.d.ts +14 -21
- package/dist/script-bindings.d.ts +63 -0
- package/dist/script-completion-service.d.ts +9 -0
- package/dist/script-completion.worker.d.ts +1 -0
- package/dist/script-completions.d.ts +2 -0
- package/dist/state-shape.d.ts +38 -0
- package/dist/step-preview-state.d.ts +155 -6
- package/dist/step-problems.d.ts +42 -12
- package/dist/test-inputs.d.ts +25 -0
- package/dist/trigger-registration.d.ts +28 -0
- package/dist/types.d.ts +70 -8
- package/dist/use-app-action-defs.d.ts +9 -1
- package/dist/use-test-input.d.ts +18 -0
- package/dist/workflow-connections.d.ts +30 -0
- package/package.json +16 -7
- package/src/code.css +60 -6
- package/src/styles/_canvas.scss +35 -0
- package/src/styles/_code-editor.scss +35 -0
- package/src/styles/_code.scss +6 -5
- package/src/styles/_copyable.scss +24 -0
- package/src/styles/_data-stores.scss +138 -0
- package/src/styles/_data-vars.scss +17 -6
- package/src/styles/_execution-history.scss +73 -0
- package/src/styles/_execution-log.scss +145 -1
- package/src/styles/_expression-modal.scss +106 -16
- package/src/styles/_fields.scss +11 -0
- package/src/styles/_flow.scss +160 -0
- package/src/styles/_fx.scss +3 -1
- package/src/styles/_incoming-state.scss +33 -0
- package/src/styles/_modal.scss +12 -0
- package/src/styles/_multiselect.scss +35 -0
- package/src/styles/_sections.scss +36 -0
- package/src/styles/_step-builder.scss +145 -0
- package/src/styles/_tester.scss +56 -0
- package/src/styles/_tokens.scss +27 -1
- package/src/styles.css +1290 -77
- package/src/styles.scss +2 -0
- package/dist/CodeBlock-BqXDA35P.js.map +0 -1
- package/dist/CodeBlock-CulfbnZD.cjs +0 -15
- package/dist/CodeBlock-CulfbnZD.cjs.map +0 -1
- package/dist/ConfirmModal-Ln99S9NT.js +0 -7919
- package/dist/ConfirmModal-Ln99S9NT.js.map +0 -1
- package/dist/ConfirmModal-fjHW5rN-.cjs +0 -14
- package/dist/ConfirmModal-fjHW5rN-.cjs.map +0 -1
- package/dist/Copyable-DA6eiU7w.cjs +0 -2
- package/dist/Copyable-DA6eiU7w.cjs.map +0 -1
- package/dist/Copyable-F4NTaG77.js +0 -847
- package/dist/Copyable-F4NTaG77.js.map +0 -1
package/src/code.css
CHANGED
|
@@ -32,7 +32,9 @@
|
|
|
32
32
|
* host rule — even a plain `:root { ... }` — wins without !important. Tokens are
|
|
33
33
|
* defined on :root so every `.w6w-*` component inherits them out of the box.
|
|
34
34
|
*/
|
|
35
|
-
/* Light — the base defaults.
|
|
35
|
+
/* Light — the base defaults.
|
|
36
|
+
`--w6w-loop-N` is the For each palette (flow-loop-colors.ts, LOOP_TONES): no red,
|
|
37
|
+
black or green, so a loop never reads as an error port or a success edge. */
|
|
36
38
|
:where(:root) {
|
|
37
39
|
--w6w-bg: #f7f8fa;
|
|
38
40
|
--w6w-panel: #ffffff;
|
|
@@ -48,6 +50,12 @@
|
|
|
48
50
|
--w6w-health-down: var(--w6w-danger);
|
|
49
51
|
--w6w-health-unknown: #5f6875;
|
|
50
52
|
--w6w-icon-swatch: #f0f2f6;
|
|
53
|
+
--w6w-loop-1: #2f6fdf;
|
|
54
|
+
--w6w-loop-2: #7c4ddb;
|
|
55
|
+
--w6w-loop-3: #b7791f;
|
|
56
|
+
--w6w-loop-4: #0e8fa8;
|
|
57
|
+
--w6w-loop-5: #b0399f;
|
|
58
|
+
--w6w-loop-6: #4f4fc7;
|
|
51
59
|
--w6w-code-comment: #6b7280;
|
|
52
60
|
--w6w-code-keyword: #8250df;
|
|
53
61
|
--w6w-code-string: #0a7b34;
|
|
@@ -77,6 +85,12 @@
|
|
|
77
85
|
--w6w-health-down: var(--w6w-danger);
|
|
78
86
|
--w6w-health-unknown: #9aa3b2;
|
|
79
87
|
--w6w-icon-swatch: #1f232c;
|
|
88
|
+
--w6w-loop-1: #5b9bff;
|
|
89
|
+
--w6w-loop-2: #a98bff;
|
|
90
|
+
--w6w-loop-3: #f0b13a;
|
|
91
|
+
--w6w-loop-4: #3cc6e0;
|
|
92
|
+
--w6w-loop-5: #e47ad6;
|
|
93
|
+
--w6w-loop-6: #8a8aff;
|
|
80
94
|
--w6w-scheme: dark;
|
|
81
95
|
--w6w-code-comment: #7d8797;
|
|
82
96
|
--w6w-code-keyword: #d2a8ff;
|
|
@@ -105,6 +119,12 @@
|
|
|
105
119
|
--w6w-health-down: var(--w6w-danger);
|
|
106
120
|
--w6w-health-unknown: #5f6875;
|
|
107
121
|
--w6w-icon-swatch: #f0f2f6;
|
|
122
|
+
--w6w-loop-1: #2f6fdf;
|
|
123
|
+
--w6w-loop-2: #7c4ddb;
|
|
124
|
+
--w6w-loop-3: #b7791f;
|
|
125
|
+
--w6w-loop-4: #0e8fa8;
|
|
126
|
+
--w6w-loop-5: #b0399f;
|
|
127
|
+
--w6w-loop-6: #4f4fc7;
|
|
108
128
|
--w6w-code-comment: #6b7280;
|
|
109
129
|
--w6w-code-keyword: #8250df;
|
|
110
130
|
--w6w-code-string: #0a7b34;
|
|
@@ -130,6 +150,12 @@
|
|
|
130
150
|
--w6w-health-down: var(--w6w-danger);
|
|
131
151
|
--w6w-health-unknown: #9aa3b2;
|
|
132
152
|
--w6w-icon-swatch: #1f232c;
|
|
153
|
+
--w6w-loop-1: #5b9bff;
|
|
154
|
+
--w6w-loop-2: #a98bff;
|
|
155
|
+
--w6w-loop-3: #f0b13a;
|
|
156
|
+
--w6w-loop-4: #3cc6e0;
|
|
157
|
+
--w6w-loop-5: #e47ad6;
|
|
158
|
+
--w6w-loop-6: #8a8aff;
|
|
133
159
|
--w6w-code-comment: #7d8797;
|
|
134
160
|
--w6w-code-keyword: #d2a8ff;
|
|
135
161
|
--w6w-code-string: #7ee787;
|
|
@@ -405,6 +431,32 @@
|
|
|
405
431
|
min-width: 0;
|
|
406
432
|
}
|
|
407
433
|
|
|
434
|
+
/* ── Hover modifier: ResultViewer — the button overlays the top-right corner of
|
|
435
|
+
ANY child and is revealed on hover/focus; always shown where there is no hover. */
|
|
436
|
+
.w6w-copyable--hover {
|
|
437
|
+
position: relative;
|
|
438
|
+
align-items: flex-start;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
.w6w-copyable--hover > .w6w-copyable-btn {
|
|
442
|
+
position: absolute;
|
|
443
|
+
top: var(--w6w-sp-1);
|
|
444
|
+
right: var(--w6w-sp-1);
|
|
445
|
+
background: var(--w6w-panel);
|
|
446
|
+
border-color: var(--w6w-border);
|
|
447
|
+
opacity: 0;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
.w6w-copyable--hover:hover > .w6w-copyable-btn,
|
|
451
|
+
.w6w-copyable--hover:focus-within > .w6w-copyable-btn {
|
|
452
|
+
opacity: 1;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
@media (hover: none) {
|
|
456
|
+
.w6w-copyable--hover > .w6w-copyable-btn {
|
|
457
|
+
opacity: 1;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
408
460
|
.w6w-code-block {
|
|
409
461
|
background: var(--w6w-panel-2);
|
|
410
462
|
border: 1px solid var(--w6w-border);
|
|
@@ -528,15 +580,17 @@
|
|
|
528
580
|
/* The expanded form of a clipped value (`resolved-clip.ts`). A block with its
|
|
529
581
|
own scroll, so "Show all" can never restore the unbounded inline paste that
|
|
530
582
|
buried the other params and the run's result. */
|
|
583
|
+
.w6w-resolved-copy {
|
|
584
|
+
margin: var(--w6w-sp-1) 0;
|
|
585
|
+
}
|
|
586
|
+
|
|
531
587
|
.w6w-resolved-text-full {
|
|
532
588
|
display: block;
|
|
533
|
-
margin:
|
|
589
|
+
margin: 0;
|
|
534
590
|
max-height: 14em;
|
|
535
591
|
overflow: auto;
|
|
536
|
-
padding:
|
|
537
|
-
|
|
538
|
-
border: 1px solid var(--w6w-border);
|
|
539
|
-
border-radius: var(--w6w-radius);
|
|
592
|
+
padding: 0;
|
|
593
|
+
padding-right: var(--w6w-sp-10);
|
|
540
594
|
font-family: var(--w6w-font-mono);
|
|
541
595
|
font-size: 0.85em; /* lint-tokens-allow: matches the sibling code-typography rules above in this same file */
|
|
542
596
|
line-height: var(--w6w-lh-normal);
|
package/src/styles/_canvas.scss
CHANGED
|
@@ -268,6 +268,41 @@
|
|
|
268
268
|
.w6w-note-menu-item:hover {
|
|
269
269
|
background: var(--w6w-panel-2);
|
|
270
270
|
}
|
|
271
|
+
// The canvas right-click menu (CanvasContextMenu): the note menu's panel and items,
|
|
272
|
+
// placed at the pointer instead of under a toolbar button.
|
|
273
|
+
.w6w-canvas-menu {
|
|
274
|
+
top: auto;
|
|
275
|
+
z-index: 10;
|
|
276
|
+
flex-direction: column;
|
|
277
|
+
min-width: 170px;
|
|
278
|
+
.w6w-note-menu-item {
|
|
279
|
+
font-weight: var(--w6w-fw-medium);
|
|
280
|
+
}
|
|
281
|
+
.w6w-note-menu-item:focus-visible {
|
|
282
|
+
outline: none;
|
|
283
|
+
background: var(--w6w-panel-2);
|
|
284
|
+
}
|
|
285
|
+
.w6w-note-menu-item.danger {
|
|
286
|
+
color: var(--w6w-danger);
|
|
287
|
+
}
|
|
288
|
+
.w6w-note-menu-item.separated {
|
|
289
|
+
position: relative;
|
|
290
|
+
margin-top: var(--w6w-sp-2);
|
|
291
|
+
}
|
|
292
|
+
.w6w-note-menu-item.separated::before {
|
|
293
|
+
content: "";
|
|
294
|
+
position: absolute;
|
|
295
|
+
top: calc(-1 * var(--w6w-sp-1) - 0.5px);
|
|
296
|
+
right: 0;
|
|
297
|
+
left: 0;
|
|
298
|
+
border-top: 1px solid var(--w6w-border);
|
|
299
|
+
}
|
|
300
|
+
.w6w-note-menu-item[aria-disabled="true"] {
|
|
301
|
+
opacity: 0.45;
|
|
302
|
+
cursor: default;
|
|
303
|
+
background: transparent;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
271
306
|
.w6w-note-size-1 {
|
|
272
307
|
font-size: var(--w6w-fs-xl);
|
|
273
308
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/* Every CodeMirror code view (`JsonEditor`, `CodeEditor`, `YamlEditor`) FILLS
|
|
2
|
+
its bordered box. The border is on `.cm-editor`, which react-codemirror
|
|
3
|
+
sizes with the `height` / `minHeight` / `maxHeight` props and whose
|
|
4
|
+
`.cm-scroller` it gives `height: 100%`. With only a min/max height (the Data
|
|
5
|
+
page's Document modal) that percentage has nothing definite to resolve
|
|
6
|
+
against, so the scroller — and the gutter column inside it — stopped at the
|
|
7
|
+
last content line, the horizontal scrollbar sat right under it, and the rest
|
|
8
|
+
of the box was empty.
|
|
9
|
+
|
|
10
|
+
The react-codemirror root (the wrapper's first child) is a one-cell grid.
|
|
11
|
+
A grid area is definite once its track is sized, so `.cm-editor`, stretched
|
|
12
|
+
into it, has a definite height whether that came from `height`, from
|
|
13
|
+
`minHeight` or from the content (capped by `maxHeight`), and the scroller and
|
|
14
|
+
the gutters fill it. `minmax(0, 1fr)` keeps a long line from widening the
|
|
15
|
+
editor: the scroller scrolls it instead. The wrapper is a flex column so a
|
|
16
|
+
wrapper given a definite height (a flex item with `min-height: 0`, as in
|
|
17
|
+
`_step-config.scss`) hands that height down to the editor.
|
|
18
|
+
|
|
19
|
+
Everything sits under `:where()` (specificity 0 for the wrapper part), so a
|
|
20
|
+
call site's own layout for the same elements — `_expression-modal.scss`'s
|
|
21
|
+
JSON pane, a host's dialog — still wins. */
|
|
22
|
+
:where(.w6w-json-editor, .w6w-code-editor, .w6w-yaml-editor) {
|
|
23
|
+
display: flex;
|
|
24
|
+
flex-direction: column;
|
|
25
|
+
}
|
|
26
|
+
:where(.w6w-json-editor, .w6w-code-editor, .w6w-yaml-editor) > :first-child {
|
|
27
|
+
display: grid;
|
|
28
|
+
grid-template-columns: minmax(0, 1fr);
|
|
29
|
+
flex: 1 1 auto;
|
|
30
|
+
min-height: 0;
|
|
31
|
+
}
|
|
32
|
+
:where(.w6w-json-editor, .w6w-code-editor, .w6w-yaml-editor) .cm-scroller,
|
|
33
|
+
:where(.w6w-json-editor, .w6w-code-editor, .w6w-yaml-editor) .cm-gutters {
|
|
34
|
+
min-height: 100%;
|
|
35
|
+
}
|
package/src/styles/_code.scss
CHANGED
|
@@ -108,15 +108,16 @@
|
|
|
108
108
|
/* The expanded form of a clipped value (`resolved-clip.ts`). A block with its
|
|
109
109
|
own scroll, so "Show all" can never restore the unbounded inline paste that
|
|
110
110
|
buried the other params and the run's result. */
|
|
111
|
+
.w6w-resolved-copy {
|
|
112
|
+
margin: var(--w6w-sp-1) 0;
|
|
113
|
+
}
|
|
111
114
|
.w6w-resolved-text-full {
|
|
112
115
|
display: block;
|
|
113
|
-
margin:
|
|
116
|
+
margin: 0;
|
|
114
117
|
max-height: 14em;
|
|
115
118
|
overflow: auto;
|
|
116
|
-
padding:
|
|
117
|
-
|
|
118
|
-
border: 1px solid var(--w6w-border);
|
|
119
|
-
border-radius: var(--w6w-radius);
|
|
119
|
+
padding: 0;
|
|
120
|
+
padding-right: var(--w6w-sp-10);
|
|
120
121
|
font-family: var(--w6w-font-mono);
|
|
121
122
|
font-size: 0.85em; /* lint-tokens-allow: matches the sibling code-typography rules above in this same file */
|
|
122
123
|
line-height: var(--w6w-lh-normal);
|
|
@@ -145,3 +145,27 @@
|
|
|
145
145
|
flex: 1 1 auto;
|
|
146
146
|
min-width: 0;
|
|
147
147
|
}
|
|
148
|
+
|
|
149
|
+
/* ── Hover modifier: ResultViewer — the button overlays the top-right corner of
|
|
150
|
+
ANY child and is revealed on hover/focus; always shown where there is no hover. */
|
|
151
|
+
.w6w-copyable--hover {
|
|
152
|
+
position: relative;
|
|
153
|
+
align-items: flex-start;
|
|
154
|
+
}
|
|
155
|
+
.w6w-copyable--hover > .w6w-copyable-btn {
|
|
156
|
+
position: absolute;
|
|
157
|
+
top: var(--w6w-sp-1);
|
|
158
|
+
right: var(--w6w-sp-1);
|
|
159
|
+
background: var(--w6w-panel);
|
|
160
|
+
border-color: var(--w6w-border);
|
|
161
|
+
opacity: 0;
|
|
162
|
+
}
|
|
163
|
+
.w6w-copyable--hover:hover > .w6w-copyable-btn,
|
|
164
|
+
.w6w-copyable--hover:focus-within > .w6w-copyable-btn {
|
|
165
|
+
opacity: 1;
|
|
166
|
+
}
|
|
167
|
+
@media (hover: none) {
|
|
168
|
+
.w6w-copyable--hover > .w6w-copyable-btn {
|
|
169
|
+
opacity: 1;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/* Data stores (F-2): DataStoreList, ColumnsEditor, CsvPanel and the data-grid/entry rules ported from Studio's Data store detail page. */
|
|
2
|
+
.w6w-data-store-list {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
gap: var(--w6w-sp-3);
|
|
6
|
+
}
|
|
7
|
+
.w6w-data-store-list-head {
|
|
8
|
+
display: flex;
|
|
9
|
+
justify-content: space-between;
|
|
10
|
+
align-items: flex-start;
|
|
11
|
+
gap: var(--w6w-sp-4);
|
|
12
|
+
}
|
|
13
|
+
.w6w-data-store-list-heading {
|
|
14
|
+
min-width: 0;
|
|
15
|
+
}
|
|
16
|
+
.w6w-data-store-list-actions {
|
|
17
|
+
display: flex;
|
|
18
|
+
gap: var(--w6w-sp-2);
|
|
19
|
+
flex-shrink: 0;
|
|
20
|
+
}
|
|
21
|
+
.w6w-data-columns-head {
|
|
22
|
+
display: flex;
|
|
23
|
+
justify-content: space-between;
|
|
24
|
+
align-items: center;
|
|
25
|
+
}
|
|
26
|
+
.w6w-data-columns-list {
|
|
27
|
+
list-style: none;
|
|
28
|
+
margin: 0;
|
|
29
|
+
padding: 0;
|
|
30
|
+
display: flex;
|
|
31
|
+
flex-direction: column;
|
|
32
|
+
gap: var(--w6w-sp-2);
|
|
33
|
+
}
|
|
34
|
+
.w6w-data-columns-row {
|
|
35
|
+
display: flex;
|
|
36
|
+
flex-wrap: wrap;
|
|
37
|
+
align-items: center;
|
|
38
|
+
gap: var(--w6w-sp-2);
|
|
39
|
+
}
|
|
40
|
+
.w6w-data-columns-required {
|
|
41
|
+
display: flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
gap: var(--w6w-sp-1);
|
|
44
|
+
}
|
|
45
|
+
.w6w-data-columns-error {
|
|
46
|
+
flex-basis: 100%;
|
|
47
|
+
}
|
|
48
|
+
.w6w-data-entries-toolbar {
|
|
49
|
+
display: flex;
|
|
50
|
+
align-items: center;
|
|
51
|
+
gap: var(--w6w-sp-2);
|
|
52
|
+
margin: var(--w6w-sp-3) 0;
|
|
53
|
+
}
|
|
54
|
+
.w6w-data-entries-toolbar input[type="search"] {
|
|
55
|
+
flex: 1;
|
|
56
|
+
max-width: 20rem;
|
|
57
|
+
/* Same box as `.w6w-field` inputs — no host page styles a bare search input. */
|
|
58
|
+
background: var(--w6w-panel-2);
|
|
59
|
+
border: 1px solid var(--w6w-border);
|
|
60
|
+
border-radius: 8px;
|
|
61
|
+
padding: var(--w6w-sp-2) var(--w6w-sp-2-5);
|
|
62
|
+
color: var(--w6w-text);
|
|
63
|
+
font-size: var(--w6w-fs-sm);
|
|
64
|
+
font-family: inherit;
|
|
65
|
+
}
|
|
66
|
+
.w6w-data-entries-toolbar input[type="search"]:focus {
|
|
67
|
+
outline: none;
|
|
68
|
+
border-color: var(--w6w-accent);
|
|
69
|
+
}
|
|
70
|
+
/* Entries open a viewer. Keep the list quiet and bounded, even for long keys or JSON. */
|
|
71
|
+
.w6w-data-entry-list {
|
|
72
|
+
table-layout: fixed;
|
|
73
|
+
}
|
|
74
|
+
.w6w-data-entry-key,
|
|
75
|
+
.w6w-data-entry-preview {
|
|
76
|
+
display: block;
|
|
77
|
+
width: 100%;
|
|
78
|
+
overflow: hidden;
|
|
79
|
+
white-space: nowrap;
|
|
80
|
+
text-overflow: ellipsis;
|
|
81
|
+
}
|
|
82
|
+
.w6w-data-entry-key {
|
|
83
|
+
appearance: none;
|
|
84
|
+
border: 0;
|
|
85
|
+
border-radius: 0;
|
|
86
|
+
background: transparent;
|
|
87
|
+
padding: 0;
|
|
88
|
+
color: inherit;
|
|
89
|
+
font: inherit;
|
|
90
|
+
text-align: left;
|
|
91
|
+
cursor: pointer;
|
|
92
|
+
}
|
|
93
|
+
.w6w-data-entry-key:focus-visible {
|
|
94
|
+
outline: 2px solid var(--w6w-accent);
|
|
95
|
+
outline-offset: 2px;
|
|
96
|
+
}
|
|
97
|
+
.w6w-data-entry-delete {
|
|
98
|
+
margin-inline-end: auto;
|
|
99
|
+
}
|
|
100
|
+
/* The wide-table pane: the sheet scrolls INSIDE this box, so a 24-column
|
|
101
|
+
table never widens its container and the page itself never overflows. */
|
|
102
|
+
.w6w-data-grid-scroll {
|
|
103
|
+
overflow-x: auto;
|
|
104
|
+
max-width: 100%;
|
|
105
|
+
}
|
|
106
|
+
.w6w-data-grid-scroll input {
|
|
107
|
+
min-width: var(--w6w-sp-16);
|
|
108
|
+
}
|
|
109
|
+
.w6w-data-cell {
|
|
110
|
+
display: flex;
|
|
111
|
+
flex-direction: column;
|
|
112
|
+
gap: var(--w6w-sp-1);
|
|
113
|
+
}
|
|
114
|
+
.w6w-data-cell-error {
|
|
115
|
+
color: var(--w6w-danger);
|
|
116
|
+
font-size: var(--w6w-fs-xs);
|
|
117
|
+
}
|
|
118
|
+
.w6w-data-row-actions {
|
|
119
|
+
display: flex;
|
|
120
|
+
align-items: center;
|
|
121
|
+
gap: var(--w6w-sp-2);
|
|
122
|
+
}
|
|
123
|
+
.w6w-data-entry-editor {
|
|
124
|
+
margin-top: var(--w6w-sp-4);
|
|
125
|
+
}
|
|
126
|
+
.w6w-data-entry-editor-actions {
|
|
127
|
+
display: flex;
|
|
128
|
+
gap: var(--w6w-sp-2);
|
|
129
|
+
margin-top: var(--w6w-sp-3);
|
|
130
|
+
}
|
|
131
|
+
.w6w-data-csv-panel {
|
|
132
|
+
margin-bottom: var(--w6w-sp-4);
|
|
133
|
+
}
|
|
134
|
+
.w6w-data-csv-panel-actions {
|
|
135
|
+
display: flex;
|
|
136
|
+
align-items: center;
|
|
137
|
+
gap: var(--w6w-sp-3);
|
|
138
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
.w6w-datavar-row {
|
|
2
2
|
display: grid;
|
|
3
|
-
|
|
3
|
+
// A long expression must not widen its track and shift the other columns in that row.
|
|
4
|
+
grid-template-columns: minmax(0, 1fr) 110px minmax(0, 1fr) auto;
|
|
4
5
|
gap: var(--w6w-sp-1-5);
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
align-items: end;
|
|
6
|
+
align-items: stretch;
|
|
7
|
+
}
|
|
8
|
+
.w6w-datavar-row > * {
|
|
9
|
+
min-width: 0;
|
|
10
10
|
}
|
|
11
11
|
.w6w-datavar-row input,
|
|
12
12
|
.w6w-datavar-row select {
|
|
@@ -36,3 +36,14 @@
|
|
|
36
36
|
.w6w-datavar-row .w6w-btn {
|
|
37
37
|
padding: var(--w6w-sp-1-5) var(--w6w-sp-2-5);
|
|
38
38
|
}
|
|
39
|
+
.w6w-datavar-modes {
|
|
40
|
+
margin-left: auto;
|
|
41
|
+
}
|
|
42
|
+
.w6w-datavar-modes .active {
|
|
43
|
+
background: var(--w6w-panel-2);
|
|
44
|
+
border-color: var(--w6w-accent);
|
|
45
|
+
color: var(--w6w-accent);
|
|
46
|
+
}
|
|
47
|
+
.w6w-datavar-error {
|
|
48
|
+
color: var(--w6w-danger);
|
|
49
|
+
}
|
|
@@ -35,9 +35,30 @@
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
.w6w-execution-list-rows > li {
|
|
38
|
+
display: flex;
|
|
39
|
+
align-items: center;
|
|
40
|
+
gap: var(--w6w-sp-1);
|
|
41
|
+
min-width: 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* The row stays the full-width click target; a Re-run control, when the host
|
|
45
|
+
offers one, sits beside it rather than inside it (a button cannot nest in
|
|
46
|
+
the row's own `<button>`). */
|
|
47
|
+
.w6w-execution-list-rows > li > .w6w-list-item {
|
|
48
|
+
flex: 1 1 auto;
|
|
38
49
|
min-width: 0;
|
|
39
50
|
}
|
|
40
51
|
|
|
52
|
+
.w6w-execution-list-rerun {
|
|
53
|
+
flex-shrink: 0;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/* The row's input snippet: inline in the subtitle, so the subtitle's own
|
|
57
|
+
one-line ellipsis cuts it — no box of its own, just the code face. */
|
|
58
|
+
.w6w-execution-input-preview {
|
|
59
|
+
font-family: var(--w6w-font-mono);
|
|
60
|
+
}
|
|
61
|
+
|
|
41
62
|
/* Both non-list branches (the loading and the empty `<p>`) hang straight off
|
|
42
63
|
the root, so one direct-child rule covers them and neither needs a class the
|
|
43
64
|
pinned markup doesn't have. Same dashed box `.w6w-execution-log-empty`
|
|
@@ -193,6 +214,12 @@
|
|
|
193
214
|
min-width: 0;
|
|
194
215
|
}
|
|
195
216
|
|
|
217
|
+
/* The Back control sits alone on its own line, flush left, so the detail
|
|
218
|
+
reads as a page the list was swapped for. */
|
|
219
|
+
.w6w-execution-detail-back {
|
|
220
|
+
display: flex;
|
|
221
|
+
}
|
|
222
|
+
|
|
196
223
|
/* Title block left, controls right; the actions keep their width, the name
|
|
197
224
|
wraps or ellipses into whatever is left. */
|
|
198
225
|
.w6w-execution-detail-head {
|
|
@@ -230,6 +257,13 @@
|
|
|
230
257
|
flex-shrink: 0;
|
|
231
258
|
}
|
|
232
259
|
|
|
260
|
+
/* Glyph + label on one baseline (`.w6w-btn` itself is not a flex box). */
|
|
261
|
+
.w6w-execution-detail-rerun {
|
|
262
|
+
display: inline-flex;
|
|
263
|
+
align-items: center;
|
|
264
|
+
gap: var(--w6w-sp-1);
|
|
265
|
+
}
|
|
266
|
+
|
|
233
267
|
.w6w-execution-detail-id-line {
|
|
234
268
|
margin: 0;
|
|
235
269
|
}
|
|
@@ -280,3 +314,42 @@
|
|
|
280
314
|
color: var(--w6w-danger);
|
|
281
315
|
font-size: var(--w6w-fs-sm);
|
|
282
316
|
}
|
|
317
|
+
|
|
318
|
+
/* "Re-run": marks an execution started by History's Re-run — on its list row
|
|
319
|
+
(after the title) and on its detail ("Re-run of <id>"). */
|
|
320
|
+
.w6w-execution-rerun-tag {
|
|
321
|
+
display: inline-block;
|
|
322
|
+
margin-left: var(--w6w-sp-2);
|
|
323
|
+
padding: 0 var(--w6w-sp-1-5);
|
|
324
|
+
border: 1px solid var(--w6w-accent);
|
|
325
|
+
border-radius: var(--w6w-radius);
|
|
326
|
+
color: var(--w6w-accent);
|
|
327
|
+
font-size: var(--w6w-fs-xs);
|
|
328
|
+
line-height: var(--w6w-lh-tight);
|
|
329
|
+
vertical-align: middle;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
.w6w-execution-detail-rerun-of {
|
|
333
|
+
display: flex;
|
|
334
|
+
align-items: center;
|
|
335
|
+
gap: var(--w6w-sp-1-5);
|
|
336
|
+
margin: 0;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
.w6w-execution-detail-rerun-of .w6w-execution-rerun-tag {
|
|
340
|
+
margin-left: 0;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.w6w-execution-detail-rerun-of code {
|
|
344
|
+
font-family: var(--w6w-font-mono);
|
|
345
|
+
font-size: var(--w6w-fs-sm);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.w6w-execution-detail-rerun-of-link {
|
|
349
|
+
padding: 0;
|
|
350
|
+
border: none;
|
|
351
|
+
background: none;
|
|
352
|
+
color: var(--w6w-accent);
|
|
353
|
+
cursor: pointer;
|
|
354
|
+
text-decoration: underline;
|
|
355
|
+
}
|
|
@@ -128,8 +128,40 @@
|
|
|
128
128
|
flex-wrap: wrap;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
/* Label over "App · Action": takes the row's free width, so the timing stays right-aligned. */
|
|
132
|
+
.w6w-execution-log-row-title {
|
|
133
|
+
display: flex;
|
|
134
|
+
flex-direction: column;
|
|
132
135
|
flex: 1 1 auto;
|
|
136
|
+
min-width: 0;
|
|
137
|
+
gap: var(--w6w-sp-0-5);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.w6w-execution-log-row-uses {
|
|
141
|
+
color: var(--w6w-muted);
|
|
142
|
+
font-size: var(--w6w-fs-xs);
|
|
143
|
+
overflow: hidden;
|
|
144
|
+
text-overflow: ellipsis;
|
|
145
|
+
white-space: nowrap;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* "Trigger" / "Node": a small outlined tag before the label; a trigger takes the accent. */
|
|
149
|
+
.w6w-execution-log-kind {
|
|
150
|
+
flex: 0 0 auto;
|
|
151
|
+
padding: 0 var(--w6w-sp-1-5);
|
|
152
|
+
border: 1px solid var(--w6w-border);
|
|
153
|
+
border-radius: var(--w6w-radius);
|
|
154
|
+
color: var(--w6w-muted);
|
|
155
|
+
font-size: var(--w6w-fs-xs);
|
|
156
|
+
line-height: var(--w6w-lh-tight);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.w6w-execution-log-kind-trigger {
|
|
160
|
+
border-color: var(--w6w-accent);
|
|
161
|
+
color: var(--w6w-accent);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.w6w-execution-log-row-label {
|
|
133
165
|
min-width: 0;
|
|
134
166
|
font-weight: var(--w6w-fw-medium);
|
|
135
167
|
overflow: hidden;
|
|
@@ -141,6 +173,26 @@
|
|
|
141
173
|
"<ts> → <ts> (elapsed)" text inside the row's box. With `flex-shrink: 0` it
|
|
142
174
|
kept its max-content width, wrapped onto its own flex line, and ran past the
|
|
143
175
|
row's border. */
|
|
176
|
+
.w6w-execution-log-skip-reason {
|
|
177
|
+
flex: 0 0 auto;
|
|
178
|
+
color: var(--w6w-muted);
|
|
179
|
+
font-size: var(--w6w-fs-xs);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* Steps on other paths (not part of this run): one muted, collapsed line after the list. */
|
|
183
|
+
.w6w-execution-log-off-path {
|
|
184
|
+
margin-top: var(--w6w-sp-2);
|
|
185
|
+
|
|
186
|
+
summary {
|
|
187
|
+
cursor: pointer;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
ul {
|
|
191
|
+
margin: var(--w6w-sp-1) 0 0;
|
|
192
|
+
padding-left: var(--w6w-sp-4);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
144
196
|
.w6w-execution-log-timing {
|
|
145
197
|
flex: 0 1 auto;
|
|
146
198
|
min-width: 0;
|
|
@@ -150,6 +202,14 @@
|
|
|
150
202
|
|
|
151
203
|
.w6w-execution-log-json {
|
|
152
204
|
min-width: 0;
|
|
205
|
+
|
|
206
|
+
> summary {
|
|
207
|
+
cursor: pointer;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
> .w6w-result-viewer {
|
|
211
|
+
margin-top: var(--w6w-sp-2);
|
|
212
|
+
}
|
|
153
213
|
}
|
|
154
214
|
|
|
155
215
|
/* Error blocks (step `error`, run `runError`/`stepErrors`). The box itself is
|
|
@@ -176,3 +236,87 @@
|
|
|
176
236
|
display: block;
|
|
177
237
|
margin-bottom: var(--w6w-sp-1);
|
|
178
238
|
}
|
|
239
|
+
|
|
240
|
+
/* --- For each iterations (T1.5.1) ----------------------------------------
|
|
241
|
+
Chips carry the status as TEXT as well as colour; failed/running also differ
|
|
242
|
+
in border style, so colour is never the only signal. */
|
|
243
|
+
.w6w-execution-log-foreach {
|
|
244
|
+
margin-top: var(--w6w-sp-2);
|
|
245
|
+
padding-left: var(--w6w-sp-3);
|
|
246
|
+
border-left: 2px solid var(--w6w-border);
|
|
247
|
+
}
|
|
248
|
+
.w6w-execution-log-iteration-chips {
|
|
249
|
+
display: flex;
|
|
250
|
+
flex-wrap: wrap;
|
|
251
|
+
gap: var(--w6w-sp-1);
|
|
252
|
+
}
|
|
253
|
+
.w6w-execution-log-iteration-chip {
|
|
254
|
+
padding: var(--w6w-sp-0-5) var(--w6w-sp-2);
|
|
255
|
+
border: 1px solid var(--w6w-border);
|
|
256
|
+
border-radius: 999px;
|
|
257
|
+
font-size: var(--w6w-fs-xs);
|
|
258
|
+
white-space: nowrap;
|
|
259
|
+
}
|
|
260
|
+
.w6w-execution-log-iteration-chip-succeeded {
|
|
261
|
+
border-color: var(--w6w-success);
|
|
262
|
+
}
|
|
263
|
+
.w6w-execution-log-iteration-chip-failed {
|
|
264
|
+
border-color: var(--w6w-danger);
|
|
265
|
+
border-width: 2px;
|
|
266
|
+
}
|
|
267
|
+
.w6w-execution-log-iteration-chip-running {
|
|
268
|
+
border-color: var(--w6w-accent);
|
|
269
|
+
border-style: dashed;
|
|
270
|
+
}
|
|
271
|
+
.w6w-execution-log-subrows {
|
|
272
|
+
display: flex;
|
|
273
|
+
flex-direction: column;
|
|
274
|
+
gap: var(--w6w-sp-2);
|
|
275
|
+
margin: 0;
|
|
276
|
+
padding: 0;
|
|
277
|
+
list-style: none;
|
|
278
|
+
}
|
|
279
|
+
.w6w-execution-log-subrow-head {
|
|
280
|
+
display: flex;
|
|
281
|
+
align-items: center;
|
|
282
|
+
justify-content: space-between;
|
|
283
|
+
gap: var(--w6w-sp-2);
|
|
284
|
+
}
|
|
285
|
+
/* An If / Stop / Router row's resolved comparisons. Operands are arbitrary
|
|
286
|
+
resolved values (long URLs), so they wrap rather than widen the panel. */
|
|
287
|
+
.w6w-execution-log-conditions {
|
|
288
|
+
font-size: var(--w6w-fs-xs);
|
|
289
|
+
table-layout: auto;
|
|
290
|
+
}
|
|
291
|
+
.w6w-execution-log-conditions code {
|
|
292
|
+
word-break: break-all;
|
|
293
|
+
}
|
|
294
|
+
.w6w-execution-log-condition-true {
|
|
295
|
+
color: var(--w6w-success);
|
|
296
|
+
}
|
|
297
|
+
.w6w-execution-log-condition-false {
|
|
298
|
+
color: var(--w6w-danger);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/* A step's State block: its state writes in recorded order (`state.<path>: old → new`),
|
|
302
|
+
warnings marked, then the run's state after this step. Values are arbitrary JSON,
|
|
303
|
+
so rows wrap rather than widen the panel. */
|
|
304
|
+
.w6w-execution-log-state {
|
|
305
|
+
min-width: 0;
|
|
306
|
+
}
|
|
307
|
+
.w6w-execution-log-state-writes {
|
|
308
|
+
display: flex;
|
|
309
|
+
flex-direction: column;
|
|
310
|
+
gap: var(--w6w-sp-0-5);
|
|
311
|
+
margin: 0;
|
|
312
|
+
padding: 0;
|
|
313
|
+
list-style: none;
|
|
314
|
+
font-family: var(--w6w-font-mono);
|
|
315
|
+
word-break: break-all;
|
|
316
|
+
}
|
|
317
|
+
.w6w-execution-log-state-warning {
|
|
318
|
+
padding-left: var(--w6w-sp-1-5);
|
|
319
|
+
border-left: 2px solid var(--w6w-danger);
|
|
320
|
+
color: var(--w6w-danger);
|
|
321
|
+
font-family: inherit;
|
|
322
|
+
}
|