@w6w/ui 0.2.11 → 0.2.55

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 (138) 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/WorkflowConnectionsPanel.d.ts +5 -0
  22. package/dist/WorkflowFlowEditor.d.ts +67 -8
  23. package/dist/assets/script-completion.worker-DDJKkj5M.js +8290 -0
  24. package/dist/assets/script-completion.worker-DDJKkj5M.js.map +1 -0
  25. package/dist/canvas-context-menu.d.ts +27 -0
  26. package/dist/code.cjs +1 -1
  27. package/dist/code.mjs +3 -4
  28. package/dist/code.mjs.map +1 -1
  29. package/dist/components/AnchoredFlyout.d.ts +7 -0
  30. package/dist/components/ColumnsEditor.d.ts +27 -0
  31. package/dist/components/Combobox.d.ts +12 -1
  32. package/dist/components/ConfirmModal.d.ts +3 -1
  33. package/dist/components/CsvPanel.d.ts +21 -0
  34. package/dist/components/DataEntryEditor.d.ts +38 -0
  35. package/dist/components/DataEntryList.d.ts +33 -0
  36. package/dist/components/DataStoreList.d.ts +33 -0
  37. package/dist/components/DataTableGrid.d.ts +46 -0
  38. package/dist/components/EventbriteTriggerPicker.d.ts +7 -0
  39. package/dist/components/ExecutionDetail.d.ts +17 -1
  40. package/dist/components/ExecutionList.d.ts +19 -1
  41. package/dist/components/ExecutionLogPanel.d.ts +61 -3
  42. package/dist/components/ExpressionEditorModal.d.ts +33 -10
  43. package/dist/components/ExpressionOptions.d.ts +101 -15
  44. package/dist/components/HtmlPreview.d.ts +7 -0
  45. package/dist/components/JsonTree.d.ts +32 -0
  46. package/dist/components/ResolvedParams.d.ts +6 -1
  47. package/dist/components/ResultViewer.d.ts +46 -0
  48. package/dist/components/ScriptBindingsNotice.d.ts +31 -0
  49. package/dist/components/ScriptCodeField.d.ts +13 -0
  50. package/dist/components/StepStatusPill.d.ts +7 -0
  51. package/dist/components/expression-authoring.d.ts +13 -0
  52. package/dist/components/expression-dom.d.ts +17 -2
  53. package/dist/components/expression-template.d.ts +25 -3
  54. package/dist/components/icons.d.ts +1 -1
  55. package/dist/components/json-compose.d.ts +53 -0
  56. package/dist/components/result-format.d.ts +13 -0
  57. package/dist/condition-editor.d.ts +44 -0
  58. package/dist/connection-app-meta-BEXlKBgV.cjs +22 -0
  59. package/dist/connection-app-meta-BEXlKBgV.cjs.map +1 -0
  60. package/dist/connection-app-meta-ZCPakGjD.js +12422 -0
  61. package/dist/connection-app-meta-ZCPakGjD.js.map +1 -0
  62. package/dist/data-stores/data-store-view.d.ts +371 -0
  63. package/dist/eventbrite-trigger-selection.d.ts +13 -0
  64. package/dist/flow-connect.d.ts +22 -16
  65. package/dist/flow-delete.d.ts +16 -0
  66. package/dist/flow-history.d.ts +75 -0
  67. package/dist/flow-layout.d.ts +13 -0
  68. package/dist/flow-loop-colors.d.ts +39 -0
  69. package/dist/flow-loop.d.ts +98 -0
  70. package/dist/flow-node-flags.d.ts +14 -0
  71. package/dist/flow-problems.d.ts +69 -0
  72. package/dist/flow-state.d.ts +20 -0
  73. package/dist/flow-types.d.ts +137 -9
  74. package/dist/flow-utils.d.ts +27 -13
  75. package/dist/flow.cjs +4 -2
  76. package/dist/flow.cjs.map +1 -1
  77. package/dist/flow.d.ts +9 -3
  78. package/dist/flow.mjs +4028 -1585
  79. package/dist/flow.mjs.map +1 -1
  80. package/dist/index.cjs +2 -1
  81. package/dist/index.cjs.map +1 -1
  82. package/dist/index.d.ts +30 -4
  83. package/dist/index.mjs +2559 -1287
  84. package/dist/index.mjs.map +1 -1
  85. package/dist/node-samples.d.ts +80 -0
  86. package/dist/output-shape.d.ts +30 -14
  87. package/dist/param-customization.d.ts +7 -0
  88. package/dist/provider.d.ts +119 -7
  89. package/dist/resolve-params.d.ts +45 -11
  90. package/dist/run-visuals.d.ts +14 -21
  91. package/dist/script-bindings.d.ts +63 -0
  92. package/dist/script-completion-service.d.ts +9 -0
  93. package/dist/script-completion.worker.d.ts +1 -0
  94. package/dist/script-completions.d.ts +2 -0
  95. package/dist/state-shape.d.ts +38 -0
  96. package/dist/step-preview-state.d.ts +155 -6
  97. package/dist/step-problems.d.ts +42 -12
  98. package/dist/test-inputs.d.ts +25 -0
  99. package/dist/trigger-registration.d.ts +28 -0
  100. package/dist/types.d.ts +70 -8
  101. package/dist/use-app-action-defs.d.ts +9 -1
  102. package/dist/use-test-input.d.ts +18 -0
  103. package/dist/workflow-connections.d.ts +78 -0
  104. package/package.json +16 -7
  105. package/src/code.css +60 -6
  106. package/src/styles/_canvas.scss +35 -0
  107. package/src/styles/_code-editor.scss +35 -0
  108. package/src/styles/_code.scss +6 -5
  109. package/src/styles/_connections.scss +64 -0
  110. package/src/styles/_copyable.scss +24 -0
  111. package/src/styles/_data-stores.scss +138 -0
  112. package/src/styles/_data-vars.scss +17 -6
  113. package/src/styles/_execution-history.scss +73 -0
  114. package/src/styles/_execution-log.scss +145 -1
  115. package/src/styles/_expression-modal.scss +106 -16
  116. package/src/styles/_fields.scss +11 -0
  117. package/src/styles/_flow.scss +166 -0
  118. package/src/styles/_fx.scss +3 -1
  119. package/src/styles/_incoming-state.scss +33 -0
  120. package/src/styles/_modal.scss +12 -0
  121. package/src/styles/_multiselect.scss +35 -0
  122. package/src/styles/_sections.scss +36 -0
  123. package/src/styles/_step-builder.scss +145 -0
  124. package/src/styles/_tester.scss +56 -0
  125. package/src/styles/_tokens.scss +27 -1
  126. package/src/styles.css +1347 -41
  127. package/src/styles.scss +2 -0
  128. package/dist/CodeBlock-BqXDA35P.js.map +0 -1
  129. package/dist/CodeBlock-CulfbnZD.cjs +0 -15
  130. package/dist/CodeBlock-CulfbnZD.cjs.map +0 -1
  131. package/dist/ConfirmModal-Ln99S9NT.js +0 -7919
  132. package/dist/ConfirmModal-Ln99S9NT.js.map +0 -1
  133. package/dist/ConfirmModal-fjHW5rN-.cjs +0 -14
  134. package/dist/ConfirmModal-fjHW5rN-.cjs.map +0 -1
  135. package/dist/Copyable-DA6eiU7w.cjs +0 -2
  136. package/dist/Copyable-DA6eiU7w.cjs.map +0 -1
  137. package/dist/Copyable-F4NTaG77.js +0 -847
  138. package/dist/Copyable-F4NTaG77.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"Copyable-F4NTaG77.js","sources":["../src/components/icons.tsx","../src/components/Icon.tsx","../src/components/use-copy.ts","../src/components/Copyable.tsx"],"sourcesContent":["/**\n * The shared icon set behind `Icon` — one named entry per glyph, each recording\n * its own drawing attributes, because the sources do not agree on them.\n *\n * Every `body` is its source `<svg>`'s CHILDREN copied VERBATIM — paths,\n * polylines, per-element paint — from the file named in the entry's own comment\n * (the studio tree is the reference; nothing here was redrawn or re-derived). Two\n * sites drawing the identical glyph are ONE entry, and the comment names both\n * sites; two different glyphs for one meaning keep two distinguishable names\n * (`edit` vs `edit-2`, `history` vs `clock`, `file` vs `file-text`).\n *\n * The ONE exception is the theme toggle's three glyphs (`sun`/`moon`/\n * `circle-half`): their source draws text characters (`◐`/`☀︎`/`☾`), which have\n * no path data to copy, so those three are drawn here in the same Feather idiom\n * the rest of the set's outlines follow. They say so in their own comment too.\n * The canvas glyphs at the end (`sticky-note`, `frame`, `bold`, `grip`,\n * `chevron-down`) are the same case: their first user is the workflow canvas\n * itself, so there was no studio site to copy from.\n *\n * Colour is always `currentColor` — the glyph inherits it from its context, and\n * the entry decides only WHICH paint it is drawn with (see `IconVariant`).\n */\nimport { type ReactNode, useId } from \"react\";\n\n/**\n * Kebab-case, named for what the glyph DEPICTS or for its conventional meaning —\n * never for the studio component that happened to draw it, so a caller asks for\n * `icon=\"history\"` rather than `icon=\"history-icon-tsx\"`.\n */\nexport type IconName =\n | \"edit\"\n | \"edit-2\"\n | \"delete\"\n | \"copy\"\n | \"check\"\n | \"close\"\n | \"history\"\n | \"info\"\n | \"clock\"\n | \"json\"\n | \"code\"\n | \"sync\"\n | \"cloud-download\"\n | \"eye\"\n | \"play\"\n | \"stop\"\n | \"warning\"\n | \"file-text\"\n | \"settings\"\n | \"github\"\n | \"user\"\n | \"bot\"\n | \"users\"\n | \"logout\"\n | \"id-card\"\n | \"dashboard\"\n | \"pulse\"\n | \"workflow\"\n | \"globe\"\n | \"lambda\"\n | \"sliders\"\n | \"file\"\n | \"plug\"\n | \"grid\"\n | \"folder\"\n | \"git-branch\"\n | \"coin\"\n | \"building\"\n | \"server\"\n | \"price-tag\"\n | \"lang-node\"\n | \"terminal\"\n | \"lang-python\"\n | \"lang-curl\"\n | \"sun\"\n | \"moon\"\n | \"circle-half\"\n | \"layout\"\n | \"run\"\n | \"trash\"\n | \"maximize\"\n | \"form\"\n | \"braces\"\n | \"settings-2\"\n | \"sticky-note\"\n | \"frame\"\n | \"bold\"\n | \"grip\"\n | \"chevron-down\";\n\n/**\n * Which attributes the shared `<svg>` root carries — i.e. how the glyph is\n * painted. The sources are not uniform, and forcing them into one shape would\n * change how they render:\n *\n * - `fill` — Material-style: a single `fill=\"currentColor\"` path, no stroke.\n * - `stroke` — Feather-style outline: `fill=\"none\"`, `stroke=\"currentColor\"`,\n * round caps/joins, plus the source's own `strokeWidth`.\n * - `mixed` — the glyph paints each element itself (the language marks: a\n * stroked outline next to filled dots, and `lang-python`'s mask),\n * so the root carries NO paint attribute at all, exactly as its\n * source did. Adding a root stroke here would fatten every dot;\n * `layout`'s single path paints nothing either, its colour coming\n * from the surrounding control button — again as its source did.\n */\nexport type IconVariant = \"fill\" | \"stroke\" | \"mixed\";\n\n/** One glyph: its source `<svg>`'s viewBox, its paint variant, and its children. */\ninterface IconDef {\n viewBox: string;\n variant: IconVariant;\n /** `stroke` variants only — the source's own weight (2 for Feather, 1.75 for the rail glyphs). */\n strokeWidth?: number;\n /** The source `<svg>`'s children, verbatim. */\n body: ReactNode;\n}\n\n/**\n * `lang-python`'s body, split out as a component for one reason: its eye holes\n * are punched with a `<mask>`, and a shared mask id would collide the moment two\n * of these render on one page — so it takes its id from `useId`, exactly as\n * `CallFromCodeButton.tsx` does. Nothing else in the set needs an instance.\n */\nfunction PythonEyes() {\n const maskId = `w6w-py-eyes-${useId()}`;\n return (\n <>\n <title>Python</title>\n <mask id={maskId}>\n <rect x=\"0\" y=\"0\" width=\"24\" height=\"24\" fill=\"white\" />\n <circle cx=\"9.1\" cy=\"5.2\" r=\"1\" fill=\"black\" />\n <circle cx=\"14.9\" cy=\"18.8\" r=\"1\" fill=\"black\" />\n </mask>\n <g mask={`url(#${maskId})`} fill=\"currentColor\">\n <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\" />\n <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\" />\n </g>\n </>\n );\n}\n\n/** The set. Entries are grouped for readability; `iconNames` is this object's own order. */\nexport const icons: Record<IconName, IconDef> = {\n /**\n * ui/src/components/EditButton.tsx (the two-path Feather pencil) — also drawn by `WorkflowFlowEditor.tsx`.\n */\n edit: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <path d=\"M12 20h9\" />\n <path d=\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z\" />\n </>\n ),\n },\n /**\n * 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.\n */\n \"edit-2\": {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <path d=\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\" />\n </>\n ),\n },\n /**\n * ui/src/components/DeleteButton.tsx — byte-identical to `studio/src/pages/AppsPage.tsx`'s `TrashIcon`.\n */\n delete: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polyline points=\"3 6 5 6 21 6\" />\n <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\" />\n <line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\" />\n <line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\" />\n </>\n ),\n },\n /**\n * ui/src/components/Copyable.tsx — the same glyph `studio/src/components/CallFromCodeButton.tsx` copies around.\n */\n copy: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </>\n ),\n },\n /**\n * ui/src/components/Copyable.tsx — the copy affordance's \"copied\" state.\n */\n check: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polyline points=\"20 6 9 17 4 12\" />\n </>\n ),\n },\n /**\n * Feather `x` — the dismiss glyph for the `✕`/`×` characters studio's close and\n * remove buttons drew as text until now (T2), so those read as a drawing rather\n * than a font's idea of one. Drawn here rather than copied: the sources had no\n * `<svg>` to lift the paths from.\n */\n close: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </>\n ),\n },\n /**\n * Feather \"info\" — a circle with an \"i\"; the glyph `InfoTip` renders.\n */\n info: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </>\n ),\n },\n /**\n * studio/src/components/HistoryIcon.tsx — Material `query_stats`: a chart line under a magnifier.\n */\n history: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * 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.\n */\n clock: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <polyline points=\"12 7 12 12 15.5 14\" />\n </>\n ),\n },\n /**\n * studio/src/components/JsonToggle.tsx — curly braces, the raw-JSON toggle.\n */\n json: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <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\" />\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/CallFromCodeButton.tsx — `< />`; byte-identical to `studio/src/ui/rail/CodeTool.tsx`'s `CodeToolIcon`.\n */\n code: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polyline points=\"16 18 22 12 16 6\" />\n <polyline points=\"8 6 2 12 8 18\" />\n </>\n ),\n },\n /**\n * studio/src/components/SyncButton.tsx — Feather `refresh-cw`; byte-identical to `studio/src/pages/AppsPage.tsx`'s `RefreshIcon`.\n */\n sync: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polyline points=\"23 4 23 10 17 10\" />\n <polyline points=\"1 20 1 14 7 14\" />\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/pages/AppsPage.tsx — a cloud with a down arrow: \"re-fetch fresh from the remote\".\n */\n \"cloud-download\": {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <path d=\"M8 17l4 4 4-4\" />\n <path d=\"M12 12v9\" />\n <path d=\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\" />\n </>\n ),\n },\n /**\n * studio/src/pages/AppsPage.tsx — inspect.\n */\n eye: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </>\n ),\n },\n /**\n * studio/src/pages/WorkflowsPage.tsx — the run button.\n */\n play: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polygon points=\"5 3 19 12 5 21 5 3\" />\n </>\n ),\n },\n /**\n * studio/src/pages/WorkflowsPage.tsx — the stop button's filled square.\n */\n stop: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <rect x=\"5\" y=\"5\" width=\"14\" height=\"14\" rx=\"1\" />\n </>\n ),\n },\n /**\n * studio/src/ui/rail/ErrorHandlingTool.tsx — Feather `alert-triangle`.\n */\n warning: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <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\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </>\n ),\n },\n /**\n * 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.\n */\n \"file-text\": {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\" />\n <polyline points=\"14 2 14 8 20 8\" />\n <line x1=\"8\" y1=\"13\" x2=\"16\" y2=\"13\" />\n <line x1=\"8\" y1=\"17\" x2=\"16\" y2=\"17\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — gear; byte-identical to `ui/rail/AliasesTool.tsx`'s and `ui/rail/SettingsTool.tsx`'s own copies.\n */\n settings: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * 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`).\n */\n github: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a robot head, the Agents nav item. Separate from `user`.\n */\n bot: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — one person, the user chip.\n */\n user: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — two overlapping people, the team roster. Deliberately separate from `user`.\n */\n users: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — an exit door and arrow.\n */\n logout: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/SessionButton.tsx — an ID badge for the current session.\n */\n \"id-card\": {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — 2x2 panels, the account dashboard. Distinct from `grid`, whose four cells are equal.\n */\n dashboard: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <path d=\"M3 3h8v6H3V3Zm0 8h8v10H3V11Zm10 4h8v6h-8v-6Zm0-12h8v10h-8V3Z\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a heartbeat trace, the reliability board.\n */\n pulse: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — three step boxes and their edges.\n */\n workflow: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <path d=\"M2 3h7v7H2V3Zm13 0h7v7h-7V3ZM9 5.5h6v2H9v-2ZM15 15h7v7h-7v-7Zm2.5-5h2v5h-2v-5Z\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a globe, an Endpoint being a web address. Stroked at 1.75, the rail's own weight.\n */\n globe: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 1.75,\n body: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M3 12h18\" />\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a lambda, reusable functions.\n */\n lambda: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * 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.\n */\n sliders: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 1.75,\n body: (\n <>\n <path d=\"M3 6h9M17 6h4M3 12h4M11 12h10M3 18h13M20 18h1\" />\n <circle cx=\"13\" cy=\"6\" r=\"2.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"7.5\" cy=\"12\" r=\"2.25\" fill=\"currentColor\" stroke=\"none\" />\n <circle cx=\"16.5\" cy=\"18\" r=\"2.25\" fill=\"currentColor\" stroke=\"none\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a document with a folded corner, the JSON document store.\n */\n file: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a power plug, external connections.\n */\n plug: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <path d=\"M8 2h2v4H8V2Zm6 0h2v4h-2V2ZM6 6h12v4a4 4 0 0 1-4 4h-1v5h-2v-5h-1a4 4 0 0 1-4-4V6Z\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — 2x2 equal squares, the app catalog.\n */\n grid: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <path d=\"M3 3h8v8H3V3Zm10 0h8v8h-8V3ZM3 13h8v8H3v-8Zm10 0h8v8h-8v-8Z\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — stacked folders, projects.\n */\n folder: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a branching line, a bound git repository.\n */\n \"git-branch\": {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\" />\n <circle cx=\"18\" cy=\"6\" r=\"3\" />\n <circle cx=\"6\" cy=\"18\" r=\"3\" />\n <path d=\"M18 9a9 9 0 0 1-9 9\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a ring, API tokens.\n */\n coin: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a building, tenant administration.\n */\n building: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — stacked server units, the Installation panel.\n */\n server: {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx — a price tag with a dollar mark, the plan + invoices.\n */\n \"price-tag\": {\n viewBox: \"0 0 24 24\",\n variant: \"fill\",\n body: (\n <>\n <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\" />\n </>\n ),\n },\n /**\n * studio/src/components/CallFromCodeButton.tsx — the Node mark, named for what it depicts.\n */\n \"lang-node\": {\n viewBox: \"0 0 24 24\",\n variant: \"mixed\",\n body: (\n <>\n <title>Node</title>\n <path\n d=\"M12 2.4 20.4 7.2v9.6L12 21.6 3.6 16.8V7.2z\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9.4 15.4V8.9l5.2 6.2V8.6\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </>\n ),\n },\n /**\n * studio/src/components/CallFromCodeButton.tsx — a terminal with a `>_` prompt, the CLI tab.\n */\n terminal: {\n viewBox: \"0 0 24 24\",\n variant: \"mixed\",\n body: (\n <>\n <title>CLI</title>\n <rect\n x=\"2.6\"\n y=\"4.4\"\n width=\"18.8\"\n height=\"15.2\"\n rx=\"2.2\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n />\n <polyline\n points=\"6.8 9.6 9.8 12 6.8 14.4\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <line\n x1=\"12.4\"\n y1=\"15\"\n x2=\"17\"\n y2=\"15\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n />\n </>\n ),\n },\n /**\n * studio/src/components/CallFromCodeButton.tsx — the Python mark (see `PythonEyes` below, which owns its mask id).\n */\n \"lang-python\": {\n viewBox: \"0 0 24 24\",\n variant: \"mixed\",\n body: <PythonEyes />,\n },\n /**\n * studio/src/components/CallFromCodeButton.tsx — curl's swoosh over a request in flight.\n */\n \"lang-curl\": {\n viewBox: \"0 0 24 24\",\n variant: \"mixed\",\n body: (\n <>\n <title>curl</title>\n <path\n 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\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.7\"\n strokeLinecap=\"round\"\n />\n <circle cx=\"4.4\" cy=\"18.6\" r=\"1.5\" fill=\"currentColor\" />\n <circle cx=\"20\" cy=\"18.6\" r=\"1.5\" fill=\"currentColor\" />\n <line\n x1=\"7.4\"\n y1=\"18.6\"\n x2=\"17\"\n y2=\"18.6\"\n stroke=\"currentColor\"\n strokeWidth=\"1.7\"\n strokeLinecap=\"round\"\n strokeDasharray=\"0.1 3.6\"\n />\n </>\n ),\n },\n /**\n * studio/src/components/Layout.tsx's theme toggle — the three glyphs that\n * button draws for its three states. It used to draw the text characters\n * `◐`/`☀︎`/`☾`, which no shared set can hold: a text glyph is not a drawn\n * shape, and `IconButton` names its glyph instead. Feather-style outline\n * (`strokeWidth` 2, like the rest of the Feather-derived entries) so all\n * three read as one family at 16px. `circle-half`'s filled half is the\n * \"system\" state — half light, half dark.\n */\n sun: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n body: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\" />\n <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\" />\n <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\" />\n <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\" />\n <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\" />\n <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\" />\n <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\" />\n <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\" />\n </>\n ),\n },\n moon: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n body: (\n <>\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3a7 7 0 0 0 9.79 9.79Z\" />\n </>\n ),\n },\n \"circle-half\": {\n viewBox: \"0 0 24 24\",\n variant: \"mixed\",\n body: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"9\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" />\n <path d=\"M12 3a9 9 0 0 1 0 18V3Z\" fill=\"currentColor\" />\n </>\n ),\n },\n /**\n * ui/src/WorkflowFlowEditor.tsx's `AutoLayoutIcon` — the auto-layout control's\n * three-box hierarchy (one parent over two children), on a `0 0 24 24` box.\n *\n * `mixed` — rooted in the \"the root adds NO paint\" half of that variant, which\n * this glyph needs literally: its source `<svg>` carried no paint attribute at\n * all, and neither does its path, so a `fill=\"currentColor\"` on the root would\n * NOT be the source's markup and a `fill=\"none\" stroke=…` root would render\n * NOTHING at all here. The colour comes from the context — the path sits inside\n * a `@xyflow/react` control button whose `svg { fill: currentColor }` paints it\n * (`@xyflow/react/dist/style.css`), exactly as it does today.\n */\n layout: {\n viewBox: \"0 0 24 24\",\n variant: \"mixed\",\n body: (\n <>\n <path d=\"M9 3h6v6H9zM11 9h2v2h-2zM4 11h16v2H4zM4 13h2v2H4zM18 13h2v2h-2zM2 15h6v6H2zM16 15h6v6h-6z\" />\n </>\n ),\n },\n /**\n * ui/src/WorkflowFlowEditor.tsx's node-toolbar \"Test-run this step\" button — a\n * play triangle, but NOT `play` above: its points are its own (14 wide × 16\n * tall against `play`'s 14 × 18), so it keeps its own entry rather than being\n * redrawn to match.\n */\n run: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polygon points=\"6 4 20 12 6 20 6 4\" />\n </>\n ),\n },\n /**\n * ui/src/WorkflowFlowEditor.tsx's node-toolbar delete button — Feather `trash`\n * (lid + body, no inner lines); distinct from `delete` above, which is the\n * fuller 4-shape `trash-2`.\n */\n trash: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polyline points=\"3 6 5 6 21 6\" />\n <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\" />\n </>\n ),\n },\n /**\n * ui/src/ParamsForm.tsx's JSON field — \"Open in full view\": Feather\n * `maximize-2`, the two diagonal expand arrows.\n */\n maximize: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polyline points=\"15 3 21 3 21 9\" />\n <polyline points=\"9 21 3 21 3 15\" />\n <line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\" />\n <line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\" />\n </>\n ),\n },\n /**\n * ui/src/StepBuilderModal.tsx's `CONFIG_VIEW_GLYPHS.props` — a bordered panel\n * with three text lines: the step's field form. Distinct from `file-text`,\n * which is a document with a folded corner.\n */\n form: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <line x1=\"7\" y1=\"8\" x2=\"17\" y2=\"8\" />\n <line x1=\"7\" y1=\"12\" x2=\"17\" y2=\"12\" />\n <line x1=\"7\" y1=\"16\" x2=\"13\" y2=\"16\" />\n </>\n ),\n },\n /**\n * ui/src/StepBuilderModal.tsx's `CONFIG_VIEW_GLYPHS[\"params-code\"]` — square\n * braces, the params as a VALUE. A second glyph for the braces meaning beside\n * `json` (whose curved `<path>` braces it does not share); its own name rather\n * than a redraw, so the two views stay tellable apart at 15px.\n */\n braces: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polyline points=\"9 4 7 4 7 10 5 12 7 14 7 20 9 20\" />\n <polyline points=\"15 4 17 4 17 10 19 12 17 14 17 20 15 20\" />\n </>\n ),\n },\n /**\n * ui/src/StepBuilderModal.tsx's `CONFIG_VIEW_GLYPHS.config` — Feather\n * `settings`, the node-settings gear. Distinct from `settings` above (the\n * filled Material gear Layout.tsx draws): this one is the stroked outline.\n */\n \"settings-2\": {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <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\" />\n </>\n ),\n },\n /**\n * ui/src/WorkflowFlowEditor.tsx's \"Add note\" canvas button — a sheet with a\n * folded corner (Lucide `sticky-note`). Drawn here, not copied from a studio\n * site: the canvas toolbar is its first and only user.\n */\n \"sticky-note\": {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <path d=\"M16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8Z\" />\n <path d=\"M15 3v4a2 2 0 0 0 2 2h4\" />\n </>\n ),\n },\n /**\n * ui/src/WorkflowFlowEditor.tsx's \"Draw section\" canvas tool — four crossing\n * lines marking out a frame (Feather/Lucide `frame`). Drawn here; first user.\n */\n frame: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <line x1=\"22\" y1=\"6\" x2=\"2\" y2=\"6\" />\n <line x1=\"22\" y1=\"18\" x2=\"2\" y2=\"18\" />\n <line x1=\"6\" y1=\"2\" x2=\"6\" y2=\"22\" />\n <line x1=\"18\" y1=\"2\" x2=\"18\" y2=\"22\" />\n </>\n ),\n },\n /**\n * ui/src/CanvasLayer.tsx's note toolbar — Feather `bold`. Drawn here; first user.\n */\n bold: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2.5,\n body: (\n <>\n <path d=\"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\" />\n <path d=\"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\" />\n </>\n ),\n },\n /**\n * ui/src/CanvasLayer.tsx's note drag handle — two columns of three dots\n * (Lucide `grip-vertical`). Drawn here; first user.\n */\n grip: {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\n <circle cx=\"9\" cy=\"5\" r=\"1\" />\n <circle cx=\"9\" cy=\"19\" r=\"1\" />\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\n <circle cx=\"15\" cy=\"5\" r=\"1\" />\n <circle cx=\"15\" cy=\"19\" r=\"1\" />\n </>\n ),\n },\n /**\n * ui/src/CanvasLayer.tsx's note toolbar menus — Feather `chevron-down`.\n * Drawn here; first user.\n */\n \"chevron-down\": {\n viewBox: \"0 0 24 24\",\n variant: \"stroke\",\n strokeWidth: 2,\n body: (\n <>\n <polyline points=\"6 9 12 15 18 9\" />\n </>\n ),\n },\n};\n\n/**\n * Every name in the set, in the object's curated order — what the gallery story\n * renders and what `Icon.test.ts` walks. Derived from `icons` rather than\n * repeated, so it cannot drift from what `Icon` can actually draw.\n */\nexport const iconNames: readonly IconName[] = Object.keys(icons) as IconName[];\n","import type { SVGProps } from \"react\";\nimport { type IconName, type IconVariant, icons } from \"./icons.tsx\";\n\nexport interface IconProps {\n /** Which glyph. Required — this component carries no default icon. */\n name: IconName;\n /** Rendered width AND height, in px. Default 16, the size every rail glyph and\n * icon button in the tree already draws at. */\n size?: number;\n /**\n * Accessible name. Omit it for the common case — a decorative glyph inside a\n * button that already has one — and the `<svg>` is `aria-hidden`; pass it and\n * the glyph becomes `role=\"img\"` with that `aria-label`, for an icon standing\n * alone as content.\n */\n label?: string;\n /** Merged with `w6w-icon`. */\n className?: string;\n}\n\n/** The root attributes that carry the glyph's PAINT, per `icons.tsx`'s variant:\n * a stored entry decides how it is drawn, this only spells that out. */\nfunction paintProps(icon: {\n variant: IconVariant;\n strokeWidth?: number;\n}): SVGProps<SVGSVGElement> {\n if (icon.variant === \"fill\") return { fill: \"currentColor\" };\n if (icon.variant === \"stroke\") {\n return {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: icon.strokeWidth ?? 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n };\n }\n // `mixed`: the glyph's own elements carry the paint (see `IconVariant`), so the\n // root must add none — a root `stroke` would thicken the language marks' dots.\n return {};\n}\n\n/**\n * One glyph from the shared set (`./icons.tsx`), sized by prop and coloured by\n * `currentColor` — so a caller colours it with `color` on any ancestor, and it\n * inherits hover/disabled/theme states for free.\n *\n * Accessibility is a two-way switch, never an absent middle: with no `label` the\n * glyph is decorative (`aria-hidden`, `focusable=\"false\"`) for the common case\n * inside an already-labelled button; with a `label` it is `role=\"img\"` with that\n * name. There is no third state, because an unlabelled `<svg>` that is not\n * hidden is exactly the noise a screen reader announces as \"graphic\".\n *\n * The four ARIA attributes are written out as plain expressions rather than\n * spread from a conditional object: `biome check`'s `a11y/noSvgWithoutTitle`\n * reads the JSX attributes it can see, and a spread hides them (measured —\n * \"Alternative text title element cannot be empty\" on the spread form only).\n */\nexport function Icon(props: IconProps) {\n const { name, size = 16, label, className } = props;\n const icon = icons[name];\n const labelled = Boolean(label);\n return (\n <svg\n className={[\"w6w-icon\", className ?? \"\"].filter(Boolean).join(\" \")}\n width={size}\n height={size}\n viewBox={icon.viewBox}\n {...paintProps(icon)}\n role={labelled ? \"img\" : undefined}\n aria-label={labelled ? label : undefined}\n aria-hidden={labelled ? undefined : \"true\"}\n focusable={labelled ? undefined : \"false\"}\n >\n {icon.body}\n </svg>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\n/** Majority precedent across the tree: `admin/src/components/CopyButton.tsx:17`,\n * `studio/src/pages/EndpointsPage.tsx:823`. */\nexport const COPIED_MS = 1500;\n\n/**\n * The clipboard-write + copied/revert-timer state machine, factored out of\n * `Copyable` so `JsonEditor` can drive its own in-box button without a second\n * clipboard call site. This is the ONLY spot in `@w6w/ui`'s `src` that writes\n * to the clipboard — `Copyable` and `JsonEditor` both consume it rather than\n * each writing their own.\n */\nexport function useCopyToClipboard(value: string, copiedMs: number = COPIED_MS) {\n const [copied, setCopied] = useState(false);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Clear the revert timer on unmount so it never fires setState after the\n // component is gone.\n useEffect(() => {\n return () => {\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n };\n }, []);\n\n const copy = useCallback(async () => {\n try {\n // The only clipboard-write call site in `@w6w/ui` (gated by the\n // project's test plan). Guarded + awaited: an absent (insecure origin)\n // or rejecting clipboard leaves the idle icon and throws nothing further.\n await navigator.clipboard?.writeText(value);\n setCopied(true);\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => setCopied(false), copiedMs);\n } catch {\n // Absent/denied/rejecting clipboard: stay idle.\n }\n }, [value, copiedMs]);\n\n return { copied, copy };\n}\n","import { type ReactNode, useCallback, useEffect, useRef } from \"react\";\nimport { Icon } from \"./Icon.tsx\";\nimport { COPIED_MS, useCopyToClipboard } from \"./use-copy.ts\";\n\n/** The copy glyph, now from the shared set (`icons.tsx`'s `copy`) rather than\n * colocated: the set exists precisely so this glyph (drawn inline at 21+ sites\n * elsewhere, e.g. `CallFromCodeButton.tsx:44-63`) has one definition. Still\n * exported, and still 14px, because `JsonEditor` and `YamlEditor` reuse it\n * rather than redraw it; `Icon`'s `currentColor` paint is what keeps\n * `.is-copied`'s colour applying with no extra prop. */\nexport function CopyGlyph() {\n return <Icon name=\"copy\" size={14} />;\n}\n\n/** The copied-state checkmark, same deal (`icons.tsx`'s `check`). */\nexport function CheckGlyph() {\n return <Icon name=\"check\" size={14} />;\n}\n\nexport interface CopyableProps {\n /** Exact text written to the clipboard. */\n value: string;\n /**\n * How long the checkmark stays before reverting to the copy glyph, in ms.\n *\n * Defaults to the 1500 ms every other copy affordance in the tree already\n * uses — a number worth keeping unless a caller has a reason, because the\n * revert delay is the only feedback that the copy happened at all and an\n * inconsistent one reads as a different control.\n *\n * `0` is not a way to disable the revert: the timer still fires, it just\n * fires on the next tick, so the checkmark is effectively never seen.\n */\n copiedMs?: number;\n /** Read-only display: a click anywhere in the box copies. Default false ⇒ the icon only. */\n readOnly?: boolean;\n /** Accessible name of the copy button. CONSTANT across states. Default \"Copy\". */\n label?: string;\n className?: string;\n /** The control that displays `value`: an <input>, <textarea>, or <pre>/<CodeBlock>. */\n children: ReactNode;\n}\n\n/**\n * Decorates a value-displaying control with an in-box copy affordance — a\n * button at the trailing top/centre that writes `value` to the clipboard, and\n * (when `readOnly`) a click anywhere in the box that does the same.\n *\n * This is the FIRST factored clipboard helper in `@w6w/ui`: every existing\n * copy-to-clipboard call in the tree today (studio's five pages,\n * `CallFromCodeButton`, admin's own `CopyButton`) is an independently authored\n * inline clipboard write — the sole call in this package's `src` now lives in\n * `./use-copy.ts`'s `useCopyToClipboard`, which this component and\n * `JsonEditor` both consume.\n *\n * A decorating component, not a new `TextField`/`TextArea` primitive\n * (HITL-2): the copy behaviour, the glyphs, the box geometry and the copied\n * visual all live in this one place, so a future `TextField` can compose it\n * rather than re-implement it.\n */\nexport function Copyable(props: CopyableProps) {\n const {\n value,\n copiedMs = COPIED_MS,\n readOnly = false,\n label = \"Copy\",\n className,\n children,\n } = props;\n // The clipboard write + copied/revert-timer state machine — the only place\n // in `@w6w/ui` that writes to the clipboard, factored into `use-copy.ts`.\n const { copied, copy } = useCopyToClipboard(value, copiedMs);\n const wrapRef = useRef<HTMLDivElement | null>(null);\n\n const selectInnerControl = useCallback(() => {\n const control = wrapRef.current?.querySelector(\"input, textarea\") as\n | HTMLInputElement\n | HTMLTextAreaElement\n | null;\n control?.select();\n }, []);\n\n // Attached IMPERATIVELY (ref + addEventListener), not as a JSX `onClick` on\n // the wrapper <div>: a wrapper onClick trips `lint/a11y/useKeyWithClickEvents`\n // — measured, `biome check` on that markup reports \"Found 1 error\" against\n // this package's zero-diagnostic baseline. The box click is a pointer-only\n // convenience; the keyboard-activatable path is the button below.\n useEffect(() => {\n if (!readOnly) return;\n const el = wrapRef.current;\n if (!el) return;\n const onBoxClick = (e: MouseEvent) => {\n const target = e.target as HTMLElement | null;\n if (target?.closest?.(\"button\")) return; // the icon handles its own click\n const sel = window.getSelection();\n if (sel && !sel.isCollapsed && el.contains(sel.anchorNode)) return; // drag-selection guard\n void copy();\n selectInnerControl();\n };\n el.addEventListener(\"click\", onBoxClick);\n return () => el.removeEventListener(\"click\", onBoxClick);\n }, [readOnly, copy, selectInnerControl]);\n\n return (\n <div ref={wrapRef} className={[\"w6w-copyable\", className ?? \"\"].filter(Boolean).join(\" \")}>\n {children}\n <button\n type=\"button\"\n className={`w6w-icon-btn w6w-copyable-btn${copied ? \" is-copied\" : \"\"}`}\n aria-label={label}\n onClick={() => void copy()}\n >\n {copied ? <CheckGlyph /> : <CopyGlyph />}\n </button>\n {/* Always-rendered live region, per pin 8: the button's accessible name\n stays constant (uncountable otherwise by a page guard), so this is\n what announces the result — swapping the SVG glyph alone carries no\n accessible signal. */}\n <span className=\"w6w-copyable-status\" aria-live=\"polite\">\n {copied ? \"Copied\" : \"\"}\n </span>\n </div>\n );\n}\n"],"names":["PythonEyes","maskId","useId","jsxs","Fragment","jsx","icons","iconNames","paintProps","icon","Icon","props","name","size","label","className","labelled","COPIED_MS","useCopyToClipboard","value","copiedMs","copied","setCopied","useState","timerRef","useRef","useEffect","copy","useCallback","_a","CopyGlyph","CheckGlyph","Copyable","readOnly","children","wrapRef","selectInnerControl","control","el","onBoxClick","e","target","sel"],"mappings":"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"}