@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.
Files changed (135) hide show
  1. package/CHANGELOG.md +139 -2
  2. package/README.md +28 -10
  3. package/dist/AppPicker.d.ts +12 -1
  4. package/dist/CanvasContextMenu.d.ts +19 -0
  5. package/dist/{CodeBlock-BqXDA35P.js → CodeBlock-C-oIIYfC.js} +1436 -555
  6. package/dist/CodeBlock-C-oIIYfC.js.map +1 -0
  7. package/dist/CodeBlock-CymlfyeA.cjs +15 -0
  8. package/dist/CodeBlock-CymlfyeA.cjs.map +1 -0
  9. package/dist/CodeEditor.d.ts +4 -1
  10. package/dist/ConditionEditor.d.ts +11 -0
  11. package/dist/JsonEditor.d.ts +12 -0
  12. package/dist/ParamCustomization.d.ts +5 -0
  13. package/dist/ParamsForm.d.ts +11 -3
  14. package/dist/RouterEditor.d.ts +5 -0
  15. package/dist/StepBuilderModal.d.ts +83 -13
  16. package/dist/StepNameEditor.d.ts +11 -0
  17. package/dist/StopEditor.d.ts +5 -0
  18. package/dist/TriggerFillForm.d.ts +14 -1
  19. package/dist/WebhookListenPanel.d.ts +28 -0
  20. package/dist/WorkflowConnections.d.ts +29 -0
  21. package/dist/WorkflowFlowEditor.d.ts +64 -8
  22. package/dist/assets/script-completion.worker-DDJKkj5M.js +8290 -0
  23. package/dist/assets/script-completion.worker-DDJKkj5M.js.map +1 -0
  24. package/dist/canvas-context-menu.d.ts +27 -0
  25. package/dist/code.cjs +1 -1
  26. package/dist/code.mjs +3 -4
  27. package/dist/code.mjs.map +1 -1
  28. package/dist/components/AnchoredFlyout.d.ts +7 -0
  29. package/dist/components/ColumnsEditor.d.ts +27 -0
  30. package/dist/components/Combobox.d.ts +12 -1
  31. package/dist/components/CsvPanel.d.ts +21 -0
  32. package/dist/components/DataEntryEditor.d.ts +38 -0
  33. package/dist/components/DataEntryList.d.ts +33 -0
  34. package/dist/components/DataStoreList.d.ts +33 -0
  35. package/dist/components/DataTableGrid.d.ts +46 -0
  36. package/dist/components/EventbriteTriggerPicker.d.ts +7 -0
  37. package/dist/components/ExecutionDetail.d.ts +17 -1
  38. package/dist/components/ExecutionList.d.ts +19 -1
  39. package/dist/components/ExecutionLogPanel.d.ts +61 -3
  40. package/dist/components/ExpressionEditorModal.d.ts +33 -10
  41. package/dist/components/ExpressionOptions.d.ts +101 -15
  42. package/dist/components/HtmlPreview.d.ts +7 -0
  43. package/dist/components/JsonTree.d.ts +32 -0
  44. package/dist/components/ResolvedParams.d.ts +6 -1
  45. package/dist/components/ResultViewer.d.ts +46 -0
  46. package/dist/components/ScriptBindingsNotice.d.ts +31 -0
  47. package/dist/components/ScriptCodeField.d.ts +13 -0
  48. package/dist/components/StepStatusPill.d.ts +7 -0
  49. package/dist/components/expression-authoring.d.ts +13 -0
  50. package/dist/components/expression-dom.d.ts +17 -2
  51. package/dist/components/expression-template.d.ts +25 -3
  52. package/dist/components/icons.d.ts +1 -1
  53. package/dist/components/json-compose.d.ts +53 -0
  54. package/dist/components/result-format.d.ts +13 -0
  55. package/dist/condition-editor.d.ts +44 -0
  56. package/dist/data-stores/data-store-view.d.ts +371 -0
  57. package/dist/eventbrite-trigger-selection.d.ts +13 -0
  58. package/dist/flow-connect.d.ts +22 -16
  59. package/dist/flow-delete.d.ts +16 -0
  60. package/dist/flow-history.d.ts +75 -0
  61. package/dist/flow-layout.d.ts +13 -0
  62. package/dist/flow-loop-colors.d.ts +39 -0
  63. package/dist/flow-loop.d.ts +98 -0
  64. package/dist/flow-node-flags.d.ts +14 -0
  65. package/dist/flow-problems.d.ts +69 -0
  66. package/dist/flow-state.d.ts +20 -0
  67. package/dist/flow-types.d.ts +137 -9
  68. package/dist/flow-utils.d.ts +27 -13
  69. package/dist/flow.cjs +4 -2
  70. package/dist/flow.cjs.map +1 -1
  71. package/dist/flow.d.ts +7 -3
  72. package/dist/flow.mjs +3563 -1557
  73. package/dist/flow.mjs.map +1 -1
  74. package/dist/index.cjs +2 -1
  75. package/dist/index.cjs.map +1 -1
  76. package/dist/index.d.ts +30 -4
  77. package/dist/index.mjs +2555 -1272
  78. package/dist/index.mjs.map +1 -1
  79. package/dist/node-samples-ChdyMBnJ.cjs +22 -0
  80. package/dist/node-samples-ChdyMBnJ.cjs.map +1 -0
  81. package/dist/node-samples-DkJL07EX.js +12302 -0
  82. package/dist/node-samples-DkJL07EX.js.map +1 -0
  83. package/dist/node-samples.d.ts +80 -0
  84. package/dist/output-shape.d.ts +30 -14
  85. package/dist/param-customization.d.ts +7 -0
  86. package/dist/provider.d.ts +119 -7
  87. package/dist/resolve-params.d.ts +45 -11
  88. package/dist/run-visuals.d.ts +14 -21
  89. package/dist/script-bindings.d.ts +63 -0
  90. package/dist/script-completion-service.d.ts +9 -0
  91. package/dist/script-completion.worker.d.ts +1 -0
  92. package/dist/script-completions.d.ts +2 -0
  93. package/dist/state-shape.d.ts +38 -0
  94. package/dist/step-preview-state.d.ts +155 -6
  95. package/dist/step-problems.d.ts +42 -12
  96. package/dist/test-inputs.d.ts +25 -0
  97. package/dist/trigger-registration.d.ts +28 -0
  98. package/dist/types.d.ts +70 -8
  99. package/dist/use-app-action-defs.d.ts +9 -1
  100. package/dist/use-test-input.d.ts +18 -0
  101. package/dist/workflow-connections.d.ts +30 -0
  102. package/package.json +16 -7
  103. package/src/code.css +60 -6
  104. package/src/styles/_canvas.scss +35 -0
  105. package/src/styles/_code-editor.scss +35 -0
  106. package/src/styles/_code.scss +6 -5
  107. package/src/styles/_copyable.scss +24 -0
  108. package/src/styles/_data-stores.scss +138 -0
  109. package/src/styles/_data-vars.scss +17 -6
  110. package/src/styles/_execution-history.scss +73 -0
  111. package/src/styles/_execution-log.scss +145 -1
  112. package/src/styles/_expression-modal.scss +106 -16
  113. package/src/styles/_fields.scss +11 -0
  114. package/src/styles/_flow.scss +160 -0
  115. package/src/styles/_fx.scss +3 -1
  116. package/src/styles/_incoming-state.scss +33 -0
  117. package/src/styles/_modal.scss +12 -0
  118. package/src/styles/_multiselect.scss +35 -0
  119. package/src/styles/_sections.scss +36 -0
  120. package/src/styles/_step-builder.scss +145 -0
  121. package/src/styles/_tester.scss +56 -0
  122. package/src/styles/_tokens.scss +27 -1
  123. package/src/styles.css +1290 -77
  124. package/src/styles.scss +2 -0
  125. package/dist/CodeBlock-BqXDA35P.js.map +0 -1
  126. package/dist/CodeBlock-CulfbnZD.cjs +0 -15
  127. package/dist/CodeBlock-CulfbnZD.cjs.map +0 -1
  128. package/dist/ConfirmModal-Ln99S9NT.js +0 -7919
  129. package/dist/ConfirmModal-Ln99S9NT.js.map +0 -1
  130. package/dist/ConfirmModal-fjHW5rN-.cjs +0 -14
  131. package/dist/ConfirmModal-fjHW5rN-.cjs.map +0 -1
  132. package/dist/Copyable-DA6eiU7w.cjs +0 -2
  133. package/dist/Copyable-DA6eiU7w.cjs.map +0 -1
  134. package/dist/Copyable-F4NTaG77.js +0 -847
  135. package/dist/Copyable-F4NTaG77.js.map +0 -1
@@ -1,847 +0,0 @@
1
- import { jsx as e, Fragment as i, jsxs as r } from "react/jsx-runtime";
2
- import { useId as V, useState as W, useRef as w, useEffect as f, useCallback as M } from "react";
3
- function C() {
4
- const o = `w6w-py-eyes-${V()}`;
5
- return /* @__PURE__ */ r(i, { children: [
6
- /* @__PURE__ */ e("title", { children: "Python" }),
7
- /* @__PURE__ */ r("mask", { id: o, children: [
8
- /* @__PURE__ */ e("rect", { x: "0", y: "0", width: "24", height: "24", fill: "white" }),
9
- /* @__PURE__ */ e("circle", { cx: "9.1", cy: "5.2", r: "1", fill: "black" }),
10
- /* @__PURE__ */ e("circle", { cx: "14.9", cy: "18.8", r: "1", fill: "black" })
11
- ] }),
12
- /* @__PURE__ */ r("g", { mask: `url(#${o})`, fill: "currentColor", children: [
13
- /* @__PURE__ */ e("path", { d: "M11.6 2.6c-3 0-4.9.7-4.9 2.6v2.2h5v.9H5.2C3.2 8.3 2 9.9 2 12v1.4c0 2 1.2 3.5 3.2 3.5h1.6v-2.5c0-2 1.6-3.6 3.6-3.6h4.3c1.6 0 2.9-1.3 2.9-2.9V5.2c0-1.8-1.8-2.6-4.8-2.6z" }),
14
- /* @__PURE__ */ e("path", { d: "M12.4 21.4c3 0 4.9-.7 4.9-2.6v-2.2h-5v-.9h6.5c2 0 3.2-1.6 3.2-3.6v-1.4c0-2-1.2-3.5-3.2-3.5h-1.6v2.5c0 2-1.6 3.6-3.6 3.6H9.3c-1.6 0-2.9 1.3-2.9 2.9v3.3c0 1.8 1.8 2.6 4.8 2.6z" })
15
- ] })
16
- ] });
17
- }
18
- const m = {
19
- /**
20
- * ui/src/components/EditButton.tsx (the two-path Feather pencil) — also drawn by `WorkflowFlowEditor.tsx`.
21
- */
22
- edit: {
23
- viewBox: "0 0 24 24",
24
- variant: "stroke",
25
- strokeWidth: 2,
26
- body: /* @__PURE__ */ r(i, { children: [
27
- /* @__PURE__ */ e("path", { d: "M12 20h9" }),
28
- /* @__PURE__ */ e("path", { d: "M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z" })
29
- ] })
30
- },
31
- /**
32
- * studio/src/pages/FunctionsPage.tsx — byte-identical to `EndpointsPage.tsx`'s pencil, and NOT the `edit` above: this one is Feather `edit-2`, a bare outline with no baseline.
33
- */
34
- "edit-2": {
35
- viewBox: "0 0 24 24",
36
- variant: "stroke",
37
- strokeWidth: 2,
38
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) })
39
- },
40
- /**
41
- * ui/src/components/DeleteButton.tsx — byte-identical to `studio/src/pages/AppsPage.tsx`'s `TrashIcon`.
42
- */
43
- delete: {
44
- viewBox: "0 0 24 24",
45
- variant: "stroke",
46
- strokeWidth: 2,
47
- body: /* @__PURE__ */ r(i, { children: [
48
- /* @__PURE__ */ e("polyline", { points: "3 6 5 6 21 6" }),
49
- /* @__PURE__ */ e("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" }),
50
- /* @__PURE__ */ e("line", { x1: "10", y1: "11", x2: "10", y2: "17" }),
51
- /* @__PURE__ */ e("line", { x1: "14", y1: "11", x2: "14", y2: "17" })
52
- ] })
53
- },
54
- /**
55
- * ui/src/components/Copyable.tsx — the same glyph `studio/src/components/CallFromCodeButton.tsx` copies around.
56
- */
57
- copy: {
58
- viewBox: "0 0 24 24",
59
- variant: "stroke",
60
- strokeWidth: 2,
61
- body: /* @__PURE__ */ r(i, { children: [
62
- /* @__PURE__ */ e("rect", { x: "9", y: "9", width: "13", height: "13", rx: "2", ry: "2" }),
63
- /* @__PURE__ */ e("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })
64
- ] })
65
- },
66
- /**
67
- * ui/src/components/Copyable.tsx — the copy affordance's "copied" state.
68
- */
69
- check: {
70
- viewBox: "0 0 24 24",
71
- variant: "stroke",
72
- strokeWidth: 2,
73
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("polyline", { points: "20 6 9 17 4 12" }) })
74
- },
75
- /**
76
- * Feather `x` — the dismiss glyph for the `✕`/`×` characters studio's close and
77
- * remove buttons drew as text until now (T2), so those read as a drawing rather
78
- * than a font's idea of one. Drawn here rather than copied: the sources had no
79
- * `<svg>` to lift the paths from.
80
- */
81
- close: {
82
- viewBox: "0 0 24 24",
83
- variant: "stroke",
84
- strokeWidth: 2,
85
- body: /* @__PURE__ */ r(i, { children: [
86
- /* @__PURE__ */ e("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
87
- /* @__PURE__ */ e("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
88
- ] })
89
- },
90
- /**
91
- * Feather "info" — a circle with an "i"; the glyph `InfoTip` renders.
92
- */
93
- info: {
94
- viewBox: "0 0 24 24",
95
- variant: "stroke",
96
- strokeWidth: 2,
97
- body: /* @__PURE__ */ r(i, { children: [
98
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "10" }),
99
- /* @__PURE__ */ e("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
100
- /* @__PURE__ */ e("line", { x1: "12", y1: "8", x2: "12.01", y2: "8" })
101
- ] })
102
- },
103
- /**
104
- * studio/src/components/HistoryIcon.tsx — Material `query_stats`: a chart line under a magnifier.
105
- */
106
- history: {
107
- viewBox: "0 0 24 24",
108
- variant: "fill",
109
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M19.88 18.47c.44-.7.7-1.51.7-2.39 0-2.49-2.01-4.5-4.5-4.5s-4.5 2.01-4.5 4.5 2.01 4.5 4.49 4.5c.88 0 1.7-.26 2.39-.7L21.58 23 23 21.58l-3.12-3.11zm-3.8.11c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5zm-.36-8.5c-.74.02-1.45.18-2.1.45l-.55-.83-3.8 6.18-3.01-3.52-3.63 5.81L1 17l5-8 3 3.5L13 6l2.72 4.08zm2.59.5c-.64-.28-1.33-.45-2.05-.49L21.38 2 23 3.18l-4.69 7.4z" }) })
110
- },
111
- /**
112
- * studio/src/ui/rail/SettingsTool.tsx (the rail's "Version history" button) — a second glyph for the history MEANING; kept beside `history` under its own name because the two do not look alike.
113
- */
114
- clock: {
115
- viewBox: "0 0 24 24",
116
- variant: "stroke",
117
- strokeWidth: 2,
118
- body: /* @__PURE__ */ r(i, { children: [
119
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "9" }),
120
- /* @__PURE__ */ e("polyline", { points: "12 7 12 12 15.5 14" })
121
- ] })
122
- },
123
- /**
124
- * studio/src/components/JsonToggle.tsx — curly braces, the raw-JSON toggle.
125
- */
126
- json: {
127
- viewBox: "0 0 24 24",
128
- variant: "stroke",
129
- strokeWidth: 2,
130
- body: /* @__PURE__ */ r(i, { children: [
131
- /* @__PURE__ */ e("path", { d: "M8 3c-1.5 0-2 .8-2 2v3c0 1-.5 1.5-2 1.5v1c1.5 0 2 .5 2 1.5v3c0 1.2.5 2 2 2" }),
132
- /* @__PURE__ */ e("path", { d: "M16 3c1.5 0 2 .8 2 2v3c0 1 .5 1.5 2 1.5v1c-1.5 0-2 .5-2 1.5v3c0 1.2-.5 2-2 2" })
133
- ] })
134
- },
135
- /**
136
- * studio/src/components/CallFromCodeButton.tsx — `< />`; byte-identical to `studio/src/ui/rail/CodeTool.tsx`'s `CodeToolIcon`.
137
- */
138
- code: {
139
- viewBox: "0 0 24 24",
140
- variant: "stroke",
141
- strokeWidth: 2,
142
- body: /* @__PURE__ */ r(i, { children: [
143
- /* @__PURE__ */ e("polyline", { points: "16 18 22 12 16 6" }),
144
- /* @__PURE__ */ e("polyline", { points: "8 6 2 12 8 18" })
145
- ] })
146
- },
147
- /**
148
- * studio/src/components/SyncButton.tsx — Feather `refresh-cw`; byte-identical to `studio/src/pages/AppsPage.tsx`'s `RefreshIcon`.
149
- */
150
- sync: {
151
- viewBox: "0 0 24 24",
152
- variant: "stroke",
153
- strokeWidth: 2,
154
- body: /* @__PURE__ */ r(i, { children: [
155
- /* @__PURE__ */ e("polyline", { points: "23 4 23 10 17 10" }),
156
- /* @__PURE__ */ e("polyline", { points: "1 20 1 14 7 14" }),
157
- /* @__PURE__ */ e("path", { d: "M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15" })
158
- ] })
159
- },
160
- /**
161
- * studio/src/pages/AppsPage.tsx — a cloud with a down arrow: "re-fetch fresh from the remote".
162
- */
163
- "cloud-download": {
164
- viewBox: "0 0 24 24",
165
- variant: "stroke",
166
- strokeWidth: 2,
167
- body: /* @__PURE__ */ r(i, { children: [
168
- /* @__PURE__ */ e("path", { d: "M8 17l4 4 4-4" }),
169
- /* @__PURE__ */ e("path", { d: "M12 12v9" }),
170
- /* @__PURE__ */ e("path", { d: "M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29" })
171
- ] })
172
- },
173
- /**
174
- * studio/src/pages/AppsPage.tsx — inspect.
175
- */
176
- eye: {
177
- viewBox: "0 0 24 24",
178
- variant: "stroke",
179
- strokeWidth: 2,
180
- body: /* @__PURE__ */ r(i, { children: [
181
- /* @__PURE__ */ e("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8Z" }),
182
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "3" })
183
- ] })
184
- },
185
- /**
186
- * studio/src/pages/WorkflowsPage.tsx — the run button.
187
- */
188
- play: {
189
- viewBox: "0 0 24 24",
190
- variant: "stroke",
191
- strokeWidth: 2,
192
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("polygon", { points: "5 3 19 12 5 21 5 3" }) })
193
- },
194
- /**
195
- * studio/src/pages/WorkflowsPage.tsx — the stop button's filled square.
196
- */
197
- stop: {
198
- viewBox: "0 0 24 24",
199
- variant: "fill",
200
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("rect", { x: "5", y: "5", width: "14", height: "14", rx: "1" }) })
201
- },
202
- /**
203
- * studio/src/ui/rail/ErrorHandlingTool.tsx — Feather `alert-triangle`.
204
- */
205
- warning: {
206
- viewBox: "0 0 24 24",
207
- variant: "stroke",
208
- strokeWidth: 2,
209
- body: /* @__PURE__ */ r(i, { children: [
210
- /* @__PURE__ */ e("path", { d: "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" }),
211
- /* @__PURE__ */ e("line", { x1: "12", y1: "9", x2: "12", y2: "13" }),
212
- /* @__PURE__ */ e("line", { x1: "12", y1: "17", x2: "12.01", y2: "17" })
213
- ] })
214
- },
215
- /**
216
- * studio/src/ui/rail/SettingsTool.tsx — a document with text lines (Feather `file-text`), the export/edit-JSON affordance. Distinct from `file` below, which has a folded corner and no lines.
217
- */
218
- "file-text": {
219
- viewBox: "0 0 24 24",
220
- variant: "stroke",
221
- strokeWidth: 2,
222
- body: /* @__PURE__ */ r(i, { children: [
223
- /* @__PURE__ */ e("path", { d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" }),
224
- /* @__PURE__ */ e("polyline", { points: "14 2 14 8 20 8" }),
225
- /* @__PURE__ */ e("line", { x1: "8", y1: "13", x2: "16", y2: "13" }),
226
- /* @__PURE__ */ e("line", { x1: "8", y1: "17", x2: "16", y2: "17" })
227
- ] })
228
- },
229
- /**
230
- * studio/src/components/Layout.tsx — gear; byte-identical to `ui/rail/AliasesTool.tsx`'s and `ui/rail/SettingsTool.tsx`'s own copies.
231
- */
232
- settings: {
233
- viewBox: "0 0 24 24",
234
- variant: "fill",
235
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M10.09 2.18h3.82l-.47 2.76 2.53 1.06 1.62-2.29 2.7 2.7-2.29 1.62 1.06 2.53 2.76-.47v3.82l-2.76-.47-1.06 2.53 2.29 1.62-2.7 2.7-1.62-2.29-2.53 1.06.47 2.76h-3.82l.47-2.76-2.53-1.06-1.62 2.29-2.7-2.7 2.29-1.62-1.06-2.53-2.76.47v-3.82l2.76.47 1.06-2.53-2.29-1.62 2.7-2.7 1.62 2.29 2.53-1.06-.47-2.76ZM12 8.8a3.2 3.2 0 1 0 0 6.4 3.2 3.2 0 0 0 0-6.4Z" }) })
236
- },
237
- /**
238
- * studio/src/components/Layout.tsx — the GitHub mark; byte-identical to `studio/src/pages/RepositoryPage.tsx`'s `GitHubMark` (which renders it at 16px, the header at 18px — hence `size`).
239
- */
240
- github: {
241
- viewBox: "0 0 24 24",
242
- variant: "fill",
243
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M12 .5C5.65.5.5 5.65.5 12a11.5 11.5 0 0 0 7.86 10.92c.58.11.79-.25.79-.56v-2c-3.2.7-3.88-1.37-3.88-1.37-.53-1.34-1.29-1.7-1.29-1.7-1.05-.72.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.04 1.78 2.72 1.26 3.38.96.1-.75.4-1.26.73-1.55-2.55-.29-5.24-1.28-5.24-5.7 0-1.26.45-2.29 1.19-3.1-.12-.29-.51-1.47.11-3.06 0 0 .97-.31 3.18 1.18a11 11 0 0 1 5.79 0c2.2-1.49 3.17-1.18 3.17-1.18.62 1.59.23 2.77.11 3.06.74.81 1.19 1.84 1.19 3.1 0 4.43-2.7 5.4-5.27 5.69.41.36.78 1.06.78 2.15v3.18c0 .31.21.68.8.56A11.5 11.5 0 0 0 23.5 12C23.5 5.65 18.35.5 12 .5z" }) })
244
- },
245
- /**
246
- * studio/src/components/Layout.tsx — a robot head, the Agents nav item. Separate from `user`.
247
- */
248
- bot: {
249
- viewBox: "0 0 24 24",
250
- variant: "fill",
251
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M11 2h2v2h4a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h4V2ZM9 9.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm6 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM8 15v1.5h8V15H8ZM2 10h1v5H2v-5Zm19 0h1v5h-1v-5Z" }) })
252
- },
253
- /**
254
- * studio/src/components/Layout.tsx — one person, the user chip.
255
- */
256
- user: {
257
- viewBox: "0 0 24 24",
258
- variant: "fill",
259
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M12 12a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm0 2c-4.42 0-8 2.24-8 5v1h16v-1c0-2.76-3.58-5-8-5Z" }) })
260
- },
261
- /**
262
- * studio/src/components/Layout.tsx — two overlapping people, the team roster. Deliberately separate from `user`.
263
- */
264
- users: {
265
- viewBox: "0 0 24 24",
266
- variant: "fill",
267
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M9 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm0 2c-4 0-7 2-7 4.5V20h14v-1.5C16 16 13 14 9 14Zm8.5-2a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm0 2c-.7 0-1.36.1-1.96.3 1.2.98 1.96 2.4 1.96 4.2V20h5v-1.5c0-2.2-2.4-4-5-4Z" }) })
268
- },
269
- /**
270
- * studio/src/components/Layout.tsx — an exit door and arrow.
271
- */
272
- logout: {
273
- viewBox: "0 0 24 24",
274
- variant: "fill",
275
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M4 3h9v2H6v14h7v2H4V3Zm10.3 4.3 1.4-1.4L21.8 12l-6.1 6.1-1.4-1.4 3.7-3.7H9v-2h9l-3.7-3.7Z" }) })
276
- },
277
- /**
278
- * studio/src/components/SessionButton.tsx — an ID badge for the current session.
279
- */
280
- "id-card": {
281
- viewBox: "0 0 24 24",
282
- variant: "fill",
283
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M4 4h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Zm3 4a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-3 8c0-2 2-3 3-3s3 1 3 3H4Zm10-8h6v2h-6V8Zm0 4h6v2h-6v-2Z" }) })
284
- },
285
- /**
286
- * studio/src/components/Layout.tsx — 2x2 panels, the account dashboard. Distinct from `grid`, whose four cells are equal.
287
- */
288
- dashboard: {
289
- viewBox: "0 0 24 24",
290
- variant: "fill",
291
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M3 3h8v6H3V3Zm0 8h8v10H3V11Zm10 4h8v6h-8v-6Zm0-12h8v10h-8V3Z" }) })
292
- },
293
- /**
294
- * studio/src/components/Layout.tsx — a heartbeat trace, the reliability board.
295
- */
296
- pulse: {
297
- viewBox: "0 0 24 24",
298
- variant: "fill",
299
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M2 11h4.4l2-5 3.4 12 3-9 1.8 2H22v2h-6.4l-1-1.2-3.4 10.2-3.4-12-1 3H2v-2Z" }) })
300
- },
301
- /**
302
- * studio/src/components/Layout.tsx — three step boxes and their edges.
303
- */
304
- workflow: {
305
- viewBox: "0 0 24 24",
306
- variant: "fill",
307
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M2 3h7v7H2V3Zm13 0h7v7h-7V3ZM9 5.5h6v2H9v-2ZM15 15h7v7h-7v-7Zm2.5-5h2v5h-2v-5Z" }) })
308
- },
309
- /**
310
- * studio/src/components/Layout.tsx — a globe, an Endpoint being a web address. Stroked at 1.75, the rail's own weight.
311
- */
312
- globe: {
313
- viewBox: "0 0 24 24",
314
- variant: "stroke",
315
- strokeWidth: 1.75,
316
- body: /* @__PURE__ */ r(i, { children: [
317
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "9" }),
318
- /* @__PURE__ */ e("path", { d: "M3 12h18" }),
319
- /* @__PURE__ */ e("path", { d: "M12 3c2.4 2.4 3.8 5.8 3.8 9s-1.4 6.6-3.8 9c-2.4-2.4-3.8-5.8-3.8-9s1.4-6.6 3.8-9Z" })
320
- ] })
321
- },
322
- /**
323
- * studio/src/components/Layout.tsx — a lambda, reusable functions.
324
- */
325
- lambda: {
326
- viewBox: "0 0 24 24",
327
- variant: "fill",
328
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M14 3a3 3 0 0 0-3 3v3H8v2h3v4a1 1 0 0 1-1 1H8v2h2a3 3 0 0 0 3-3v-4h3V9h-3V6a1 1 0 0 1 1-1h2V3h-2Z" }) })
329
- },
330
- /**
331
- * studio/src/components/Layout.tsx — three adjustable tracks (secrets AND variables; a padlock was rejected, it names only the security half). The knob dots are filled over the stroked tracks.
332
- */
333
- sliders: {
334
- viewBox: "0 0 24 24",
335
- variant: "stroke",
336
- strokeWidth: 1.75,
337
- body: /* @__PURE__ */ r(i, { children: [
338
- /* @__PURE__ */ e("path", { d: "M3 6h9M17 6h4M3 12h4M11 12h10M3 18h13M20 18h1" }),
339
- /* @__PURE__ */ e("circle", { cx: "13", cy: "6", r: "2.25", fill: "currentColor", stroke: "none" }),
340
- /* @__PURE__ */ e("circle", { cx: "7.5", cy: "12", r: "2.25", fill: "currentColor", stroke: "none" }),
341
- /* @__PURE__ */ e("circle", { cx: "16.5", cy: "18", r: "2.25", fill: "currentColor", stroke: "none" })
342
- ] })
343
- },
344
- /**
345
- * studio/src/components/Layout.tsx — a document with a folded corner, the JSON document store.
346
- */
347
- file: {
348
- viewBox: "0 0 24 24",
349
- variant: "fill",
350
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M6 2h8l4 4v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2Zm7 1.5V7h3.5L13 3.5ZM8 12h8v2H8v-2Zm0 4h8v2H8v-2Z" }) })
351
- },
352
- /**
353
- * studio/src/components/Layout.tsx — a power plug, external connections.
354
- */
355
- plug: {
356
- viewBox: "0 0 24 24",
357
- variant: "fill",
358
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M8 2h2v4H8V2Zm6 0h2v4h-2V2ZM6 6h12v4a4 4 0 0 1-4 4h-1v5h-2v-5h-1a4 4 0 0 1-4-4V6Z" }) })
359
- },
360
- /**
361
- * studio/src/components/Layout.tsx — 2x2 equal squares, the app catalog.
362
- */
363
- grid: {
364
- viewBox: "0 0 24 24",
365
- variant: "fill",
366
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M3 3h8v8H3V3Zm10 0h8v8h-8V3ZM3 13h8v8H3v-8Zm10 0h8v8h-8v-8Z" }) })
367
- },
368
- /**
369
- * studio/src/components/Layout.tsx — stacked folders, projects.
370
- */
371
- folder: {
372
- viewBox: "0 0 24 24",
373
- variant: "fill",
374
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M3 5a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm2 2v10h14V7H5Z" }) })
375
- },
376
- /**
377
- * studio/src/components/Layout.tsx — a branching line, a bound git repository.
378
- */
379
- "git-branch": {
380
- viewBox: "0 0 24 24",
381
- variant: "stroke",
382
- strokeWidth: 2,
383
- body: /* @__PURE__ */ r(i, { children: [
384
- /* @__PURE__ */ e("line", { x1: "6", y1: "3", x2: "6", y2: "15" }),
385
- /* @__PURE__ */ e("circle", { cx: "18", cy: "6", r: "3" }),
386
- /* @__PURE__ */ e("circle", { cx: "6", cy: "18", r: "3" }),
387
- /* @__PURE__ */ e("path", { d: "M18 9a9 9 0 0 1-9 9" })
388
- ] })
389
- },
390
- /**
391
- * studio/src/components/Layout.tsx — a ring, API tokens.
392
- */
393
- coin: {
394
- viewBox: "0 0 24 24",
395
- variant: "fill",
396
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm0 4a6 6 0 1 1 0 12 6 6 0 0 1 0-12Zm0 3.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5Z" }) })
397
- },
398
- /**
399
- * studio/src/components/Layout.tsx — a building, tenant administration.
400
- */
401
- building: {
402
- viewBox: "0 0 24 24",
403
- variant: "fill",
404
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M5 21V4a1 1 0 0 1 1-1h9a1 1 0 0 1 1 1v17h4v2H3v-2h2Zm2-15v2h2V6H7Zm0 4v2h2v-2H7Zm0 4v2h2v-2H7Zm4-8v2h2V6h-2Zm0 4v2h2v-2h-2Zm0 4v2h2v-2h-2Z" }) })
405
- },
406
- /**
407
- * studio/src/components/Layout.tsx — stacked server units, the Installation panel.
408
- */
409
- server: {
410
- viewBox: "0 0 24 24",
411
- variant: "fill",
412
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M4 4h16a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Zm3 3.5a1 1 0 1 0 0 2 1 1 0 0 0 0-2ZM4 13h16a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1Zm3 3.5a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z" }) })
413
- },
414
- /**
415
- * studio/src/components/Layout.tsx — a price tag with a dollar mark, the plan + invoices.
416
- */
417
- "price-tag": {
418
- viewBox: "0 0 24 24",
419
- variant: "fill",
420
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M12.41 2H4a2 2 0 0 0-2 2v8.41a2 2 0 0 0 .59 1.41l9 9a2 2 0 0 0 2.82 0l7.59-7.59a2 2 0 0 0 0-2.82l-9-9A2 2 0 0 0 12.41 2ZM7 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm4.5 8.5-1-1L15 11l1 1-4.5 4.5Z" }) })
421
- },
422
- /**
423
- * studio/src/components/CallFromCodeButton.tsx — the Node mark, named for what it depicts.
424
- */
425
- "lang-node": {
426
- viewBox: "0 0 24 24",
427
- variant: "mixed",
428
- body: /* @__PURE__ */ r(i, { children: [
429
- /* @__PURE__ */ e("title", { children: "Node" }),
430
- /* @__PURE__ */ e(
431
- "path",
432
- {
433
- d: "M12 2.4 20.4 7.2v9.6L12 21.6 3.6 16.8V7.2z",
434
- fill: "none",
435
- stroke: "currentColor",
436
- strokeWidth: "1.6",
437
- strokeLinejoin: "round"
438
- }
439
- ),
440
- /* @__PURE__ */ e(
441
- "path",
442
- {
443
- d: "M9.4 15.4V8.9l5.2 6.2V8.6",
444
- fill: "none",
445
- stroke: "currentColor",
446
- strokeWidth: "1.6",
447
- strokeLinecap: "round",
448
- strokeLinejoin: "round"
449
- }
450
- )
451
- ] })
452
- },
453
- /**
454
- * studio/src/components/CallFromCodeButton.tsx — a terminal with a `>_` prompt, the CLI tab.
455
- */
456
- terminal: {
457
- viewBox: "0 0 24 24",
458
- variant: "mixed",
459
- body: /* @__PURE__ */ r(i, { children: [
460
- /* @__PURE__ */ e("title", { children: "CLI" }),
461
- /* @__PURE__ */ e(
462
- "rect",
463
- {
464
- x: "2.6",
465
- y: "4.4",
466
- width: "18.8",
467
- height: "15.2",
468
- rx: "2.2",
469
- fill: "none",
470
- stroke: "currentColor",
471
- strokeWidth: "1.6"
472
- }
473
- ),
474
- /* @__PURE__ */ e(
475
- "polyline",
476
- {
477
- points: "6.8 9.6 9.8 12 6.8 14.4",
478
- fill: "none",
479
- stroke: "currentColor",
480
- strokeWidth: "1.6",
481
- strokeLinecap: "round",
482
- strokeLinejoin: "round"
483
- }
484
- ),
485
- /* @__PURE__ */ e(
486
- "line",
487
- {
488
- x1: "12.4",
489
- y1: "15",
490
- x2: "17",
491
- y2: "15",
492
- stroke: "currentColor",
493
- strokeWidth: "1.6",
494
- strokeLinecap: "round"
495
- }
496
- )
497
- ] })
498
- },
499
- /**
500
- * studio/src/components/CallFromCodeButton.tsx — the Python mark (see `PythonEyes` below, which owns its mask id).
501
- */
502
- "lang-python": {
503
- viewBox: "0 0 24 24",
504
- variant: "mixed",
505
- body: /* @__PURE__ */ e(C, {})
506
- },
507
- /**
508
- * studio/src/components/CallFromCodeButton.tsx — curl's swoosh over a request in flight.
509
- */
510
- "lang-curl": {
511
- viewBox: "0 0 24 24",
512
- variant: "mixed",
513
- body: /* @__PURE__ */ r(i, { children: [
514
- /* @__PURE__ */ e("title", { children: "curl" }),
515
- /* @__PURE__ */ e(
516
- "path",
517
- {
518
- d: "M3 15.5c2.4 0 3.6-2.2 5.1-4.6C9.8 8.2 11.3 5.5 14 5.5c2.6 0 4 2 4 4.2 0 2.1-1.4 3.6-3.2 3.6-1.5 0-2.5-1-2.5-2.2 0-1.1.8-1.9 1.8-1.9",
519
- fill: "none",
520
- stroke: "currentColor",
521
- strokeWidth: "1.7",
522
- strokeLinecap: "round"
523
- }
524
- ),
525
- /* @__PURE__ */ e("circle", { cx: "4.4", cy: "18.6", r: "1.5", fill: "currentColor" }),
526
- /* @__PURE__ */ e("circle", { cx: "20", cy: "18.6", r: "1.5", fill: "currentColor" }),
527
- /* @__PURE__ */ e(
528
- "line",
529
- {
530
- x1: "7.4",
531
- y1: "18.6",
532
- x2: "17",
533
- y2: "18.6",
534
- stroke: "currentColor",
535
- strokeWidth: "1.7",
536
- strokeLinecap: "round",
537
- strokeDasharray: "0.1 3.6"
538
- }
539
- )
540
- ] })
541
- },
542
- /**
543
- * studio/src/components/Layout.tsx's theme toggle — the three glyphs that
544
- * button draws for its three states. It used to draw the text characters
545
- * `◐`/`☀︎`/`☾`, which no shared set can hold: a text glyph is not a drawn
546
- * shape, and `IconButton` names its glyph instead. Feather-style outline
547
- * (`strokeWidth` 2, like the rest of the Feather-derived entries) so all
548
- * three read as one family at 16px. `circle-half`'s filled half is the
549
- * "system" state — half light, half dark.
550
- */
551
- sun: {
552
- viewBox: "0 0 24 24",
553
- variant: "stroke",
554
- body: /* @__PURE__ */ r(i, { children: [
555
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "5" }),
556
- /* @__PURE__ */ e("line", { x1: "12", y1: "1", x2: "12", y2: "3" }),
557
- /* @__PURE__ */ e("line", { x1: "12", y1: "21", x2: "12", y2: "23" }),
558
- /* @__PURE__ */ e("line", { x1: "4.22", y1: "4.22", x2: "5.64", y2: "5.64" }),
559
- /* @__PURE__ */ e("line", { x1: "18.36", y1: "18.36", x2: "19.78", y2: "19.78" }),
560
- /* @__PURE__ */ e("line", { x1: "1", y1: "12", x2: "3", y2: "12" }),
561
- /* @__PURE__ */ e("line", { x1: "21", y1: "12", x2: "23", y2: "12" }),
562
- /* @__PURE__ */ e("line", { x1: "4.22", y1: "19.78", x2: "5.64", y2: "18.36" }),
563
- /* @__PURE__ */ e("line", { x1: "18.36", y1: "5.64", x2: "19.78", y2: "4.22" })
564
- ] })
565
- },
566
- moon: {
567
- viewBox: "0 0 24 24",
568
- variant: "stroke",
569
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M21 12.79A9 9 0 1 1 11.21 3a7 7 0 0 0 9.79 9.79Z" }) })
570
- },
571
- "circle-half": {
572
- viewBox: "0 0 24 24",
573
- variant: "mixed",
574
- body: /* @__PURE__ */ r(i, { children: [
575
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "9", fill: "none", stroke: "currentColor", strokeWidth: "2" }),
576
- /* @__PURE__ */ e("path", { d: "M12 3a9 9 0 0 1 0 18V3Z", fill: "currentColor" })
577
- ] })
578
- },
579
- /**
580
- * ui/src/WorkflowFlowEditor.tsx's `AutoLayoutIcon` — the auto-layout control's
581
- * three-box hierarchy (one parent over two children), on a `0 0 24 24` box.
582
- *
583
- * `mixed` — rooted in the "the root adds NO paint" half of that variant, which
584
- * this glyph needs literally: its source `<svg>` carried no paint attribute at
585
- * all, and neither does its path, so a `fill="currentColor"` on the root would
586
- * NOT be the source's markup and a `fill="none" stroke=…` root would render
587
- * NOTHING at all here. The colour comes from the context — the path sits inside
588
- * a `@xyflow/react` control button whose `svg { fill: currentColor }` paints it
589
- * (`@xyflow/react/dist/style.css`), exactly as it does today.
590
- */
591
- layout: {
592
- viewBox: "0 0 24 24",
593
- variant: "mixed",
594
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("path", { d: "M9 3h6v6H9zM11 9h2v2h-2zM4 11h16v2H4zM4 13h2v2H4zM18 13h2v2h-2zM2 15h6v6H2zM16 15h6v6h-6z" }) })
595
- },
596
- /**
597
- * ui/src/WorkflowFlowEditor.tsx's node-toolbar "Test-run this step" button — a
598
- * play triangle, but NOT `play` above: its points are its own (14 wide × 16
599
- * tall against `play`'s 14 × 18), so it keeps its own entry rather than being
600
- * redrawn to match.
601
- */
602
- run: {
603
- viewBox: "0 0 24 24",
604
- variant: "stroke",
605
- strokeWidth: 2,
606
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("polygon", { points: "6 4 20 12 6 20 6 4" }) })
607
- },
608
- /**
609
- * ui/src/WorkflowFlowEditor.tsx's node-toolbar delete button — Feather `trash`
610
- * (lid + body, no inner lines); distinct from `delete` above, which is the
611
- * fuller 4-shape `trash-2`.
612
- */
613
- trash: {
614
- viewBox: "0 0 24 24",
615
- variant: "stroke",
616
- strokeWidth: 2,
617
- body: /* @__PURE__ */ r(i, { children: [
618
- /* @__PURE__ */ e("polyline", { points: "3 6 5 6 21 6" }),
619
- /* @__PURE__ */ e("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
620
- ] })
621
- },
622
- /**
623
- * ui/src/ParamsForm.tsx's JSON field — "Open in full view": Feather
624
- * `maximize-2`, the two diagonal expand arrows.
625
- */
626
- maximize: {
627
- viewBox: "0 0 24 24",
628
- variant: "stroke",
629
- strokeWidth: 2,
630
- body: /* @__PURE__ */ r(i, { children: [
631
- /* @__PURE__ */ e("polyline", { points: "15 3 21 3 21 9" }),
632
- /* @__PURE__ */ e("polyline", { points: "9 21 3 21 3 15" }),
633
- /* @__PURE__ */ e("line", { x1: "21", y1: "3", x2: "14", y2: "10" }),
634
- /* @__PURE__ */ e("line", { x1: "3", y1: "21", x2: "10", y2: "14" })
635
- ] })
636
- },
637
- /**
638
- * ui/src/StepBuilderModal.tsx's `CONFIG_VIEW_GLYPHS.props` — a bordered panel
639
- * with three text lines: the step's field form. Distinct from `file-text`,
640
- * which is a document with a folded corner.
641
- */
642
- form: {
643
- viewBox: "0 0 24 24",
644
- variant: "stroke",
645
- strokeWidth: 2,
646
- body: /* @__PURE__ */ r(i, { children: [
647
- /* @__PURE__ */ e("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
648
- /* @__PURE__ */ e("line", { x1: "7", y1: "8", x2: "17", y2: "8" }),
649
- /* @__PURE__ */ e("line", { x1: "7", y1: "12", x2: "17", y2: "12" }),
650
- /* @__PURE__ */ e("line", { x1: "7", y1: "16", x2: "13", y2: "16" })
651
- ] })
652
- },
653
- /**
654
- * ui/src/StepBuilderModal.tsx's `CONFIG_VIEW_GLYPHS["params-code"]` — square
655
- * braces, the params as a VALUE. A second glyph for the braces meaning beside
656
- * `json` (whose curved `<path>` braces it does not share); its own name rather
657
- * than a redraw, so the two views stay tellable apart at 15px.
658
- */
659
- braces: {
660
- viewBox: "0 0 24 24",
661
- variant: "stroke",
662
- strokeWidth: 2,
663
- body: /* @__PURE__ */ r(i, { children: [
664
- /* @__PURE__ */ e("polyline", { points: "9 4 7 4 7 10 5 12 7 14 7 20 9 20" }),
665
- /* @__PURE__ */ e("polyline", { points: "15 4 17 4 17 10 19 12 17 14 17 20 15 20" })
666
- ] })
667
- },
668
- /**
669
- * ui/src/StepBuilderModal.tsx's `CONFIG_VIEW_GLYPHS.config` — Feather
670
- * `settings`, the node-settings gear. Distinct from `settings` above (the
671
- * filled Material gear Layout.tsx draws): this one is the stroked outline.
672
- */
673
- "settings-2": {
674
- viewBox: "0 0 24 24",
675
- variant: "stroke",
676
- strokeWidth: 2,
677
- body: /* @__PURE__ */ r(i, { children: [
678
- /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "3" }),
679
- /* @__PURE__ */ e("path", { d: "M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z" })
680
- ] })
681
- },
682
- /**
683
- * ui/src/WorkflowFlowEditor.tsx's "Add note" canvas button — a sheet with a
684
- * folded corner (Lucide `sticky-note`). Drawn here, not copied from a studio
685
- * site: the canvas toolbar is its first and only user.
686
- */
687
- "sticky-note": {
688
- viewBox: "0 0 24 24",
689
- variant: "stroke",
690
- strokeWidth: 2,
691
- body: /* @__PURE__ */ r(i, { children: [
692
- /* @__PURE__ */ e("path", { d: "M16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8Z" }),
693
- /* @__PURE__ */ e("path", { d: "M15 3v4a2 2 0 0 0 2 2h4" })
694
- ] })
695
- },
696
- /**
697
- * ui/src/WorkflowFlowEditor.tsx's "Draw section" canvas tool — four crossing
698
- * lines marking out a frame (Feather/Lucide `frame`). Drawn here; first user.
699
- */
700
- frame: {
701
- viewBox: "0 0 24 24",
702
- variant: "stroke",
703
- strokeWidth: 2,
704
- body: /* @__PURE__ */ r(i, { children: [
705
- /* @__PURE__ */ e("line", { x1: "22", y1: "6", x2: "2", y2: "6" }),
706
- /* @__PURE__ */ e("line", { x1: "22", y1: "18", x2: "2", y2: "18" }),
707
- /* @__PURE__ */ e("line", { x1: "6", y1: "2", x2: "6", y2: "22" }),
708
- /* @__PURE__ */ e("line", { x1: "18", y1: "2", x2: "18", y2: "22" })
709
- ] })
710
- },
711
- /**
712
- * ui/src/CanvasLayer.tsx's note toolbar — Feather `bold`. Drawn here; first user.
713
- */
714
- bold: {
715
- viewBox: "0 0 24 24",
716
- variant: "stroke",
717
- strokeWidth: 2.5,
718
- body: /* @__PURE__ */ r(i, { children: [
719
- /* @__PURE__ */ e("path", { d: "M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z" }),
720
- /* @__PURE__ */ e("path", { d: "M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z" })
721
- ] })
722
- },
723
- /**
724
- * ui/src/CanvasLayer.tsx's note drag handle — two columns of three dots
725
- * (Lucide `grip-vertical`). Drawn here; first user.
726
- */
727
- grip: {
728
- viewBox: "0 0 24 24",
729
- variant: "stroke",
730
- strokeWidth: 2,
731
- body: /* @__PURE__ */ r(i, { children: [
732
- /* @__PURE__ */ e("circle", { cx: "9", cy: "12", r: "1" }),
733
- /* @__PURE__ */ e("circle", { cx: "9", cy: "5", r: "1" }),
734
- /* @__PURE__ */ e("circle", { cx: "9", cy: "19", r: "1" }),
735
- /* @__PURE__ */ e("circle", { cx: "15", cy: "12", r: "1" }),
736
- /* @__PURE__ */ e("circle", { cx: "15", cy: "5", r: "1" }),
737
- /* @__PURE__ */ e("circle", { cx: "15", cy: "19", r: "1" })
738
- ] })
739
- },
740
- /**
741
- * ui/src/CanvasLayer.tsx's note toolbar menus — Feather `chevron-down`.
742
- * Drawn here; first user.
743
- */
744
- "chevron-down": {
745
- viewBox: "0 0 24 24",
746
- variant: "stroke",
747
- strokeWidth: 2,
748
- body: /* @__PURE__ */ e(i, { children: /* @__PURE__ */ e("polyline", { points: "6 9 12 15 18 9" }) })
749
- }
750
- }, I = Object.keys(m);
751
- function g(o) {
752
- return o.variant === "fill" ? { fill: "currentColor" } : o.variant === "stroke" ? {
753
- fill: "none",
754
- stroke: "currentColor",
755
- strokeWidth: o.strokeWidth ?? 2,
756
- strokeLinecap: "round",
757
- strokeLinejoin: "round"
758
- } : {};
759
- }
760
- function Z(o) {
761
- const { name: h, size: d = 16, label: n, className: t } = o, c = m[h], l = !!n;
762
- return /* @__PURE__ */ e(
763
- "svg",
764
- {
765
- className: ["w6w-icon", t ?? ""].filter(Boolean).join(" "),
766
- width: d,
767
- height: d,
768
- viewBox: c.viewBox,
769
- ...g(c),
770
- role: l ? "img" : void 0,
771
- "aria-label": l ? n : void 0,
772
- "aria-hidden": l ? void 0 : "true",
773
- focusable: l ? void 0 : "false",
774
- children: c.body
775
- }
776
- );
777
- }
778
- const B = 1500;
779
- function L(o, h = B) {
780
- const [d, n] = W(!1), t = w(null);
781
- f(() => () => {
782
- t.current !== null && clearTimeout(t.current);
783
- }, []);
784
- const c = M(async () => {
785
- var l;
786
- try {
787
- await ((l = navigator.clipboard) == null ? void 0 : l.writeText(o)), n(!0), t.current !== null && clearTimeout(t.current), t.current = setTimeout(() => n(!1), h);
788
- } catch {
789
- }
790
- }, [o, h]);
791
- return { copied: d, copy: c };
792
- }
793
- function z() {
794
- return /* @__PURE__ */ e(Z, { name: "copy", size: 14 });
795
- }
796
- function j() {
797
- return /* @__PURE__ */ e(Z, { name: "check", size: 14 });
798
- }
799
- function E(o) {
800
- const {
801
- value: h,
802
- copiedMs: d = B,
803
- readOnly: n = !1,
804
- label: t = "Copy",
805
- className: c,
806
- children: l
807
- } = o, { copied: y, copy: x } = L(h, d), p = w(null), u = M(() => {
808
- var v;
809
- const a = (v = p.current) == null ? void 0 : v.querySelector("input, textarea");
810
- a == null || a.select();
811
- }, []);
812
- return f(() => {
813
- if (!n) return;
814
- const a = p.current;
815
- if (!a) return;
816
- const v = (H) => {
817
- var b;
818
- const s = H.target;
819
- if ((b = s == null ? void 0 : s.closest) != null && b.call(s, "button")) return;
820
- const k = window.getSelection();
821
- k && !k.isCollapsed && a.contains(k.anchorNode) || (x(), u());
822
- };
823
- return a.addEventListener("click", v), () => a.removeEventListener("click", v);
824
- }, [n, x, u]), /* @__PURE__ */ r("div", { ref: p, className: ["w6w-copyable", c ?? ""].filter(Boolean).join(" "), children: [
825
- l,
826
- /* @__PURE__ */ e(
827
- "button",
828
- {
829
- type: "button",
830
- className: `w6w-icon-btn w6w-copyable-btn${y ? " is-copied" : ""}`,
831
- "aria-label": t,
832
- onClick: () => void x(),
833
- children: y ? /* @__PURE__ */ e(j, {}) : /* @__PURE__ */ e(z, {})
834
- }
835
- ),
836
- /* @__PURE__ */ e("span", { className: "w6w-copyable-status", "aria-live": "polite", children: y ? "Copied" : "" })
837
- ] });
838
- }
839
- export {
840
- E as C,
841
- Z as I,
842
- j as a,
843
- z as b,
844
- I as i,
845
- L as u
846
- };
847
- //# sourceMappingURL=Copyable-F4NTaG77.js.map