@w6w/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 (142) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/LICENSE +21 -0
  3. package/README.md +275 -2
  4. package/dist/ActionTestForm.d.ts +76 -0
  5. package/dist/AddConnectionModal.d.ts +24 -0
  6. package/dist/AppPicker.d.ts +83 -0
  7. package/dist/CodeBlock-CZu4TFSi.cjs +15 -0
  8. package/dist/CodeBlock-CZu4TFSi.cjs.map +1 -0
  9. package/dist/CodeBlock-Dot3Pd7P.js +2889 -0
  10. package/dist/CodeBlock-Dot3Pd7P.js.map +1 -0
  11. package/dist/CodeBlock.d.ts +65 -0
  12. package/dist/CodeEditor.d.ts +42 -0
  13. package/dist/ConfirmModal-8avl9Nv8.cjs +11 -0
  14. package/dist/ConfirmModal-8avl9Nv8.cjs.map +1 -0
  15. package/dist/ConfirmModal-CD-P8mhN.js +6335 -0
  16. package/dist/ConfirmModal-CD-P8mhN.js.map +1 -0
  17. package/dist/Copyable-1niV9gUa.js +771 -0
  18. package/dist/Copyable-1niV9gUa.js.map +1 -0
  19. package/dist/Copyable-CYZU1o4X.cjs +2 -0
  20. package/dist/Copyable-CYZU1o4X.cjs.map +1 -0
  21. package/dist/JsonEditor.d.ts +60 -0
  22. package/dist/NodeConfigForm.d.ts +70 -0
  23. package/dist/ParamsForm.d.ts +56 -0
  24. package/dist/PropertyEntryForm.d.ts +56 -0
  25. package/dist/RetryPolicyFields.d.ts +18 -0
  26. package/dist/StepBuilderModal.d.ts +375 -0
  27. package/dist/TriggerFillForm.d.ts +52 -0
  28. package/dist/WaitEditor.d.ts +6 -0
  29. package/dist/WorkflowFlowEditor.d.ts +119 -0
  30. package/dist/YamlEditor.d.ts +46 -0
  31. package/dist/app-categories.d.ts +38 -0
  32. package/dist/app-pages.d.ts +111 -0
  33. package/dist/code.cjs +2 -0
  34. package/dist/code.cjs.map +1 -0
  35. package/dist/code.d.ts +29 -0
  36. package/dist/code.mjs +8 -0
  37. package/dist/code.mjs.map +1 -0
  38. package/dist/components/ApiCallsPanel.d.ts +41 -0
  39. package/dist/components/AppIcon.d.ts +25 -0
  40. package/dist/components/AuthFieldsForm.d.ts +22 -0
  41. package/dist/components/Combobox.d.ts +24 -0
  42. package/dist/components/ConfirmModal.d.ts +33 -0
  43. package/dist/components/Copyable.d.ts +51 -0
  44. package/dist/components/CopyableText.d.ts +40 -0
  45. package/dist/components/DeleteButton.d.ts +16 -0
  46. package/dist/components/EditButton.d.ts +10 -0
  47. package/dist/components/ExecutionDetail.d.ts +70 -0
  48. package/dist/components/ExecutionFilters.d.ts +59 -0
  49. package/dist/components/ExecutionList.d.ts +60 -0
  50. package/dist/components/ExecutionLogPanel.d.ts +98 -0
  51. package/dist/components/ExecutionStats.d.ts +47 -0
  52. package/dist/components/ExpressionEditorModal.d.ts +42 -0
  53. package/dist/components/ExpressionInput.d.ts +36 -0
  54. package/dist/components/ExpressionOptions.d.ts +185 -0
  55. package/dist/components/HealthStatusPill.d.ts +25 -0
  56. package/dist/components/HistoryTimeline.d.ts +56 -0
  57. package/dist/components/Icon.d.ts +34 -0
  58. package/dist/components/IconButton.d.ts +60 -0
  59. package/dist/components/InfoTip.d.ts +15 -0
  60. package/dist/components/InternalIcon.d.ts +19 -0
  61. package/dist/components/ListItem.d.ts +25 -0
  62. package/dist/components/Modal.d.ts +29 -0
  63. package/dist/components/RepoSyncIndicator.d.ts +29 -0
  64. package/dist/components/ResolvedParams.d.ts +31 -0
  65. package/dist/components/ServerResources.d.ts +47 -0
  66. package/dist/components/StepStatusPill.d.ts +51 -0
  67. package/dist/components/UptimeStrip.d.ts +56 -0
  68. package/dist/components/execution-format.d.ts +24 -0
  69. package/dist/components/expression-dom.d.ts +154 -0
  70. package/dist/components/expression-template.d.ts +86 -0
  71. package/dist/components/history-scale.d.ts +33 -0
  72. package/dist/components/icons.d.ts +41 -0
  73. package/dist/components/resolved-clip.d.ts +42 -0
  74. package/dist/components/server-resources-format.d.ts +68 -0
  75. package/dist/components/server-resources.fixture.d.ts +9 -0
  76. package/dist/components/use-copy.d.ts +14 -0
  77. package/dist/createW6WApi.d.ts +31 -0
  78. package/dist/flow-connect.d.ts +138 -0
  79. package/dist/flow-fanout.d.ts +15 -0
  80. package/dist/flow-types.d.ts +356 -0
  81. package/dist/flow-utils.d.ts +284 -0
  82. package/dist/flow.cjs +3 -0
  83. package/dist/flow.cjs.map +1 -0
  84. package/dist/flow.d.ts +24 -0
  85. package/dist/flow.mjs +1978 -0
  86. package/dist/flow.mjs.map +1 -0
  87. package/dist/index.cjs +2 -0
  88. package/dist/index.cjs.map +1 -0
  89. package/dist/index.d.ts +94 -0
  90. package/dist/index.mjs +1812 -0
  91. package/dist/index.mjs.map +1 -0
  92. package/dist/oauth-popup.d.ts +17 -0
  93. package/dist/output-shape.d.ts +58 -0
  94. package/dist/provider.d.ts +421 -0
  95. package/dist/resolve-params.d.ts +112 -0
  96. package/dist/resolved-json.d.ts +21 -0
  97. package/dist/run-visuals.d.ts +90 -0
  98. package/dist/step-preview-state.d.ts +143 -0
  99. package/dist/theme.d.ts +32 -0
  100. package/dist/trigger-fields.d.ts +56 -0
  101. package/dist/types.d.ts +413 -0
  102. package/dist/use-app-action-defs.d.ts +7 -0
  103. package/dist/use-enter-submit.d.ts +23 -0
  104. package/dist/use-seed-sources.d.ts +16 -0
  105. package/package.json +112 -3
  106. package/src/code.css +561 -0
  107. package/src/styles/_buttons.scss +38 -0
  108. package/src/styles/_chips.scss +210 -0
  109. package/src/styles/_code.scss +139 -0
  110. package/src/styles/_copyable.scss +147 -0
  111. package/src/styles/_data-vars.scss +38 -0
  112. package/src/styles/_execution-history.scss +282 -0
  113. package/src/styles/_execution-log.scss +178 -0
  114. package/src/styles/_expression-field.scss +65 -0
  115. package/src/styles/_expression-inline.scss +63 -0
  116. package/src/styles/_expression-modal.scss +292 -0
  117. package/src/styles/_fields.scss +161 -0
  118. package/src/styles/_flow.scss +217 -0
  119. package/src/styles/_fx.scss +158 -0
  120. package/src/styles/_health.scss +46 -0
  121. package/src/styles/_history-timeline.scss +156 -0
  122. package/src/styles/_icon-button.scss +22 -0
  123. package/src/styles/_icon.scss +15 -0
  124. package/src/styles/_icons.scss +31 -0
  125. package/src/styles/_incoming-state.scss +46 -0
  126. package/src/styles/_info-tip.scss +9 -0
  127. package/src/styles/_layout.scss +6 -0
  128. package/src/styles/_lists.scss +64 -0
  129. package/src/styles/_modal.scss +125 -0
  130. package/src/styles/_multiselect.scss +69 -0
  131. package/src/styles/_repo-sync-indicator.scss +99 -0
  132. package/src/styles/_scale.scss +70 -0
  133. package/src/styles/_sections.scss +36 -0
  134. package/src/styles/_server-resources.scss +163 -0
  135. package/src/styles/_step-builder.scss +376 -0
  136. package/src/styles/_step-config.scss +195 -0
  137. package/src/styles/_tabs.scss +54 -0
  138. package/src/styles/_tester.scss +111 -0
  139. package/src/styles/_tokens.scss +160 -0
  140. package/src/styles/_uptime.scss +61 -0
  141. package/src/styles.css +4894 -0
  142. package/src/styles.scss +61 -0
@@ -0,0 +1,111 @@
1
+ .w6w-testout {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--w6w-sp-1);
5
+ }
6
+ .w6w-testout-label {
7
+ font-size: 0.72em;
8
+ font-weight: var(--w6w-fw-semibold);
9
+ letter-spacing: 0.04em;
10
+ text-transform: uppercase;
11
+ color: var(--w6w-muted);
12
+ }
13
+ /* Console output reads as a terminal — monospace + muted, distinct from Result. */
14
+ .w6w-testout-console {
15
+ font-family: var(--w6w-font-mono);
16
+ color: var(--w6w-muted);
17
+ border-style: dashed;
18
+ }
19
+
20
+ /* Result / error box */
21
+ .w6w-result {
22
+ background: var(--w6w-panel-2);
23
+ border: 1px solid var(--w6w-border);
24
+ border-radius: 8px;
25
+ padding: var(--w6w-sp-2-5) var(--w6w-sp-3);
26
+ font-family: var(--w6w-font-mono);
27
+ font-size: 0.85em;
28
+ white-space: pre-wrap;
29
+ word-break: break-word;
30
+ color: var(--w6w-text);
31
+ }
32
+ .w6w-result.w6w-error {
33
+ border-color: var(--w6w-danger);
34
+ color: var(--w6w-danger);
35
+ }
36
+
37
+ /* Host-embedded ActionTestForm (studio's ConnectionTesterModal wraps it in its
38
+ OWN full modal). The widget then fills that modal as a full-height flex column:
39
+ the params + saved-tests region scrolls, and the action bar is a bottom-pinned,
40
+ non-scrolling footer. These classes are only applied in `embedded` mode, so the
41
+ inline / own-pop-out layout is untouched. */
42
+ .w6w-tester-embedded-root {
43
+ flex: 1;
44
+ min-height: 0;
45
+ }
46
+ .w6w-tester-embedded {
47
+ display: flex;
48
+ flex-direction: column;
49
+ flex: 1;
50
+ min-height: 0;
51
+ }
52
+ .w6w-tester-embedded-scroll {
53
+ flex: 1;
54
+ min-height: 0;
55
+ overflow: auto;
56
+ }
57
+ .w6w-tester-embedded-cols {
58
+ display: flex;
59
+ gap: var(--w6w-sp-4);
60
+ align-items: flex-start;
61
+ }
62
+ .w6w-tester-embedded-main {
63
+ flex: 1;
64
+ min-width: 0;
65
+ }
66
+ .w6w-tester-embedded-rail {
67
+ width: 260px;
68
+ flex-shrink: 0;
69
+ }
70
+ /* The action bar as a pinned footer: kept out of the scroll region and separated
71
+ with a top border so Run / Save / Delete stay visible however long the params. */
72
+ .w6w-tester-actions-footer {
73
+ margin-top: auto;
74
+ border-top: 1px solid var(--w6w-border);
75
+ padding-top: var(--w6w-sp-3);
76
+ }
77
+
78
+ /* ActionTestForm's OWN pop-out (`Modal size="full"`, the "Edit params" ⤢
79
+ toggle — not the host-embedded case above). T1.4.1 round 1 made `-full`'s
80
+ `overflow: hidden` live for the first time; the dialog itself no longer
81
+ scrolls, so at a realistic param count (15-23 is typical for a first-party
82
+ action, e.g. followupboss/search-people, youtube/search) content below the
83
+ fold became unreachable with zero scrollbar. This mirrors the
84
+ `.w6w-tester-embedded-scroll` mechanism above — flex:1/min-height:0 to fill
85
+ the dialog's remaining flex-column height, `overflow: auto` to own the
86
+ scrollbar — so the params + result (+ saved-tests rail) region scrolls
87
+ internally while the Run/Save/Delete action bar stays a pinned,
88
+ non-scrolling footer via the SAME `.w6w-tester-actions-footer` class. */
89
+ .w6w-tester-popout {
90
+ display: flex;
91
+ flex-direction: column;
92
+ flex: 1;
93
+ min-height: 0;
94
+ }
95
+ .w6w-tester-popout-scroll {
96
+ flex: 1;
97
+ min-height: 0;
98
+ overflow: auto;
99
+ }
100
+
101
+ /* Uptime strip — one cell per day, "how has this service behaved lately" at a
102
+ glance. Colour comes from the same `--w6w-health-*` tokens as the health pill,
103
+ through the same single `--w6w-health-color` indirection (set once on the cell,
104
+ remapped by the per-state class below), so overriding a token restyles the pill
105
+ and the strip together.
106
+
107
+ Colour is never the only signal: the FILL HEIGHT encodes severity, so the row
108
+ stays readable in greyscale and for a colour-blind viewer — `ok` a short
109
+ baseline bar, `degraded` taller, `down` the full cell, and `unknown` a hatched
110
+ outline with no solid fill (nothing was measured: not a good day, not a bad
111
+ one). Each cell also carries a `title` with its day and state. */
@@ -0,0 +1,160 @@
1
+ /*
2
+ * @w6w/ui — styles for the pure-presentation components.
3
+ *
4
+ * Everything is namespaced under `.w6w-*` class names so this stylesheet
5
+ * won't collide with your app's CSS.
6
+ *
7
+ * THEMING
8
+ * -------
9
+ * The library ships a complete DEFAULT theme in BOTH light and dark:
10
+ * - Light is the base.
11
+ * - Dark applies automatically when the OS prefers dark
12
+ * (`prefers-color-scheme: dark`).
13
+ * - Either mode can be forced with `data-theme="light" | "dark"` on any
14
+ * ancestor (usually <html>) — the same signal the JS components read
15
+ * (AppIcon / CodeEditor / JsonEditor: explicit prop > data-theme > OS pref),
16
+ * so CSS and components always agree.
17
+ *
18
+ * A HOST can override any subset of the tokens — set the ones you care about and
19
+ * the rest keep their themed defaults:
20
+ *
21
+ * :root { --w6w-accent: #3355e6; } // one token, both modes
22
+ * html[data-theme="dark"] { --w6w-panel: #000 } // mode-specific
23
+ *
24
+ * Every default below is declared through `:where(...)` (specificity 0), so ANY
25
+ * host rule — even a plain `:root { ... }` — wins without !important. Tokens are
26
+ * defined on :root so every `.w6w-*` component inherits them out of the box.
27
+ */
28
+
29
+ /* Light — the base defaults. */
30
+ :where(:root) {
31
+ --w6w-bg: #f7f8fa;
32
+ --w6w-panel: #ffffff;
33
+ --w6w-panel-2: #f0f2f6;
34
+ --w6w-border: #d9dee5;
35
+ --w6w-text: #1a1d24;
36
+ --w6w-muted: #5f6875;
37
+ --w6w-accent: #3355e6;
38
+ --w6w-danger: #c1362f;
39
+ --w6w-success: #2e9e5b;
40
+ --w6w-health-ok: var(--w6w-success);
41
+ --w6w-health-degraded: #c77700;
42
+ --w6w-health-down: var(--w6w-danger);
43
+ --w6w-health-unknown: #5f6875;
44
+ --w6w-icon-swatch: #f0f2f6;
45
+ --w6w-code-comment: #6b7280;
46
+ --w6w-code-keyword: #8250df;
47
+ --w6w-code-string: #0a7b34;
48
+ --w6w-code-number: #b3541e;
49
+ --w6w-code-function: #1f6feb;
50
+ --w6w-code-punctuation: #5f6875;
51
+ --w6w-code-variable: #953800;
52
+ --w6w-radius: 10px;
53
+ --w6w-scheme: light;
54
+ }
55
+
56
+ /* Dark — followed automatically from the OS preference (unless a host has
57
+ forced a mode via data-theme, which is handled by the blocks below). */
58
+ @media (prefers-color-scheme: dark) {
59
+ :where(:root) {
60
+ --w6w-bg: #0f1115;
61
+ --w6w-panel: #181b22;
62
+ --w6w-panel-2: #1f232c;
63
+ --w6w-border: #2a2f3a;
64
+ --w6w-text: #e6e8ee;
65
+ --w6w-muted: #9aa3b2;
66
+ --w6w-accent: #5b8cff;
67
+ --w6w-danger: #ff6b6b;
68
+ --w6w-success: #3fbf77;
69
+ --w6w-health-ok: var(--w6w-success);
70
+ --w6w-health-degraded: #f0a020;
71
+ --w6w-health-down: var(--w6w-danger);
72
+ --w6w-health-unknown: #9aa3b2;
73
+ --w6w-icon-swatch: #1f232c;
74
+ --w6w-scheme: dark;
75
+ --w6w-code-comment: #7d8797;
76
+ --w6w-code-keyword: #d2a8ff;
77
+ --w6w-code-string: #7ee787;
78
+ --w6w-code-number: #ffab70;
79
+ --w6w-code-function: #79c0ff;
80
+ --w6w-code-punctuation: #9aa3b2;
81
+ --w6w-code-variable: #ffa657;
82
+ }
83
+ }
84
+
85
+ /* Explicit mode. Declared AFTER the media query at equal (zero) specificity, so
86
+ a forced data-theme always beats the OS preference. */
87
+ :where([data-theme="light"]) {
88
+ --w6w-scheme: light;
89
+ --w6w-bg: #f7f8fa;
90
+ --w6w-panel: #ffffff;
91
+ --w6w-panel-2: #f0f2f6;
92
+ --w6w-border: #d9dee5;
93
+ --w6w-text: #1a1d24;
94
+ --w6w-muted: #5f6875;
95
+ --w6w-accent: #3355e6;
96
+ --w6w-danger: #c1362f;
97
+ --w6w-success: #2e9e5b;
98
+ --w6w-health-ok: var(--w6w-success);
99
+ --w6w-health-degraded: #c77700;
100
+ --w6w-health-down: var(--w6w-danger);
101
+ --w6w-health-unknown: #5f6875;
102
+ --w6w-icon-swatch: #f0f2f6;
103
+ --w6w-code-comment: #6b7280;
104
+ --w6w-code-keyword: #8250df;
105
+ --w6w-code-string: #0a7b34;
106
+ --w6w-code-number: #b3541e;
107
+ --w6w-code-function: #1f6feb;
108
+ --w6w-code-punctuation: #5f6875;
109
+ --w6w-code-variable: #953800;
110
+ }
111
+ :where([data-theme="dark"]) {
112
+ --w6w-scheme: dark;
113
+ --w6w-bg: #0f1115;
114
+ --w6w-panel: #181b22;
115
+ --w6w-panel-2: #1f232c;
116
+ --w6w-border: #2a2f3a;
117
+ --w6w-text: #e6e8ee;
118
+ --w6w-muted: #9aa3b2;
119
+ --w6w-accent: #5b8cff;
120
+ --w6w-danger: #ff6b6b;
121
+ --w6w-success: #3fbf77;
122
+ --w6w-health-ok: var(--w6w-success);
123
+ --w6w-health-degraded: #f0a020;
124
+ --w6w-health-down: var(--w6w-danger);
125
+ --w6w-health-unknown: #9aa3b2;
126
+ --w6w-icon-swatch: #1f232c;
127
+ --w6w-code-comment: #7d8797;
128
+ --w6w-code-keyword: #d2a8ff;
129
+ --w6w-code-string: #7ee787;
130
+ --w6w-code-number: #ffab70;
131
+ --w6w-code-function: #79c0ff;
132
+ --w6w-code-punctuation: #9aa3b2;
133
+ --w6w-code-variable: #ffa657;
134
+ }
135
+
136
+ .w6w-muted {
137
+ color: var(--w6w-muted);
138
+ }
139
+ .w6w-small {
140
+ font-size: 0.85em;
141
+ }
142
+
143
+ /* color-scheme — declared on ui COMPONENT ROOTS, never on the host's <html>.
144
+ `color-scheme` inherits and also themes the page canvas, scrollbars and form
145
+ controls, so setting it on :root / [data-theme] let importing this file flip a
146
+ host's whole document. Instead each token block above also sets the
147
+ `--w6w-scheme` custom property (light / dark), which INHERITS, so the nearest
148
+ themed ancestor wins however themes nest (a light panel inside a dark page and
149
+ the reverse). Elements ui renders (any `w6w-` class, which covers the native
150
+ <dialog> modals) and the native controls inside them read it with
151
+ `color-scheme: var(--w6w-scheme)`. Not a hand-picked root list: every ui
152
+ component carries a `w6w-` class. Only an element whose class LIST has a token
153
+ starting `w6w-` matches (`class^=` / `class*=" w6w-"`), so host elements are never
154
+ touched: not a host `data-theme` wrapper, not a host class that merely contains
155
+ `w6w-` (`my-w6w-card`), and not a host element's own color-scheme on inputs nested
156
+ in a ui root (color-scheme inherits, so no descendant rule is needed). Nothing here
157
+ ever matches <html>/:root. All zero specificity. */
158
+ :where([class^="w6w-"]:not(:root), [class*=" w6w-"]:not(:root)) {
159
+ color-scheme: var(--w6w-scheme);
160
+ }
@@ -0,0 +1,61 @@
1
+ .w6w-uptime-strip {
2
+ display: grid;
3
+ grid-auto-flow: column;
4
+ grid-auto-columns: minmax(0, 1fr);
5
+ gap: var(--w6w-sp-0-5);
6
+ height: 22px;
7
+ min-width: 0;
8
+ align-items: stretch;
9
+ }
10
+ .w6w-uptime-cell {
11
+ --w6w-health-color: var(--w6w-health-unknown);
12
+ --w6w-uptime-fill: 100%;
13
+ position: relative;
14
+ min-width: 2px;
15
+ border-radius: 2px;
16
+ /* The unfilled remainder of the day, so the strip reads as a continuous row
17
+ rather than as floating bars. */
18
+ background: color-mix(in srgb, var(--w6w-border) 55%, transparent);
19
+ overflow: hidden;
20
+ }
21
+ .w6w-uptime-cell::after {
22
+ content: "";
23
+ position: absolute;
24
+ left: 0;
25
+ right: 0;
26
+ bottom: 0;
27
+ height: var(--w6w-uptime-fill);
28
+ border-radius: inherit;
29
+ background: var(--w6w-health-color);
30
+ }
31
+ .w6w-uptime-cell-ok {
32
+ --w6w-health-color: var(--w6w-health-ok);
33
+ --w6w-uptime-fill: 35%;
34
+ }
35
+ .w6w-uptime-cell-degraded {
36
+ --w6w-health-color: var(--w6w-health-degraded);
37
+ --w6w-uptime-fill: 65%;
38
+ }
39
+ .w6w-uptime-cell-down {
40
+ --w6w-health-color: var(--w6w-health-down);
41
+ --w6w-uptime-fill: 100%;
42
+ }
43
+ .w6w-uptime-cell-unknown {
44
+ --w6w-health-color: var(--w6w-health-unknown);
45
+ --w6w-uptime-fill: 100%;
46
+ }
47
+ /* No solid fill for `unknown` — a hatch, so an unmeasured day can never be
48
+ mistaken for a healthy or a failing one, with or without colour. */
49
+ .w6w-uptime-cell-unknown::after {
50
+ background: repeating-linear-gradient(
51
+ 45deg,
52
+ color-mix(in srgb, var(--w6w-health-color) 45%, transparent) 0 2px,
53
+ transparent 2px 5px
54
+ );
55
+ border: 1px solid color-mix(in srgb, var(--w6w-health-color) 35%, var(--w6w-border));
56
+ }
57
+
58
+ /* --- CodeBlock ------------------------------------------------------------ */
59
+ /* Read-only syntax-highlighted display (`<CodeBlock>`). The colours come from
60
+ the `--w6w-code-*` tokens via inline styles Prism sets, so this rule only
61
+ owns box, rhythm and overflow. */