@spencerboucher/switchyard 0.8.0 → 0.10.0

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 (161) hide show
  1. package/README.md +4 -4
  2. package/dist/bridge/lines.js +33 -0
  3. package/dist/bridge/switchyard-terminal.js +59 -22
  4. package/dist/switchyard.mjs +9769 -7208
  5. package/dist/terminal/holder.js +172 -55
  6. package/package.json +1 -1
  7. package/web-dist/apple-touch-icon.png +0 -0
  8. package/web-dist/assets/AutomationView-BsTwLnMp.js +2 -0
  9. package/web-dist/assets/AutomationView-BsTwLnMp.js.map +1 -0
  10. package/web-dist/assets/Card-CAFxHoHd.js +2 -0
  11. package/web-dist/assets/Card-CAFxHoHd.js.map +1 -0
  12. package/web-dist/assets/Checkbox-rDvnQnxc.js +2 -0
  13. package/web-dist/assets/Checkbox-rDvnQnxc.js.map +1 -0
  14. package/web-dist/assets/Copy-D8xhl7eJ.js +2 -0
  15. package/web-dist/assets/Copy-D8xhl7eJ.js.map +1 -0
  16. package/web-dist/assets/DangerZone-og55TRug.js +2 -0
  17. package/web-dist/assets/DangerZone-og55TRug.js.map +1 -0
  18. package/web-dist/assets/Field-Dbg_8KTt.js +2 -0
  19. package/web-dist/assets/Field-Dbg_8KTt.js.map +1 -0
  20. package/web-dist/assets/InteractionCard-Yu5wgLC3.js +6 -0
  21. package/web-dist/assets/InteractionCard-Yu5wgLC3.js.map +1 -0
  22. package/web-dist/assets/Menu-euseM8yR.js +2 -0
  23. package/web-dist/assets/Menu-euseM8yR.js.map +1 -0
  24. package/web-dist/assets/Overlay-BNPvMjLX.js +2 -0
  25. package/web-dist/assets/Overlay-BNPvMjLX.js.map +1 -0
  26. package/web-dist/assets/Priority-Ca1B2yFr.js +2 -0
  27. package/web-dist/assets/Priority-Ca1B2yFr.js.map +1 -0
  28. package/web-dist/assets/{SegmentedControl-BZPzNU08.js → SegmentedControl-D2d-NEr-.js} +2 -2
  29. package/web-dist/assets/{SegmentedControl-BZPzNU08.js.map → SegmentedControl-D2d-NEr-.js.map} +1 -1
  30. package/web-dist/assets/Select-C9L1HKMm.js +2 -0
  31. package/web-dist/assets/Select-C9L1HKMm.js.map +1 -0
  32. package/web-dist/assets/StatusChip-BYuVxYS7.js +2 -0
  33. package/web-dist/assets/StatusChip-BYuVxYS7.js.map +1 -0
  34. package/web-dist/assets/Switch-DAcUcSbH.js +2 -0
  35. package/web-dist/assets/Switch-DAcUcSbH.js.map +1 -0
  36. package/web-dist/assets/Tabs-xtagjtA5.js +184 -0
  37. package/web-dist/assets/Tabs-xtagjtA5.js.map +1 -0
  38. package/web-dist/assets/TextArea-CKGHwURx.js +2 -0
  39. package/web-dist/assets/TextArea-CKGHwURx.js.map +1 -0
  40. package/web-dist/assets/TextLink-Bub7sMxr.js +2 -0
  41. package/web-dist/assets/TextLink-Bub7sMxr.js.map +1 -0
  42. package/web-dist/assets/arrow-down-C-iLrN8I.js +2 -0
  43. package/web-dist/assets/arrow-down-C-iLrN8I.js.map +1 -0
  44. package/web-dist/assets/arrow-up-Dj-VTKx4.js +2 -0
  45. package/web-dist/assets/arrow-up-Dj-VTKx4.js.map +1 -0
  46. package/web-dist/assets/attention-CI4dHY81.js +2 -0
  47. package/web-dist/assets/attention-CI4dHY81.js.map +1 -0
  48. package/web-dist/assets/auth-308hUVgi.js +2 -0
  49. package/web-dist/assets/auth-308hUVgi.js.map +1 -0
  50. package/web-dist/assets/automations-BzpsJoa3.js +2 -0
  51. package/web-dist/assets/automations-BzpsJoa3.js.map +1 -0
  52. package/web-dist/assets/bell-DSwa2PAb.js +2 -0
  53. package/web-dist/assets/bell-DSwa2PAb.js.map +1 -0
  54. package/web-dist/assets/board-CeJxBVHC.js +10 -0
  55. package/web-dist/assets/board-CeJxBVHC.js.map +1 -0
  56. package/web-dist/assets/code-DkNQvMI9.js +12 -0
  57. package/web-dist/assets/code-DkNQvMI9.js.map +1 -0
  58. package/web-dist/assets/describe-CVXeUClF.js +5 -0
  59. package/web-dist/assets/describe-CVXeUClF.js.map +1 -0
  60. package/web-dist/assets/enroll-jnKygG4L.js +2 -0
  61. package/web-dist/assets/enroll-jnKygG4L.js.map +1 -0
  62. package/web-dist/assets/index-BHGZTS2e.js +16 -0
  63. package/web-dist/assets/index-BHGZTS2e.js.map +1 -0
  64. package/web-dist/assets/index-D2ml031z.css +2 -0
  65. package/web-dist/assets/logic-B46fwD-8.js +2 -0
  66. package/web-dist/assets/logic-B46fwD-8.js.map +1 -0
  67. package/web-dist/assets/more-DvKHMdBk.js +2 -0
  68. package/web-dist/assets/more-DvKHMdBk.js.map +1 -0
  69. package/web-dist/assets/queue-B2Vl0uSh.js +2 -0
  70. package/web-dist/assets/queue-B2Vl0uSh.js.map +1 -0
  71. package/web-dist/assets/repo-BDS8RBxq.js +2 -0
  72. package/web-dist/assets/repo-BDS8RBxq.js.map +1 -0
  73. package/web-dist/assets/server-BqZ-w6M8.js +2 -0
  74. package/web-dist/assets/server-BqZ-w6M8.js.map +1 -0
  75. package/web-dist/assets/settings-CLt7x9u8.js +8 -0
  76. package/web-dist/assets/settings-CLt7x9u8.js.map +1 -0
  77. package/web-dist/assets/states-C773NlHo.js +56 -0
  78. package/web-dist/assets/states-C773NlHo.js.map +1 -0
  79. package/web-dist/assets/terminal-BOV_MXPZ.js +2 -0
  80. package/web-dist/assets/terminal-BOV_MXPZ.js.map +1 -0
  81. package/web-dist/assets/terminal-login-BK5UjUir.js +2 -0
  82. package/web-dist/assets/terminal-login-BK5UjUir.js.map +1 -0
  83. package/web-dist/assets/useBackTo-BIrCq3W2.js +2 -0
  84. package/web-dist/assets/useBackTo-BIrCq3W2.js.map +1 -0
  85. package/web-dist/assets/useBreakpoint-BphHBrzF.js +2 -0
  86. package/web-dist/assets/useBreakpoint-BphHBrzF.js.map +1 -0
  87. package/web-dist/assets/useNow-Cm-tdyod.js +2 -0
  88. package/web-dist/assets/useNow-Cm-tdyod.js.map +1 -0
  89. package/web-dist/assets/useResource-BBqCoY2q.js +2 -0
  90. package/web-dist/assets/useResource-BBqCoY2q.js.map +1 -0
  91. package/web-dist/icon-192.png +0 -0
  92. package/web-dist/icon-512.png +0 -0
  93. package/web-dist/icon.svg +20 -8
  94. package/web-dist/index.html +7 -4
  95. package/web-dist/manifest.webmanifest +1 -1
  96. package/web-dist/maskable-512.png +0 -0
  97. package/web-dist/sw.js +1 -1
  98. package/web-dist/sw.js.map +1 -1
  99. package/web-dist/assets/AutomationView-GCthHkym.js +0 -2
  100. package/web-dist/assets/AutomationView-GCthHkym.js.map +0 -1
  101. package/web-dist/assets/Badge-CEMI3YyI.js +0 -2
  102. package/web-dist/assets/Badge-CEMI3YyI.js.map +0 -1
  103. package/web-dist/assets/InteractionCard-DaLqafmA.js +0 -6
  104. package/web-dist/assets/InteractionCard-DaLqafmA.js.map +0 -1
  105. package/web-dist/assets/Menu-BcKiEc6X.js +0 -2
  106. package/web-dist/assets/Menu-BcKiEc6X.js.map +0 -1
  107. package/web-dist/assets/Tabs-COH5EMql.js +0 -184
  108. package/web-dist/assets/Tabs-COH5EMql.js.map +0 -1
  109. package/web-dist/assets/TextArea-CeMEPZn4.js +0 -2
  110. package/web-dist/assets/TextArea-CeMEPZn4.js.map +0 -1
  111. package/web-dist/assets/arrow-left-C6YWM6y6.js +0 -2
  112. package/web-dist/assets/arrow-left-C6YWM6y6.js.map +0 -1
  113. package/web-dist/assets/attention-BAdea2kA.js +0 -2
  114. package/web-dist/assets/attention-BAdea2kA.js.map +0 -1
  115. package/web-dist/assets/automations-DSFUzB0w.js +0 -2
  116. package/web-dist/assets/automations-DSFUzB0w.js.map +0 -1
  117. package/web-dist/assets/board-eQ3H8yCp.js +0 -10
  118. package/web-dist/assets/board-eQ3H8yCp.js.map +0 -1
  119. package/web-dist/assets/code-D7JmYMKe.js +0 -13
  120. package/web-dist/assets/code-D7JmYMKe.js.map +0 -1
  121. package/web-dist/assets/copy-oWgGHmkS.js +0 -2
  122. package/web-dist/assets/copy-oWgGHmkS.js.map +0 -1
  123. package/web-dist/assets/describe-C1YimBXJ.js +0 -5
  124. package/web-dist/assets/describe-C1YimBXJ.js.map +0 -1
  125. package/web-dist/assets/dist-B_RpNOcK.js +0 -56
  126. package/web-dist/assets/dist-B_RpNOcK.js.map +0 -1
  127. package/web-dist/assets/enroll-1OCy5r50.js +0 -2
  128. package/web-dist/assets/enroll-1OCy5r50.js.map +0 -1
  129. package/web-dist/assets/index-BhpEXLav.js +0 -11
  130. package/web-dist/assets/index-BhpEXLav.js.map +0 -1
  131. package/web-dist/assets/index-DUeOwDZ6.css +0 -2
  132. package/web-dist/assets/logic-CBvFOyIo.js +0 -2
  133. package/web-dist/assets/logic-CBvFOyIo.js.map +0 -1
  134. package/web-dist/assets/more-RjVyxPaz.js +0 -2
  135. package/web-dist/assets/more-RjVyxPaz.js.map +0 -1
  136. package/web-dist/assets/now-CDjeFSLD.js +0 -2
  137. package/web-dist/assets/now-CDjeFSLD.js.map +0 -1
  138. package/web-dist/assets/plus-BLP-wIYD.js +0 -2
  139. package/web-dist/assets/plus-BLP-wIYD.js.map +0 -1
  140. package/web-dist/assets/save-DEvZPWlS.js +0 -2
  141. package/web-dist/assets/save-DEvZPWlS.js.map +0 -1
  142. package/web-dist/assets/search-C6cn5WOo.js +0 -2
  143. package/web-dist/assets/search-C6cn5WOo.js.map +0 -1
  144. package/web-dist/assets/send-BKjswHxB.js +0 -2
  145. package/web-dist/assets/send-BKjswHxB.js.map +0 -1
  146. package/web-dist/assets/server-SxFxIScj.js +0 -2
  147. package/web-dist/assets/server-SxFxIScj.js.map +0 -1
  148. package/web-dist/assets/settings-tH4UuIfJ.js +0 -7
  149. package/web-dist/assets/settings-tH4UuIfJ.js.map +0 -1
  150. package/web-dist/assets/shared-CRX6KSBm.js +0 -3
  151. package/web-dist/assets/shared-CRX6KSBm.js.map +0 -1
  152. package/web-dist/assets/sliders-horizontal-DAoirila.js +0 -2
  153. package/web-dist/assets/sliders-horizontal-DAoirila.js.map +0 -1
  154. package/web-dist/assets/states-DXozulGZ.js +0 -2
  155. package/web-dist/assets/states-DXozulGZ.js.map +0 -1
  156. package/web-dist/assets/terminal-login-CW2rE50W.js +0 -2
  157. package/web-dist/assets/terminal-login-CW2rE50W.js.map +0 -1
  158. package/web-dist/assets/trash-C6X2OLrI.js +0 -2
  159. package/web-dist/assets/trash-C6X2OLrI.js.map +0 -1
  160. package/web-dist/assets/useNow-C_B7JgMM.js +0 -2
  161. package/web-dist/assets/useNow-C_B7JgMM.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusChip-BYuVxYS7.js","names":["__iconData","__iconData","__iconData","__iconData","__iconData","__iconData","__iconData","__iconData","__iconData","__iconData","__iconData","__iconData","__iconData","__iconData","MessageCircleQuestion","__commonJSMin","require_react","require_jsx_runtime","MessageCircleQuestionMark","CircleAlert","cn","InteractionState","Spinner","TriangleAlert","Inbox","RefreshCw","Clock","CircleX","WifiOff","CircleCheck","require_react_dom_production","React","formatProdErrorMessage","url","code","i","noop","Internals","REACT_PORTAL_TYPE","REACT_RECOVERABLE_TYPE","REACT_OPTIMISTIC_KEY","createPortal$1","key","ReactSharedInternals","getCrossOriginStringAs","as","input","reason","container","children","previousTransition","previousUpdatePriority","fn","href","options","crossOrigin","integrity","fetchPriority","form","a","action","initialState","permalink","require_react_dom","checkDCE","err","__iconData$14","Activity","createLucideIcon","__iconData$13","Ban","__iconData$12","CircleDashed","__iconData$11","CircleDot","__iconData$10","CirclePause","__iconData$9","CirclePlay","__iconData$8","CircleSlash","__iconData$7","CloudOff","__iconData$6","Eye","__iconData$5","Hourglass","__iconData$4","ListChecks","__iconData$3","LoaderCircle","__iconData$2","Repeat","__iconData$1","Square","__iconData","Wifi","import_jsx_runtime","TONE_CLASSES","TONE_TEXT","Badge","tone","className","label","CountBadge","count","RUNTIME_STATUS","REVIEW_STATUS","TASK_STATUS","RUN_STATUS","HOST_STATUS","CONNECTION_STATUS","INTERACTION_STATUS","ATTENTION_STATUS","OCCURRENCE_STATUS","FALLBACK","statusInfo","props","s","StatusChip","info","Icon","sm","InlineStatus","spin"],"sources":["../../../../node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/cjs/react-dom.production.js","../../../../node_modules/.pnpm/react-dom@19.3.1_react@19.3.1/node_modules/react-dom/index.js","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/activity.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/ban.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/circle-dashed.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/circle-dot.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/circle-pause.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/circle-play.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/circle-slash.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/cloud-off.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/eye.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/hourglass.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/list-checks.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/loader-circle.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/repeat.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/square.mjs","../../../../node_modules/.pnpm/lucide-react@1.61.0_@types+react@19.3.0_react@19.3.1/node_modules/lucide-react/dist/esm/icons/wifi.mjs","../../src/components/ui/Badge.tsx","../../src/components/ui/StatusChip.tsx"],"sourcesContent":["/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_RECOVERABLE_TYPE = Symbol.for(\"react.recoverable\"),\n REACT_OPTIMISTIC_KEY = Symbol.for(\"react.optimistic_key\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key:\n null == key\n ? null\n : key === REACT_OPTIMISTIC_KEY\n ? REACT_OPTIMISTIC_KEY\n : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.browser = function (reason) {\n return { $$typeof: REACT_RECOVERABLE_TYPE, _reason: reason };\n};\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.3.1\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"activity\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\",\n key: \"169zse\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Activity = createLucideIcon(__iconData);\n\nexport { __iconData, Activity as default };\n//# sourceMappingURL=activity.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"ban\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M4.929 4.929 19.07 19.071\", key: \"196cmz\" }]\n ]\n};\n__iconData.node;\nconst Ban = createLucideIcon(__iconData);\n\nexport { __iconData, Ban as default };\n//# sourceMappingURL=ban.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"circle-dashed\",\n size: 24,\n node: [\n [\"path\", { d: \"M10.1 2.182a10 10 0 0 1 3.8 0\", key: \"5ilxe3\" }],\n [\"path\", { d: \"M13.9 21.818a10 10 0 0 1-3.8 0\", key: \"11zvb9\" }],\n [\"path\", { d: \"M17.609 3.721a10 10 0 0 1 2.69 2.7\", key: \"1iw5b2\" }],\n [\"path\", { d: \"M2.182 13.9a10 10 0 0 1 0-3.8\", key: \"c0bmvh\" }],\n [\"path\", { d: \"M20.279 17.609a10 10 0 0 1-2.7 2.69\", key: \"1ruxm7\" }],\n [\"path\", { d: \"M21.818 10.1a10 10 0 0 1 0 3.8\", key: \"qkgqxc\" }],\n [\"path\", { d: \"M3.721 6.391a10 10 0 0 1 2.7-2.69\", key: \"1mcia2\" }],\n [\"path\", { d: \"M6.391 20.279a10 10 0 0 1-2.69-2.7\", key: \"1fvljs\" }]\n ]\n};\n__iconData.node;\nconst CircleDashed = createLucideIcon(__iconData);\n\nexport { __iconData, CircleDashed as default };\n//# sourceMappingURL=circle-dashed.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"circle-dot\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"1\", key: \"41hilf\" }],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n ]\n};\n__iconData.node;\nconst CircleDot = createLucideIcon(__iconData);\n\nexport { __iconData, CircleDot as default };\n//# sourceMappingURL=circle-dot.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"circle-pause\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"10\", x2: \"10\", y1: \"15\", y2: \"9\", key: \"c1nkhi\" }],\n [\"line\", { x1: \"14\", x2: \"14\", y1: \"15\", y2: \"9\", key: \"h65svq\" }]\n ],\n aliases: [\"pause-circle\"]\n};\n__iconData.node;\nconst CirclePause = createLucideIcon(__iconData);\n\nexport { __iconData, CirclePause as default };\n//# sourceMappingURL=circle-pause.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"circle-play\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z\",\n key: \"kmsa83\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n ],\n aliases: [\"play-circle\"]\n};\n__iconData.node;\nconst CirclePlay = createLucideIcon(__iconData);\n\nexport { __iconData, CirclePlay as default };\n//# sourceMappingURL=circle-play.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"circle-slash\",\n size: 24,\n node: [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"9\", x2: \"15\", y1: \"15\", y2: \"9\", key: \"1dfufj\" }]\n ]\n};\n__iconData.node;\nconst CircleSlash = createLucideIcon(__iconData);\n\nexport { __iconData, CircleSlash as default };\n//# sourceMappingURL=circle-slash.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"cloud-off\",\n size: 24,\n node: [\n [\n \"path\",\n { d: \"M10.94 5.274A7 7 0 0 1 15.71 10h1.79a4.5 4.5 0 0 1 4.222 6.057\", key: \"1uxyv8\" }\n ],\n [\"path\", { d: \"M18.796 18.81A4.5 4.5 0 0 1 17.5 19H9A7 7 0 0 1 5.79 5.78\", key: \"99tcn7\" }],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n ]\n};\n__iconData.node;\nconst CloudOff = createLucideIcon(__iconData);\n\nexport { __iconData, CloudOff as default };\n//# sourceMappingURL=cloud-off.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"eye\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n ]\n};\n__iconData.node;\nconst Eye = createLucideIcon(__iconData);\n\nexport { __iconData, Eye as default };\n//# sourceMappingURL=eye.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"hourglass\",\n size: 24,\n node: [\n [\"path\", { d: \"M5 22h14\", key: \"ehvnwv\" }],\n [\"path\", { d: \"M5 2h14\", key: \"pdyrp9\" }],\n [\n \"path\",\n {\n d: \"M17 22v-4.172a2 2 0 0 0-.586-1.414L12 12l-4.414 4.414A2 2 0 0 0 7 17.828V22\",\n key: \"1d314k\"\n }\n ],\n [\n \"path\",\n {\n d: \"M7 2v4.172a2 2 0 0 0 .586 1.414L12 12l4.414-4.414A2 2 0 0 0 17 6.172V2\",\n key: \"1vvvr6\"\n }\n ]\n ]\n};\n__iconData.node;\nconst Hourglass = createLucideIcon(__iconData);\n\nexport { __iconData, Hourglass as default };\n//# sourceMappingURL=hourglass.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"list-checks\",\n size: 24,\n node: [\n [\"path\", { d: \"M13 5h8\", key: \"a7qcls\" }],\n [\"path\", { d: \"M13 12h8\", key: \"h98zly\" }],\n [\"path\", { d: \"M13 19h8\", key: \"c3s6r1\" }],\n [\"path\", { d: \"m3 17 2 2 4-4\", key: \"1jhpwq\" }],\n [\"path\", { d: \"m3 7 2 2 4-4\", key: \"1obspn\" }]\n ]\n};\n__iconData.node;\nconst ListChecks = createLucideIcon(__iconData);\n\nexport { __iconData, ListChecks as default };\n//# sourceMappingURL=list-checks.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"loader-circle\",\n size: 24,\n node: [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]],\n aliases: [\"loader-2\"]\n};\n__iconData.node;\nconst LoaderCircle = createLucideIcon(__iconData);\n\nexport { __iconData, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"repeat\",\n size: 24,\n node: [\n [\"path\", { d: \"m17 2 4 4-4 4\", key: \"nntrym\" }],\n [\"path\", { d: \"M3 11v-1a4 4 0 0 1 4-4h14\", key: \"84bu3i\" }],\n [\"path\", { d: \"m7 22-4-4 4-4\", key: \"1wqhfi\" }],\n [\"path\", { d: \"M21 13v1a4 4 0 0 1-4 4H3\", key: \"1rx37r\" }]\n ]\n};\n__iconData.node;\nconst Repeat = createLucideIcon(__iconData);\n\nexport { __iconData, Repeat as default };\n//# sourceMappingURL=repeat.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"square\",\n size: 24,\n node: [[\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }]]\n};\n__iconData.node;\nconst Square = createLucideIcon(__iconData);\n\nexport { __iconData, Square as default };\n//# sourceMappingURL=square.mjs.map\n","/**\n * @license lucide-react v1.61.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"wifi\",\n size: 24,\n node: [\n [\"path\", { d: \"M12 20h.01\", key: \"zekei9\" }],\n [\"path\", { d: \"M2 8.82a15 15 0 0 1 20 0\", key: \"dnpr2z\" }],\n [\"path\", { d: \"M5 12.859a10 10 0 0 1 14 0\", key: \"1x1e6c\" }],\n [\"path\", { d: \"M8.5 16.429a5 5 0 0 1 7 0\", key: \"1bycff\" }]\n ]\n};\n__iconData.node;\nconst Wifi = createLucideIcon(__iconData);\n\nexport { __iconData, Wifi as default };\n//# sourceMappingURL=wifi.mjs.map\n","import type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type Tone = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\" | \"accent\";\n\nexport const TONE_CLASSES: Record<Tone, string> = {\n neutral: \"bg-surface-2 text-muted border-border\",\n info: \"bg-info-soft text-info border-transparent\",\n success: \"bg-success-soft text-success border-transparent\",\n warning: \"bg-warning-soft text-warning border-transparent\",\n danger: \"bg-danger-soft text-danger border-transparent\",\n accent: \"bg-accent text-accent-fg border-transparent\",\n};\n\n/** Text colour for each tone (the Badge classes colour the background too). */\nexport const TONE_TEXT: Record<Tone, string> = {\n neutral: \"text-muted\",\n info: \"text-info\",\n success: \"text-success\",\n warning: \"text-warning\",\n danger: \"text-danger\",\n accent: \"text-accent\",\n};\n\nexport interface BadgeProps {\n children: ReactNode;\n tone?: Tone;\n /** Accessible text when the visible content is terse (e.g. a count). */\n label?: string;\n className?: string;\n}\n\n/** Small pill for counts and tags. */\nexport function Badge({ children, tone = \"neutral\", label, className }: BadgeProps) {\n return (\n <span\n className={cn(\n \"inline-flex min-w-5 items-center justify-center rounded-full border px-1.5 text-xs leading-5 font-medium tabular-nums\",\n TONE_CLASSES[tone],\n className,\n )}\n title={label}\n >\n <span aria-hidden={label ? true : undefined}>{children}</span>\n {label && <span className=\"sr-only\">{label}</span>}\n </span>\n );\n}\n\n/** Count badge; renders nothing at zero. Caps at 99+. */\nexport function CountBadge({\n count,\n label,\n tone = \"danger\",\n className,\n}: {\n count: number;\n label: string;\n tone?: Tone;\n className?: string;\n}) {\n if (count <= 0) return null;\n return (\n <Badge tone={tone} label={`${count} ${label}`} className={className}>\n {count > 99 ? \"99+\" : count}\n </Badge>\n );\n}\n","import type {\n AttentionReason,\n Connectivity,\n OccurrenceState,\n RunState,\n RuntimeState,\n TaskState,\n} from \"@switchyard/protocol\";\nimport { InteractionState } from \"@switchyard/protocol\";\nimport {\n Activity,\n Ban,\n CircleAlert,\n CircleCheck,\n CircleDashed,\n CircleDot,\n CirclePause,\n CirclePlay,\n CircleSlash,\n CircleX,\n Clock,\n CloudOff,\n Eye,\n Hourglass,\n Inbox,\n ListChecks,\n LoaderCircle,\n type LucideIcon,\n MessageCircleQuestion,\n RefreshCw,\n Repeat,\n Square,\n TriangleAlert,\n Wifi,\n WifiOff,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport type { ConnectionState } from \"../../sync/store\";\nimport { TONE_CLASSES, type Tone } from \"./Badge\";\nimport { Spinner } from \"./Spinner\";\n\n/** A status presentation: always an icon plus a text label (never color alone). */\nexport interface StatusInfo {\n label: string;\n icon: LucideIcon;\n tone: Tone;\n /** Spin the icon (in-flight states). */\n spin?: boolean;\n /** Pulse the icon (ongoing, not transitional). */\n pulse?: boolean;\n}\n\nexport const RUNTIME_STATUS: Record<RuntimeState, StatusInfo> = {\n starting: { label: \"Starting…\", icon: LoaderCircle, tone: \"info\", spin: true },\n idle: { label: \"Idle\", icon: CircleDot, tone: \"neutral\" },\n running: { label: \"Running\", icon: Activity, tone: \"info\", pulse: true },\n waiting_input: { label: \"Needs input\", icon: MessageCircleQuestion, tone: \"warning\" },\n interrupted: { label: \"Interrupted\", icon: CirclePause, tone: \"warning\" },\n failed: { label: \"Failed\", icon: CircleX, tone: \"danger\" },\n stopped: { label: \"Stopped\", icon: Square, tone: \"neutral\" },\n};\n\n/** A finished session nobody has looked at yet. */\nexport const REVIEW_STATUS: StatusInfo = { label: \"Ready to review\", icon: Eye, tone: \"success\" };\n\nexport const TASK_STATUS: Record<TaskState, StatusInfo> = {\n backlog: { label: \"Backlog\", icon: Inbox, tone: \"neutral\" },\n ready: { label: \"Ready\", icon: CirclePlay, tone: \"info\" },\n in_progress: { label: \"In progress\", icon: LoaderCircle, tone: \"info\" },\n review: { label: \"Review\", icon: Eye, tone: \"warning\" },\n done: { label: \"Done\", icon: CircleCheck, tone: \"success\" },\n canceled: { label: \"Canceled\", icon: Ban, tone: \"neutral\" },\n};\n\nexport const RUN_STATUS: Record<RunState, StatusInfo> = {\n queued: { label: \"Queued\", icon: Clock, tone: \"neutral\" },\n dispatching: { label: \"Dispatching…\", icon: LoaderCircle, tone: \"info\", spin: true },\n uncertain: { label: \"Awaiting host confirmation\", icon: Hourglass, tone: \"warning\" },\n running: { label: \"Running\", icon: Activity, tone: \"info\", pulse: true },\n waiting_input: { label: \"Needs input\", icon: MessageCircleQuestion, tone: \"warning\" },\n checking: { label: \"Running checks\", icon: ListChecks, tone: \"info\", spin: false },\n succeeded: { label: \"Succeeded\", icon: CircleCheck, tone: \"success\" },\n failed: { label: \"Failed\", icon: CircleX, tone: \"danger\" },\n interrupted: { label: \"Interrupted\", icon: CirclePause, tone: \"warning\" },\n canceled: { label: \"Canceled\", icon: Ban, tone: \"neutral\" },\n};\n\n/** Host connectivity. */\nexport const HOST_STATUS: Record<Connectivity, StatusInfo> = {\n connected: { label: \"Connected\", icon: Wifi, tone: \"success\" },\n reconnecting: { label: \"Reconnecting…\", icon: RefreshCw, tone: \"warning\", spin: true },\n unreachable: { label: \"Unreachable\", icon: WifiOff, tone: \"danger\" },\n};\n\n/** This client's link to the coordinator. */\nexport const CONNECTION_STATUS: Record<ConnectionState, StatusInfo> = {\n connecting: { label: \"Connecting…\", icon: LoaderCircle, tone: \"info\", spin: true },\n live: { label: \"Live\", icon: Wifi, tone: \"success\" },\n reconnecting: { label: \"Reconnecting…\", icon: RefreshCw, tone: \"warning\", spin: true },\n offline: { label: \"Offline\", icon: CloudOff, tone: \"danger\" },\n};\n\nexport const INTERACTION_STATUS: Record<InteractionState, StatusInfo> = {\n pending: { label: \"Needs input\", icon: MessageCircleQuestion, tone: \"warning\" },\n resolved: { label: \"Answered\", icon: CircleCheck, tone: \"success\" },\n expired: { label: \"Expired\", icon: Hourglass, tone: \"neutral\" },\n canceled: { label: \"Canceled\", icon: CircleSlash, tone: \"neutral\" },\n unsupported: { label: \"Unsupported here\", icon: TriangleAlert, tone: \"warning\" },\n};\n\nexport const ATTENTION_STATUS: Record<AttentionReason, StatusInfo> = {\n needs_input: { label: \"Needs input\", icon: MessageCircleQuestion, tone: \"warning\" },\n failed: { label: \"Failed\", icon: CircleX, tone: \"danger\" },\n ready_for_review: { label: \"Ready for review\", icon: Eye, tone: \"info\" },\n unsupported_interaction: {\n label: \"Unsupported interaction\",\n icon: TriangleAlert,\n tone: \"warning\",\n },\n host_unreachable: { label: \"Host unreachable\", icon: WifiOff, tone: \"danger\" },\n};\n\nexport const OCCURRENCE_STATUS: Record<OccurrenceState, StatusInfo> = {\n fired: { label: \"Fired\", icon: CirclePlay, tone: \"info\" },\n skipped_overlap: { label: \"Skipped (overlap)\", icon: CircleSlash, tone: \"neutral\" },\n skipped_missed: { label: \"Skipped (missed)\", icon: CircleSlash, tone: \"neutral\" },\n queued: { label: \"Queued\", icon: Clock, tone: \"neutral\" },\n appended: { label: \"Appended\", icon: Repeat, tone: \"info\" },\n failed: { label: \"Failed\", icon: CircleX, tone: \"danger\" },\n filtered: { label: \"Filtered out\", icon: CircleDashed, tone: \"neutral\" },\n};\n\nexport type StatusChipProps =\n | { kind: \"runtime\"; value: RuntimeState; label?: string; className?: string; size?: \"sm\" | \"md\" }\n | { kind: \"task\"; value: TaskState; label?: string; className?: string; size?: \"sm\" | \"md\" }\n | { kind: \"run\"; value: RunState; label?: string; className?: string; size?: \"sm\" | \"md\" }\n | { kind: \"host\"; value: Connectivity; label?: string; className?: string; size?: \"sm\" | \"md\" }\n | {\n kind: \"connection\";\n value: ConnectionState;\n label?: string;\n className?: string;\n size?: \"sm\" | \"md\";\n }\n | {\n kind: \"interaction\";\n value: InteractionState;\n label?: string;\n className?: string;\n size?: \"sm\" | \"md\";\n }\n | {\n kind: \"attention\";\n value: AttentionReason;\n label?: string;\n className?: string;\n size?: \"sm\" | \"md\";\n }\n | {\n kind: \"occurrence\";\n value: OccurrenceState;\n label?: string;\n className?: string;\n size?: \"sm\" | \"md\";\n }\n | { kind: \"custom\"; status: StatusInfo; label?: string; className?: string; size?: \"sm\" | \"md\" };\n\nconst FALLBACK: StatusInfo = { label: \"Unknown\", icon: CircleAlert, tone: \"neutral\" };\n\nexport function statusInfo(props: StatusChipProps): StatusInfo {\n switch (props.kind) {\n case \"runtime\":\n return RUNTIME_STATUS[props.value] ?? FALLBACK;\n case \"task\":\n return TASK_STATUS[props.value] ?? FALLBACK;\n case \"run\":\n return RUN_STATUS[props.value] ?? FALLBACK;\n case \"host\":\n return HOST_STATUS[props.value] ?? FALLBACK;\n case \"connection\":\n return CONNECTION_STATUS[props.value] ?? FALLBACK;\n case \"interaction\": {\n // Offline-cache values may still carry the pre-0.9 spelling.\n const s = InteractionState.safeParse(props.value);\n return s.success ? INTERACTION_STATUS[s.data] : FALLBACK;\n }\n case \"attention\":\n return ATTENTION_STATUS[props.value] ?? FALLBACK;\n case \"occurrence\":\n return OCCURRENCE_STATUS[props.value] ?? FALLBACK;\n case \"custom\":\n return props.status;\n }\n}\n\n/** Status pill: icon + text label, tone only reinforces. `label` overrides the text. */\nexport function StatusChip(props: StatusChipProps) {\n const info = statusInfo(props);\n const Icon = info.icon;\n const sm = props.size === \"sm\";\n return (\n <span\n data-status-chip={props.kind}\n className={cn(\n \"inline-flex max-w-full items-center gap-1 rounded-full border font-medium whitespace-nowrap\",\n sm ? \"px-1.5 text-xs leading-5\" : \"px-2 text-xs leading-6\",\n TONE_CLASSES[info.tone],\n props.className,\n )}\n >\n {info.spin ? (\n <Spinner className={sm ? \"size-3\" : \"size-3.5\"} />\n ) : (\n <Icon\n aria-hidden\n className={cn(sm ? \"size-3\" : \"size-3.5\", \"shrink-0\", info.pulse && \"animate-pulse\")}\n />\n )}\n <span className=\"truncate\">{props.label ?? info.label}</span>\n </span>\n );\n}\n\n/** Icon plus text status, the tone only reinforces. */\nexport function InlineStatus({\n icon: Icon,\n label,\n tone = \"neutral\",\n spin,\n className,\n}: {\n icon: LucideIcon;\n label: ReactNode;\n tone?: Tone;\n spin?: boolean;\n className?: string;\n}) {\n return (\n <span\n className={cn(\n \"inline-flex max-w-full items-center gap-1 rounded-full border px-2 text-xs leading-6 font-medium\",\n TONE_CLASSES[tone],\n className,\n )}\n >\n {spin ? <Spinner className=\"size-3.5\" /> : <Icon aria-hidden className=\"size-3.5 shrink-0\" />}\n <span className=\"min-w-0 truncate\">{label}</span>\n </span>\n );\n}\n"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{_ as e,m as t,t as n}from"./jsx-runtime-D13aM9HY.js";import{_ as r,p as i}from"./states-C773NlHo.js";var a=e(t(),1),o=n();function s({checked:e}){return(0,o.jsx)(`span`,{"aria-hidden":!0,className:r(`relative inline-flex h-6 w-10 shrink-0 items-center rounded-full border transition-colors`,e?`border-accent bg-accent`:`border-border-strong bg-surface-2`),children:(0,o.jsx)(`span`,{className:r(`absolute size-4 rounded-full shadow-sm transition-transform`,e?`translate-x-5 bg-accent-fg`:`translate-x-1 bg-muted`)})})}function c({checked:e,onChange:t,label:n,onText:a=`On`,offText:c=`Off`,busy:l,disabled:u,id:d,className:f,...p}){return(0,o.jsxs)(`button`,{id:d,type:`button`,role:`switch`,"aria-checked":e,"aria-label":n,"aria-busy":l||void 0,"aria-invalid":p[`aria-invalid`],"aria-describedby":p[`aria-describedby`],disabled:u||l,onClick:()=>t(!e),className:r(`tap inline-flex min-h-9 shrink-0 items-center gap-2 rounded-md px-1.5 text-sm`,`hover:bg-surface-2 disabled:opacity-60`,f),children:[(0,o.jsx)(s,{checked:e}),l?(0,o.jsx)(i,{className:`size-3.5`}):null,(0,o.jsx)(`span`,{className:e?`text-text`:`text-muted`,children:e?a:c})]})}function l({checked:e,onChange:t,label:n,description:i,busy:c,disabled:l,id:u,className:d,...f}){let p=(0,a.useId)(),m=u??p,h=`${m}-desc`,g=[i?h:null,f[`aria-describedby`]].filter(Boolean).join(` `),_=l||c;return(0,o.jsxs)(`div`,{className:r(`flex min-w-0 items-start gap-3`,d),children:[(0,o.jsx)(`button`,{id:m,type:`button`,role:`switch`,"aria-checked":e,"aria-busy":c||void 0,"aria-invalid":f[`aria-invalid`],"aria-describedby":g||void 0,disabled:_,onClick:()=>t(!e),className:r(`tap mt-0.5 rounded-full`,_&&`cursor-not-allowed opacity-60`),children:(0,o.jsx)(s,{checked:e})}),(0,o.jsxs)(`label`,{htmlFor:m,className:r(`min-w-0 flex-1`,_?`cursor-not-allowed opacity-60`:`cursor-pointer`),children:[(0,o.jsxs)(`span`,{className:`block text-sm font-medium`,children:[n,` `,(0,o.jsxs)(`span`,{"aria-hidden":!0,className:`font-normal text-muted`,children:[`(`,e?`On`:`Off`,`)`]})]}),i&&(0,o.jsx)(`span`,{id:h,className:`block text-sm text-muted`,children:i})]})]})}export{l as n,c as t};
2
+ //# sourceMappingURL=Switch-DAcUcSbH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch-DAcUcSbH.js","names":["useId","__toESM","require_react","require_jsx_runtime","cn","Spinner","import_react","import_jsx_runtime","SwitchTrack","checked","Switch","aria","label","busy","disabled","onChange","className","onText","offText","SwitchRow","generated","switchId","id","descId","describedBy","description","off"],"sources":["../../src/components/ui/Switch.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { useId } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Spinner } from \"./Spinner\";\n\ninterface SwitchBase {\n checked: boolean;\n onChange(next: boolean): void;\n busy?: boolean;\n disabled?: boolean;\n id?: string;\n \"aria-invalid\"?: true;\n \"aria-describedby\"?: string;\n className?: string;\n}\n\nfunction SwitchTrack({ checked }: { checked: boolean }) {\n return (\n <span\n aria-hidden\n className={cn(\n \"relative inline-flex h-6 w-10 shrink-0 items-center rounded-full border transition-colors\",\n checked ? \"border-accent bg-accent\" : \"border-border-strong bg-surface-2\",\n )}\n >\n <span\n className={cn(\n \"absolute size-4 rounded-full shadow-sm transition-transform\",\n checked ? \"translate-x-5 bg-accent-fg\" : \"translate-x-1 bg-muted\",\n )}\n />\n </span>\n );\n}\n\n/** Compact on/off switch: the track plus text that states the current value. */\nexport function Switch({\n checked,\n onChange,\n label,\n onText = \"On\",\n offText = \"Off\",\n busy,\n disabled,\n id,\n className,\n ...aria\n}: SwitchBase & {\n /** Accessible name. */\n label: string;\n onText?: string;\n offText?: string;\n}) {\n return (\n <button\n id={id}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={label}\n aria-busy={busy || undefined}\n aria-invalid={aria[\"aria-invalid\"]}\n aria-describedby={aria[\"aria-describedby\"]}\n disabled={disabled || busy}\n onClick={() => onChange(!checked)}\n className={cn(\n \"tap inline-flex min-h-9 shrink-0 items-center gap-2 rounded-md px-1.5 text-sm\",\n \"hover:bg-surface-2 disabled:opacity-60\",\n className,\n )}\n >\n <SwitchTrack checked={checked} />\n {busy ? <Spinner className=\"size-3.5\" /> : null}\n <span className={checked ? \"text-text\" : \"text-muted\"}>{checked ? onText : offText}</span>\n </button>\n );\n}\n\n/** Switch row: the track, a visible label with \"(On)/(Off)\" and a description; the whole row is clickable. */\nexport function SwitchRow({\n checked,\n onChange,\n label,\n description,\n busy,\n disabled,\n id,\n className,\n ...aria\n}: SwitchBase & { label: ReactNode; description?: ReactNode }) {\n const generated = useId();\n const switchId = id ?? generated;\n const descId = `${switchId}-desc`;\n const describedBy = [description ? descId : null, aria[\"aria-describedby\"]]\n .filter(Boolean)\n .join(\" \");\n const off = disabled || busy;\n return (\n <div className={cn(\"flex min-w-0 items-start gap-3\", className)}>\n <button\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-busy={busy || undefined}\n aria-invalid={aria[\"aria-invalid\"]}\n aria-describedby={describedBy || undefined}\n disabled={off}\n onClick={() => onChange(!checked)}\n className={cn(\"tap mt-0.5 rounded-full\", off && \"cursor-not-allowed opacity-60\")}\n >\n <SwitchTrack checked={checked} />\n </button>\n <label\n htmlFor={switchId}\n className={cn(\"min-w-0 flex-1\", off ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\")}\n >\n <span className=\"block text-sm font-medium\">\n {label}{\" \"}\n <span aria-hidden className=\"font-normal text-muted\">\n ({checked ? \"On\" : \"Off\"})\n </span>\n </span>\n {description && (\n <span id={descId} className=\"block text-sm text-muted\">\n {description}\n </span>\n )}\n </label>\n </div>\n );\n}\n"],"mappings":"A,iIAgBA,SAASQ,EAAY,CAAE,WAAiC,CACtD,OACE,EAAAD,EAAA,IAAA,CAAC,OAAD,CACE,cAAA,GACA,UAAWH,EACT,4FACAK,EAAU,0BAA4B,mCACxC,EAEA,UAAA,EAAAF,EAAA,IAAA,CAAC,OAAD,CACE,UAAWH,EACT,8DACAK,EAAU,6BAA+B,wBAC3C,CACD,CAAA,CACG,CAAA,CAEV,CAGA,SAAgBC,EAAO,CACrB,UACA,WACA,QACA,SAAS,KACT,UAAU,MACV,OACA,WACA,KACA,YACA,GAAGC,GAMF,CACD,OACE,EAAAJ,EAAA,KAAA,CAAC,SAAD,CACM,KACJ,KAAK,SACL,KAAK,SACL,eAAcE,EACd,aAAYG,EACZ,YAAWC,GAAQ,IAAA,GACnB,eAAcF,EAAK,gBACnB,mBAAkBA,EAAK,oBACvB,SAAUG,GAAYD,EACtB,YAAeE,EAAS,CAACN,CAAO,EAChC,UAAWL,EACT,gFACA,yCACAY,CACF,EAfF,SAAA,EAiBE,EAAAT,EAAA,IAAA,CAACC,EAAD,CAAsB,SAAU,CAAA,EAC/BK,GAAO,EAAAN,EAAA,IAAA,CAACF,EAAD,CAAS,UAAU,UAAY,CAAA,EAAI,MAC3C,EAAAE,EAAA,IAAA,CAAC,OAAD,CAAM,UAAWE,EAAU,YAAc,aAAe,SAAAA,EAAUQ,EAASC,CAAc,CAAA,CACnF,C,EAEZ,CAGA,SAAgBC,EAAU,CACxB,UACA,WACA,QACA,cACA,OACA,WACA,KACA,YACA,GAAGR,GAC0D,CAC7D,IAAMS,GAAA,EAAYpB,EAAAA,MAAAA,CAAM,EAClBqB,EAAWC,GAAMF,EACjBG,EAAS,GAAGF,EAAS,OACrBG,EAAc,CAACC,EAAcF,EAAS,KAAMZ,EAAK,mBAAmB,CAAC,CACxE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG,EACLe,EAAMZ,GAAYD,EACxB,OACE,EAAAN,EAAA,KAAA,CAAC,MAAD,CAAK,UAAWH,EAAG,iCAAkCY,CAAS,EAA9D,SAAA,EACE,EAAAT,EAAA,IAAA,CAAC,SAAD,CACE,GAAIc,EACJ,KAAK,SACL,KAAK,SACL,eAAcZ,EACd,YAAWI,GAAQ,IAAA,GACnB,eAAcF,EAAK,gBACnB,mBAAkBa,GAAe,IAAA,GACjC,SAAUE,EACV,YAAeX,EAAS,CAACN,CAAO,EAChC,UAAWL,EAAG,0BAA2BsB,GAAO,+BAA+B,EAE/E,UAAA,EAAAnB,EAAA,IAAA,CAACC,EAAD,CAAsB,SAAU,CAAA,CAC1B,CAAA,GACR,EAAAD,EAAA,KAAA,CAAC,QAAD,CACE,QAASc,EACT,UAAWjB,EAAG,iBAAkBsB,EAAM,gCAAkC,gBAAgB,EAF1F,SAAA,EAIE,EAAAnB,EAAA,KAAA,CAAC,OAAD,CAAM,UAAU,4BAAhB,SAAA,CACGK,EAAO,KACR,EAAAL,EAAA,KAAA,CAAC,OAAD,CAAM,cAAA,GAAY,UAAU,yBAA5B,SAAA,CAAqD,IACjDE,EAAU,KAAO,MAAM,GACrB,C,EACF,CACL,CAAA,EAAAgB,IACC,EAAAlB,EAAA,IAAA,CAAC,OAAD,CAAM,GAAIgB,EAAQ,UAAU,2BACzB,SAAAE,CACG,CAAA,CAEH,CACJ,CAAA,CAAA,C,EAET,C"}