miravo 0.6.0 → 0.6.2

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 (187) hide show
  1. package/LICENSE +199 -0
  2. package/README.md +29 -59
  3. package/bin/miravo.js +84 -0
  4. package/package.json +21 -37
  5. package/console-dist/assets/activity-DsWeRq4h.js +0 -1
  6. package/console-dist/assets/api-4AqKvsm9.js +0 -1
  7. package/console-dist/assets/arrow-right-Ea_UhTNi.js +0 -1
  8. package/console-dist/assets/arrow-up-down-DFSjzzl2.js +0 -1
  9. package/console-dist/assets/blueprint-card-classes-DBFCDy0M.js +0 -1
  10. package/console-dist/assets/box-C1WaoOMF.js +0 -1
  11. package/console-dist/assets/card-BjeP32PN.js +0 -1
  12. package/console-dist/assets/catalog-BJzyzbLR.js +0 -1
  13. package/console-dist/assets/catalog-DKjEm-c4.js +0 -1
  14. package/console-dist/assets/catalog-template-icons-BrUeHaCY.js +0 -1
  15. package/console-dist/assets/checkbox-DZlJXTE4.js +0 -1
  16. package/console-dist/assets/chunk-OE4NN4TA-CEjpfhS6.js +0 -3
  17. package/console-dist/assets/combobox-BGnuCYxO.js +0 -1
  18. package/console-dist/assets/control-CPhvwx9o.js +0 -1
  19. package/console-dist/assets/control-Cg2up9NA.js +0 -1
  20. package/console-dist/assets/copy-button-WkbNkMcd.js +0 -1
  21. package/console-dist/assets/createLucideIcon-Bwxw859K.js +0 -1
  22. package/console-dist/assets/deploy-tab-JeWDwPoZ.js +0 -1
  23. package/console-dist/assets/dist-BhbDML0a.js +0 -1
  24. package/console-dist/assets/dist-Cy8XTNFT.js +0 -2
  25. package/console-dist/assets/download-DQ6NH16U.js +0 -1
  26. package/console-dist/assets/engine-store-CrLnz692.js +0 -1
  27. package/console-dist/assets/events-CXm29Ok4.js +0 -1
  28. package/console-dist/assets/events-D01IxhnP.js +0 -1
  29. package/console-dist/assets/fira-code-cyrillic-ext-wght-normal-DhYMMuQd.woff2 +0 -0
  30. package/console-dist/assets/fira-code-cyrillic-wght-normal-Y3u8pIsh.woff2 +0 -0
  31. package/console-dist/assets/fira-code-greek-ext-wght-normal-wWus70Ix.woff2 +0 -0
  32. package/console-dist/assets/fira-code-greek-wght-normal-B2SviObF.woff2 +0 -0
  33. package/console-dist/assets/fira-code-latin-ext-wght-normal-Dvfvaomy.woff2 +0 -0
  34. package/console-dist/assets/fira-code-latin-wght-normal-CHoedHDv.woff2 +0 -0
  35. package/console-dist/assets/fira-code-symbols2-wght-normal-CE6EOz_n.woff2 +0 -0
  36. package/console-dist/assets/fleet-CfxbKXt9.js +0 -1
  37. package/console-dist/assets/fleet-lotMGVqe.js +0 -1
  38. package/console-dist/assets/format-kXTonpDJ.js +0 -1
  39. package/console-dist/assets/gauge-Ci8zNZlk.js +0 -1
  40. package/console-dist/assets/get-error-message-3Q5Q-2G5.js +0 -1
  41. package/console-dist/assets/index-CVPKSDvJ.js +0 -12
  42. package/console-dist/assets/index-DJkgDeun.css +0 -2
  43. package/console-dist/assets/input-BWEQFptx.js +0 -1
  44. package/console-dist/assets/instance-detail-C5IVwuh3.js +0 -1
  45. package/console-dist/assets/karla-latin-ext-wght-normal-Dq0rrjgs.woff2 +0 -0
  46. package/console-dist/assets/karla-latin-wght-normal-C3-ma4ov.woff2 +0 -0
  47. package/console-dist/assets/label-uephX5ZG.js +0 -1
  48. package/console-dist/assets/layers-CUsLQ1fq.js +0 -1
  49. package/console-dist/assets/login-C3RJli0m.js +0 -126
  50. package/console-dist/assets/models-B_UioWQ5.js +0 -1
  51. package/console-dist/assets/models-_IPlPiZ7.js +0 -1
  52. package/console-dist/assets/not-found-B8gAm08S.js +0 -1
  53. package/console-dist/assets/platform-targets-R3T-4eJ7.js +0 -1
  54. package/console-dist/assets/platforms-BWh0BQ3Y.js +0 -1
  55. package/console-dist/assets/platforms-DStNbtVc.js +0 -1
  56. package/console-dist/assets/proxy-CsnYqnPp.js +0 -9
  57. package/console-dist/assets/query-keys-BvtE7BMs.js +0 -1
  58. package/console-dist/assets/radio-CoHegOv5.js +0 -1
  59. package/console-dist/assets/rolldown-runtime-COnpUsM8.js +0 -1
  60. package/console-dist/assets/schibsted-grotesk-latin-ext-wght-normal-hsMS0n0O.woff2 +0 -0
  61. package/console-dist/assets/schibsted-grotesk-latin-wght-normal-Bb8VGrTG.woff2 +0 -0
  62. package/console-dist/assets/select-CeO4vP0G.js +0 -1
  63. package/console-dist/assets/select-display-items-CIzY8953.js +0 -1
  64. package/console-dist/assets/server-D9Kfn8fQ.js +0 -1
  65. package/console-dist/assets/shallow-6lGjQhtJ.js +0 -1
  66. package/console-dist/assets/tags-CiXOIHtY.js +0 -4
  67. package/console-dist/assets/tags-FQCXIxrP.js +0 -1
  68. package/console-dist/assets/tooltip-HGLF366Q.js +0 -1
  69. package/console-dist/assets/transition-nav-link-Df4Rk6vV.js +0 -1
  70. package/console-dist/assets/transition-types-CPlGtM8w.js +0 -1
  71. package/console-dist/assets/triangle-alert-adNk_sea.js +0 -1
  72. package/console-dist/assets/use-platform-stream-DGbK1k2L.js +0 -2
  73. package/console-dist/assets/use-transition-navigate-CCpcWXB0.js +0 -2
  74. package/console-dist/assets/validation-Blvud9_O.js +0 -1
  75. package/console-dist/assets/vendor-charts-CAZdaPlq.js +0 -60
  76. package/console-dist/assets/vendor-table-wd8JuMmT.js +0 -4
  77. package/console-dist/assets/vendor-ui-ByahnaY0.js +0 -1
  78. package/console-dist/favicon.svg +0 -37
  79. package/console-dist/index.html +0 -82
  80. package/console-dist/miravo-logo.png +0 -0
  81. package/src/__tests__/integration/executable-methods-runner.ts +0 -262
  82. package/src/__tests__/integration/executable-methods.integration.ts +0 -2348
  83. package/src/__tests__/integration/opcua-concurrent-clients.integration.ts +0 -314
  84. package/src/commands/adapter.ts +0 -249
  85. package/src/commands/apply.test.ts +0 -62
  86. package/src/commands/apply.ts +0 -216
  87. package/src/commands/cleanup.test.ts +0 -34
  88. package/src/commands/cleanup.ts +0 -201
  89. package/src/commands/cli-test-setup.ts +0 -91
  90. package/src/commands/export.test.ts +0 -51
  91. package/src/commands/export.ts +0 -404
  92. package/src/commands/fork.ts +0 -219
  93. package/src/commands/inject.test.ts +0 -57
  94. package/src/commands/inject.ts +0 -212
  95. package/src/commands/load.ts +0 -167
  96. package/src/commands/logs.ts +0 -173
  97. package/src/commands/models.test.ts +0 -162
  98. package/src/commands/models.ts +0 -338
  99. package/src/commands/pause.ts +0 -67
  100. package/src/commands/platforms.test.ts +0 -186
  101. package/src/commands/platforms.ts +0 -371
  102. package/src/commands/ps.ts +0 -116
  103. package/src/commands/remove.ts +0 -38
  104. package/src/commands/reset.ts +0 -44
  105. package/src/commands/rm.ts +0 -97
  106. package/src/commands/spawn.ts +0 -45
  107. package/src/commands/speed.ts +0 -40
  108. package/src/commands/start/adapter-config.ts +0 -157
  109. package/src/commands/start/catalog-le-dt.test.ts +0 -50
  110. package/src/commands/start/catalog-le-dt.ts +0 -187
  111. package/src/commands/start/catalog-model-schema.ts +0 -89
  112. package/src/commands/start/catalog-template-detail.ts +0 -54
  113. package/src/commands/start/daemon.ts +0 -255
  114. package/src/commands/start/display.ts +0 -150
  115. package/src/commands/start/engine-setup.ts +0 -247
  116. package/src/commands/start/events.ts +0 -126
  117. package/src/commands/start/index.ts +0 -897
  118. package/src/commands/start/protocol-plans.ts +0 -239
  119. package/src/commands/start/template-loader.ts +0 -197
  120. package/src/commands/start/template-resolver.ts +0 -185
  121. package/src/commands/start/types.ts +0 -73
  122. package/src/commands/start.test.ts +0 -480
  123. package/src/commands/status.test.ts +0 -20
  124. package/src/commands/status.ts +0 -470
  125. package/src/commands/stop.test.ts +0 -84
  126. package/src/commands/stop.ts +0 -169
  127. package/src/commands/templates.test.ts +0 -58
  128. package/src/commands/templates.ts +0 -277
  129. package/src/index.ts +0 -166
  130. package/src/lib/admin-auth.ts +0 -157
  131. package/src/lib/admin-client.test.ts +0 -51
  132. package/src/lib/admin-client.ts +0 -326
  133. package/src/lib/admin-platform-routes.ts +0 -1017
  134. package/src/lib/admin-platform-stream.test.ts +0 -434
  135. package/src/lib/admin-platform-stream.ts +0 -788
  136. package/src/lib/admin-responses.ts +0 -211
  137. package/src/lib/admin-server.test.ts +0 -781
  138. package/src/lib/admin-server.ts +0 -797
  139. package/src/lib/auth-store.ts +0 -87
  140. package/src/lib/daemon-registry.test.ts +0 -429
  141. package/src/lib/daemon-registry.ts +0 -343
  142. package/src/lib/le/le-apply.test.ts +0 -591
  143. package/src/lib/le/le-apply.ts +0 -832
  144. package/src/lib/le/le-auth.ts +0 -89
  145. package/src/lib/le/le-cleanup.test.ts +0 -168
  146. package/src/lib/le/le-cleanup.ts +0 -399
  147. package/src/lib/le/le-cli-helpers.ts +0 -77
  148. package/src/lib/le/le-client.ts +0 -184
  149. package/src/lib/le/le-concurrency.test.ts +0 -157
  150. package/src/lib/le/le-concurrency.ts +0 -78
  151. package/src/lib/le/le-connection-test.ts +0 -42
  152. package/src/lib/le/le-devicehub-properties.test.ts +0 -53
  153. package/src/lib/le/le-devicehub-properties.ts +0 -33
  154. package/src/lib/le/le-devicehub.ts +0 -213
  155. package/src/lib/le/le-digital-twins.ts +0 -285
  156. package/src/lib/le/le-drivers.ts +0 -23
  157. package/src/lib/le/le-endpoint.ts +0 -40
  158. package/src/lib/le/le-environments.test.ts +0 -73
  159. package/src/lib/le/le-environments.ts +0 -156
  160. package/src/lib/le/le-markers.ts +0 -87
  161. package/src/lib/le/le-plan.test.ts +0 -26
  162. package/src/lib/le/le-plan.ts +0 -109
  163. package/src/lib/le/le-platform-operations.test.ts +0 -198
  164. package/src/lib/le/le-platform-operations.ts +0 -340
  165. package/src/lib/le/le-static-model-schema.ts +0 -78
  166. package/src/lib/le/le-static-planner.test.ts +0 -255
  167. package/src/lib/le/le-static-planner.ts +0 -442
  168. package/src/lib/le/le-template-exporter.test.ts +0 -527
  169. package/src/lib/le/le-template-exporter.ts +0 -459
  170. package/src/lib/le/le-value-types.ts +0 -23
  171. package/src/lib/mqtt-client.ts +0 -115
  172. package/src/lib/parse.test.ts +0 -123
  173. package/src/lib/parse.ts +0 -87
  174. package/src/lib/resolve-simulation.test.ts +0 -118
  175. package/src/lib/resolve-simulation.ts +0 -181
  176. package/src/lib/session-store.ts +0 -110
  177. package/src/lib/shutdown.test.ts +0 -562
  178. package/src/lib/shutdown.ts +0 -621
  179. package/src/lib/template-category.test.ts +0 -71
  180. package/src/lib/template-category.ts +0 -72
  181. package/src/lib/template-locator.ts +0 -55
  182. package/src/lib/template-utils.ts +0 -45
  183. package/src/lib/ws-hub.ts +0 -281
  184. package/src/logger.test.ts +0 -172
  185. package/src/logger.ts +0 -402
  186. package/src/output.test.ts +0 -64
  187. package/src/output.ts +0 -160
@@ -1 +0,0 @@
1
- import"./rolldown-runtime-COnpUsM8.js";import{o as e,s as t}from"./vendor-charts-CAZdaPlq.js";import{at as n,nt as r,tt as i}from"./vendor-ui-ByahnaY0.js";import{t as a}from"./createLucideIcon-Bwxw859K.js";var o=a(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),s=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,c=e,l=(e,t)=>n=>{if(t?.variants==null)return c(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=s(t)||s(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return c(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},u=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t<e.length;t++)n[t]=e[t];for(let r=0;r<t.length;r++)n[e.length+r]=t[r];return n},ee=(e,t)=>({classGroupId:e,validator:t}),d=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),f=`-`,p=[],m=`arbitrary..`,te=e=>{let t=g(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return ne(e);let n=e.split(f);return h(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?u(i,t):t:i||p}return n[e]||p}}},h=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=h(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(f):e.slice(t).join(f),s=a.length;for(let e=0;e<s;e++){let t=a[e];if(t.validator(o))return t.classGroupId}},ne=e=>e.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?m+r:void 0})(),g=e=>{let{theme:t,classGroups:n}=e;return _(n,t)},_=(e,t)=>{let n=d();for(let r in e){let i=e[r];v(i,n,r,t)}return n},v=(e,t,n,r)=>{let i=e.length;for(let a=0;a<i;a++){let i=e[a];y(i,t,n,r)}},y=(e,t,n,r)=>{if(typeof e==`string`){b(e,t,n);return}if(typeof e==`function`){x(e,t,n,r);return}S(e,t,n,r)},b=(e,t,n)=>{let r=e===``?t:C(t,e);r.classGroupId=n},x=(e,t,n,r)=>{if(re(e)){v(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(ee(n,e))},S=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e<a;e++){let[a,o]=i[e];v(o,C(t,a),n,r)}},C=(e,t)=>{let n=e,r=t.split(f),i=r.length;for(let e=0;e<i;e++){let t=r[e],i=n.nextPart.get(t);i||(i=d(),n.nextPart.set(t,i)),n=i}return n},re=e=>`isThemeGetter`in e&&e.isThemeGetter===!0,w=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},T=`!`,E=`:`,D=[],O=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),k=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;s<o;s++){let o=e[s];if(n===0&&r===0){if(o===E){t.push(e.slice(i,s)),i=s+1;continue}if(o===`/`){a=s;continue}}o===`[`?n++:o===`]`?n--:o===`(`?r++:o===`)`&&r--}let s=t.length===0?e:e.slice(i),c=s,l=!1;s.endsWith(T)?(c=s.slice(0,-1),l=!0):s.startsWith(T)&&(c=s.slice(1),l=!0);let u=a&&a>i?a-i:void 0;return O(t,l,c,u)};if(t){let e=t+E,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):O(D,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},ie=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i<e.length;i++){let a=e[i],o=a[0]===`[`,s=t.has(a);o||s?(r.length>0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},A=e=>({cache:w(e.cacheSize),parseClassName:k(e),sortModifiers:ie(e),...te(e)}),j=/\s+/,ae=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a}=t,o=[],s=e.trim().split(j),c=``;for(let e=s.length-1;e>=0;--e){let t=s[e],{isExternal:l,modifiers:u,hasImportantModifier:ee,baseClassName:d,maybePostfixModifierPosition:f}=n(t);if(l){c=t+(c.length>0?` `+c:c);continue}let p=!!f,m=r(p?d.substring(0,f):d);if(!m){if(!p){c=t+(c.length>0?` `+c:c);continue}if(m=r(d),!m){c=t+(c.length>0?` `+c:c);continue}p=!1}let te=u.length===0?``:u.length===1?u[0]:a(u).join(`:`),h=ee?te+T:te,ne=h+m;if(o.indexOf(ne)>-1)continue;o.push(ne);let g=i(m,p);for(let e=0;e<g.length;++e){let t=g[e];o.push(h+t)}c=t+(c.length>0?` `+c:c)}return c},oe=(...e)=>{let t=0,n,r,i=``;for(;t<e.length;)(n=e[t++])&&(r=M(n))&&(i&&(i+=` `),i+=r);return i},M=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=M(e[r]))&&(n&&(n+=` `),n+=t);return n},N=(e,...t)=>{let n,r,i,a,o=o=>(n=A(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=ae(e,n);return i(e,a),a};return a=o,(...e)=>a(oe(...e))},P=[],F=e=>{let t=t=>t[e]||P;return t.isThemeGetter=!0,t},I=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,L=/^\((?:(\w[\w-]*):)?(.+)\)$/i,se=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,R=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ce=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,z=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,B=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,V=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,H=e=>se.test(e),U=e=>!!e&&!Number.isNaN(Number(e)),W=e=>!!e&&Number.isInteger(Number(e)),le=e=>e.endsWith(`%`)&&U(e.slice(0,-1)),G=e=>R.test(e),ue=()=>!0,K=e=>ce.test(e)&&!z.test(e),de=()=>!1,fe=e=>B.test(e),pe=e=>V.test(e),me=e=>!q(e)&&!X(e),he=e=>Q(e,ke,de),q=e=>I.test(e),J=e=>Q(e,Ae,K),ge=e=>Q(e,je,U),_e=e=>Q(e,Ne,ue),ve=e=>Q(e,Me,de),ye=e=>Q(e,De,de),be=e=>Q(e,Oe,pe),Y=e=>Q(e,Pe,fe),X=e=>L.test(e),Z=e=>$(e,Ae),xe=e=>$(e,Me),Se=e=>$(e,De),Ce=e=>$(e,ke),we=e=>$(e,Oe),Te=e=>$(e,Pe,!0),Ee=e=>$(e,Ne,!0),Q=(e,t,n)=>{let r=I.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},$=(e,t,n=!1)=>{let r=L.exec(e);return r?r[1]?t(r[1]):n:!1},De=e=>e===`position`||e===`percentage`,Oe=e=>e===`image`||e===`url`,ke=e=>e===`length`||e===`size`||e===`bg-size`,Ae=e=>e===`length`,je=e=>e===`number`,Me=e=>e===`family-name`,Ne=e=>e===`number`||e===`weight`,Pe=e=>e===`shadow`,Fe=N(()=>{let e=F(`color`),t=F(`font`),n=F(`text`),r=F(`font-weight`),i=F(`tracking`),a=F(`leading`),o=F(`breakpoint`),s=F(`container`),c=F(`spacing`),l=F(`radius`),u=F(`shadow`),ee=F(`inset-shadow`),d=F(`text-shadow`),f=F(`drop-shadow`),p=F(`blur`),m=F(`perspective`),te=F(`aspect`),h=F(`ease`),ne=F(`animate`),g=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],_=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],v=()=>[..._(),X,q],y=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],b=()=>[`auto`,`contain`,`none`],x=()=>[X,q,c],S=()=>[H,`full`,`auto`,...x()],C=()=>[W,`none`,`subgrid`,X,q],re=()=>[`auto`,{span:[`full`,W,X,q]},W,X,q],w=()=>[W,`auto`,X,q],T=()=>[`auto`,`min`,`max`,`fr`,X,q],E=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],D=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],O=()=>[`auto`,...x()],k=()=>[H,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...x()],ie=()=>[H,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...x()],A=()=>[H,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...x()],j=()=>[e,X,q],ae=()=>[..._(),Se,ye,{position:[X,q]}],oe=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],M=()=>[`auto`,`cover`,`contain`,Ce,he,{size:[X,q]}],N=()=>[le,Z,J],P=()=>[``,`none`,`full`,l,X,q],I=()=>[``,U,Z,J],L=()=>[`solid`,`dashed`,`dotted`,`double`],se=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],R=()=>[U,le,Se,ye],ce=()=>[``,`none`,p,X,q],z=()=>[`none`,U,X,q],B=()=>[`none`,U,X,q],V=()=>[U,X,q],K=()=>[H,`full`,...x()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[G],breakpoint:[G],color:[ue],container:[G],"drop-shadow":[G],ease:[`in`,`out`,`in-out`],font:[me],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[G],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[G],shadow:[G],spacing:[`px`,U],text:[G],"text-shadow":[G],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,H,q,X,te]}],container:[`container`],columns:[{columns:[U,q,X,s]}],"break-after":[{"break-after":g()}],"break-before":[{"break-before":g()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:v()}],overflow:[{overflow:y()}],"overflow-x":[{"overflow-x":y()}],"overflow-y":[{"overflow-y":y()}],overscroll:[{overscroll:b()}],"overscroll-x":[{"overscroll-x":b()}],"overscroll-y":[{"overscroll-y":b()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:S()}],"inset-x":[{"inset-x":S()}],"inset-y":[{"inset-y":S()}],start:[{"inset-s":S(),start:S()}],end:[{"inset-e":S(),end:S()}],"inset-bs":[{"inset-bs":S()}],"inset-be":[{"inset-be":S()}],top:[{top:S()}],right:[{right:S()}],bottom:[{bottom:S()}],left:[{left:S()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[W,`auto`,X,q]}],basis:[{basis:[H,`full`,`auto`,s,...x()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[U,H,`auto`,`initial`,`none`,q]}],grow:[{grow:[``,U,X,q]}],shrink:[{shrink:[``,U,X,q]}],order:[{order:[W,`first`,`last`,`none`,X,q]}],"grid-cols":[{"grid-cols":C()}],"col-start-end":[{col:re()}],"col-start":[{"col-start":w()}],"col-end":[{"col-end":w()}],"grid-rows":[{"grid-rows":C()}],"row-start-end":[{row:re()}],"row-start":[{"row-start":w()}],"row-end":[{"row-end":w()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":T()}],"auto-rows":[{"auto-rows":T()}],gap:[{gap:x()}],"gap-x":[{"gap-x":x()}],"gap-y":[{"gap-y":x()}],"justify-content":[{justify:[...E(),`normal`]}],"justify-items":[{"justify-items":[...D(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...D()]}],"align-content":[{content:[`normal`,...E()]}],"align-items":[{items:[...D(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...D(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":E()}],"place-items":[{"place-items":[...D(),`baseline`]}],"place-self":[{"place-self":[`auto`,...D()]}],p:[{p:x()}],px:[{px:x()}],py:[{py:x()}],ps:[{ps:x()}],pe:[{pe:x()}],pbs:[{pbs:x()}],pbe:[{pbe:x()}],pt:[{pt:x()}],pr:[{pr:x()}],pb:[{pb:x()}],pl:[{pl:x()}],m:[{m:O()}],mx:[{mx:O()}],my:[{my:O()}],ms:[{ms:O()}],me:[{me:O()}],mbs:[{mbs:O()}],mbe:[{mbe:O()}],mt:[{mt:O()}],mr:[{mr:O()}],mb:[{mb:O()}],ml:[{ml:O()}],"space-x":[{"space-x":x()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":x()}],"space-y-reverse":[`space-y-reverse`],size:[{size:k()}],"inline-size":[{inline:[`auto`,...ie()]}],"min-inline-size":[{"min-inline":[`auto`,...ie()]}],"max-inline-size":[{"max-inline":[`none`,...ie()]}],"block-size":[{block:[`auto`,...A()]}],"min-block-size":[{"min-block":[`auto`,...A()]}],"max-block-size":[{"max-block":[`none`,...A()]}],w:[{w:[s,`screen`,...k()]}],"min-w":[{"min-w":[s,`screen`,`none`,...k()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...k()]}],h:[{h:[`screen`,`lh`,...k()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...k()]}],"max-h":[{"max-h":[`screen`,`lh`,...k()]}],"font-size":[{text:[`base`,n,Z,J]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,Ee,_e]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,le,q]}],"font-family":[{font:[xe,ve,t]}],"font-features":[{"font-features":[q]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,X,q]}],"line-clamp":[{"line-clamp":[U,`none`,X,ge]}],leading:[{leading:[a,...x()]}],"list-image":[{"list-image":[`none`,X,q]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,X,q]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:j()}],"text-color":[{text:j()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...L(),`wavy`]}],"text-decoration-thickness":[{decoration:[U,`from-font`,`auto`,X,J]}],"text-decoration-color":[{decoration:j()}],"underline-offset":[{"underline-offset":[U,`auto`,X,q]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:x()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,X,q]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,X,q]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:ae()}],"bg-repeat":[{bg:oe()}],"bg-size":[{bg:M()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},W,X,q],radial:[``,X,q],conic:[W,X,q]},we,be]}],"bg-color":[{bg:j()}],"gradient-from-pos":[{from:N()}],"gradient-via-pos":[{via:N()}],"gradient-to-pos":[{to:N()}],"gradient-from":[{from:j()}],"gradient-via":[{via:j()}],"gradient-to":[{to:j()}],rounded:[{rounded:P()}],"rounded-s":[{"rounded-s":P()}],"rounded-e":[{"rounded-e":P()}],"rounded-t":[{"rounded-t":P()}],"rounded-r":[{"rounded-r":P()}],"rounded-b":[{"rounded-b":P()}],"rounded-l":[{"rounded-l":P()}],"rounded-ss":[{"rounded-ss":P()}],"rounded-se":[{"rounded-se":P()}],"rounded-ee":[{"rounded-ee":P()}],"rounded-es":[{"rounded-es":P()}],"rounded-tl":[{"rounded-tl":P()}],"rounded-tr":[{"rounded-tr":P()}],"rounded-br":[{"rounded-br":P()}],"rounded-bl":[{"rounded-bl":P()}],"border-w":[{border:I()}],"border-w-x":[{"border-x":I()}],"border-w-y":[{"border-y":I()}],"border-w-s":[{"border-s":I()}],"border-w-e":[{"border-e":I()}],"border-w-bs":[{"border-bs":I()}],"border-w-be":[{"border-be":I()}],"border-w-t":[{"border-t":I()}],"border-w-r":[{"border-r":I()}],"border-w-b":[{"border-b":I()}],"border-w-l":[{"border-l":I()}],"divide-x":[{"divide-x":I()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":I()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...L(),`hidden`,`none`]}],"divide-style":[{divide:[...L(),`hidden`,`none`]}],"border-color":[{border:j()}],"border-color-x":[{"border-x":j()}],"border-color-y":[{"border-y":j()}],"border-color-s":[{"border-s":j()}],"border-color-e":[{"border-e":j()}],"border-color-bs":[{"border-bs":j()}],"border-color-be":[{"border-be":j()}],"border-color-t":[{"border-t":j()}],"border-color-r":[{"border-r":j()}],"border-color-b":[{"border-b":j()}],"border-color-l":[{"border-l":j()}],"divide-color":[{divide:j()}],"outline-style":[{outline:[...L(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[U,X,q]}],"outline-w":[{outline:[``,U,Z,J]}],"outline-color":[{outline:j()}],shadow:[{shadow:[``,`none`,u,Te,Y]}],"shadow-color":[{shadow:j()}],"inset-shadow":[{"inset-shadow":[`none`,ee,Te,Y]}],"inset-shadow-color":[{"inset-shadow":j()}],"ring-w":[{ring:I()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:j()}],"ring-offset-w":[{"ring-offset":[U,J]}],"ring-offset-color":[{"ring-offset":j()}],"inset-ring-w":[{"inset-ring":I()}],"inset-ring-color":[{"inset-ring":j()}],"text-shadow":[{"text-shadow":[`none`,d,Te,Y]}],"text-shadow-color":[{"text-shadow":j()}],opacity:[{opacity:[U,X,q]}],"mix-blend":[{"mix-blend":[...se(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":se()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[U]}],"mask-image-linear-from-pos":[{"mask-linear-from":R()}],"mask-image-linear-to-pos":[{"mask-linear-to":R()}],"mask-image-linear-from-color":[{"mask-linear-from":j()}],"mask-image-linear-to-color":[{"mask-linear-to":j()}],"mask-image-t-from-pos":[{"mask-t-from":R()}],"mask-image-t-to-pos":[{"mask-t-to":R()}],"mask-image-t-from-color":[{"mask-t-from":j()}],"mask-image-t-to-color":[{"mask-t-to":j()}],"mask-image-r-from-pos":[{"mask-r-from":R()}],"mask-image-r-to-pos":[{"mask-r-to":R()}],"mask-image-r-from-color":[{"mask-r-from":j()}],"mask-image-r-to-color":[{"mask-r-to":j()}],"mask-image-b-from-pos":[{"mask-b-from":R()}],"mask-image-b-to-pos":[{"mask-b-to":R()}],"mask-image-b-from-color":[{"mask-b-from":j()}],"mask-image-b-to-color":[{"mask-b-to":j()}],"mask-image-l-from-pos":[{"mask-l-from":R()}],"mask-image-l-to-pos":[{"mask-l-to":R()}],"mask-image-l-from-color":[{"mask-l-from":j()}],"mask-image-l-to-color":[{"mask-l-to":j()}],"mask-image-x-from-pos":[{"mask-x-from":R()}],"mask-image-x-to-pos":[{"mask-x-to":R()}],"mask-image-x-from-color":[{"mask-x-from":j()}],"mask-image-x-to-color":[{"mask-x-to":j()}],"mask-image-y-from-pos":[{"mask-y-from":R()}],"mask-image-y-to-pos":[{"mask-y-to":R()}],"mask-image-y-from-color":[{"mask-y-from":j()}],"mask-image-y-to-color":[{"mask-y-to":j()}],"mask-image-radial":[{"mask-radial":[X,q]}],"mask-image-radial-from-pos":[{"mask-radial-from":R()}],"mask-image-radial-to-pos":[{"mask-radial-to":R()}],"mask-image-radial-from-color":[{"mask-radial-from":j()}],"mask-image-radial-to-color":[{"mask-radial-to":j()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":_()}],"mask-image-conic-pos":[{"mask-conic":[U]}],"mask-image-conic-from-pos":[{"mask-conic-from":R()}],"mask-image-conic-to-pos":[{"mask-conic-to":R()}],"mask-image-conic-from-color":[{"mask-conic-from":j()}],"mask-image-conic-to-color":[{"mask-conic-to":j()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:ae()}],"mask-repeat":[{mask:oe()}],"mask-size":[{mask:M()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,X,q]}],filter:[{filter:[``,`none`,X,q]}],blur:[{blur:ce()}],brightness:[{brightness:[U,X,q]}],contrast:[{contrast:[U,X,q]}],"drop-shadow":[{"drop-shadow":[``,`none`,f,Te,Y]}],"drop-shadow-color":[{"drop-shadow":j()}],grayscale:[{grayscale:[``,U,X,q]}],"hue-rotate":[{"hue-rotate":[U,X,q]}],invert:[{invert:[``,U,X,q]}],saturate:[{saturate:[U,X,q]}],sepia:[{sepia:[``,U,X,q]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,X,q]}],"backdrop-blur":[{"backdrop-blur":ce()}],"backdrop-brightness":[{"backdrop-brightness":[U,X,q]}],"backdrop-contrast":[{"backdrop-contrast":[U,X,q]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,U,X,q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[U,X,q]}],"backdrop-invert":[{"backdrop-invert":[``,U,X,q]}],"backdrop-opacity":[{"backdrop-opacity":[U,X,q]}],"backdrop-saturate":[{"backdrop-saturate":[U,X,q]}],"backdrop-sepia":[{"backdrop-sepia":[``,U,X,q]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":x()}],"border-spacing-x":[{"border-spacing-x":x()}],"border-spacing-y":[{"border-spacing-y":x()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,X,q]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[U,`initial`,X,q]}],ease:[{ease:[`linear`,`initial`,h,X,q]}],delay:[{delay:[U,X,q]}],animate:[{animate:[`none`,ne,X,q]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[m,X,q]}],"perspective-origin":[{"perspective-origin":v()}],rotate:[{rotate:z()}],"rotate-x":[{"rotate-x":z()}],"rotate-y":[{"rotate-y":z()}],"rotate-z":[{"rotate-z":z()}],scale:[{scale:B()}],"scale-x":[{"scale-x":B()}],"scale-y":[{"scale-y":B()}],"scale-z":[{"scale-z":B()}],"scale-3d":[`scale-3d`],skew:[{skew:V()}],"skew-x":[{"skew-x":V()}],"skew-y":[{"skew-y":V()}],transform:[{transform:[X,q,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:v()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:K()}],"translate-x":[{"translate-x":K()}],"translate-y":[{"translate-y":K()}],"translate-z":[{"translate-z":K()}],"translate-none":[`translate-none`],accent:[{accent:j()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:j()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,X,q]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":x()}],"scroll-mx":[{"scroll-mx":x()}],"scroll-my":[{"scroll-my":x()}],"scroll-ms":[{"scroll-ms":x()}],"scroll-me":[{"scroll-me":x()}],"scroll-mbs":[{"scroll-mbs":x()}],"scroll-mbe":[{"scroll-mbe":x()}],"scroll-mt":[{"scroll-mt":x()}],"scroll-mr":[{"scroll-mr":x()}],"scroll-mb":[{"scroll-mb":x()}],"scroll-ml":[{"scroll-ml":x()}],"scroll-p":[{"scroll-p":x()}],"scroll-px":[{"scroll-px":x()}],"scroll-py":[{"scroll-py":x()}],"scroll-ps":[{"scroll-ps":x()}],"scroll-pe":[{"scroll-pe":x()}],"scroll-pbs":[{"scroll-pbs":x()}],"scroll-pbe":[{"scroll-pbe":x()}],"scroll-pt":[{"scroll-pt":x()}],"scroll-pr":[{"scroll-pr":x()}],"scroll-pb":[{"scroll-pb":x()}],"scroll-pl":[{"scroll-pl":x()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,X,q]}],fill:[{fill:[`none`,...j()]}],"stroke-w":[{stroke:[U,Z,J,ge]}],stroke:[{stroke:[`none`,...j()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function Ie(...t){return Fe(e(t))}var Le=n(),Re=l(`group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4`,{variants:{variant:{default:`bg-primary text-primary-foreground [a]:hover:bg-primary/80`,outline:`border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50`,secondary:`bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground`,ghost:`hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50`,destructive:`bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40`,link:`text-primary underline-offset-4 hover:underline`},size:{default:`h-8 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2`,xs:`h-6 gap-1 rounded-[min(var(--radius-md),10px)] px-2 text-xs in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3`,sm:`h-7 gap-1 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] in-data-[slot=button-group]:rounded-lg has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5`,lg:`h-9 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3`,icon:`size-8`,"icon-xs":`size-6 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-lg [&_svg:not([class*='size-'])]:size-3`,"icon-sm":`size-7 rounded-[min(var(--radius-md),12px)] in-data-[slot=button-group]:rounded-lg`,"icon-lg":`size-9`}},defaultVariants:{variant:`default`,size:`default`}});function ze({className:e,variant:t=`default`,size:n=`default`,...i}){return(0,Le.jsx)(r,{"data-slot":`button`,className:Ie(Re({variant:t,size:n,className:e})),...i})}t();function Be({className:e,type:t,...n}){return(0,Le.jsx)(i,{type:t,"data-slot":`input`,className:Ie(`h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40`,e),...n})}export{l as a,Ie as i,ze as n,o,Re as r,Be as t};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{a as t,i as n,n as r,r as i,s as a,t as o}from"./vendor-charts-CAZdaPlq.js";import{at as s}from"./vendor-ui-ByahnaY0.js";import{a as c}from"./api-4AqKvsm9.js";import{r as l,t as u}from"./query-keys-BvtE7BMs.js";import{t as d}from"./createLucideIcon-Bwxw859K.js";import{t as f}from"./activity-DsWeRq4h.js";import{i as p,n as m,t as h}from"./input-BWEQFptx.js";import{n as g,r as _,t as v}from"./copy-button-WkbNkMcd.js";import{t as y}from"./gauge-Ci8zNZlk.js";import{a as b,c as x,i as S,s as ee}from"./blueprint-card-classes-DBFCDy0M.js";import{t as C}from"./radio-CoHegOv5.js";import{t as w}from"./triangle-alert-adNk_sea.js";import{c as te,l as ne}from"./chunk-OE4NN4TA-CEjpfhS6.js";import{o as re,s as T}from"./validation-Blvud9_O.js";import{i as E,n as D,t as O}from"./tooltip-HGLF366Q.js";import{t as ie}from"./transition-types-CPlGtM8w.js";import{i as k}from"./engine-store-CrLnz692.js";import{a as A,c as j,i as M,l as N,n as P,o as F,r as I,t as L,u as R}from"./format-kXTonpDJ.js";import{n as ae,r as oe,t as se}from"./get-error-message-3Q5Q-2G5.js";import{n as z,t as B}from"./card-BjeP32PN.js";var ce=d(`layers-2`,[[`path`,{d:`M13 13.74a2 2 0 0 1-2 0L2.5 8.87a1 1 0 0 1 0-1.74L11 2.26a2 2 0 0 1 2 0l8.5 4.87a1 1 0 0 1 0 1.74z`,key:`15q6uc`}],[`path`,{d:`m20 14.285 1.5.845a1 1 0 0 1 0 1.74L13 21.74a2 2 0 0 1-2 0l-8.5-4.87a1 1 0 0 1 0-1.74l1.5-.845`,key:`byia6g`}]]),le=d(`signal`,[[`path`,{d:`M2 20h.01`,key:`4haj6o`}],[`path`,{d:`M7 20v-4`,key:`j294jx`}],[`path`,{d:`M12 20v-8`,key:`i3yub9`}],[`path`,{d:`M17 20V8`,key:`1tkaf5`}],[`path`,{d:`M22 4v16`,key:`sih9yq`}]]),ue=d(`timer`,[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]),V=e(a(),1),H=s();function de({detail:e,tick:t,onBack:n}){return(0,H.jsx)(`header`,{className:`w-full min-w-0`,children:(0,H.jsxs)(`div`,{className:p(b,`flex flex-col gap-4 p-5`),children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between sm:gap-4`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:n,className:`transition-colors hover:text-foreground`,children:`Fleet`}),(0,H.jsx)(`span`,{children:`/`}),(0,H.jsx)(`span`,{children:`Instance`})]}),(0,H.jsx)(V.ViewTransition,{name:`instance-${e.id}`,default:`none`,children:(0,H.jsx)(`h2`,{className:`font-heading mt-0.5 text-2xl font-semibold tracking-tight`,children:I(e.id)})}),(0,H.jsxs)(`div`,{className:`mt-1 flex min-w-0 items-center gap-1.5`,children:[(0,H.jsx)(`p`,{className:`m-0 min-w-0 flex-1 font-mono text-[10px] leading-tight tracking-tight text-muted-foreground`,children:(0,H.jsx)(`span`,{className:`break-all`,children:e.browsePath.join(` / `)})}),(0,H.jsx)(`span`,{className:`inline-flex shrink-0`,children:(0,H.jsx)(v,{value:P(e.browsePath),label:`Copy Topic / UNS path`})})]})]}),(0,H.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 self-end sm:self-start px-3 py-2 font-mono text-xs`,children:[(0,H.jsx)(C,{className:`size-3.5 animate-pulse text-primary`,"aria-hidden":!0}),(0,H.jsx)(`span`,{className:`font-medium text-primary`,children:`LIVE`}),(0,H.jsxs)(`span`,{className:`text-muted-foreground tabular-nums`,children:[`t=`,t]})]})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-t border-border/50 pt-4`,children:[(0,H.jsx)(`span`,{className:`blueprint-title text-muted-foreground`,children:`Model`}),(0,H.jsx)(`span`,{className:`border border-border/60 bg-transparent px-2 py-0.5 font-mono text-xs text-foreground`,children:M(e.assetType)})]})]})})}function fe({detail:e,activeFaults:t,memberValues:n}){let r=t.length,i=e.isQuarantined,a=`OK`,o=`ok`;r>0?(a=`FAULT`,o=`bad`):i&&(a=`QRTN`,o=`warn`);let s=0;if(n)for(let e of n.values())e.quality!==`good`&&s++;let c=Object.keys(e.members).length;return(0,H.jsx)(`fieldset`,{"aria-label":`Instance status`,className:`m-0 border-0 p-0`,children:(0,H.jsxs)(`div`,{className:S,children:[(0,H.jsx)(`div`,{className:`border-b border-border/50 px-4 pb-3 pt-2`,children:(0,H.jsx)(`span`,{className:`blueprint-title text-muted-foreground`,children:`Status`})}),(0,H.jsxs)(`div`,{className:`grid grid-cols-2 gap-px bg-transparent md:grid-cols-3 xl:grid-cols-6`,children:[(0,H.jsx)(U,{icon:f,label:`Health`,value:a,tone:o}),(0,H.jsx)(U,{icon:ce,label:`Lifecycle`,labelCompact:`Life`,value:e.lifecycleStage,tone:`neutral`}),(0,H.jsx)(U,{icon:w,label:`Active faults`,labelCompact:`Faults`,value:String(r),tone:r>0?`bad`:`neutral`}),(0,H.jsx)(U,{icon:y,label:`Tags`,value:String(c),tone:`neutral`}),(0,H.jsx)(U,{icon:le,label:`Bad quality`,labelCompact:`Bad qual.`,value:String(s),tone:s>0?`warn`:`neutral`}),(0,H.jsx)(U,{icon:ue,label:`Operation hours`,labelCompact:`Op. hours`,value:F(e.operatingHours),tone:`neutral`})]})]})})}function U({icon:e,label:t,labelCompact:n,value:r,suffix:i,tone:a}){return(0,H.jsxs)(`div`,{className:p(`relative flex min-h-14 min-w-0 flex-col justify-center gap-1 px-3 py-3 sm:min-h-15 sm:px-4 lg:min-h-17 lg:px-5`),children:[(0,H.jsx)(`div`,{className:`flex min-h-0 min-w-0 items-center gap-2`,children:(0,H.jsxs)(O,{children:[(0,H.jsxs)(E,{className:`flex min-h-0 min-w-0 flex-1 cursor-default items-center gap-2 text-left`,render:(0,H.jsx)(`div`,{}),children:[(0,H.jsx)(e,{className:`size-3.5 shrink-0 text-muted-foreground`,"aria-hidden":!0}),(0,H.jsxs)(`span`,{className:`min-w-0 flex-1 text-[9px] leading-snug font-medium tracking-wide text-muted-foreground uppercase sm:text-[10px] 2xl:tracking-wider`,children:[(0,H.jsx)(`span`,{className:`block wrap-break-word 2xl:hidden`,children:n??t}),(0,H.jsx)(`span`,{className:`hidden wrap-break-word 2xl:block`,children:t})]})]}),(0,H.jsx)(D,{side:`top`,align:`start`,sideOffset:6,className:`max-w-xs`,children:t})]})}),(0,H.jsxs)(`p`,{className:p(`min-w-0 wrap-break-word font-mono text-base font-semibold leading-tight tracking-tight tabular-nums lg:text-lg`,a===`ok`&&`text-success`,a===`warn`&&`text-warning`,a===`bad`&&`text-destructive`,a===`neutral`&&`text-foreground`),children:[r,i?(0,H.jsx)(`span`,{className:`ml-0.5 text-xs font-medium text-muted-foreground lg:text-sm`,children:i}):null]})]})}function W({title:e,subtitle:t,children:n,className:r,id:i}){return(0,H.jsxs)(`section`,{id:i,className:p(S,r),children:[(0,H.jsxs)(`div`,{className:`border-b border-border/60 px-4 py-3`,children:[(0,H.jsx)(`h3`,{className:`blueprint-title text-foreground`,children:e}),t?(0,H.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:t}):null]}),(0,H.jsx)(`div`,{className:`overflow-hidden p-0`,children:n})]})}var G=`bg-transparent dark:bg-transparent`;function pe(e,t){return t.includes(`rpm`)||t.includes(`speed`)?`e.g. 2500`:t.includes(`temp`)?`e.g. 70.0`:t.includes(`pressure`)?`e.g. 4.5`:e===`Boolean`?`true / false`:e===`String`?`value`:`e.g. 100`}function me({detail:e,methodArgs:t,setMethodArgs:n,onInvoke:r,className:i}){let a=Object.entries(e.methods);if(a.length===0)return null;let o=a.filter(([,e])=>e.inputArguments.length===0),s=a.filter(([,e])=>e.inputArguments.length>0);return(0,H.jsx)(W,{title:`Commands`,subtitle:`Executable methods on this asset`,className:i,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[o.length>0&&(0,H.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:o.map(([e,t])=>t.description?(0,H.jsxs)(O,{children:[(0,H.jsx)(E,{render:(0,H.jsxs)(m,{size:`sm`,variant:`outline`,className:p(`h-8 gap-1.5 font-mono text-xs`,G),onClick:()=>r(e),children:[(0,H.jsx)(x,{className:`size-3`}),e]})}),(0,H.jsx)(D,{side:`bottom`,className:`max-w-xs`,children:t.description})]},e):(0,H.jsxs)(m,{size:`sm`,variant:`outline`,className:p(`h-8 gap-1.5 font-mono text-xs`,G),onClick:()=>r(e),children:[(0,H.jsx)(x,{className:`size-3`}),e]},e))}),s.length>0&&o.length>0&&(0,H.jsx)(T,{className:`bg-border/60`}),s.map(([e,i])=>(0,H.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`p`,{className:`font-mono text-sm font-medium`,children:e}),i.description&&(0,H.jsx)(`p`,{className:`mt-0.5 text-[10px] text-muted-foreground`,children:i.description})]}),(0,H.jsxs)(m,{size:`sm`,variant:`default`,className:`shrink-0`,onClick:()=>r(e),children:[(0,H.jsx)(x,{className:`mr-1 size-3`}),`Execute`]})]}),(0,H.jsx)(`div`,{className:`mt-3 flex flex-col gap-1.5 border-t border-border/50 pt-3`,children:i.inputArguments.map(r=>(0,H.jsxs)(`div`,{className:`flex items-start gap-2`,children:[(0,H.jsx)(`span`,{title:r.name,className:`w-28 shrink-0 truncate pt-1.5 font-mono text-[10px] leading-tight text-muted-foreground`,children:r.name}),(0,H.jsx)(h,{className:`h-7 flex-1 font-mono text-xs`,placeholder:pe(r.dataType,r.name),value:t[e]?.[r.name]??``,onChange:t=>n(n=>({...n,[e]:{...n[e],[r.name]:t.target.value}}))})]},r.name))})]},e))]})})}function he({activeFaults:e,availableFaults:t,onTriggerFault:n,onClearFault:r,className:i}){return(0,H.jsx)(W,{id:`faults`,title:`Alarms`,subtitle:`Active faults and injectable failure modes (simulation)`,className:i,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 p-4`,children:[e.length>0?(0,H.jsx)(`div`,{className:`flex flex-col gap-2`,children:e.map(e=>(0,H.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-md border border-destructive/30 bg-transparent py-2.5 pl-3 pr-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,H.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,H.jsx)(w,{className:`size-4 shrink-0 text-destructive`}),(0,H.jsx)(`span`,{className:`font-mono text-sm font-medium text-destructive`,children:e})]}),(0,H.jsxs)(m,{size:`sm`,variant:`outline`,className:p(`h-8 shrink-0 gap-1 border-destructive/30 px-2.5 font-mono text-[0.75rem] text-destructive shadow-none`,`hover:border-destructive/45 hover:bg-destructive/5 hover:text-destructive`,`focus-visible:border-destructive/40 focus-visible:ring-destructive/20`,G),onClick:()=>r(e),children:[(0,H.jsx)(g,{className:`size-3.5`,"aria-hidden":!0}),`Clear`]})]},e))}):(0,H.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-muted-foreground`,children:[(0,H.jsx)(_,{className:`size-4 text-success`}),`All clear — no active faults`]}),t.length>0&&(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(T,{className:`bg-border/60`}),(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(`p`,{className:`blueprint-title mb-2 text-muted-foreground`,children:[`Inject fault`,(0,H.jsxs)(R,{variant:`secondary`,className:`ml-2 text-[10px]`,children:[t.filter(t=>!e.includes(t)).length,` available`]})]}),(0,H.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:t.filter(t=>!e.includes(t)).map(e=>(0,H.jsx)(m,{size:`sm`,variant:`outline`,className:p(`h-7 font-mono text-[10px]`,G),onClick:()=>n(e),children:e},e))})]})]})]})})}function K({className:e,counters:t,memberValues:n}){return(0,H.jsx)(W,{title:`Counters`,subtitle:`Totals, hours, and accumulators`,className:e,children:(0,H.jsx)(`div`,{className:`flex flex-col gap-2 p-4`,children:t.map(([e,t])=>{let r=n?.get(e),i=r?r.value:t.value;return(0,H.jsxs)(`div`,{className:`flex items-center justify-between rounded-md border border-border/60 bg-transparent px-3 py-2`,children:[(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:j(e)}),(0,H.jsxs)(`span`,{className:`blueprint-stat text-sm font-medium`,children:[typeof i==`number`?A(i):String(i),t.meta.unit&&(0,H.jsx)(`span`,{className:`ml-1 text-[10px] text-muted-foreground`,children:N(t.meta.unit)})]})]},e)})})})}function q({className:e,detail:t,referenceMembers:n,memberValues:r}){return(0,H.jsx)(W,{title:`Nameplate & configuration`,subtitle:`Design parameters, identity, and reference values`,className:e,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-4 p-4`,children:[Object.keys(t.parameters).length>0&&(0,H.jsx)(`div`,{className:`grid grid-cols-2 gap-2 sm:grid-cols-3`,children:Object.entries(t.parameters).map(([e,t])=>(0,H.jsxs)(`div`,{className:`flex flex-col gap-0.5 py-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:j(e)}),(0,H.jsxs)(`span`,{className:`font-mono text-sm font-medium`,children:[typeof t.value==`number`?A(t.value):String(t.value),t.unit&&(0,H.jsx)(`span`,{className:`ml-1 text-[10px] text-muted-foreground`,children:N(t.unit)})]})]},e))}),n.length>0&&(0,H.jsx)(`div`,{className:`grid grid-cols-2 gap-2 sm:grid-cols-3`,children:n.map(([e,t])=>{let n=r?.get(e),i=n?n.value:t.value;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-0.5 rounded-md border border-border/60 bg-transparent p-2`,children:[(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:j(e)}),(0,H.jsxs)(`span`,{className:`font-mono text-sm font-medium`,children:[typeof i==`number`?A(i):String(i),t.meta.unit&&(0,H.jsx)(`span`,{className:`ml-1 text-[10px] text-muted-foreground`,children:N(t.meta.unit)})]})]},e)})})]})})}var ge=new Set([`pu`,`h`]),J=[`_reference`,`_baseline`,`_setpoint`,`_command`],_e=new Set([`faulted`,`critical`,`stopped`,`emergency`]),ve=new Set([`degraded`,`uncertain`]),Y=`var(--color-primary, #e5a218)`,ye=`var(--color-background, #0a0a0f)`;function be(e){return Object.entries(e.members).filter(([e,t])=>t.meta.kind===`variable`&&t.meta.access===`read`&&t.meta.dataType===`Double`&&t.meta.euRange!==null&&!ge.has(t.meta.unit??``)&&!J.some(t=>e.endsWith(t)))}function xe(e){if(e.length<3)return!1;let t=e[0]?.value??0;return e.some(e=>Math.abs(e.value-t)>.001)}function Se({data:e,chartHeight:a=34}){let s=(0,V.useId)(),[c,l]=(0,V.useState)(null),u=e.map(e=>e.value),d=Math.min(...u),f=Math.max(...u);return(0,H.jsxs)(`div`,{className:`flex min-h-0 w-full flex-col overflow-hidden`,style:{height:a+14},children:[(0,H.jsx)(`div`,{style:{height:a,width:`100%`},children:(0,H.jsx)(n,{width:`100%`,height:a,children:(0,H.jsxs)(o,{data:e,margin:{top:2,right:2,bottom:2,left:0},onMouseMove:e=>{let t=e?.activePayload?.[0]?.value;typeof t==`number`&&l(t)},onMouseLeave:()=>l(null),children:[(0,H.jsx)(`defs`,{children:(0,H.jsxs)(`linearGradient`,{id:s,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,H.jsx)(`stop`,{offset:`0%`,stopColor:Y,stopOpacity:.3}),(0,H.jsx)(`stop`,{offset:`100%`,stopColor:Y,stopOpacity:0})]})}),(0,H.jsx)(r,{domain:[`auto`,`auto`],hide:!0}),(0,H.jsx)(t,{content:()=>null,cursor:!1}),(0,H.jsx)(i,{type:`monotone`,dataKey:`value`,stroke:Y,strokeWidth:1.5,fill:`url(#${s})`,isAnimationActive:!1,dot:!1,activeDot:{r:3,fill:Y,stroke:ye,strokeWidth:1.5}})]})})}),(0,H.jsx)(`span`,{className:`text-[9px] leading-none text-muted-foreground`,children:c===null?(0,H.jsxs)(H.Fragment,{children:[A(d),`–`,A(f)]}):(0,H.jsx)(`span`,{className:`font-medium text-primary`,children:A(c)})})]})}function Ce({detail:e,processVariables:t,memberValues:n,historyRef:r,showQuality:i}){return t.length===0?(0,H.jsx)(W,{title:`Process`,subtitle:`Live analog readings — none defined for this asset`,className:`opacity-90`,children:(0,H.jsx)(`p`,{className:`px-4 py-6 text-center text-sm text-muted-foreground`,children:`No process variables (Double, read, ranged) on this model.`})}):(0,H.jsx)(W,{title:`Process`,subtitle:`Live sensor readings — trend is ~2 min at 1 Hz`,children:(0,H.jsx)(`div`,{className:`divide-y divide-border/50`,children:t.map(([t,a])=>{let o=n?.get(t),s=o?o.value:a.value,c=o?o.quality:a.quality,l=r.current.get(t)??[],u=L(e.browsePath,t),d=l.length>2&&xe(l);return(0,H.jsxs)(`div`,{className:`flex flex-col gap-2 px-4 py-3 sm:flex-row sm:items-center sm:gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex min-w-0 shrink-0 items-center gap-1 sm:w-44 lg:w-52`,children:[(0,H.jsx)(`span`,{className:`truncate text-xs font-medium text-foreground`,children:j(t)}),(0,H.jsx)(v,{value:u,label:`Copy Topic / UNS path`})]}),(0,H.jsxs)(`div`,{className:`relative min-h-[50px] min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`absolute inset-x-0 top-[calc(50%-7px)] h-px bg-border/35`,"aria-hidden":!0}),d?(0,H.jsx)(Se,{data:l,chartHeight:36}):(0,H.jsx)(`p`,{className:`flex h-[50px] items-center text-[10px] text-muted-foreground`,children:`Flat / ramping…`})]}),(0,H.jsxs)(`div`,{className:`flex shrink-0 flex-col items-end gap-0.5 sm:w-30`,children:[(0,H.jsx)(`span`,{className:`blueprint-stat text-lg font-semibold leading-none tabular-nums text-foreground`,children:typeof s==`number`?A(s):String(s)}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-end gap-1.5`,children:[(0,H.jsx)(`span`,{className:`text-[10px] text-muted-foreground`,children:N(a.meta.unit)||`—`}),i&&c!==`good`&&(0,H.jsx)(R,{variant:c===`uncertain`?`secondary`:`destructive`,className:`text-[10px]`,children:c})]})]})]},t)})})})}function X({name:e,value:t,dataType:n,unit:r,access:i}){let a=j(e),o=i===`readwrite`;if(n===`Boolean`||typeof t==`boolean`||r===`pu`&&(t===0||t===1)){let n=t===!0||t===`true`||t===1,r=e.includes(`fault`);return(0,H.jsxs)(`div`,{className:`flex min-h-9 min-w-0 items-center justify-between gap-2 rounded-md border px-2 py-1 ${r&&n?`border-destructive/30 bg-transparent`:``}`,children:[(0,H.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-left text-[10px] leading-snug text-muted-foreground`,children:[a,o&&(0,H.jsx)(`span`,{className:`ml-1 text-[8px] text-primary`,children:`CMD`})]}),(0,H.jsx)(`span`,{className:`shrink-0 font-mono text-xs font-medium tabular-nums ${r&&n?`text-destructive`:n?`text-success`:`text-muted-foreground`}`,children:n?`ON`:`OFF`})]})}if(n===`String`){let n=String(t),r=n===`none`||n===``,i=_e.has(n)||e.includes(`fault_code`)&&!r,o=!i&&ve.has(n);return(0,H.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-col justify-center gap-1 rounded-md border px-2 py-2 ${i?`border-destructive/30 bg-transparent`:o?`border-warning/30 bg-warning/5`:``}`,children:[(0,H.jsx)(`span`,{className:`wrap-break-word text-[10px] leading-tight text-muted-foreground`,children:a}),r?(0,H.jsx)(`span`,{className:`wrap-break-word font-mono text-sm font-medium leading-snug text-muted-foreground`,children:`—`}):(0,H.jsx)(`span`,{className:`wrap-break-word font-mono text-sm font-medium leading-snug ${i?`text-destructive`:o?`text-warning`:`text-foreground`}`,children:n})]})}return(0,H.jsxs)(`div`,{className:`flex min-h-9 min-w-0 items-center justify-between gap-2 rounded-md border px-2 py-1`,children:[(0,H.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-left text-[10px] leading-snug text-muted-foreground`,children:[a,o&&(0,H.jsx)(`span`,{className:`ml-1 text-[8px] text-primary`,children:`CMD`})]}),(0,H.jsxs)(`span`,{className:`shrink-0 text-right font-mono text-xs font-medium tabular-nums`,children:[typeof t==`number`?A(t):String(t),r&&(0,H.jsx)(`span`,{className:`ml-1 text-[10px] text-muted-foreground`,children:N(r)})]})]})}var we=120,Z=`gap-4 sm:gap-5 lg:gap-x-6 lg:gap-y-5 xl:gap-x-8`,Q=p(`grid min-w-0 grid-cols-1 lg:grid-cols-2 lg:items-start`,Z),$=`grid min-w-0 gap-2 [grid-template-columns:repeat(auto-fill,minmax(min(100%,12.5rem),1fr))]`;function Te(){return(0,H.jsxs)(`div`,{className:`mx-auto flex min-h-full w-full max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,H.jsx)(`div`,{className:`h-10 w-72 animate-pulse rounded-md bg-muted/40`}),(0,H.jsx)(`div`,{className:`h-16 w-full animate-pulse rounded-lg border border-border/50 bg-card/40`}),(0,H.jsx)(`div`,{className:`h-56 w-full animate-pulse rounded-lg border border-border/50 bg-card/40`}),(0,H.jsxs)(`div`,{className:`grid grid-cols-1 gap-4 lg:grid-cols-2`,children:[(0,H.jsx)(`div`,{className:`h-48 animate-pulse rounded-lg border border-border/50 bg-card/30`}),(0,H.jsx)(`div`,{className:`h-48 animate-pulse rounded-lg border border-border/50 bg-card/30`})]})]})}function Ee(e){return e instanceof Error&&`code`in e&&e.code===`NOT_FOUND`?!0:e instanceof Error&&/^404\b/.test(e.message.trim())}function De(){let{id:e}=ne(),t=te(),n=(0,V.useCallback)(()=>{(0,V.startTransition)(()=>{(0,V.addTransitionType)(ie),t(`/`)})},[t]),[r,i]=(0,V.useState)({}),a=ee(),o=l({queryKey:u.instances.detail(e??``),queryFn:()=>c(`/instances/${e}`),enabled:e!==void 0}),s=o.data??null,d=o.isError,f=k(e=>e.memberValues),h=(0,V.useMemo)(()=>e?f.get(e):void 0,[f,e]),g=k(e=>e.models),_=k(e=>e.instances),v=(0,V.useMemo)(()=>_.find(t=>t.id===e)?.activeFaults??[],[_,e]),y=(0,V.useRef)(new Map),b=k(e=>e.tick);(0,V.useEffect)(()=>{if(!h||!e)return;let t=y.current;for(let[e,n]of h){if(typeof n.value!=`number`)continue;let r=t.get(e);r||(r=[],t.set(e,r)),(r.length===0||r[r.length-1]?.tick!==b)&&(r.push({value:n.value,tick:b}),r.length>we&&r.shift())}},[h,b,e]);let x=(0,V.useMemo)(()=>s?be(s):[],[s]),S=(0,V.useMemo)(()=>{if(!s)return{operational:[],counters:[],reference:[]};let e=new Set(x.map(([e])=>e)),t=Object.entries(s.members).filter(([t])=>!e.has(t)),n=[],r=[],i=[];for(let e of t){let[,t]=e,a=t.meta.dataType,o=t.meta.kind,s=t.meta.unit,c=s===`pu`&&t.meta.euRange?.[0]===0&&t.meta.euRange?.[1]===1;o===`property`?i.push(e):a===`Boolean`||a===`String`||c?n.push(e):s===`count`||a===`UInt16`||a===`UInt32`?r.push(e):t.meta.access===`readwrite`||J.some(t=>e[0].endsWith(t))?n.push(e):s===`pu`||s===`h`?r.push(e):i.push(e)}return{operational:n,counters:r,reference:i}},[s,x]),C=(0,V.useMemo)(()=>s?g.find(e=>e.name===s.assetType)?.faultNames??[]:[],[s,g]),w=v??s?.activeFaults??[],T=(0,V.useMemo)(()=>{if(!h)return w.length>0;for(let[,e]of h)if(e.quality!==`good`)return!0;return!1},[h,w.length]),E=(0,V.useMemo)(()=>S.operational.filter(([,e])=>e.meta.dataType===`String`),[S.operational]),D=(0,V.useMemo)(()=>S.operational.filter(([,e])=>e.meta.dataType!==`String`),[S.operational]),O=t=>{if(!e)return;let n={},i=s?.methods[t];if(i)for(let e of i.inputArguments){let i=r[t]?.[e.name]??``,a=re(e.name,i,e.dataType);if(!a)return;n[e.name]=a.value}a.mutate({type:`invokeMethod`,instanceId:e,method:t,arguments:n})},A=t=>{e&&a.mutate({type:`triggerFault`,instanceId:e,fault:t})},j=t=>{e&&a.mutate({type:`clearFault`,instanceId:e,fault:t})};if(!s)return d?Ee(o.error)?(0,H.jsx)(`div`,{className:`flex min-h-[40vh] items-center justify-center p-6 sm:p-12`,children:(0,H.jsx)(`div`,{className:`w-full max-w-md`,children:(0,H.jsxs)(oe,{eyebrow:`Instance lookup`,stamp:`404`,title:`Instance not found`,detail:e??`Unknown instance id`,detailLabel:`Requested instance`,primaryLabel:`Back to Fleet`,onPrimary:n,children:[(0,H.jsx)(`p`,{children:`The requested asset is no longer in the running fleet or the URL is wrong.`}),(0,H.jsx)(`p`,{children:`Return to Fleet and pick a live instance from the current simulation.`})]})})}):(0,H.jsxs)(`div`,{className:`flex min-h-[40vh] flex-col items-center justify-center gap-4 p-6 sm:p-12`,children:[(0,H.jsx)(`div`,{className:`w-full max-w-md`,children:(0,H.jsx)(ae,{message:se(o.error,`Could not load instance.`),onRetry:()=>void o.refetch(),isRetrying:o.isFetching})}),(0,H.jsx)(m,{variant:`outline`,size:`sm`,onClick:n,children:`Back to Fleet`})]}):(0,H.jsx)(Te,{});let M=S.operational.length>0,N=S.counters.length>0,P=S.reference.length>0||Object.keys(s.parameters).length>0,F=Object.keys(s.methods).length>0,I=M&&!N&&!P,L=M&&N&&P;return(0,H.jsxs)(`div`,{className:`mx-auto flex min-h-full w-full max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,H.jsx)(de,{detail:s,tick:b,onBack:n}),(0,H.jsx)(fe,{detail:s,activeFaults:w,memberValues:h}),(0,H.jsx)(B,{className:`rounded-none border-0 bg-transparent p-0 shadow-none`,children:(0,H.jsx)(z,{className:p(Q,`p-0`),children:(0,H.jsx)(`div`,{className:`min-h-0 min-w-0 self-stretch lg:col-span-2`,children:(0,H.jsx)(Ce,{detail:s,processVariables:x,memberValues:h,historyRef:y,showQuality:T})})})}),(M||N||P)&&(0,H.jsx)(B,{className:`rounded-none border-0 bg-transparent p-0 shadow-none`,children:(0,H.jsxs)(z,{className:p(`grid min-w-0 grid-cols-1 p-0`,Z,L&&`lg:grid-cols-2 lg:grid-rows-[auto_auto] lg:items-start`,!L&&M&&(N||P)&&`lg:grid-cols-2 lg:items-start`),children:[M&&(0,H.jsx)(W,{title:`Tags`,subtitle:`Mode, status flags, and control tags`,className:p(`min-h-0 min-w-0 self-stretch`,I&&`lg:col-span-2`,L&&`lg:row-span-2`),children:(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-4 p-4`,children:[E.length>0&&(0,H.jsx)(`div`,{className:$,children:E.map(([e,t])=>{let n=h?.get(e);return(0,H.jsx)(X,{name:e,value:n?n.value:t.value,dataType:t.meta.dataType,unit:t.meta.unit,access:t.meta.access},e)})}),D.length>0&&(0,H.jsx)(`div`,{className:$,children:D.map(([e,t])=>{let n=h?.get(e);return(0,H.jsx)(X,{name:e,value:n?n.value:t.value,dataType:t.meta.dataType,unit:t.meta.unit,access:t.meta.access},e)})})]})}),!M&&N&&P&&(0,H.jsxs)(`div`,{className:`flex min-h-0 min-w-0 flex-col gap-4 lg:col-span-2`,children:[(0,H.jsx)(K,{counters:S.counters,memberValues:h}),(0,H.jsx)(q,{detail:s,referenceMembers:S.reference,memberValues:h})]}),!M&&N&&!P&&(0,H.jsx)(K,{className:`lg:col-span-2`,counters:S.counters,memberValues:h}),!M&&!N&&P&&(0,H.jsx)(q,{className:`lg:col-span-2`,detail:s,referenceMembers:S.reference,memberValues:h}),M&&N&&(0,H.jsx)(K,{className:`min-h-0 min-w-0 self-stretch lg:col-start-2 lg:row-start-1`,counters:S.counters,memberValues:h}),M&&P&&(0,H.jsx)(q,{className:p(`min-h-0 min-w-0 self-stretch lg:col-start-2`,L?`lg:row-start-2`:`lg:row-start-1`),detail:s,referenceMembers:S.reference,memberValues:h})]})}),(0,H.jsx)(B,{className:`rounded-none border-0 bg-transparent p-0 shadow-none`,children:(0,H.jsxs)(z,{className:p(Q,`p-0`),children:[(0,H.jsx)(he,{className:p(`min-h-0 min-w-0 self-stretch`,!F&&`lg:col-span-2`),activeFaults:w,availableFaults:C,onTriggerFault:A,onClearFault:j}),(0,H.jsx)(me,{className:`min-h-0 min-w-0 self-stretch`,detail:s,methodArgs:r,setMethodArgs:i,onInvoke:O})]})})]})}export{De as InstanceDetailPage};
@@ -1 +0,0 @@
1
- import{$ as e,J as t,Q as n,X as r,Y as i,Z as a,at as o,q as s}from"./vendor-ui-ByahnaY0.js";import{i as c,n as l}from"./input-BWEQFptx.js";import{l as u}from"./select-CeO4vP0G.js";var d=o();function f({...e}){return(0,d.jsx)(t,{"data-slot":`dialog`,...e})}function p({...e}){return(0,d.jsx)(i,{"data-slot":`dialog-portal`,...e})}function m({className:t,...n}){return(0,d.jsx)(e,{"data-slot":`dialog-overlay`,className:c(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,t),...n})}function h({className:e,children:t,showCloseButton:i=!0,...a}){return(0,d.jsxs)(p,{children:[(0,d.jsx)(m,{}),(0,d.jsxs)(r,{"data-slot":`dialog-content`,className:c(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,e),...a,children:[t,i&&(0,d.jsxs)(n,{"data-slot":`dialog-close`,render:(0,d.jsx)(l,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`}),children:[(0,d.jsx)(u,{}),(0,d.jsx)(`span`,{className:`sr-only`,children:`Close`})]})]})]})}function g({className:e,...t}){return(0,d.jsx)(`div`,{"data-slot":`dialog-header`,className:c(`flex flex-col gap-2`,e),...t})}function _({className:e,showCloseButton:t=!1,children:r,...i}){return(0,d.jsxs)(`div`,{"data-slot":`dialog-footer`,className:c(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t p-4 sm:flex-row sm:justify-end`,e),...i,children:[r,t&&(0,d.jsx)(n,{render:(0,d.jsx)(l,{variant:`outline`}),children:`Close`})]})}function v({className:e,...t}){return(0,d.jsx)(s,{"data-slot":`dialog-title`,className:c(`text-base leading-none font-medium`,e),...t})}function y({className:e,...t}){return(0,d.jsx)(a,{"data-slot":`dialog-description`,className:c(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,e),...t})}function b({className:e,...t}){return(0,d.jsx)(`label`,{"data-slot":`label`,className:c(`flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}export{_ as a,y as i,f as n,g as o,h as r,v as s,b as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-Bwxw859K.js";var t=e(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]);export{t};
@@ -1,126 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{s as t}from"./vendor-charts-CAZdaPlq.js";import{at as n}from"./vendor-ui-ByahnaY0.js";import{c as r,h as i,r as a}from"./api-4AqKvsm9.js";import{t as o}from"./use-transition-navigate-CCpcWXB0.js";import{t as s}from"./transition-nav-link-Df4Rk6vV.js";var c=e(t(),1),l=n(),u=`
2
- @keyframes readout-appear {
3
- from { opacity: 0; transform: translateY(8px) scale(0.95); }
4
- to { opacity: 1; transform: translateY(0) scale(1); }
5
- }
6
- @keyframes dot-pulse {
7
- 0%, 100% { opacity: 1; }
8
- 50% { opacity: 0.3; }
9
- }
10
- @keyframes login-glow-pulse {
11
- 0% { opacity: 0.75; transform: translate(-50%, -50%) scale(1); }
12
- 100% { opacity: 0.9; transform: translate(-50%, -50%) scale(1.03); }
13
- }
14
- @keyframes status-blink {
15
- 0%, 100% { opacity: 1; }
16
- 50% { opacity: 0.35; }
17
- }
18
- @keyframes live-dot {
19
- 0%, 100% { box-shadow: 0 0 0 0 rgba(229,162,24,0.2); }
20
- 50% { box-shadow: 0 0 0 2px rgba(229,162,24,0); }
21
- }
22
- @keyframes terminal-appear {
23
- from { opacity: 0; transform: translate(-50%, -50%) scale(0.96); }
24
- to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
25
- }
26
- @keyframes terminal-line {
27
- from { opacity: 0; transform: translateY(4px); }
28
- to { opacity: 1; transform: translateY(0); }
29
- }
30
- @keyframes cursor-blink {
31
- 0%, 49% { opacity: 0.8; }
32
- 50%, 100% { opacity: 0; }
33
- }
34
- @keyframes tree-line {
35
- from { opacity: 0; transform: translateX(-6px); }
36
- to { opacity: 1; transform: translateX(0); }
37
- }
38
-
39
- /* ── Layout ───────────────────────────────── */
40
- .login-page {
41
- display: grid;
42
- min-height: 100svh;
43
- grid-template-columns: 1.2fr 1fr;
44
- }
45
- .login-left { display: block; order: -1; }
46
-
47
- @media (max-width: 1023px) {
48
- .login-page { grid-template-columns: 1fr; }
49
- .login-left { display: none !important; }
50
- }
51
- @media (max-width: 640px) {
52
- .login-card { padding: 1.75rem !important; }
53
- .login-form-area { padding: 2rem 1.25rem !important; }
54
- .login-topbar { padding: 1rem 1.25rem !important; }
55
- .login-footer { padding: 0.75rem 1.25rem !important; }
56
- }
57
- @media (max-width: 400px) {
58
- .login-card { padding: 1.5rem !important; }
59
- .login-form-area { padding: 1.5rem 1rem !important; }
60
- .login-topbar { padding: 0.85rem 1rem !important; }
61
- .login-footer { padding: 0.65rem 1rem !important; }
62
- .miravo-input { padding: 0.8rem 0.9rem !important; font-size: 1rem !important; }
63
- .miravo-btn { padding: 0.9rem !important; font-size: 0.95rem !important; }
64
- }
65
-
66
- /* ── Form elements ────────────────────────── */
67
- .miravo-input {
68
- width: 100%;
69
- padding: 0.7rem 0.9rem;
70
- background: var(--miravo-secondary);
71
- border: 1px solid rgba(63,63,70,0.45);
72
- border-radius: 4px;
73
- color: var(--miravo-foreground);
74
- font-family: var(--font-body);
75
- font-size: 0.88rem;
76
- outline: none;
77
- transition: border-color 0.2s, box-shadow 0.2s;
78
- box-sizing: border-box;
79
- }
80
- .miravo-input:focus {
81
- border-color: rgba(212, 148, 15, 0.45);
82
- box-shadow: 0 0 0 3px rgba(212, 148, 15, 0.06);
83
- }
84
- .miravo-input::placeholder { color: rgba(63,63,70,0.7); }
85
-
86
- .miravo-btn {
87
- width: 100%;
88
- padding: 0.78rem;
89
- background: var(--miravo-primary);
90
- border: none;
91
- border-radius: 6px;
92
- color: var(--miravo-primary-foreground);
93
- font-family: var(--font-heading);
94
- font-size: 0.88rem;
95
- font-weight: 700;
96
- cursor: pointer;
97
- letter-spacing: -0.01em;
98
- box-shadow: 0 0 20px rgba(229,162,24,0.15), 0 1px 3px rgba(0,0,0,0.3);
99
- transition: all 0.2s ease;
100
- }
101
- .miravo-btn:hover:not(:disabled) {
102
- filter: brightness(1.1);
103
- box-shadow: 0 0 30px rgba(229,162,24,0.22), 0 2px 8px rgba(0,0,0,0.4);
104
- transform: translateY(-1px);
105
- }
106
- .miravo-btn:active:not(:disabled) { transform: translateY(0); }
107
- .miravo-btn:disabled { opacity: 0.5; cursor: not-allowed; }
108
-
109
- .miravo-btn-ghost {
110
- background: transparent;
111
- border: none;
112
- font-family: var(--font-body);
113
- font-size: 0.78rem;
114
- color: var(--miravo-muted-foreground);
115
- cursor: pointer;
116
- transition: color 0.2s;
117
- padding: 0;
118
- text-decoration: underline;
119
- text-underline-offset: 3px;
120
- text-decoration-color: transparent;
121
- }
122
- .miravo-btn-ghost:hover {
123
- color: var(--miravo-foreground);
124
- text-decoration-color: var(--miravo-gray-4);
125
- }
126
- `;function d({label:e,forId:t,children:n}){return(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`label`,{htmlFor:t,style:{fontFamily:`var(--font-mono)`,fontSize:`0.6rem`,color:`var(--miravo-gray-3)`,letterSpacing:`0.12em`,textTransform:`uppercase`,display:`block`,marginBottom:`0.5rem`},children:e}),n]})}function f({message:e}){return(0,l.jsx)(`p`,{style:{fontSize:`0.82rem`,color:`var(--miravo-destructive)`,textAlign:`center`,padding:`0.55rem 0.9rem`,background:`rgba(244, 63, 94, 0.06)`,border:`1px solid rgba(244, 63, 94, 0.12)`,borderRadius:6,margin:`0 0 1rem`},children:e})}function p({onChangePassword:e}){let t=o(),[n,a]=(0,c.useState)(``),[s,u]=(0,c.useState)(``),[p,m]=(0,c.useState)(``),[h,g]=(0,c.useState)(!1);async function _(a){a.preventDefault(),m(``),g(!0);try{(await r(n,s)).changePassword?e():(i.removeQueries({queryKey:[`bootstrap`]}),t(`/`,{replace:!0}))}catch(e){m(e instanceof Error?e.message:`Login failed`)}finally{g(!1)}}return(0,l.jsxs)(`form`,{onSubmit:_,children:[(0,l.jsxs)(`div`,{style:{marginBottom:`2rem`},children:[(0,l.jsx)(`div`,{style:{fontFamily:`var(--font-mono)`,fontSize:`0.52rem`,color:`var(--miravo-gray-4)`,letterSpacing:`0.14em`,textTransform:`uppercase`,marginBottom:`0.7rem`},children:`SYS.AUTH — OPERATOR LOGIN`}),(0,l.jsx)(`h1`,{style:{fontFamily:`var(--font-heading)`,fontSize:`1.5rem`,fontWeight:800,color:`var(--miravo-foreground)`,letterSpacing:`-0.035em`,lineHeight:1.15,margin:0},children:`Log in`}),(0,l.jsx)(`p`,{style:{fontSize:`0.82rem`,color:`var(--miravo-muted-foreground)`,marginTop:`0.4rem`,lineHeight:1.5},children:`Authenticate to access the control console`})]}),p&&(0,l.jsx)(f,{message:p}),(0,l.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`1.15rem`},children:[(0,l.jsx)(d,{label:`Username`,forId:`username`,children:(0,l.jsx)(`input`,{id:`username`,type:`text`,className:`miravo-input`,autoComplete:`username`,required:!0,value:n,onChange:e=>a(e.target.value)})}),(0,l.jsx)(d,{label:`Password`,forId:`password`,children:(0,l.jsx)(`input`,{id:`password`,type:`password`,className:`miravo-input`,autoComplete:`current-password`,required:!0,value:s,onChange:e=>u(e.target.value)})}),(0,l.jsx)(`button`,{type:`submit`,className:`miravo-btn`,disabled:h,style:{marginTop:`0.5rem`},children:`Log in`})]})]})}function m(){let e=o(),[t,n]=(0,c.useState)(``),[r,s]=(0,c.useState)(``),[u,p]=(0,c.useState)(``),[m,h]=(0,c.useState)(!1);async function g(n){if(n.preventDefault(),p(``),t!==r){p(`Passwords do not match`);return}if(t.length<6){p(`Password must be at least 6 characters`);return}h(!0);try{await a(`admin`,t),i.removeQueries({queryKey:[`bootstrap`]}),e(`/`,{replace:!0})}catch(e){p(e instanceof Error?e.message:`Password change failed`)}finally{h(!1)}}return(0,l.jsxs)(`form`,{onSubmit:g,children:[(0,l.jsxs)(`div`,{style:{marginBottom:`2rem`},children:[(0,l.jsx)(`div`,{style:{fontFamily:`var(--font-mono)`,fontSize:`0.52rem`,color:`var(--miravo-gray-4)`,letterSpacing:`0.14em`,textTransform:`uppercase`,marginBottom:`0.7rem`},children:`SYS.AUTH — PASSWORD RESET`}),(0,l.jsx)(`h1`,{style:{fontFamily:`var(--font-heading)`,fontSize:`1.5rem`,fontWeight:800,color:`var(--miravo-foreground)`,letterSpacing:`-0.035em`,lineHeight:1.15,margin:0},children:`Update password`}),(0,l.jsxs)(`p`,{style:{fontSize:`0.82rem`,color:`var(--miravo-muted-foreground)`,marginTop:`0.4rem`,lineHeight:1.5},children:[`Default password detected.`,` `,(0,l.jsx)(`span`,{style:{color:`var(--miravo-warning)`},children:`Please set a new one.`})]})]}),u&&(0,l.jsx)(f,{message:u}),(0,l.jsxs)(`div`,{style:{display:`flex`,flexDirection:`column`,gap:`1.1rem`},children:[(0,l.jsx)(d,{label:`New password`,forId:`new-password`,children:(0,l.jsx)(`input`,{id:`new-password`,type:`password`,className:`miravo-input`,autoComplete:`new-password`,required:!0,minLength:6,value:t,onChange:e=>n(e.target.value)})}),(0,l.jsx)(d,{label:`Confirm password`,forId:`confirm-password`,children:(0,l.jsx)(`input`,{id:`confirm-password`,type:`password`,className:`miravo-input`,autoComplete:`new-password`,required:!0,minLength:6,value:r,onChange:e=>s(e.target.value)})}),(0,l.jsx)(`button`,{type:`submit`,className:`miravo-btn`,disabled:m,style:{marginTop:`0.4rem`},children:`Set password`}),(0,l.jsx)(`div`,{style:{textAlign:`center`,marginTop:`0.15rem`},children:(0,l.jsx)(`button`,{type:`button`,className:`miravo-btn-ghost`,onClick:()=>{i.removeQueries({queryKey:[`bootstrap`]}),e(`/`,{replace:!0})},children:`Skip for now`})})]})]})}function h(){let e=(0,c.useRef)(null);return(0,c.useEffect)(()=>{let t=e.current;if(!t)return;let n=t.getContext(`2d`);if(!n)return;let r=t,i=n,a=window.devicePixelRatio||1,o=0,s=0,c=0,l=!0,u=0,d=[],f=[],p=[];function m(){d=[],f=[],p=[];let e=Math.max(15,Math.floor(o*s/35e3));for(let t=0;t<e;t++)d.push({x:0,y:0,bx:25+Math.random()*(o-50),by:25+Math.random()*(s-50),r:1+Math.random()*1.2,phase:Math.random()*Math.PI*2});for(let e=0;e<d.length;e++)for(let t=e+1;t<d.length;t++){let n=d[e],r=d[t];!n||!r||Math.hypot(n.bx-r.bx,n.by-r.by)<160&&Math.random()>.5&&f.push({from:e,to:t})}}function h(){o=r.offsetWidth,s=r.offsetHeight,r.width=o*a,r.height=s*a,i.setTransform(a,0,0,a,0,0),m()}function g(){if(!l){u=requestAnimationFrame(g);return}c+=.016,i.clearRect(0,0,o,s);for(let e of d)e.x=e.bx+Math.sin(c*.15+e.phase)*5,e.y=e.by+Math.cos(c*.1+e.phase*1.3)*4;let e=new Set;for(let t of p)e.add(`${t.conn.from}-${t.conn.to}`);for(let t of f){let n=d[t.from],r=d[t.to];!n||!r||(i.beginPath(),i.moveTo(n.x,n.y),i.lineTo(r.x,r.y),i.strokeStyle=e.has(`${t.from}-${t.to}`)?`rgba(229,162,24,0.04)`:`rgba(229,162,24,0.012)`,i.lineWidth=.5,i.stroke())}for(let e of d){let t=.6+Math.sin(c*.4+e.phase)*.4;i.beginPath(),i.arc(e.x,e.y,e.r,0,Math.PI*2),i.fillStyle=`rgba(229,162,24,${.08*t})`,i.fill()}if(Math.random()<.03&&f.length&&p.length<10){let e=f[Math.floor(Math.random()*f.length)];e&&p.push({conn:e,t:0,speed:.002+Math.random()*.003,alpha:.25+Math.random()*.35,size:1+Math.random()*1})}for(let e=p.length-1;e>=0;e--){let t=p[e];if(!t)continue;if(t.t+=t.speed,t.t>=1){p.splice(e,1);continue}let n=d[t.conn.from],r=d[t.conn.to];if(!n||!r)continue;let a=n.x+(r.x-n.x)*t.t,o=n.y+(r.y-n.y)*t.t;i.beginPath(),i.arc(a,o,t.size,0,Math.PI*2),i.fillStyle=`rgba(229,162,24,${t.alpha*.35})`,i.fill()}u=requestAnimationFrame(g)}let _=()=>{l=!document.hidden},v,y=()=>{window.clearTimeout(v),v=window.setTimeout(h,250)};return document.addEventListener(`visibilitychange`,_),window.addEventListener(`resize`,y),h(),g(),()=>{cancelAnimationFrame(u),window.clearTimeout(v),document.removeEventListener(`visibilitychange`,_),window.removeEventListener(`resize`,y)}},[]),(0,l.jsx)(`canvas`,{ref:e,style:{position:`absolute`,inset:0,width:`100%`,height:`100%`}})}var g=[{path:`pump-001/temp`,base:87.3,range:5,decimals:1,unit:`°C`,style:{left:`6%`,top:`18%`},delay:`1.4s`},{path:`comp/pressure`,base:4.21,range:.5,decimals:2,unit:`bar`,style:{right:`5%`,top:`12%`},delay:`1.7s`},{path:`motor/vibration`,base:2.14,range:.3,decimals:2,unit:`mm/s`,style:{left:`4%`,bottom:`18%`},delay:`2.0s`},{path:`gen/power`,base:482,range:20,decimals:0,unit:`kW`,style:{right:`4%`,bottom:`17%`},delay:`2.3s`},{path:`boiler/temp`,base:312,range:8,decimals:0,unit:`°C`,style:{left:`22%`,top:`8%`},delay:`2.6s`},{path:`turb/rpm`,base:1480,range:30,decimals:0,unit:`rpm`,style:{left:0,right:0,marginLeft:`auto`,marginRight:`auto`,width:`max-content`,bottom:`10%`},delay:`2.9s`}];function _(){let[e,t]=(0,c.useState)(()=>g.map(e=>({...e,displayValue:(e.base+(Math.random()-.5)*e.range).toFixed(e.decimals),flash:!1})));return(0,c.useEffect)(()=>{let e={id:void 0},n=window.setInterval(()=>{t(e=>e.map(e=>({...e,displayValue:(e.base+(Math.random()-.5)*e.range).toFixed(e.decimals),flash:!0}))),window.clearTimeout(e.id),e.id=window.setTimeout(()=>{t(e=>e.map(e=>({...e,flash:!1})))},400)},2200);return()=>{window.clearInterval(n),window.clearTimeout(e.id)}},[]),(0,l.jsx)(`div`,{style:{position:`absolute`,inset:0,zIndex:3,pointerEvents:`none`},children:e.map(e=>(0,l.jsxs)(`div`,{style:{position:`absolute`,...e.style,display:`flex`,alignItems:`center`,gap:`0.45rem`,padding:`0.32rem 0.7rem`,background:`rgba(10,10,15,0.7)`,backdropFilter:`blur(6px)`,WebkitBackdropFilter:`blur(6px)`,border:`1px solid rgba(229,162,24,0.08)`,borderRadius:6,fontFamily:`var(--font-mono)`,fontSize:`0.61rem`,letterSpacing:`0.02em`,opacity:0,animation:`readout-appear 0.6s cubic-bezier(0.22,1,0.36,1) ${e.delay} forwards`},children:[(0,l.jsx)(`span`,{style:{width:4,height:4,borderRadius:`50%`,background:`var(--miravo-primary)`,boxShadow:`0 0 3px rgba(229,162,24,0.18)`,animation:`dot-pulse 2.5s ease-in-out infinite`,flexShrink:0,display:`block`}}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-4)`},children:e.path}),(0,l.jsx)(`span`,{style:{color:e.flash?`#f5c542`:`var(--miravo-primary)`,fontWeight:600,minWidth:`3em`,textAlign:`right`,transition:`color 0.4s`},children:e.displayValue}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-4)`,fontSize:`0.54rem`},children:e.unit})]},e.path))})}var v=`miravo start --template smart-factory`,y=6,b=[{id:`sf`,indent:``,label:`site`,text:`smart-factory`},{id:`l1`,indent:` `,label:`area`,text:`line-1`},{id:`p001`,indent:` `,label:`cell`,text:`pump-001`},{id:`p001-t`,indent:` `,text:`temperature`,value:{base:87.3,range:5,decimals:1,unit:`°C`},protocol:`mqtt`},{id:`p001-p`,indent:` `,text:`pressure`,value:{base:4.21,range:.5,decimals:2,unit:`bar`},protocol:`opcua`},{id:`p001-v`,indent:` `,text:`vibration`,value:{base:2.14,range:.3,decimals:2,unit:`mm/s`},protocol:`modbus`},{id:`b002`,indent:` `,label:`cell`,text:`boiler-002`},{id:`b002-t`,indent:` `,text:`temperature`,value:{base:312,range:8,decimals:0,unit:`°C`},protocol:`mqtt`},{id:`c003`,indent:` `,label:`cell`,text:`comp-003`},{id:`c003-r`,indent:` `,text:`rpm`,value:{base:1480,range:30,decimals:0,unit:`rpm`},protocol:`modbus`},{id:`l2`,indent:` `,label:`area`,text:`line-2`},{id:`t004`,indent:` `,label:`cell`,text:`tank-004`},{id:`t004-l`,indent:` `,text:`level`,value:{base:72.1,range:5,decimals:1,unit:`%`},protocol:`mqtt`},{id:`m005`,indent:` `,label:`cell`,text:`motor-005`},{id:`m005-c`,indent:` `,text:`current`,value:{base:12.4,range:1.5,decimals:1,unit:`A`},protocol:`opcua`}],x=14,S=b.flatMap((e,t)=>e.value?[t]:[]),C=4+b.length,w=.66,T=1.85,E=2.1+C*w*T+1.15*w,D=[{assetId:`p001`,name:`cavitation`,event:`fault:cavitation on pump-001 — pressure drop`,resolve:`fault:resolved on pump-001 — nominal`,overrides:[{tagId:`p001-t`,base:95.2,range:3},{tagId:`p001-p`,base:1.83,range:.3},{tagId:`p001-v`,base:8.71,range:1.5}]},{assetId:`c003`,name:`bearing-wear`,event:`lifecycle:degraded on comp-003 — rpm declining`,resolve:`lifecycle:restored on comp-003 — nominal`,overrides:[{tagId:`c003-r`,base:924,range:40}]},{assetId:`m005`,name:`overcurrent`,event:`fault:overcurrent on motor-005 — current spike`,resolve:`fault:resolved on motor-005 — nominal`,overrides:[{tagId:`m005-c`,base:24.8,range:3}]}],O=new Map(b.map((e,t)=>[e.id,t]));function k(){let[e,t]=(0,c.useState)(0),[n,r]=(0,c.useState)(0),[i,a]=(0,c.useState)(()=>b.map(e=>e.value?(e.value.base+(Math.random()-.5)*e.value.range).toFixed(e.value.decimals):``)),[o,s]=(0,c.useState)(new Set),[u,d]=(0,c.useState)(null),[f,p]=(0,c.useState)(`+231 tags streaming`),m=(0,c.useRef)(new Set);(0,c.useEffect)(()=>{let e={timers:[],typeInt:0,liveInt:0,flashT:0},n=(t,n)=>{e.timers.push(window.setTimeout(t,n))},i=0;return n(()=>{e.typeInt=window.setInterval(()=>{if(i++,t(i),i>=37){window.clearInterval(e.typeInt),n(()=>r(1),400),n(()=>r(2),750),n(()=>r(3),1150);for(let e=0;e<b.length;e++)n(()=>r(4+e),1300+e*110);let t=1300+b.length*110+250;n(()=>r(C),t),n(()=>{e.liveInt=window.setInterval(()=>{let t=2+Math.floor(Math.random()*2),n=[...S.filter(e=>!m.current.has(e))].sort(()=>Math.random()-.5).slice(0,t),r=new Set(n);a(e=>{let t=[...e];for(let e of r){let n=b[e]?.value;n&&(t[e]=(n.base+(Math.random()-.5)*n.range).toFixed(n.decimals))}return t}),s(r),window.clearTimeout(e.flashT),e.flashT=window.setTimeout(()=>s(new Set),350)},1600);let t=0,r=()=>{let e=D[t%D.length];if(!e)return;let i=new Set(e.overrides.map(e=>O.get(e.tagId)).filter(e=>e!==void 0));m.current=i,d({assetId:e.assetId,name:e.name,indices:i}),p(e.event),a(t=>{let n=[...t];for(let t of e.overrides){let e=O.get(t.tagId);if(e!==void 0){let r=b[e];n[e]=(t.base+(Math.random()-.5)*t.range).toFixed(r?.value?.decimals??1)}}return n}),n(()=>{m.current=new Set,d(null),p(e.resolve),a(t=>{let n=[...t];for(let t of e.overrides){let e=O.get(t.tagId);if(e!==void 0){let t=b[e];t?.value&&(n[e]=(t.value.base+(Math.random()-.5)*t.value.range).toFixed(t.value.decimals))}}return n}),n(()=>{p(`+231 tags streaming`),t++,n(r,8e3)},4e3)},1e4)};n(r,8e3)},t+500)}},32)},200),()=>{for(let t of e.timers)window.clearTimeout(t);window.clearInterval(e.typeInt),window.clearInterval(e.liveInt),window.clearTimeout(e.flashT)}},[]);let h=v.slice(0,Math.min(e,y)),g=e>y?v.slice(y,e):``;return(0,l.jsx)(`div`,{style:{position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,zIndex:5,pointerEvents:`none`},children:(0,l.jsxs)(`div`,{style:{border:`1px solid rgba(229,162,24,0.1)`,borderRadius:10,boxShadow:`none`,overflow:`hidden`,width:540},children:[(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:6,padding:`0.5rem 0.85rem`,background:`color-mix(in srgb, var(--miravo-sidebar) 50%, transparent)`,backdropFilter:`blur(8px)`,WebkitBackdropFilter:`blur(8px)`,borderBottom:`1px solid rgba(229,162,24,0.06)`},children:[(0,l.jsx)(`span`,{style:{width:7,height:7,borderRadius:`50%`,background:`#ff5f57`,opacity:.5}}),(0,l.jsx)(`span`,{style:{width:7,height:7,borderRadius:`50%`,background:`#febc2e`,opacity:.5}}),(0,l.jsx)(`span`,{style:{width:7,height:7,borderRadius:`50%`,background:`#28c840`,opacity:.5}}),(0,l.jsx)(`span`,{style:{fontFamily:`var(--font-mono)`,fontSize:`0.5rem`,color:`var(--miravo-gray-2)`,marginLeft:`auto`,letterSpacing:`0.04em`,opacity:.5},children:`Build realistic industrial environments`})]}),(0,l.jsxs)(`div`,{style:{height:`min(${E}rem, calc(100vh - 11rem))`,overflowY:`auto`,overflowX:`hidden`,background:`color-mix(in srgb, var(--miravo-card) 60%, transparent)`,padding:`1rem 1.25rem 1.1rem`,fontFamily:`var(--font-mono)`,fontSize:`${w}rem`,lineHeight:T,whiteSpace:`pre`},children:[(0,l.jsxs)(`div`,{children:[(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-3)`},children:`$ `}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-primary)`},children:h}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-foreground)`,opacity:.9},children:g}),e>0&&e<37&&(0,l.jsx)(`span`,{style:{display:`inline-block`,width:5,height:10,background:`var(--miravo-primary)`,verticalAlign:`text-bottom`,marginLeft:1,animation:`cursor-blink 1s step-end infinite`}})]}),n>=1&&(0,l.jsxs)(`div`,{style:{opacity:0,animation:`terminal-line 0.4s ease forwards`},children:[(0,l.jsx)(`span`,{style:{color:`var(--miravo-primary)`},children:`✓`}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-2)`},children:` Loaded `}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-primary)`},children:`smart-factory`}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-3)`},children:` — 10 assets · 240 tags`})]}),n>=2&&(0,l.jsxs)(`div`,{style:{opacity:0,animation:`terminal-line 0.4s ease 0.05s forwards`},children:[(0,l.jsx)(`span`,{style:{color:`var(--miravo-primary)`},children:`✓`}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-2)`},children:` Protocols `}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-3)`},children:`mqtt :1883 · opcua :4840 · modbus :502`})]}),n>=3&&(0,l.jsx)(`div`,{style:{opacity:0,animation:`terminal-line 0.3s ease forwards`,marginTop:`0.6em`}}),b.map((e,t)=>{if(n<4+t)return null;let r=!!e.value;return(0,l.jsxs)(`div`,{style:{opacity:0,animation:`tree-line 0.3s ease forwards`},children:[(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-4)`},children:e.indent}),r&&e.value?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-3)`},children:e.text.padEnd(x)}),(0,l.jsx)(`span`,{style:{color:u?.indices.has(t)?`var(--miravo-destructive)`:o.has(t)?`var(--miravo-primary)`:`var(--miravo-foreground)`,transition:`color 0.3s`},children:(i[t]??``).padStart(7)}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-4)`},children:` ${e.value.unit.padEnd(5)}`}),e.protocol&&(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-4)`},children:e.protocol})]}):(0,l.jsxs)(l.Fragment,{children:[e.label&&(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-4)`},children:`${e.label}: `}),(0,l.jsx)(`span`,{style:{color:`var(--miravo-gray-2)`},children:e.text}),e.label===`cell`&&u?.assetId===e.id&&(0,l.jsxs)(`span`,{style:{marginLeft:`0.8em`,color:`var(--miravo-destructive)`,fontSize:`0.9em`},children:[`— `,u.name]})]})]},e.id)}),n>=C&&(0,l.jsx)(`div`,{style:{opacity:0,animation:`terminal-line 0.4s ease forwards`,marginTop:`0.55em`,textAlign:`right`},children:(0,l.jsx)(`span`,{style:{color:f.includes(`resolved`)||f.includes(`restored`)||f.includes(`fault:`)||f.includes(`lifecycle:`)?`var(--miravo-gray-3)`:`var(--miravo-gray-4)`,transition:`color 0.4s`},children:f})})]})]})})}function A(){let[e,t]=(0,c.useState)(!1);return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(`style`,{children:u}),(0,l.jsxs)(`div`,{className:`login-page`,children:[(0,l.jsxs)(`div`,{style:{background:`var(--miravo-background)`,backgroundImage:`radial-gradient(circle, rgba(229,162,24,0.022) 1px, transparent 1px)`,backgroundSize:`70px 70px`,display:`flex`,flexDirection:`column`,position:`relative`,overflow:`hidden`},children:[(0,l.jsx)(`div`,{style:{position:`absolute`,bottom:-80,right:-80,width:400,height:400,background:`radial-gradient(circle, rgba(229,162,24,0.035) 0%, transparent 65%)`,pointerEvents:`none`}}),(0,l.jsxs)(`div`,{className:`login-topbar`,style:{padding:`1.25rem 2rem`,borderBottom:`1px solid var(--miravo-secondary)`,zIndex:1,display:`flex`,alignItems:`center`,justifyContent:`space-between`},children:[(0,l.jsxs)(s,{to:`/`,style:{display:`inline-flex`,alignItems:`center`,gap:`0.6rem`,textDecoration:`none`},children:[(0,l.jsx)(`img`,{src:`/miravo-logo.png`,alt:`Miravo`,style:{width:24,height:24,objectFit:`contain`}}),(0,l.jsx)(`span`,{style:{fontFamily:`var(--font-heading)`,fontSize:`0.95rem`,fontWeight:700,color:`var(--miravo-foreground)`,letterSpacing:`-0.02em`},children:`Miravo`}),(0,l.jsx)(`span`,{style:{fontFamily:`var(--font-mono)`,fontSize:`0.52rem`,fontWeight:600,color:`var(--miravo-primary)`,letterSpacing:`0.08em`,textTransform:`uppercase`,background:`rgba(229, 162, 24, 0.06)`,border:`1px solid rgba(229, 162, 24, 0.14)`,padding:`0.15rem 0.5rem`,borderRadius:3,lineHeight:1,display:`inline-flex`,alignItems:`center`},children:`Console`})]}),(0,l.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`0.4rem`,fontFamily:`var(--font-mono)`,fontSize:`0.5rem`,letterSpacing:`0.08em`,textTransform:`uppercase`,color:`var(--miravo-gray-4)`},children:[(0,l.jsx)(`span`,{style:{width:5,height:5,borderRadius:`50%`,background:`var(--miravo-primary)`,display:`block`,animation:`status-blink 3s ease-in-out infinite`}}),`System active`]})]}),(0,l.jsx)(`div`,{className:`login-form-area`,style:{flex:1,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`2.5rem 2rem`,zIndex:1},children:(0,l.jsx)(`div`,{style:{width:`100%`,maxWidth:370},children:(0,l.jsxs)(`div`,{className:`login-card`,style:{position:`relative`,background:`var(--miravo-card)`,border:`1px solid rgba(30,30,38,0.8)`,borderRadius:`0.75rem`,overflow:`hidden`,padding:`2.25rem`},children:[(0,l.jsx)(`div`,{style:{position:`absolute`,top:0,left:14,right:14,height:1,background:`linear-gradient(90deg, transparent, rgba(229,162,24,0.35) 20%, rgba(229,162,24,0.35) 80%, transparent)`}}),e?(0,l.jsx)(m,{}):(0,l.jsx)(p,{onChangePassword:()=>t(!0)})]})})}),(0,l.jsxs)(`div`,{className:`login-footer`,style:{padding:`0.9rem 2rem`,borderTop:`1px solid var(--miravo-secondary)`,display:`flex`,justifyContent:`space-between`,alignItems:`center`,zIndex:1},children:[(0,l.jsx)(`span`,{style:{fontFamily:`var(--font-mono)`,fontSize:`0.6rem`,color:`var(--miravo-gray-4)`,letterSpacing:`0.04em`},children:`Miravo Console`}),(0,l.jsx)(`span`,{style:{fontFamily:`var(--font-mono)`,fontSize:`0.6rem`,color:`var(--miravo-gray-4)`,letterSpacing:`0.04em`},children:`© 2026`})]})]}),(0,l.jsxs)(`div`,{className:`login-left`,style:{position:`relative`,background:`var(--miravo-background)`,overflow:`hidden`,borderRight:`1px solid rgba(229, 162, 24, 0.08)`},children:[(0,l.jsx)(`div`,{style:{position:`absolute`,inset:0,zIndex:9999,pointerEvents:`none`,opacity:.025,backgroundImage:`url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")`,backgroundSize:`200px 200px`}}),(0,l.jsx)(h,{}),(0,l.jsx)(`div`,{style:{position:`absolute`,inset:0,zIndex:1,background:`radial-gradient(ellipse 75% 70% at 50% 50%, transparent 40%, rgba(10,10,15,0.55) 100%)`,pointerEvents:`none`}}),(0,l.jsx)(`div`,{style:{position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,width:700,height:500,background:`radial-gradient(ellipse at center, rgba(229,162,24,0.018) 0%, transparent 65%)`,pointerEvents:`none`,zIndex:2,animation:`login-glow-pulse 8s ease-in-out infinite alternate`}}),(0,l.jsx)(_,{}),(0,l.jsx)(k,{}),(0,l.jsxs)(`div`,{style:{position:`absolute`,top:`1.2rem`,right:`1.2rem`,zIndex:10,display:`flex`,alignItems:`center`,gap:`0.4rem`,padding:`0.3rem 0.65rem`,background:`rgba(10,10,15,0.65)`,backdropFilter:`blur(6px)`,WebkitBackdropFilter:`blur(6px)`,border:`1px solid rgba(229,162,24,0.1)`,borderRadius:4,fontFamily:`var(--font-mono)`,fontSize:`0.5rem`,letterSpacing:`0.1em`,textTransform:`uppercase`,color:`var(--miravo-gray-3)`,pointerEvents:`none`},children:[(0,l.jsx)(`span`,{style:{width:5,height:5,borderRadius:`50%`,background:`var(--miravo-primary)`,display:`block`,animation:`live-dot 2s ease-in-out infinite`}}),`Live topology`]})]})]})]})}export{A as LoginPage};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{s as t}from"./vendor-charts-CAZdaPlq.js";import{at as n}from"./vendor-ui-ByahnaY0.js";import{a as r}from"./api-4AqKvsm9.js";import{r as i,t as a}from"./query-keys-BvtE7BMs.js";import{t as o}from"./createLucideIcon-Bwxw859K.js";import{t as s}from"./activity-DsWeRq4h.js";import{D as c,a as l,i as u,n as d,o as f,r as p,t as m}from"./use-platform-stream-DGbK1k2L.js";import{t as h}from"./box-C1WaoOMF.js";import{i as g,n as _,t as v}from"./input-BWEQFptx.js";import{u as y}from"./select-CeO4vP0G.js";import{a as b,c as x,i as S,l as C,n as w,o as T,r as E,s as D,t as O,u as k}from"./deploy-tab-JeWDwPoZ.js";import{n as A}from"./checkbox-DZlJXTE4.js";import{c as j,n as ee,o as M,s as N,t as P}from"./blueprint-card-classes-DBFCDy0M.js";import{t as F}from"./triangle-alert-adNk_sea.js";import{n as I,t as L}from"./proxy-CsnYqnPp.js";import{a as te,i as ne,n as re,o as ie,r as ae,s as R}from"./label-uephX5ZG.js";import{c as z,i as B,u as V}from"./format-kXTonpDJ.js";import{n as H,t as U}from"./get-error-message-3Q5Q-2G5.js";var W=o(`cog`,[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]),G=o(`heart-pulse`,[[`path`,{d:`M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5`,key:`mvr1a0`}],[`path`,{d:`M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27`,key:`auskq0`}]]),K=o(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),q=o(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),J=e(t(),1),Y=n(),oe=new Set([`fault_active`,`fault_count`,`active_fault_code`,`lifecycle_stage`,`health_state`,`availability_state`]);function se(e){let t=[],n=[],r=[],i=[];for(let[a,o]of Object.entries(e)){let e={name:a,kind:o.kind,dataType:o.dataType,access:o.access,unit:o.unit,euRange:o.euRange};oe.has(a)?i.push(e):o.kind===`property`?t.push(e):o.access===`readwrite`?n.push(e):r.push(e)}let a=[];return t.length>0&&a.push({key:`nameplate`,label:`Nameplate`,icon:(0,Y.jsx)(D,{className:`size-3`}),members:t,accentClass:`text-muted-foreground`}),n.length>0&&a.push({key:`commands`,label:`Commands`,icon:(0,Y.jsx)(K,{className:`size-3`}),members:n,accentClass:`text-info`}),r.length>0&&a.push({key:`process`,label:`Process Tags`,icon:(0,Y.jsx)(s,{className:`size-3`}),members:r,accentClass:`text-primary`}),i.length>0&&a.push({key:`health`,label:`Health & Status`,icon:(0,Y.jsx)(G,{className:`size-3`}),members:i,accentClass:`text-success`}),a}function ce({modelName:e,onClose:t}){let[n,o]=(0,J.useState)(new Set([`nameplate`,`process`])),s=i({queryKey:a.catalog.modelSchema(e??``),queryFn:()=>r(`/catalog/models/${e}`),enabled:e!==null}),c=s.data,h=s.isPending&&!c,g=s.isError,_=U(s.error,`Failed to load model.`);(0,J.useEffect)(()=>{e&&o(new Set([`nameplate`,`process`]))},[e]);let v=(0,J.useMemo)(()=>c?se(c.members):[],[c]),y=(0,J.useCallback)(e=>{o(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),x=m(),C=c?Object.keys(c.members).length:0,D=c?Object.keys(c.methods).length:0;return(0,Y.jsx)(w,{open:e!==null,onOpenChange:e=>{e||(x.reset(),t())},children:(0,Y.jsx)(E,{side:`right`,className:`flex w-full flex-col gap-4`,children:h?null:g&&!c?(0,Y.jsx)(`div`,{className:`flex flex-1 flex-col justify-center px-2`,children:(0,Y.jsx)(H,{message:_,onRetry:()=>void s.refetch(),isRetrying:s.isFetching})}):c?(0,Y.jsxs)(L.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.18},className:`flex min-h-0 flex-1 flex-col gap-4`,children:[(0,Y.jsxs)(b,{className:`gap-1 pb-0 pe-12`,children:[(0,Y.jsx)(T,{className:`font-heading text-lg uppercase tracking-wide`,children:B(c.name)}),c.description&&(0,Y.jsx)(S,{className:`text-xs leading-relaxed text-foreground/90`,children:c.description}),(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2`,children:[(0,Y.jsxs)(V,{variant:`outline`,className:`font-mono text-[10px]`,children:[C,` members`]}),(0,Y.jsxs)(V,{variant:`outline`,className:`font-mono text-[10px]`,children:[D,` methods`]}),(0,Y.jsxs)(V,{variant:`outline`,className:`font-mono text-[10px]`,children:[c.faults.length,` faults`]}),c.lifecycle&&(0,Y.jsxs)(V,{variant:`outline`,className:`font-mono text-[10px] text-primary`,children:[c.lifecycle.stages.length,`-stage lifecycle`]}),(0,Y.jsx)(f,{stream:x})]})]}),(0,Y.jsxs)(d,{defaultValue:`overview`,className:`flex min-h-0 flex-1 flex-col gap-1 pt-0`,children:[(0,Y.jsxs)(u,{variant:`line`,className:`!h-7 shrink-0 gap-0.5 border-b-border/60 px-2 py-[2px]`,children:[(0,Y.jsx)(l,{value:`overview`,className:`px-2 py-0 text-[11px] text-foreground/82 after:bottom-[-3px] data-active:text-foreground`,children:`Overview`}),(0,Y.jsx)(l,{value:`deploy`,className:`px-2 py-0 text-[11px] text-foreground/82 after:bottom-[-3px] data-active:text-foreground`,children:`Deploy`})]}),(0,Y.jsx)(p,{value:`overview`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,Y.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,Y.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto pr-2`,children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5 pb-1 pt-0.5`,children:[v.map(e=>(0,Y.jsx)(X,{sectionKey:e.key,label:e.label,count:e.members.length,icon:e.icon,accentClass:e.accentClass,expanded:n.has(e.key),onToggle:y,children:(0,Y.jsx)(`div`,{className:`flex flex-col gap-1`,children:e.members.map(e=>(0,Y.jsx)(Z,{member:e},e.name))})},e.key)),c.faults.length>0&&(0,Y.jsx)(X,{sectionKey:`faults`,label:`Faults`,count:c.faults.length,icon:(0,Y.jsx)(F,{className:`size-3`}),accentClass:`text-warning`,expanded:n.has(`faults`),onToggle:y,children:(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:c.faults.map(e=>(0,Y.jsx)(V,{variant:`secondary`,className:`text-[10px] text-warning`,children:z(e)},e))})}),c.lifecycle&&(0,Y.jsx)(X,{sectionKey:`lifecycle`,label:`Lifecycle`,count:c.lifecycle.stages.length,icon:(0,Y.jsx)(W,{className:`size-3`}),accentClass:`text-primary`,expanded:n.has(`lifecycle`),onToggle:y,children:(0,Y.jsx)(le,{lifecycle:c.lifecycle})}),D>0&&(0,Y.jsx)(X,{sectionKey:`methods`,label:`Methods`,count:D,icon:(0,Y.jsx)(q,{className:`size-3`}),accentClass:`text-info`,expanded:n.has(`methods`),onToggle:y,children:(0,Y.jsx)(`div`,{className:`flex flex-col gap-1.5`,children:Object.entries(c.methods).map(([e,t])=>(0,Y.jsx)(ue,{name:e,method:t},e))})})]})})})}),(0,Y.jsx)(p,{value:`deploy`,keepMounted:!0,className:`flex min-h-0 flex-1 flex-col`,children:(0,Y.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col px-3 pt-0`,children:(0,Y.jsx)(O,{kind:`model`,id:c.name,displayName:B(c.name),yamlPath:`/catalog/models/${c.name}/yaml`,yamlFilename:`${c.name}.twin.yaml`,stream:x})})})]})]},c.name):(0,Y.jsx)(`div`,{className:`flex flex-1 items-center justify-center text-sm text-muted-foreground`,children:`Model not found`})})})}function X({sectionKey:e,label:t,count:n,icon:r,accentClass:i,expanded:a,onToggle:o,children:s}){return(0,Y.jsxs)(`div`,{className:`rounded-md border border-border/50`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-1.5 px-2.5 py-1.5 text-left text-xs font-medium transition-colors hover:bg-muted/30`,onClick:()=>o(e),children:[(0,Y.jsx)(`span`,{className:i,children:r}),(0,Y.jsx)(`span`,{className:`uppercase tracking-wider`,children:t}),(0,Y.jsx)(V,{variant:`secondary`,className:`ml-auto text-[10px]`,children:n}),(0,Y.jsx)(y,{className:`size-3 text-muted-foreground transition-transform ${a?`rotate-180`:``}`})]}),(0,Y.jsx)(I,{initial:!1,children:a&&(0,Y.jsx)(L.div,{initial:{height:0,opacity:0},animate:{height:`auto`,opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:`easeOut`},className:`overflow-hidden`,children:(0,Y.jsx)(`div`,{className:`border-t px-2.5 py-1.5`,children:s})},`content`)})]})}function Z({member:e}){return(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-0.5 py-0.5 text-xs`,children:[(0,Y.jsx)(`span`,{className:`min-w-0 truncate font-mono text-foreground`,children:e.name}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:e.dataType}),e.unit&&(0,Y.jsx)(V,{variant:`outline`,className:`px-1 py-0 text-[10px]`,children:e.unit}),e.euRange&&(0,Y.jsxs)(`span`,{className:`ml-auto font-mono text-xs text-muted-foreground`,children:[`[`,e.euRange[0],`–`,e.euRange[1],`]`]})]})}var Q={healthy:`bg-success`,normal:`bg-success`,degraded:`bg-warning`,critical:`bg-destructive`,failed:`bg-destructive`};function le({lifecycle:e}){let t=e.stages.length;return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,Y.jsx)(`div`,{className:`flex h-2.5 w-full overflow-hidden rounded-full bg-muted`,children:e.stages.map((e,n)=>(0,Y.jsx)(`div`,{className:`transition-all ${Q[e]??`bg-chart-1`} ${n===0?`rounded-l-full`:``} ${n===t-1?`rounded-r-full`:``}`,style:{width:`${100/t}%`}},`${e}-${n}`))}),(0,Y.jsx)(`div`,{className:`flex items-center gap-3`,children:e.stages.map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs`,children:[(0,Y.jsx)(`span`,{className:`size-2 rounded-full ${Q[e]??`bg-chart-1`}`}),(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:z(e)})]},`${e}-${t}`))}),(0,Y.jsxs)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:[`~`,e.totalHours.toLocaleString(),` total hours`]})]})}function ue({name:e,method:t}){return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`font-mono text-xs text-foreground`,children:e}),t.inputArguments.length>0&&(0,Y.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,t.inputArguments.map(e=>`${e.name}: ${e.dataType}`).join(`, `),`)`]})]}),t.description&&(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:t.description})]})}function de(){let[e,t]=(0,J.useState)(``),[n,o]=(0,J.useState)({}),[s,c]=(0,J.useState)(null),[l,u]=(0,J.useState)(null),[d,f]=(0,J.useState)(null),p=(0,J.useRef)(null),m=N();(0,J.useEffect)(()=>{let e=e=>{if(e.key!==`/`||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target.tagName;t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||(e.preventDefault(),p.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let h=i({queryKey:a.catalog.models(),queryFn:()=>r(`/catalog/models`)}),y=h.data??[],b=h.isPending&&!h.data,S=h.isError&&!h.data,C=h.isError&&!!h.data,w=U(h.error,`Failed to load models.`),T=e=>n[e]??1,E=(0,J.useCallback)((e,t)=>{o(n=>({...n,[e]:Math.max(1,Math.min(10,t))}))},[]),D=(0,J.useCallback)(e=>{f(e)},[]),O=(0,J.useCallback)(e=>{u(e)},[]),k=async e=>{c(e);try{return await m.mutateAsync({type:`spawn`,model:e,count:T(e)}),!0}catch{return!1}finally{c(null)}},j=e?y.filter(t=>t.name.toLowerCase().includes(e.toLowerCase())||(t.description?.toLowerCase().includes(e.toLowerCase())??!1)):y;return(0,Y.jsxs)(`div`,{className:`@container/models mx-auto flex w-full max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(`h2`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Asset Model Library`}),(0,Y.jsx)(V,{variant:`outline`,className:`text-xs`,children:S?(0,Y.jsx)(`span`,{className:`text-destructive`,children:`Unavailable`}):b&&y.length===0?(0,Y.jsx)(Y.Fragment,{children:`Loading...`}):(0,Y.jsxs)(Y.Fragment,{children:[y.length,` built-in`]})})]}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Canonical twin models with realistic physics, lifecycle degradation, and fault modes. Inspect to explore schema, copy YAML, or export.`})]}),S&&(0,Y.jsx)(H,{message:w,onRetry:()=>void h.refetch(),isRetrying:h.isFetching}),C&&(0,Y.jsx)(H,{message:`${w} Showing cached models.`,onRetry:()=>void h.refetch(),isRetrying:h.isFetching}),!S&&y.length>6&&(0,Y.jsxs)(`div`,{className:`relative max-w-xs`,children:[(0,Y.jsx)(x,{className:`absolute left-2.5 top-2.5 size-4 text-muted-foreground`}),(0,Y.jsx)(v,{ref:p,placeholder:`Filter models...`,value:e,onChange:e=>t(e.target.value),className:`pl-9 pr-7`}),!e&&(0,Y.jsx)(`kbd`,{className:`pointer-events-none absolute top-1/2 right-2 -translate-y-1/2 rounded border border-border bg-muted px-1 font-mono text-[10px] text-muted-foreground`,children:`/`})]}),(0,Y.jsx)(`div`,{className:`grid grid-cols-1 gap-4 @[720px]/models:grid-cols-2 @[1120px]/models:grid-cols-3`,"aria-busy":b&&!S,children:S?null:(0,Y.jsxs)(Y.Fragment,{children:[b&&y.length===0&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:`h-44 animate-pulse rounded-xl border border-border/50 bg-card/30`}),(0,Y.jsx)(`div`,{className:`h-44 animate-pulse rounded-xl border border-border/50 bg-card/30`}),(0,Y.jsx)(`div`,{className:`h-44 animate-pulse rounded-xl border border-border/50 bg-card/30`}),(0,Y.jsx)(`div`,{className:`h-44 animate-pulse rounded-xl border border-border/50 bg-card/30`}),(0,Y.jsx)(`div`,{className:`h-44 animate-pulse rounded-xl border border-border/50 bg-card/30`}),(0,Y.jsx)(`div`,{className:`h-44 animate-pulse rounded-xl border border-border/50 bg-card/30`})]}),(0,Y.jsx)(I,{children:j.map((e,t)=>(0,Y.jsx)(L.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,scale:.96,transition:{duration:.15}},transition:{type:`spring`,stiffness:380,damping:30,delay:t*.04},className:`grid`,children:(0,Y.jsx)(fe,{model:e,count:T(e.name),spawning:s===e.name,onCountChange:E,onInspect:D,onSpawn:O})},e.name))}),j.length===0&&y.length>0&&(0,Y.jsxs)(`p`,{className:`col-span-full py-8 text-center text-sm text-muted-foreground`,children:[`No models match “`,e,`”`]})]})}),y.length>0&&(0,Y.jsx)(`div`,{className:g(ee,`p-0`),children:(0,Y.jsx)(`div`,{className:`community-teaser relative overflow-hidden rounded-[inherit]`,children:(0,Y.jsx)(`div`,{className:`relative z-10 mx-auto max-w-3xl px-5 py-10 sm:px-10 sm:py-12`,children:(0,Y.jsxs)(`div`,{className:`grid items-center gap-10 lg:grid-cols-[minmax(0,1fr)_minmax(0,17rem)]`,children:[(0,Y.jsxs)(`div`,{className:`order-2 flex min-w-0 flex-col gap-4 lg:order-1`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-3 gap-y-1`,children:[(0,Y.jsx)(`p`,{className:`blueprint-title text-primary`,children:`Future channel`}),(0,Y.jsx)(`span`,{className:`blueprint-stat text-[10px] text-muted-foreground`,children:`MIRAVO_REGISTRY · NOT_CONNECTED`})]}),(0,Y.jsx)(`h3`,{className:`font-heading text-xl font-semibold tracking-tight sm:text-2xl`,children:`Community Models`}),(0,Y.jsx)(`p`,{className:`max-w-xl text-sm leading-relaxed text-muted-foreground`,children:`Publish your custom twin models to the Miravo registry. Discover equipment models from other engineers, fork them, and adapt parameters for your use case.`}),(0,Y.jsx)(`div`,{children:(0,Y.jsx)(V,{variant:`outline`,className:`community-teaser-soon border-primary/35 bg-primary/5 text-[10px] text-primary`,children:`Coming Soon`})})]}),(0,Y.jsx)(`div`,{className:`order-1 flex justify-center lg:order-2 lg:justify-end`,children:(0,Y.jsxs)(`div`,{className:`community-teaser-module relative flex w-full max-w-[14rem] flex-col items-center justify-center gap-3 border border-primary/15 bg-muted/15 py-8 sm:max-w-[15.5rem] sm:py-10`,"aria-hidden":!0,children:[(0,Y.jsx)(`div`,{className:`community-teaser-icon-ring relative z-[1] flex size-[4.25rem] items-center justify-center rounded-md border border-primary/35 bg-gradient-to-br from-primary/18 to-primary/5`,children:(0,Y.jsx)(A,{className:`size-9 text-primary`,"aria-hidden":!0})}),(0,Y.jsx)(`span`,{className:`blueprint-stat relative z-[1] text-[9px] tracking-[0.18em] text-muted-foreground`,children:`AWAITING SIGNAL`}),(0,Y.jsx)(`span`,{className:`blueprint-stat relative z-[1] text-[9px] text-muted-foreground`,children:`Uplink idle`})]})})]})})})}),(0,Y.jsx)(re,{open:l!==null,onOpenChange:e=>{e||u(null)},children:(0,Y.jsxs)(ae,{children:[(0,Y.jsxs)(ie,{children:[(0,Y.jsx)(R,{children:`Spawn instances?`}),(0,Y.jsx)(ne,{children:l!==null&&(0,Y.jsxs)(Y.Fragment,{children:[`This spawns `,T(l),` instance`,T(l)===1?``:`s`,` of`,` `,(0,Y.jsx)(`span`,{className:`font-medium text-foreground`,children:B(l)}),` `,`into the running simulation.`]})})]}),(0,Y.jsxs)(te,{children:[(0,Y.jsx)(_,{variant:`outline`,disabled:s!==null,onClick:()=>u(null),children:`Cancel`}),(0,Y.jsx)(_,{disabled:s!==null||l===null,onClick:async()=>{l!==null&&await k(l)&&u(null)},children:s===l?`Spawning...`:`Spawn`})]})]})}),(0,Y.jsx)(ce,{modelName:d,onClose:()=>f(null)})]})}var fe=(0,J.memo)(function({model:e,count:t,spawning:n,onCountChange:r,onInspect:i,onSpawn:a}){return(0,Y.jsxs)(`div`,{className:g(M,`flex flex-col gap-4 p-5`),children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary`,children:(0,Y.jsx)(h,{className:`size-4`})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex flex-col gap-0.5`,children:[(0,Y.jsx)(`span`,{className:`font-heading text-sm font-semibold uppercase tracking-wide`,children:B(e.name)}),e.description&&(0,Y.jsx)(`span`,{className:`line-clamp-2 text-xs leading-relaxed text-muted-foreground`,children:e.description})]})]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 font-mono text-[11px] text-muted-foreground`,children:[(0,Y.jsx)($,{label:`mbr`,value:e.memberCount}),(0,Y.jsx)($,{label:`mth`,value:e.methodCount}),(0,Y.jsx)($,{label:`flt`,value:e.faultCount}),e.hasLifecycle&&(0,Y.jsxs)(`span`,{className:`flex items-center gap-1 text-primary`,children:[(0,Y.jsx)(`span`,{className:`text-[10px]`,children:`◈`}),(0,Y.jsxs)(`span`,{children:[e.lifecycleStageCount,`-stage`]})]}),(0,Y.jsx)(V,{variant:`secondary`,className:`ml-auto shrink-0 font-sans text-[10px] font-medium`,children:e.source})]}),(0,Y.jsxs)(`div`,{className:`mt-auto flex items-center gap-2 border-t border-border/30 pt-3`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center rounded-md border bg-muted/30`,children:[(0,Y.jsx)(_,{variant:`ghost`,size:`icon`,className:`size-7 rounded-none rounded-l-md`,disabled:t<=1,"aria-label":`Decrease count`,onClick:n=>{n.stopPropagation(),r(e.name,t-1)},children:(0,Y.jsx)(C,{className:`size-3`})}),(0,Y.jsx)(`span`,{className:`flex size-7 items-center justify-center border-x font-mono text-xs`,children:t}),(0,Y.jsx)(_,{variant:`ghost`,size:`icon`,className:`size-7 rounded-none rounded-r-md`,disabled:t>=10,"aria-label":`Increase count`,onClick:n=>{n.stopPropagation(),r(e.name,t+1)},children:(0,Y.jsx)(c,{className:`size-3`})})]}),(0,Y.jsxs)(_,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>i(e.name),className:P,children:[(0,Y.jsx)(k,{className:`size-3.5`,"aria-hidden":!0}),`Inspect`]}),(0,Y.jsxs)(_,{size:`sm`,className:`ml-auto`,disabled:n,onClick:()=>a(e.name),children:[(0,Y.jsx)(j,{className:`mr-1 size-3`}),n?`...`:`Spawn`]})]})]})});function $({label:e,value:t}){return(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`span`,{className:`text-foreground`,children:t}),` `,(0,Y.jsx)(`span`,{className:`text-muted-foreground`,children:e})]})}export{de as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./models-B_UioWQ5.js";export{e as ModelsPage};
@@ -1 +0,0 @@
1
- import{at as e}from"./vendor-ui-ByahnaY0.js";import{t}from"./createLucideIcon-Bwxw859K.js";import{t as n}from"./triangle-alert-adNk_sea.js";import{n as r,s as i}from"./chunk-OE4NN4TA-CEjpfhS6.js";var a=t(`arrow-up-right`,[[`path`,{d:`M7 7h10v10`,key:`1tivn9`}],[`path`,{d:`M7 17 17 7`,key:`1vkiza`}]]),o=t(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),s=e();function c(){let e=i();return(0,s.jsxs)(`div`,{className:`relative min-h-full overflow-hidden bg-[radial-gradient(circle_at_top,rgba(229,162,24,0.18),transparent_28%),linear-gradient(180deg,rgba(24,24,27,0.98),rgba(10,10,11,1))] px-6 py-8 md:px-8`,children:[(0,s.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0 bg-[linear-gradient(rgba(63,63,70,0.24)_1px,transparent_1px),linear-gradient(90deg,rgba(63,63,70,0.24)_1px,transparent_1px)] bg-size-[32px_32px] opacity-40`}),(0,s.jsx)(`div`,{className:`relative mx-auto flex min-h-[calc(100svh-9rem)] max-w-3xl items-center justify-center`,children:(0,s.jsxs)(`section`,{className:`relative w-full overflow-hidden rounded-3xl border border-primary/20 bg-[linear-gradient(135deg,rgba(24,24,27,0.94),rgba(39,39,42,0.9))] p-8 shadow-[0_0_0_1px_rgba(229,162,24,0.08),0_24px_80px_rgba(0,0,0,0.45)] md:p-10`,children:[(0,s.jsx)(`div`,{"aria-hidden":`true`,className:`absolute inset-y-0 right-0 w-1/2 bg-[radial-gradient(circle_at_center,rgba(229,162,24,0.16),transparent_60%)]`}),(0,s.jsxs)(`div`,{className:`relative space-y-8`,children:[(0,s.jsxs)(`div`,{className:`space-y-4`,children:[(0,s.jsx)(`p`,{className:`font-mono text-xs uppercase tracking-[0.4em] text-muted-foreground`,children:`Fault code 404`}),(0,s.jsxs)(`div`,{className:`flex items-end gap-4`,children:[(0,s.jsx)(`span`,{className:`font-heading text-7xl font-black leading-none tracking-[-0.08em] text-transparent [-webkit-text-stroke:1px_rgba(229,162,24,0.55)] md:text-9xl`,children:`404`}),(0,s.jsx)(`div`,{className:`mb-2 h-px flex-1 bg-linear-to-r from-primary/60 to-transparent`})]}),(0,s.jsxs)(`div`,{className:`max-w-2xl space-y-3`,children:[(0,s.jsx)(`h1`,{className:`text-4xl font-semibold tracking-[-0.04em] text-foreground md:text-5xl`,children:`Route not found in the control surface`}),(0,s.jsx)(`p`,{className:`max-w-xl text-base text-muted-foreground md:text-lg`,children:`This address does not map to an active console view.`})]})]}),(0,s.jsxs)(`div`,{className:`rounded-2xl border border-border/80 bg-background/55 p-5 backdrop-blur-sm`,children:[(0,s.jsxs)(`div`,{className:`mb-3 flex items-center gap-2 font-mono text-[0.7rem] uppercase tracking-[0.28em] text-muted-foreground`,children:[(0,s.jsx)(n,{className:`size-3.5 text-primary`}),`Requested path`]}),(0,s.jsx)(`code`,{className:`block overflow-x-auto rounded-xl border border-primary/15 bg-black/30 px-4 py-3 font-mono text-sm text-primary`,children:e.pathname})]}),(0,s.jsxs)(`div`,{className:`flex flex-wrap gap-3`,children:[(0,s.jsxs)(r,{to:`/`,className:`inline-flex items-center gap-2 rounded-xl border border-primary/30 bg-primary px-4 py-2.5 font-medium text-primary-foreground transition hover:brightness-110`,children:[(0,s.jsx)(o,{className:`size-4`}),`Return to Fleet`]}),(0,s.jsxs)(r,{to:`/catalog`,className:`group inline-flex items-center gap-3 rounded-xl border border-white/8 bg-black/20 px-3 py-2.5 text-foreground shadow-[inset_0_1px_0_rgba(255,255,255,0.04)] backdrop-blur-sm transition hover:border-primary/30 hover:bg-primary/8 hover:text-primary`,children:[(0,s.jsx)(`span`,{className:`inline-flex size-8 items-center justify-center rounded-lg border border-white/8 bg-white/4 text-muted-foreground transition group-hover:border-primary/25 group-hover:bg-primary/12 group-hover:text-primary`,children:(0,s.jsx)(a,{className:`size-4`})}),(0,s.jsx)(`span`,{className:`font-medium tracking-[-0.01em]`,children:`Open Catalog`})]})]})]})]})})]})}export{c as NotFoundPage};
@@ -1 +0,0 @@
1
- import{t as e}from"./createLucideIcon-Bwxw859K.js";var t=e(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),n=[{id:`litmus-edge`,label:`Litmus Edge`,exportLabel:`Litmus Edge Digital Twin`,shortCode:`LE`,status:`available`},{id:`azure-dtdl`,label:`Azure Digital Twins (DTDL)`,exportLabel:`Azure Digital Twins (DTDL)`,shortCode:`AZ`,status:`coming-soon`},{id:`aws-sitewise`,label:`AWS IoT SiteWise`,exportLabel:`AWS IoT SiteWise`,shortCode:`AWS`,status:`coming-soon`},{id:`ignition-udt`,label:`Ignition UDT`,exportLabel:`Ignition UDT`,shortCode:`IGN`,status:`coming-soon`}],r=n.filter(e=>e.status===`available`),i=n.filter(e=>e.status===`coming-soon`),a=r[0]??n[0];export{t as a,n as i,i as n,a as r,r as t};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{s as t}from"./vendor-charts-CAZdaPlq.js";import{at as n}from"./vendor-ui-ByahnaY0.js";import{C as r,S as i,a,h as o,x as s}from"./api-4AqKvsm9.js";import{i as c,n as l,r as u,s as d,t as f}from"./query-keys-BvtE7BMs.js";import{t as p}from"./createLucideIcon-Bwxw859K.js";import{t as m}from"./activity-DsWeRq4h.js";import{t as h}from"./arrow-right-Ea_UhTNi.js";import{C as g,D as _,E as v,S as y,T as b,_ as x,a as S,b as C,c as ee,f as w,g as T,h as E,i as te,l as ne,m as re,n as ie,o as ae,p as D,s as oe,t as O,u as se,v as k,w as ce,x as le,y as A}from"./use-platform-stream-DGbK1k2L.js";import{n as ue,t as de}from"./catalog-template-icons-BrUeHaCY.js";import{i as j,n as M,r as fe,t as N}from"./input-BWEQFptx.js";import{a as pe,c as P,i as F,l as I,n as L,o as me,r as he,s as R,t as z,u as ge}from"./select-CeO4vP0G.js";import{a as _e,i as ve,n as ye,r as B,t as be}from"./platform-targets-R3T-4eJ7.js";import{n as V,r as H,t as xe}from"./copy-button-WkbNkMcd.js";import{n as U}from"./dist-BhbDML0a.js";import{i as Se,n as Ce,r as W,t as we}from"./checkbox-DZlJXTE4.js";import{t as Te}from"./layers-CUsLQ1fq.js";import{t as Ee}from"./server-D9Kfn8fQ.js";import{t as De}from"./triangle-alert-adNk_sea.js";import{i as Oe,r as ke}from"./dist-Cy8XTNFT.js";import{n as Ae}from"./chunk-OE4NN4TA-CEjpfhS6.js";import{n as G,t as K}from"./proxy-CsnYqnPp.js";import{i as je,n as Me,t as Ne}from"./tooltip-HGLF366Q.js";import{a as Pe,i as Fe,n as Ie,o as Le,r as Re,s as ze,t as q}from"./label-uephX5ZG.js";import{i as Be,s as Ve,u as He}from"./format-kXTonpDJ.js";var Ue=class extends d{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){super.setOptions({...e,behavior:r()})}getOptimisticResult(e){return e.behavior=r(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:a,isRefetching:o,isError:c,isRefetchError:l}=r,u=n.fetchMeta?.fetchMore?.direction,d=c&&u===`forward`,f=a&&u===`forward`,p=c&&u===`backward`,m=a&&u===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:s(t,n.data),hasPreviousPage:i(t,n.data),isFetchNextPageError:d,isFetchingNextPage:f,isFetchPreviousPageError:p,isFetchingPreviousPage:m,isRefetchError:l&&!d&&!p,isRefetching:o&&!f&&!m}}};function We(e,t){return c(e,Ue,t)}var Ge=p(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),Ke=p(`clock-3`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6h4`,key:`135r8i`}]]),qe=p(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Je=p(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),J=e(t(),1),Y=n();function X({className:e,...t}){return(0,Y.jsx)(`div`,{"data-slot":`skeleton`,className:j(`animate-pulse rounded-md bg-muted`,e),...t})}function Ye(e){return ve.find(t=>t.id===e)?.label??e}function Xe(e){if(!e)return`var(--miravo-gray-4)`;switch(e.status){case`success`:return`var(--miravo-success)`;case`partial`:case`blocked`:return`var(--miravo-warning)`;case`noop`:return`var(--miravo-gray-3)`;case`failed`:return`var(--miravo-destructive)`}}function Ze({status:e}){switch(e){case`success`:return(0,Y.jsx)(H,{className:`size-3 text-emerald-500`});case`partial`:case`blocked`:return(0,Y.jsx)(De,{className:`size-3 text-amber-500`});case`noop`:return(0,Y.jsx)(Ke,{className:`size-3 text-muted-foreground`});case`failed`:return(0,Y.jsx)(V,{className:`size-3 text-destructive`})}}function Qe({env:e,lastOp:t,onEdit:n,onDelete:r}){let i=Xe(t);return(0,Y.jsxs)(`div`,{className:`env-orbital relative overflow-hidden border`,style:{"--_status":i},children:[(0,Y.jsx)(G,{initial:!1,children:t&&(0,Y.jsx)(K.div,{initial:{opacity:.28},animate:{opacity:0},transition:{duration:2,ease:`easeOut`},className:`pointer-events-none absolute inset-0 rounded-[inherit]`,style:{backgroundColor:i}},t.operationId)}),(0,Y.jsx)(`div`,{className:`relative z-10 px-4 pt-3.5 pb-3`,children:(0,Y.jsx)(`p`,{className:`font-heading text-[13px] font-semibold leading-tight tracking-tight text-foreground`,children:e.label})}),(0,Y.jsx)(`div`,{className:`relative z-10 px-4 py-0.5`,children:(0,Y.jsx)(`p`,{className:`font-mono text-xs tracking-tight text-muted-foreground`,children:e.hostname})}),(0,Y.jsxs)(`div`,{className:`relative z-10 mx-4 mb-3 flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`min-w-0 truncate font-mono text-[11px] text-muted-foreground`,children:e.sourceHostname}),(0,Y.jsx)(`div`,{className:`env-orbital-path min-w-6 flex-1`}),(0,Y.jsx)(h,{className:`size-3 shrink-0 text-muted-foreground`})]}),(0,Y.jsxs)(`div`,{className:`relative z-10 flex items-center gap-2 border-t border-border/30 px-3 py-1.5`,children:[(0,Y.jsxs)(`span`,{className:`flex shrink-0 items-center gap-1.5 rounded-full border border-border/40 px-2 py-0.5`,children:[(0,Y.jsx)(`span`,{className:`protocol-card-live-dot`,style:{width:5,height:5}}),(0,Y.jsx)(`span`,{className:`text-[10px] font-medium tracking-wide text-muted-foreground`,children:Ye(e.platformId)})]}),t&&(0,Y.jsxs)(`span`,{className:`flex min-w-0 items-center gap-1 truncate text-[10px] text-muted-foreground`,children:[(0,Y.jsx)(Ze,{status:t.status}),t.operationType===`apply`?`Applied`:`Cleaned`,` `,Ve(t.completedAt)]}),(0,Y.jsxs)(`div`,{className:`ml-auto flex shrink-0 items-center gap-0.5`,children:[(0,Y.jsx)(M,{variant:`ghost`,size:`icon-sm`,"aria-label":`Edit environment`,onClick:n,children:(0,Y.jsx)(qe,{className:`size-3`})}),(0,Y.jsx)(M,{variant:`ghost`,size:`icon-sm`,className:`text-destructive hover:text-destructive`,"aria-label":`Delete environment`,onClick:r,children:(0,Y.jsx)(v,{className:`size-3`})})]})]})]})}function $e({onClick:e}){return(0,Y.jsxs)(`button`,{type:`button`,onClick:e,className:`env-orbital group h-full w-full flex flex-col items-center justify-center gap-2 border border-dashed py-10 text-muted-foreground transition-colors hover:border-primary/30 hover:text-primary`,style:{"--_status":`var(--miravo-gray-4)`},children:[(0,Y.jsx)(_,{className:`size-5 transition-transform group-hover:scale-110`}),(0,Y.jsx)(`span`,{className:`text-xs`,children:`Add Environment`})]})}function et({environments:e,onMutate:t,lastOpByEnv:n}){let[r,i]=(0,J.useState)(!1),[a,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(B.id),[l,u]=(0,J.useState)({label:``,hostname:``,apiToken:``,sourceHostname:``}),[d,f]=(0,J.useState)(!1),{testing:p,runTest:m,cancelInFlight:h}=E(),[g,v]=(0,J.useState)(null),y=s===B.id&&l.hostname.trim().length>0&&l.sourceHostname.trim().length>0&&(a!==null||l.apiToken.trim().length>0),S=()=>{o(null),c(B.id),u({label:``,hostname:``,apiToken:``,sourceHostname:``}),i(!0)},ee=e=>{o(e.id),c(ve.some(t=>t.id===e.platformId)?e.platformId:B.id),u({label:e.label,hostname:e.hostname,apiToken:``,sourceHostname:e.sourceHostname}),i(!0)},w=async()=>{if(s!==B.id){U.error(`${Ye(s)} environment setup is coming soon.`);return}if(!l.label||!l.hostname||!l.sourceHostname){U.error(`Label, hostname, and source host are required.`);return}if(!a&&!l.apiToken){U.error(`API token is required for new environments.`);return}f(!0);try{a?(await b(a,{platformId:s,label:l.label,hostname:l.hostname,sourceHostname:l.sourceHostname,...l.apiToken?{apiToken:l.apiToken}:{}}),U.success(`Environment updated.`)):(await A({...l,platformId:s}),U.success(`Environment added.`)),i(!1),t()}catch(e){U.error(e instanceof Error?e.message:`Failed to save environment.`)}finally{f(!1)}},te=()=>{y&&m({hostname:l.hostname.trim(),sourceHostname:l.sourceHostname.trim(),...a?{environmentId:a}:{},...l.apiToken.trim()?{apiToken:l.apiToken.trim()}:{}})};return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,Y.jsx)(`h3`,{className:`flex h-5 items-center text-xs font-medium leading-none uppercase tracking-wider text-muted-foreground`,children:`Platform Environments`}),e.length>0?(0,Y.jsx)(He,{variant:`secondary`,className:`relative -top-px h-5 shrink-0 px-1.5 py-0 font-mono text-[10px] leading-none tabular-nums`,children:e.length}):null]}),(0,Y.jsxs)(M,{size:`sm`,className:`h-7 shrink-0 gap-1.5 text-xs`,onClick:S,children:[(0,Y.jsx)(_,{className:`size-3.5`}),` Add Environment`]})]}),e.length===0?(0,Y.jsx)(`div`,{className:`env-orbital border border-dashed`,style:{"--_status":`var(--miravo-gray-4)`},children:(0,Y.jsxs)(`div`,{className:`relative z-10 flex flex-col items-center gap-2 py-8 text-center`,children:[(0,Y.jsx)(Ee,{className:`size-8 text-muted-foreground`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No environments configured.`}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Add an environment to deploy templates to your edge platforms.`})]})}):(0,Y.jsx)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3`,children:(0,Y.jsxs)(G,{children:[e.map((e,t)=>(0,Y.jsx)(K.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},exit:{opacity:0,scale:.96,transition:{duration:.15}},transition:{type:`spring`,stiffness:380,damping:30,delay:t*.04},children:(0,Y.jsx)(Qe,{env:e,lastOp:n.get(e.id),onEdit:()=>ee(e),onDelete:()=>v(e)})},e.id)),(0,Y.jsx)(K.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{type:`spring`,stiffness:380,damping:30,delay:e.length*.04},children:(0,Y.jsx)($e,{onClick:S})},`add-card`)]})}),(0,Y.jsx)(Ie,{open:r,onOpenChange:e=>{e||h(),i(e)},children:(0,Y.jsxs)(Re,{children:[(0,Y.jsxs)(Le,{children:[(0,Y.jsx)(ze,{children:a?`Edit Environment`:`Add Environment`}),(0,Y.jsx)(Fe,{children:`Credentials are stored securely on the server.`})]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(q,{className:`text-xs`,children:`Platform`}),(0,Y.jsxs)(z,{value:s,onValueChange:e=>{e&&c(e)},disabled:a!==null,children:[(0,Y.jsx)(R,{className:`w-full`,"aria-label":`Platform type`,children:(0,Y.jsx)(P,{placeholder:`Select platform`,children:e=>k(e)})}),(0,Y.jsxs)(L,{children:[(0,Y.jsxs)(he,{children:[(0,Y.jsx)(pe,{children:`Available`}),be.map(e=>(0,Y.jsx)(F,{value:e.id,children:e.label},e.id))]}),(0,Y.jsx)(me,{}),(0,Y.jsxs)(he,{children:[(0,Y.jsx)(pe,{children:`Coming soon`}),ye.map(e=>(0,Y.jsxs)(F,{value:e.id,children:[(0,Y.jsx)(`span`,{children:e.label}),(0,Y.jsx)(He,{variant:`outline`,className:`ml-auto text-[9px]`,children:`Soon`})]},e.id))]})]})]})]}),s===B.id?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(q,{htmlFor:`env-label`,className:`text-xs`,children:`Label`}),(0,Y.jsx)(N,{id:`env-label`,placeholder:`Production`,value:l.label,onChange:e=>u({...l,label:e.currentTarget.value})})]}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(q,{htmlFor:`env-hostname`,className:`text-xs`,children:`Hostname`}),(0,Y.jsx)(N,{id:`env-hostname`,placeholder:`192.168.1.100`,value:l.hostname,onChange:e=>u({...l,hostname:e.currentTarget.value})})]}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsxs)(q,{htmlFor:`env-token`,className:`text-xs`,children:[`API Token`,a?` (leave blank to keep current)`:``]}),(0,Y.jsx)(N,{id:`env-token`,type:`password`,placeholder:a?`••••••••`:`Enter API token`,value:l.apiToken,onChange:e=>u({...l,apiToken:e.currentTarget.value})})]}),(0,Y.jsxs)(`div`,{className:`space-y-1`,children:[(0,Y.jsx)(q,{htmlFor:`env-source`,className:`text-xs`,children:x}),(0,Y.jsx)(N,{id:`env-source`,placeholder:`host.docker.internal`,value:l.sourceHostname,onChange:e=>u({...l,sourceHostname:e.currentTarget.value})}),(0,Y.jsx)(`p`,{className:`text-[11px] leading-snug text-muted-foreground`,children:T})]})]}):(0,Y.jsxs)(`div`,{className:`rounded-md border border-dashed border-border/70 bg-muted/20 px-3 py-2 text-xs text-muted-foreground`,children:[Ye(s),` environment setup is coming soon.`]})]}),(0,Y.jsx)(`span`,{className:`sr-only`,role:`status`,"aria-live":`polite`,children:p&&s===B.id?`Checking connection to Litmus Edge…`:``}),(0,Y.jsxs)(Pe,{children:[(0,Y.jsx)(M,{type:`button`,variant:`outline`,className:`mr-auto min-w-44 justify-center gap-2`,disabled:d||p||!y,"aria-busy":p,onClick:()=>void te(),children:p?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{className:`size-3.5 shrink-0 animate-spin`,"aria-hidden":!0}),`Testing connection`]}):`Test connection`}),(0,Y.jsx)(M,{variant:`outline`,onClick:()=>{h(),i(!1)},disabled:d,children:`Cancel`}),(0,Y.jsx)(M,{onClick:()=>void w(),disabled:d||s!==B.id,children:d?`Saving...`:a?`Save`:`Add`})]})]})}),(0,Y.jsx)(Ie,{open:g!==null,onOpenChange:e=>!e&&v(null),children:(0,Y.jsxs)(Re,{children:[(0,Y.jsxs)(Le,{children:[(0,Y.jsx)(ze,{children:`Remove Environment`}),(0,Y.jsxs)(Fe,{children:[`Remove “`,g?.label,`”? This only deletes the saved credentials — it does not affect resources on the target platform.`]})]}),(0,Y.jsxs)(Pe,{children:[(0,Y.jsx)(M,{variant:`outline`,onClick:()=>v(null),children:`Cancel`}),(0,Y.jsx)(M,{variant:`destructive`,onClick:async()=>{if(!g)return;let e=g.id;v(null);try{await C(e),U.success(`Environment removed.`),t()}catch(e){U.error(e instanceof Error?e.message:`Failed to remove environment.`)}},children:`Remove`})]})]})})]})}function tt({stream:e,onReset:t,catalogTemplates:n}){let[r,i]=(0,J.useState)(!1),a=e.operation?.operationId;if((0,J.useEffect)(()=>{i(!1)},[a]),!e.operation&&e.status!==`running`)return null;let{title:o,subtitle:s}=oe(e),c=e.status===`complete`,l=e.status===`error`,u=e.status===`running`,d=c||l;async function f(){i(!0);try{await e.cancel()}catch{i(!1)}}return(0,Y.jsx)(ee,{title:o,subtitle:s,footerAction:u&&e.operation?.operationId?(0,Y.jsx)(`div`,{className:`ml-auto shrink-0`,children:(0,Y.jsx)(`button`,{type:`button`,onClick:f,disabled:r,"aria-busy":r,className:j(fe({variant:`outline`,size:`sm`}),`group h-8 gap-1.5 px-3 text-xs`,r?`cursor-not-allowed`:`hover:bg-destructive/12 hover:text-destructive hover:border-destructive/35`),children:r?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(W,{className:`size-3.5 shrink-0 animate-spin text-muted-foreground`,"aria-hidden":!0}),(0,Y.jsx)(K.span,{animate:{opacity:[1,.72,1]},transition:{duration:1.25,repeat:1/0,ease:`easeInOut`},className:`font-medium text-foreground`,children:`Cancelling…`})]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(I,{className:`size-3.5 shrink-0 text-foreground/65 group-hover:text-destructive`,"aria-hidden":!0}),(0,Y.jsx)(K.span,{animate:{opacity:[1,.88,1]},transition:{duration:2.2,repeat:1/0,ease:`easeInOut`},children:`Cancel`})]})})}):d?(0,Y.jsxs)(`div`,{className:`flex w-full flex-col gap-1.5`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 w-full flex-1 flex-wrap items-center justify-between gap-x-3 gap-y-1`,children:[(0,Y.jsxs)(Ae,{to:`/platforms?tab=activity`,className:j(fe({variant:`ghost`,size:`xs`}),`group inline-flex h-6 shrink-0 items-center gap-1.5 px-2 text-[10px] font-medium text-foreground/80`,`hover:bg-primary/12 hover:text-primary`),children:[(0,Y.jsx)(m,{className:`size-3 shrink-0 text-foreground/70 group-hover:text-primary`,"aria-hidden":!0}),`View full activity`,(0,Y.jsx)(_e,{className:`size-2.5 shrink-0 text-foreground/50 group-hover:text-primary`,"aria-hidden":!0})]}),(0,Y.jsx)(`div`,{className:`flex shrink-0 items-center`,children:(0,Y.jsx)(M,{type:`button`,variant:`secondary`,size:`xs`,className:`h-6 px-2.5 text-[10px] font-medium`,onClick:t,children:`Close`})})]}),e.operation?.status===`cancelled`||l&&e.operation?(0,Y.jsx)(D,{type:e.operation.type,errorMessage:e.operation.error,className:`mt-2.5 w-full min-w-0`}):null]}):void 0,onDismiss:t,children:e.operation?(0,Y.jsx)(w,{operation:e.operation,catalogTemplates:n}):(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 py-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(W,{className:`size-3.5 animate-spin text-primary`,"aria-hidden":!0}),(0,Y.jsx)(`span`,{className:`text-xs text-foreground/78`,children:`Connecting to Litmus Edge…`})]}),(0,Y.jsx)(`div`,{className:`h-1 w-full overflow-hidden rounded-full bg-muted/55`,children:(0,Y.jsx)(K.div,{className:`h-full w-2/5 rounded-full bg-primary`,animate:{x:[`-100%`,`250%`]},transition:{duration:1.2,repeat:1/0,ease:`easeInOut`}})})]})})}function nt(e){return e.map(e=>e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1)).join(`, `)}function rt({onCloseTable:e,planKind:t=`apply`}){return(0,Y.jsx)(`div`,{className:`border-b border-border/40 px-3 py-3 sm:px-4`,children:(0,Y.jsxs)(`div`,{className:`flex gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-lg border border-border/50 bg-muted/15`,children:(0,Y.jsx)(Ge,{className:`size-4 text-muted-foreground`,"aria-hidden":!0})}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-start gap-1 pt-0.5 sm:gap-2`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-2`,children:[(0,Y.jsx)(`p`,{className:`font-heading text-[11px] font-semibold uppercase tracking-[0.14em] text-foreground`,children:t===`cleanup`?`Expected removals`:`Expected changes`}),(0,Y.jsx)(`span`,{className:`rounded border border-primary/25 bg-primary/5 px-1.5 py-px font-mono text-[9px] uppercase tracking-wider text-primary/90`,children:`Draft`})]}),(0,Y.jsx)(`p`,{className:`mt-1.5 max-w-prose text-[10px] leading-relaxed text-muted-foreground`,children:t===`cleanup`?`Preview only — nothing runs until you confirm cleanup.`:`Preview only — nothing runs until you confirm deploy.`})]}),e&&(0,Y.jsx)(M,{type:`button`,variant:`ghost`,size:`icon`,className:`size-8 shrink-0 text-muted-foreground hover:text-foreground`,onClick:e,"aria-label":`Close table`,children:(0,Y.jsx)(I,{className:`size-4`,"aria-hidden":!0})})]})]})})}var it={create:`bg-emerald-500/12 text-emerald-400 border-emerald-500/30`,update:`bg-sky-500/12 text-sky-400 border-sky-500/30`,replace:`bg-orange-500/12 text-orange-400 border-orange-500/30`,delete:`bg-red-500/12 text-red-400 border-red-500/30`,blocked:`bg-amber-500/12 text-amber-400 border-amber-500/30`};function at({plan:e,planKind:t}){let n=t===`apply`&&e.sourceHostname!=null&&e.sourceHostname!==``;return(0,Y.jsx)(`div`,{className:`border-b border-border/35 bg-muted/10 px-3 py-2 sm:px-4`,children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-1.5 text-[10px] leading-snug sm:flex-row sm:flex-wrap sm:items-baseline sm:gap-x-4 sm:gap-y-1`,children:[(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-0.5`,children:[(0,Y.jsx)(`span`,{className:`shrink-0 font-mono text-[9px] uppercase tracking-wider text-muted-foreground/85`,children:`Target LE`}),(0,Y.jsx)(`span`,{className:`font-mono text-foreground/90 wrap-anywhere`,children:e.targetHost})]}),n?(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-0.5 sm:border-l sm:border-border/50 sm:pl-4`,children:[(0,Y.jsx)(`span`,{className:`shrink-0 font-mono text-[9px] uppercase tracking-wider text-muted-foreground/85`,children:x}),(0,Y.jsx)(`span`,{className:`font-mono text-foreground/90 wrap-anywhere`,children:e.sourceHostname})]}):null]})})}function ot({entries:e}){let t=e.reduce((e,t)=>(e[t.action]++,e),{create:0,update:0,replace:0,delete:0,blocked:0});return(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-b border-border/35 px-3 py-2.5 sm:px-4`,children:[(0,Y.jsx)(`span`,{className:`sr-only`,children:`Summary of planned actions`}),(0,Y.jsx)(`span`,{className:`font-mono text-[9px] uppercase tracking-[0.18em] text-muted-foreground`,children:`Manifest`}),(0,Y.jsx)(`span`,{className:`hidden h-3 w-px bg-border/60 sm:block`,"aria-hidden":!0}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-wrap items-center gap-2`,children:[t.create>0&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center rounded border border-emerald-500/25 bg-emerald-500/10 px-2 py-0.5 font-mono text-[10px] tabular-nums text-emerald-400`,children:[`+`,t.create,` new`]}),t.update>0&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center rounded border border-sky-500/25 bg-sky-500/10 px-2 py-0.5 font-mono text-[10px] tabular-nums text-sky-400`,children:[`~`,t.update,` update`]}),t.replace>0&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center rounded border border-orange-500/25 bg-orange-500/10 px-2 py-0.5 font-mono text-[10px] tabular-nums text-orange-400`,children:[`↺`,t.replace,` replace`]}),t.delete>0&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center rounded border border-red-500/25 bg-red-500/10 px-2 py-0.5 font-mono text-[10px] tabular-nums text-red-400`,children:[`−`,t.delete,` remove`]}),t.blocked>0&&(0,Y.jsxs)(`span`,{className:`inline-flex items-center rounded border border-amber-500/25 bg-amber-500/10 px-2 py-0.5 font-mono text-[10px] tabular-nums text-amber-400`,children:[t.blocked,` skipped`]})]})]})}function st({plan:e,onCloseTable:t,planKind:n=`apply`}){return e.entries.length===0?(0,Y.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-dashed border-border/55`,children:[(0,Y.jsx)(rt,{onCloseTable:t,planKind:n}),(0,Y.jsx)(at,{plan:e,planKind:n}),(0,Y.jsxs)(`div`,{className:`flex flex-col items-center gap-3 px-4 py-10 text-center`,children:[(0,Y.jsx)(`div`,{className:`flex size-12 items-center justify-center rounded-xl border border-border/50`,children:(0,Y.jsx)(Ge,{className:`size-6 text-muted-foreground/45`,"aria-hidden":!0})}),(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`p`,{className:`font-heading text-sm font-semibold tracking-tight text-foreground`,children:n===`cleanup`?`Nothing to remove`:`Nothing to change`}),(0,Y.jsx)(`p`,{className:`mx-auto mt-2 max-w-sm text-[11px] leading-relaxed text-muted-foreground`,children:n===`cleanup`?`No Miravo-managed resources matched this cleanup scope on the environment — nothing would be deleted.`:`This template already matches what is on the environment — no create or update steps.`})]})]})]}):(0,Y.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-border/45`,children:[(0,Y.jsx)(rt,{onCloseTable:t,planKind:n}),(0,Y.jsx)(at,{plan:e,planKind:n}),(0,Y.jsx)(ot,{entries:e.entries}),(0,Y.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Y.jsxs)(`table`,{className:`w-full min-w-lg text-xs`,children:[(0,Y.jsx)(`caption`,{className:`sr-only`,children:n===`cleanup`?`Detailed list of planned cleanup actions in deletion order`:`Detailed list of create, update, and delete actions in deployment order`}),(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{className:`border-b border-border/45`,children:[(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 bg-background px-3 py-2 text-left font-heading text-[9px] font-semibold uppercase tracking-[0.14em] text-muted-foreground sm:px-3.5`,children:`Action`}),(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 bg-background px-3 py-2 text-left font-heading text-[9px] font-semibold uppercase tracking-[0.14em] text-muted-foreground sm:px-3.5`,children:`Type`}),(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 bg-background px-3 py-2 text-left font-heading text-[9px] font-semibold uppercase tracking-[0.14em] text-muted-foreground sm:px-3.5`,children:`Name`}),(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 hidden bg-background px-3 py-2 text-left font-heading text-[9px] font-semibold uppercase tracking-[0.14em] text-muted-foreground sm:table-cell sm:px-3.5`,children:`Protocol`}),(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 hidden bg-background px-3 py-2 text-left font-heading text-[9px] font-semibold uppercase tracking-[0.14em] text-muted-foreground md:table-cell md:px-3.5`,children:`Detail`})]})}),(0,Y.jsx)(`tbody`,{children:e.entries.map((e,t)=>(0,Y.jsxs)(`tr`,{className:j(`border-b border-border/25 transition-colors`,t%2==1?`bg-muted/35`:`bg-transparent`,`hover:bg-primary/4`),children:[(0,Y.jsx)(`td`,{className:`px-3 py-2 align-middle sm:px-3.5`,children:(0,Y.jsx)(He,{variant:`outline`,className:j(`border px-1.5 py-0 font-mono text-[10px] uppercase tracking-wide`,it[e.action]),children:e.action})}),(0,Y.jsx)(`td`,{className:`px-3 py-2 align-middle font-mono text-[11px] text-foreground sm:px-3.5`,children:e.resourceType}),(0,Y.jsx)(`td`,{className:`max-w-[min(16rem,28vw)] truncate px-3 py-2 align-middle font-mono text-[11px] text-foreground sm:max-w-xs sm:px-3.5`,children:e.name}),(0,Y.jsx)(`td`,{className:`hidden px-3 py-2 align-middle font-mono text-[11px] text-muted-foreground sm:table-cell sm:px-3.5`,children:e.protocol??`—`}),(0,Y.jsx)(`td`,{className:`hidden max-w-xs truncate px-3 py-2 align-middle text-[11px] text-muted-foreground md:table-cell md:px-3.5`,children:e.blockReason??e.detail??`—`})]},`${e.action}-${e.resourceType}-${e.name}-${e.protocol??``}-${e.detail??e.blockReason??``}`))})]})}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 border-t border-border/40 px-3 py-3 text-[10px] text-muted-foreground sm:flex-row sm:items-center sm:justify-between sm:gap-4 sm:px-4`,children:[(0,Y.jsxs)(`span`,{children:[(0,Y.jsx)(`span`,{className:`font-mono tabular-nums text-foreground/90`,children:e.entries.length}),` `,(0,Y.jsxs)(`span`,{className:`text-muted-foreground/90`,children:[e.entries.length===1?`action`:`actions`,` queued`]})]}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 font-mono text-[10px] wrap-anywhere`,children:[(0,Y.jsx)(`span`,{className:`shrink-0 text-[9px] uppercase tracking-wider text-muted-foreground/80`,children:`Scope`}),(0,Y.jsx)(`span`,{className:`min-w-0 text-foreground/90`,children:nt(e.scope)})]})]})]})}var ct=[`s1`,`s2`,`s3`,`s4`];function lt(){return(0,Y.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-border/45`,role:`status`,"aria-busy":`true`,"aria-live":`polite`,children:[(0,Y.jsx)(`span`,{className:`sr-only`,children:`Loading plan preview`}),(0,Y.jsx)(`div`,{className:`border-b border-border/40 px-3 py-3 sm:px-4`,children:(0,Y.jsxs)(`div`,{className:`flex gap-3`,children:[(0,Y.jsx)(X,{className:`size-10 shrink-0 rounded-lg`}),(0,Y.jsx)(`div`,{className:`flex min-w-0 flex-1 items-start gap-1 pt-0.5 sm:gap-2`,children:(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-2`,children:[(0,Y.jsx)(X,{className:`h-3.5 w-40`}),(0,Y.jsx)(X,{className:`h-4 w-11 rounded border`})]}),(0,Y.jsx)(X,{className:`mt-1.5 h-3 max-w-prose`})]})})]})}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 border-b border-border/35 px-3 py-2.5 sm:px-4`,children:[(0,Y.jsx)(X,{className:`h-2.5 w-14`}),(0,Y.jsx)(X,{className:`hidden h-3 w-px shrink-0 sm:block`}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-wrap items-center gap-2`,children:[(0,Y.jsx)(X,{className:`h-5 w-18 rounded-md`}),(0,Y.jsx)(X,{className:`h-5 w-24 rounded-md`}),(0,Y.jsx)(X,{className:`h-5 w-20 rounded-md`})]})]}),(0,Y.jsx)(`div`,{className:`overflow-x-auto`,children:(0,Y.jsxs)(`table`,{className:`w-full min-w-lg text-xs`,"aria-hidden":!0,children:[(0,Y.jsx)(`thead`,{children:(0,Y.jsxs)(`tr`,{className:`border-b border-border/45`,children:[(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 bg-background px-3 py-2 text-left sm:px-3.5`,children:(0,Y.jsx)(X,{className:`h-2.5 w-12`})}),(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 bg-background px-3 py-2 text-left sm:px-3.5`,children:(0,Y.jsx)(X,{className:`h-2.5 w-9`})}),(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 bg-background px-3 py-2 text-left sm:px-3.5`,children:(0,Y.jsx)(X,{className:`h-2.5 w-10`})}),(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 hidden bg-background px-3 py-2 text-left sm:table-cell sm:px-3.5`,children:(0,Y.jsx)(X,{className:`h-2.5 w-14`})}),(0,Y.jsx)(`th`,{scope:`col`,className:`sticky top-0 z-10 hidden bg-background px-3 py-2 text-left md:table-cell md:px-3.5`,children:(0,Y.jsx)(X,{className:`h-2.5 w-11`})})]})}),(0,Y.jsx)(`tbody`,{children:ct.map((e,t)=>(0,Y.jsxs)(`tr`,{className:j(`border-b border-border/25 transition-colors`,t%2==1?`bg-muted/35`:`bg-transparent`,`hover:bg-primary/4`),children:[(0,Y.jsx)(`td`,{className:`px-3 py-2 align-middle sm:px-3.5`,children:(0,Y.jsx)(X,{className:`h-5 w-13 rounded-md`})}),(0,Y.jsx)(`td`,{className:`px-3 py-2 align-middle sm:px-3.5`,children:(0,Y.jsx)(X,{className:`h-3.5 w-16 font-mono`})}),(0,Y.jsx)(`td`,{className:`max-w-[min(16rem,28vw)] px-3 py-2 align-middle sm:max-w-xs sm:px-3.5`,children:(0,Y.jsx)(X,{className:`h-3.5 w-full max-w-48 font-mono`})}),(0,Y.jsx)(`td`,{className:`hidden px-3 py-2 align-middle sm:table-cell sm:px-3.5`,children:(0,Y.jsx)(X,{className:`h-3.5 w-10 font-mono`})}),(0,Y.jsx)(`td`,{className:`hidden max-w-xs px-3 py-2 align-middle md:table-cell md:px-3.5`,children:(0,Y.jsx)(X,{className:`h-3.5 w-full max-w-40`})})]},e))})]})}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 border-t border-border/40 px-3 py-3 text-[10px] text-muted-foreground sm:flex-row sm:items-center sm:justify-between sm:gap-4 sm:px-4`,children:[(0,Y.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,Y.jsx)(X,{className:`inline-block h-3 w-6 rounded-sm`}),(0,Y.jsx)(X,{className:`inline-block h-3 w-28`})]}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1 font-mono text-[10px] wrap-anywhere`,children:[(0,Y.jsx)(X,{className:`h-2.5 w-8 shrink-0`}),(0,Y.jsx)(X,{className:`h-6 min-w-32 rounded-md border border-border/50 px-2 py-0.5`}),(0,Y.jsx)(X,{className:`h-1 w-1 shrink-0 rounded-full`}),(0,Y.jsx)(X,{className:`h-2.5 w-10 shrink-0`}),(0,Y.jsx)(X,{className:`h-3 min-w-16 max-w-56 flex-1`})]})]})]})}function ut(e){return e instanceof DOMException&&e.name===`AbortError`||e instanceof Error&&e.name===`AbortError`}function dt({environments:e,stream:t}){let[n,r]=(0,J.useState)(`apply`),[i,o]=(0,J.useState)(``),[s,c]=(0,J.useState)(``),[l,d]=(0,J.useState)(!1),[p,m]=(0,J.useState)(null),[h,_]=(0,J.useState)(!1),[y,b]=(0,J.useState)(!1),x=(0,J.useRef)(0),S=(0,J.useRef)(null),C=t.status===`running`,ee=u({queryKey:f.catalog.templates(),queryFn:()=>a(`/catalog/templates`)}),w=n===`apply`?!!i&&!!s:!!i&&(l||!!s),T=e.find(e=>e.id===i),E=(0,J.useCallback)(()=>{x.current+=1,S.current?.abort(),S.current=null,_(!1),m(null)},[]),te=(0,J.useCallback)(()=>{E(),U.message(`Preview cancelled`)},[E]),ie=e=>{C||(r(e),E(),d(!1))},D=(0,J.useCallback)(async e=>{if(e===`apply`){if(!i||!s)return}else if(!i||!l&&!s)return;t.operation&&t.status!==`running`&&t.reset(),S.current?.abort(),x.current+=1;let n=x.current,r=new AbortController;S.current=r,_(!0),m(null);try{let t=e===`apply`?await ce({environmentId:i,template:s},{signal:r.signal}):await g({environmentId:i,...l?{allManaged:!0}:{template:s}},{signal:r.signal});if(n!==x.current)return;m(t.plan)}catch(t){if(n!==x.current||ut(t))return;U.error(t instanceof Error?t.message:e===`apply`?`Plan failed`:`Cleanup plan failed`)}finally{n===x.current&&_(!1)}},[i,s,l,t]),oe=(0,J.useCallback)(e=>{b(!1),E();let{scope:r,ifUnmanaged:a}=e;n===`apply`?t.startApply({environmentId:i,template:s,scope:r,ifUnmanaged:a}):t.startCleanup({environmentId:i,...l?{allManaged:!0}:{template:s},scope:r})},[n,i,s,l,t,E]),O=n===`apply`,k=ee.data??[],le=k.find(e=>e.id===s)?.name??s,A=w&&!C,ue=O?`Provisions devices, tags, and Digital Twin models from the selected template on the target edge.`:l?`Removes all Miravo-managed resources from the environment (ignores template scope).`:`Removes Miravo-managed resources for this template from the selected environment.`;return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,Y.jsxs)(`div`,{className:`inline-flex items-center gap-0.5 rounded-lg border border-border/50 bg-muted/15 p-0.5`,children:[(0,Y.jsxs)(`button`,{type:`button`,className:j(`relative flex items-center gap-1.5 rounded-md px-4 py-1.5 text-xs font-medium transition-colors`,O?`text-primary`:`text-muted-foreground hover:text-foreground`),onClick:()=>ie(`apply`),disabled:C,children:[O&&(0,Y.jsx)(K.span,{layoutId:`mode-pill`,className:`absolute inset-0 rounded-md bg-primary/15 shadow-sm`,transition:{type:`spring`,stiffness:500,damping:40}}),(0,Y.jsx)(Je,{className:`relative z-10 size-3.5`}),(0,Y.jsx)(`span`,{className:`relative z-10`,children:`Apply`})]}),(0,Y.jsxs)(`button`,{type:`button`,className:j(`relative flex items-center gap-1.5 rounded-md px-4 py-1.5 text-xs font-medium transition-colors`,O?`text-muted-foreground hover:text-foreground`:`text-destructive`),onClick:()=>ie(`cleanup`),disabled:C,children:[!O&&(0,Y.jsx)(K.span,{layoutId:`mode-pill`,className:`absolute inset-0 rounded-md bg-destructive/15 shadow-sm`,transition:{type:`spring`,stiffness:500,damping:40}}),(0,Y.jsx)(v,{className:`relative z-10 size-3.5`}),(0,Y.jsx)(`span`,{className:`relative z-10`,children:`Cleanup`})]})]}),(0,Y.jsx)(ae,{stream:t})]}),(0,Y.jsx)(se,{children:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start gap-3 border-b border-border/25 pb-3`,children:[(0,Y.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg border border-primary/25 bg-primary/9 shadow-[inset_0_1px_0_0_rgba(255,255,255,0.06)]`,children:(0,Y.jsx)(Te,{className:`size-4 text-primary`,"aria-hidden":!0})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`p`,{className:`font-heading text-[11px] font-semibold uppercase tracking-[0.12em] text-foreground`,children:`Litmus Edge`}),(0,Y.jsx)(`p`,{className:`mt-0.5 text-[10px] leading-relaxed text-muted-foreground`,children:ue})]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2`,children:[(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsx)(q,{className:`font-heading text-[10px] font-medium uppercase tracking-[0.14em] text-muted-foreground`,children:`Target environment`}),(0,Y.jsx)(ne,{environments:e,value:i,onValueChange:e=>{o(e),E()},disabled:C,size:`sm`,className:`min-w-0 w-full text-xs`})]}),(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsx)(q,{className:`font-heading text-[10px] font-medium uppercase tracking-[0.14em] text-muted-foreground`,children:`Template`}),(0,Y.jsxs)(z,{value:s,onValueChange:e=>{e&&(c(e),E(),O&&t.reset())},disabled:n===`cleanup`&&l||C,children:[(0,Y.jsx)(R,{size:`sm`,className:`min-w-0 w-full text-xs h-9! min-h-9 py-0`,"aria-label":`Template`,children:(0,Y.jsx)(P,{placeholder:l?`All managed`:`Select template`,children:e=>n===`cleanup`&&l?`All managed resources`:k.find(t=>t.id===e)?.name??(l?`All managed`:`Select template`)})}),(0,Y.jsx)(L,{className:`max-h-48 w-(--anchor-width) min-w-0 p-1`,children:k.map(e=>(0,Y.jsx)(F,{value:e.id,className:`h-9 gap-1.5 rounded-md py-0 pr-7 pl-1.5 text-xs leading-tight`,children:(0,Y.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`flex size-7 shrink-0 items-center justify-center rounded-md border border-border/35 bg-muted/25 text-primary`,children:(0,Y.jsx)(de,{id:e.id,className:`size-3.5`})}),(0,Y.jsx)(`span`,{className:`min-w-0 truncate font-medium`,children:e.name})]})},e.id))})]})]})]}),(0,Y.jsxs)(`button`,{type:`button`,disabled:!A,onClick:()=>b(!0),className:j(`group flex w-full min-h-14 items-stretch overflow-hidden rounded-xl text-left outline-none`,`transition-[border-color,box-shadow,background-color] duration-200 ease-out`,`focus-visible:ring-2 focus-visible:ring-ring/70 focus-visible:ring-offset-2 focus-visible:ring-offset-background`,`disabled:pointer-events-none disabled:opacity-55`,O?A?[`border-2 border-primary/40 bg-background`,`bg-linear-to-r from-primary/12 via-background to-background`,`shadow-[inset_0_1px_0_0_rgba(255,255,255,0.05)]`,`hover:border-primary/56 hover:shadow-[inset_0_1px_0_0_rgba(255,255,255,0.05),0_0_24px_-6px_color-mix(in_srgb,var(--primary)_32%,transparent),0_0_40px_-12px_color-mix(in_srgb,var(--primary)_14%,transparent)]`]:[`border border-dashed border-border/65 bg-muted/15`,`hover:bg-muted/22`]:A?[`border-2 border-destructive/40 bg-background`,`bg-linear-to-r from-destructive/10 via-background to-background`,`shadow-[inset_0_1px_0_0_rgba(255,255,255,0.05)]`,`hover:border-destructive/60 hover:shadow-[inset_0_1px_0_0_rgba(255,255,255,0.05),0_0_24px_-6px_color-mix(in_srgb,var(--destructive)_28%,transparent),0_0_40px_-12px_color-mix(in_srgb,var(--destructive)_12%,transparent)]`]:[`border border-dashed border-border/65 bg-muted/15`,`hover:bg-muted/22`]),children:[(0,Y.jsx)(`span`,{className:`relative flex w-18 shrink-0 items-center justify-center bg-transparent`,"aria-hidden":!0,children:O?(0,Y.jsx)(Ce,{className:j(`relative size-5`,A?`text-primary`:`text-muted-foreground`)}):(0,Y.jsx)(v,{className:j(`relative size-5`,A?`text-destructive`:`text-muted-foreground`)})}),(0,Y.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col justify-center gap-0.5 px-3 py-2.5 sm:px-4`,children:[(0,Y.jsx)(`span`,{className:j(`font-heading text-[10px] font-semibold uppercase tracking-[0.18em]`,O?A?`text-primary`:`text-muted-foreground`:A?`text-destructive`:`text-muted-foreground`),children:A?O?`Commit deploy`:`Commit cleanup`:`Awaiting selection`}),(0,Y.jsx)(`span`,{className:j(`truncate font-mono text-[13px] leading-tight tracking-tight`,A?`text-foreground`:`text-muted-foreground`),children:T?.label??`Select environment and template`})]}),(0,Y.jsx)(`span`,{className:j(`flex shrink-0 items-center pr-2.5 sm:pr-3`,A&&`pl-1`),children:(0,Y.jsx)(`span`,{className:j(`flex size-9 items-center justify-center rounded-lg border bg-transparent transition-[border-color,color] duration-200`,O?A?`border-primary/40 text-primary group-hover:border-primary/55`:`border-border/45 text-muted-foreground`:A?`border-destructive/45 text-destructive group-hover:border-destructive/65`:`border-border/45 text-muted-foreground`),"aria-hidden":!0,children:(0,Y.jsx)(_e,{className:`size-4`,strokeWidth:2.25})})})]}),!O&&(0,Y.jsx)(`div`,{className:`flex w-full min-w-0 flex-wrap items-center justify-end gap-2`,children:(0,Y.jsxs)(q,{id:`all-managed-label`,htmlFor:`all-managed`,"aria-disabled":C,className:j(`inline-flex h-8 w-fit max-w-full cursor-pointer items-center gap-2 text-xs font-medium leading-none`,C&&`pointer-events-none opacity-40`),children:[(0,Y.jsx)(we,{id:`all-managed`,checked:l,onCheckedChange:e=>d(e===!0),disabled:C}),(0,Y.jsx)(`span`,{className:`shrink-0`,children:`Remove all Miravo managed resources`})]})})]})}),(h||p)&&!C&&(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[h&&(0,Y.jsx)(`div`,{className:`flex w-full min-w-0 flex-wrap items-center justify-end gap-2`,children:(0,Y.jsxs)(M,{type:`button`,variant:`ghost`,size:`sm`,className:`h-8 shrink-0 gap-1.5 px-2 text-xs text-muted-foreground hover:text-foreground`,onClick:te,children:[(0,Y.jsx)(I,{className:`size-3.5`,"aria-hidden":!0}),`Cancel preview`]})}),h&&(0,Y.jsx)(lt,{}),p&&!h&&(0,Y.jsx)(st,{plan:p,planKind:O?`apply`:`cleanup`,onCloseTable:E})]}),T&&(0,Y.jsx)(re,{open:y,onOpenChange:b,type:n,label:!O&&l?`All managed resources`:le,environmentLabel:T.label,hostname:T.hostname,sourceHostname:T.sourceHostname,onConfirm:oe,applyPreview:O?{onPreview:()=>void D(`apply`),planLoading:h,disabled:!i||!s||C}:void 0,cleanupPreview:O?void 0:{onPreview:()=>void D(`cleanup`),planLoading:h,disabled:!i||!l&&!s||C}})]})}function ft(e){let t=new Date(e),n=new Date,r=new Date(n);return r.setDate(n.getDate()-1),t.toDateString()===n.toDateString()?`Today`:t.toDateString()===r.toDateString()?`Yesterday`:t.toLocaleDateString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`})}function pt(e){let t=new Map;for(let n of e){let e=new Date(n.completedAt).toDateString(),r=t.get(e);r?r.push(n):t.set(e,[n])}return Array.from(t.entries()).map(([,e])=>({label:ft(e[0]?.completedAt??Date.now()),ops:e}))}function Z(e,t){return e===`device`?t.operationType===`apply`?`Tag/register writes per device step—not a device count.`:`One count per device removed from DeviceHub.`:e===`model`?`One count per model in this run.`:e===`instance`?`One count per twin instance in this run.`:`Sets the device parameter to the bound DeviceHub device.`}var mt={devices:`Devices`,models:`DT models`,instances:`DT instances`},Q={create:`inline-flex items-center rounded border border-emerald-500/35 bg-emerald-500/12 px-1.5 py-0.5 font-mono text-[10px] tabular-nums text-emerald-700 dark:text-emerald-300`,update:`inline-flex items-center rounded border border-primary/35 bg-primary/12 px-1.5 py-0.5 font-mono text-[10px] tabular-nums text-primary`,replace:`inline-flex items-center rounded border border-orange-500/35 bg-orange-500/12 px-1.5 py-0.5 font-mono text-[10px] tabular-nums text-orange-700 dark:text-orange-300`,delete:`inline-flex items-center rounded border border-red-500/35 bg-red-500/12 px-1.5 py-0.5 font-mono text-[10px] tabular-nums text-red-700 dark:text-red-300`,failed:`inline-flex items-center rounded border border-destructive/40 bg-destructive/18 px-1.5 py-0.5 font-mono text-[10px] font-semibold tabular-nums text-destructive dark:text-red-300`};function ht(e){return[{key:`device`,title:`DeviceHub — protocol tags`,subtitle:Z(`device`,e),counts:e.resourceCounts.device},{key:`model`,title:`Digital Twin models`,subtitle:Z(`model`,e),counts:e.resourceCounts.model},{key:`instance`,title:`Twin instances`,subtitle:Z(`instance`,e),counts:e.resourceCounts.instance},{key:`param-sync`,title:`Parameter sync`,subtitle:Z(`param-sync`,e),counts:e.resourceCounts[`param-sync`]}].filter(e=>e.counts.total>0||e.counts.failed>0)}function gt(e){return e.length===0?`Default (devices, models, instances)`:e.map(e=>mt[e]??e).join(` · `)}function _t(e){let t=[];return e.filters.area&&t.push(`Area ${e.filters.area}`),e.filters.line&&t.push(`Line ${e.filters.line}`),e.filters.instance&&t.push(`Instance ${e.filters.instance}`),t.length>0?t.join(` · `):null}function $(e,t,n){if(e===`device`)switch(t){case`create`:return`+${n} tags (new device)`;case`update`:return`${n} tags rewritten`;case`replace`:return`↻${n} tags (device replaced)`;case`delete`:return`−${n} removed`}switch(t){case`create`:return`+${n} created`;case`update`:return`${n} updated`;case`replace`:return`↻${n} replaced`;case`delete`:return`−${n} removed`}}function vt({row:e}){let{key:t,counts:n}=e;return(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-wrap items-center gap-1.5`,children:[n.create>0&&(0,Y.jsx)(`span`,{className:Q.create,children:$(t,`create`,n.create)}),n.update>0&&(0,Y.jsx)(`span`,{className:Q.update,children:$(t,`update`,n.update)}),n.replace>0&&(0,Y.jsx)(`span`,{className:Q.replace,children:$(t,`replace`,n.replace)}),n.delete>0&&(0,Y.jsx)(`span`,{className:Q.delete,children:$(t,`delete`,n.delete)}),n.failed>0&&(0,Y.jsx)(`span`,{className:Q.failed,children:`${n.failed} failed`})]})}function yt({op:e}){let t=_t(e);return(0,Y.jsxs)(`div`,{className:`rounded-md border border-border/50 bg-muted/25 px-3 py-2.5`,children:[(0,Y.jsx)(`p`,{className:`font-mono text-[9px] uppercase tracking-[0.16em] text-foreground/72`,children:`Run context`}),(0,Y.jsxs)(`dl`,{className:`mt-2 grid grid-cols-[minmax(0,7.5rem)_1fr] gap-x-3 gap-y-1.5 text-xs sm:grid-cols-[9rem_1fr]`,children:[(0,Y.jsx)(`dt`,{className:`text-foreground/70`,children:`Operation`}),(0,Y.jsx)(`dd`,{className:`font-medium capitalize text-foreground`,children:e.operationType}),(0,Y.jsx)(`dt`,{className:`text-foreground/70`,children:`Target host`}),(0,Y.jsx)(`dd`,{className:`break-all font-mono text-[11px] text-foreground`,children:e.hostname}),(0,Y.jsx)(`dt`,{className:`text-foreground/70`,children:`Scope`}),(0,Y.jsx)(`dd`,{className:`text-foreground`,children:gt(e.scope)}),t&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`dt`,{className:`text-foreground/70`,children:`Filters`}),(0,Y.jsx)(`dd`,{className:`text-foreground`,children:t})]}),(0,Y.jsx)(`dt`,{className:`text-foreground/70`,children:`Duration`}),(0,Y.jsxs)(`dd`,{className:`tabular-nums text-foreground`,children:[(e.durationMs/1e3).toFixed(1),`s`]}),(0,Y.jsx)(`dt`,{className:`text-foreground/70`,children:`Outcome`}),(0,Y.jsxs)(`dd`,{className:`text-foreground`,children:[(0,Y.jsx)(`span`,{className:`tabular-nums`,children:e.successCount}),` steps succeeded`,e.failedCount>0&&(0,Y.jsxs)(`span`,{className:`text-destructive`,children:[` `,`· `,(0,Y.jsx)(`span`,{className:`tabular-nums`,children:e.failedCount}),` failed`]}),e.blockedCount>0&&(0,Y.jsxs)(`span`,{className:`text-amber-600 dark:text-amber-400`,children:[` `,`· `,(0,Y.jsx)(`span`,{className:`tabular-nums`,children:e.blockedCount}),` blocked in plan`]})]})]})]})}function bt({status:e}){switch(e){case`success`:return(0,Y.jsx)(H,{className:`mt-px size-4 shrink-0 text-emerald-500`});case`failed`:return(0,Y.jsx)(V,{className:`mt-px size-4 shrink-0 text-destructive`});case`partial`:case`blocked`:return(0,Y.jsx)(De,{className:`mt-px size-4 shrink-0 text-amber-500`});case`noop`:return(0,Y.jsx)(Ke,{className:`mt-px size-4 shrink-0 text-foreground/55`})}}function xt(e){let t=e.operationType===`apply`?`Applied`:`Cleaned up`,n=`${(e.durationMs/1e3).toFixed(1)}s`,r=[];return e.successCount>0&&r.push(`${e.successCount} resources`),e.failedCount>0&&r.push(`${e.failedCount} failed`),e.blockedCount>0&&r.push(`${e.blockedCount} blocked`),r.length===0?`${t} · no changes · ${n}`:`${t} · ${r.join(`, `)} · ${n}`}function St(e){return e.operationType===`cleanup`&&e.successCount===0&&e.failedCount===0&&e.blockedCount===0?`No Miravo-managed resources were found to clean up.`:e.failedCount>0&&e.blockedCount>0?`No per-phase counts — failures and blocked plan entries.`:e.failedCount>0?`No per-phase counts — run failed.`:e.blockedCount>0?`No per-phase counts — blocked plan entries.`:`No per-phase counts recorded.`}function Ct({op:e}){let t=ht(e);return t.length===0?(0,Y.jsx)(`p`,{className:`py-1 text-sm text-foreground/75`,children:St(e)}):(0,Y.jsxs)(`div`,{className:`space-y-3 pt-1`,children:[(0,Y.jsx)(`div`,{className:`flex flex-col divide-y divide-border/45 rounded-md border border-border/50`,children:t.map(e=>(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 px-3 py-2.5 sm:flex-row sm:items-start sm:gap-4`,children:[(0,Y.jsxs)(`div`,{className:`min-w-0 shrink-0 sm:w-[11.5rem]`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(`span`,{className:`text-xs font-medium leading-snug text-foreground`,children:e.title}),(0,Y.jsxs)(Ne,{children:[(0,Y.jsx)(je,{type:`button`,className:`inline-flex shrink-0 items-center justify-center rounded p-0.5 text-foreground/60 hover:bg-muted/50 hover:text-foreground`,"aria-label":`About ${e.title}`,children:(0,Y.jsx)(Se,{className:`size-3.5`,"aria-hidden":!0})}),(0,Y.jsx)(Me,{side:`top`,className:`max-w-xs text-left`,children:e.subtitle})]})]}),(0,Y.jsx)(`p`,{className:`mt-0.5 text-[10px] leading-snug text-foreground/72 sm:hidden`,children:e.subtitle})]}),(0,Y.jsx)(vt,{row:e})]},e.key))}),e.blockedCount>0&&(0,Y.jsxs)(`p`,{className:`rounded border border-amber-500/20 bg-amber-500/5 px-2.5 py-1.5 text-[11px] text-amber-800 dark:text-amber-200/95`,children:[(0,Y.jsx)(`span`,{className:`font-medium`,children:e.blockedCount}),` plan entries were blocked (skipped). Open a `,(0,Y.jsx)(`span`,{className:`font-medium`,children:`deploy preview`}),` before running to see block reasons.`]})]})}function wt({operation:e}){let[t,n]=(0,J.useState)(!1);return(0,Y.jsxs)(`div`,{className:j(`overflow-hidden rounded-lg border border-border/55`,`transition-colors duration-150`),children:[(0,Y.jsxs)(`button`,{type:`button`,"aria-expanded":t,onClick:()=>n(e=>!e),className:j(`flex w-full items-start gap-3 p-3.5 text-left`,`transition-colors duration-100`,`hover:bg-muted/25`,t&&`bg-muted/18`),children:[(0,Y.jsx)(bt,{status:e.status}),(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,Y.jsxs)(`p`,{className:`min-w-0 truncate text-sm`,children:[(0,Y.jsx)(`span`,{className:`font-medium text-foreground`,children:Be(e.templateId)}),(0,Y.jsx)(`span`,{className:`mx-1.5 text-foreground/50`,children:`→`}),(0,Y.jsx)(`span`,{className:`text-foreground/82`,children:e.environmentLabel})]}),(0,Y.jsx)(`span`,{className:`shrink-0 text-xs text-foreground/75`,children:Ve(e.completedAt)})]}),(0,Y.jsx)(`p`,{className:`text-xs text-foreground/78`,children:xt(e)}),(e.failedCount>0||e.status===`failed`)&&(0,Y.jsx)(`p`,{className:`text-[10px] leading-snug text-foreground/72`,children:`Temporary edge issue? Run apply again from Operations — Miravo usually succeeds on retry.`})]}),(0,Y.jsx)(ge,{className:j(`mt-0.5 size-3.5 shrink-0 text-foreground/55 transition-transform duration-150`,t&&`rotate-180`)})]}),(0,Y.jsx)(G,{initial:!1,children:t&&(0,Y.jsx)(K.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:`auto`},exit:{opacity:0,height:0},transition:{duration:.2,ease:`easeOut`},className:`overflow-hidden`,children:(0,Y.jsxs)(`div`,{className:`space-y-3 border-t border-border/45 px-4 pb-3 pt-3`,children:[(0,Y.jsx)(yt,{op:e}),e.error&&(0,Y.jsxs)(`div`,{className:`relative rounded-md border border-destructive/40 bg-destructive/15 px-3 py-2 pr-10 text-xs font-medium`,children:[(0,Y.jsx)(`div`,{className:`absolute top-1.5 right-1.5 z-10`,children:(0,Y.jsx)(xe,{value:e.error,label:`Copy error`,className:`text-destructive hover:bg-destructive/25 hover:text-red-100 dark:text-red-300 dark:hover:bg-destructive/30 dark:hover:text-red-50`})}),(0,Y.jsx)(`p`,{className:`whitespace-normal break-words text-destructive dark:text-red-300 [overflow-wrap:anywhere]`,children:e.error}),(0,Y.jsx)(`p`,{className:`mt-2 text-[10px] font-normal leading-snug text-foreground/78 [overflow-wrap:anywhere]`,children:`Retry apply if the edge was slow or unreachable.`})]}),(0,Y.jsx)(Ct,{op:e})]})})})]})}function Tt({label:e}){return(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 py-1`,children:[(0,Y.jsx)(`div`,{className:`h-px flex-1 bg-border/65`}),(0,Y.jsx)(`span`,{className:`text-xs font-medium text-foreground/78`,children:e}),(0,Y.jsx)(`div`,{className:`h-px flex-1 bg-border/65`})]})}var Et={type:``,status:``,env:``,search:``},Dt={_all:`All types`,apply:`Apply`,cleanup:`Cleanup`},Ot={_all:`All statuses`,success:`Success`,partial:`Partial`,failed:`Failed`,blocked:`Blocked`,noop:`No-op`},kt=`h-7 min-h-7 gap-1.5 border-border/50 bg-transparent px-2 text-xs hover:bg-muted/30 focus:ring-0`;function At({filters:e,envOptions:t,hasFilters:n,searchRef:r,onTypeChange:i,onStatusChange:a,onEnvChange:o,onSearchChange:s,onClear:c}){return(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 border-b border-border/50 px-3 py-2`,children:[(0,Y.jsxs)(z,{value:e.type||`_all`,onValueChange:e=>e&&i(e===`_all`?``:e),children:[(0,Y.jsx)(R,{size:`sm`,className:kt,"aria-label":`Operation type`,children:(0,Y.jsx)(P,{children:e=>Dt[e??`_all`]??Dt._all})}),(0,Y.jsxs)(L,{children:[(0,Y.jsx)(F,{value:`_all`,children:`All types`}),(0,Y.jsx)(F,{value:`apply`,children:`Apply`}),(0,Y.jsx)(F,{value:`cleanup`,children:`Cleanup`})]})]}),(0,Y.jsxs)(z,{value:e.status||`_all`,onValueChange:e=>e&&a(e===`_all`?``:e),children:[(0,Y.jsx)(R,{size:`sm`,className:kt,"aria-label":`Operation status`,children:(0,Y.jsx)(P,{children:e=>Ot[e??`_all`]??Ot._all})}),(0,Y.jsxs)(L,{children:[(0,Y.jsx)(F,{value:`_all`,children:`All statuses`}),(0,Y.jsx)(F,{value:`success`,children:`Success`}),(0,Y.jsx)(F,{value:`partial`,children:`Partial`}),(0,Y.jsx)(F,{value:`failed`,children:`Failed`}),(0,Y.jsx)(F,{value:`blocked`,children:`Blocked`}),(0,Y.jsx)(F,{value:`noop`,children:`No-op`})]})]}),t.length>1&&(0,Y.jsxs)(z,{value:e.env||`_all`,onValueChange:e=>e&&o(e===`_all`?``:e),children:[(0,Y.jsx)(R,{size:`sm`,className:kt,"aria-label":`Environment filter`,children:(0,Y.jsx)(P,{children:e=>!e||e===`_all`?`All environments`:e})}),(0,Y.jsxs)(L,{children:[(0,Y.jsx)(F,{value:`_all`,children:`All environments`}),t.map(e=>(0,Y.jsx)(F,{value:e,children:e},e))]})]}),(0,Y.jsxs)(`div`,{className:`relative flex min-w-[140px] flex-1 items-center`,children:[(0,Y.jsx)(`input`,{ref:r,type:`search`,value:e.search,onChange:e=>s(e.target.value),placeholder:`Search template or environment…`,className:j(`h-7 w-full rounded-md border border-border/50 bg-transparent pl-2 pr-7 text-xs`,`placeholder:text-foreground/45 focus:outline-none focus:ring-1 focus:ring-ring/40`,e.search&&`pr-2`)}),!e.search&&(0,Y.jsx)(`kbd`,{className:`pointer-events-none absolute right-2 flex h-4 items-center rounded border border-border/60 bg-muted/50 px-1 font-mono text-[10px] text-foreground/65`,children:`/`})]}),n&&(0,Y.jsxs)(`button`,{type:`button`,onClick:c,className:`flex h-7 items-center gap-1 rounded-md px-2 text-xs text-foreground/72 transition-colors hover:bg-muted/40 hover:text-foreground`,children:[(0,Y.jsx)(I,{className:`size-3`}),`Clear`]})]})}function jt({operations:e,totalKnown:t,isLoading:n,error:r,onRefresh:i,hasNextPage:a=!1,isFetchingNextPage:o=!1,loadMoreError:s=null,onRetryLoadMore:c,onLoadMore:u}){let[d,f]=(0,J.useState)(!1),[p,m]=(0,J.useState)(Et),h=(0,J.useRef)(null);(0,J.useEffect)(()=>{let e=e=>{if(e.key!==`/`||e.metaKey||e.ctrlKey||e.altKey)return;let t=e.target.tagName;t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||(e.preventDefault(),h.current?.focus())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]);let g=()=>{f(!0),i(),U.success(`Operations refreshed`),setTimeout(()=>f(!1),600)},_=(0,J.useMemo)(()=>{let t=new Set;for(let n of e)t.add(n.environmentLabel);return[...t].sort()},[e]),v=(0,J.useMemo)(()=>{let t=e;if(p.type&&(t=t.filter(e=>e.operationType===p.type)),p.status&&(t=t.filter(e=>e.status===p.status)),p.env&&(t=t.filter(e=>e.environmentLabel===p.env)),p.search){let e=p.search.toLowerCase();t=t.filter(t=>t.templateId.toLowerCase().includes(e)||Be(t.templateId).toLowerCase().includes(e)||t.environmentLabel.toLowerCase().includes(e))}return t},[e,p]),y=p.type!==``||p.status!==``||p.env!==``||p.search!==``,b=pt(v);return(0,Y.jsxs)(`div`,{className:`flex h-full flex-col rounded-lg border border-border/55`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-between border-b border-border/50 px-3.5 py-2.5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-sm font-medium text-foreground`,children:`Operation log`}),e.length>0&&(0,Y.jsx)(`span`,{className:`font-mono text-xs tabular-nums text-foreground/75`,children:typeof t==`number`&&t>0&&e.length<t?`${e.length} / ${t}`:String(e.length)})]}),(0,Y.jsx)(`button`,{type:`button`,onClick:g,disabled:d,"aria-label":`Refresh operation list`,className:`rounded-md p-1 text-foreground/70 transition-colors hover:bg-muted/50 hover:text-foreground disabled:pointer-events-none`,children:(0,Y.jsx)(l,{className:j(`size-3.5`,d&&`animate-spin`),"aria-hidden":!0})})]}),(0,Y.jsx)(At,{filters:p,envOptions:_,hasFilters:y,searchRef:h,onTypeChange:e=>m(t=>({...t,type:e})),onStatusChange:e=>m(t=>({...t,status:e})),onEnvChange:e=>m(t=>({...t,env:e})),onSearchChange:e=>m(t=>({...t,search:e})),onClear:()=>m(Et)}),(0,Y.jsxs)(`div`,{className:`flex flex-1 min-h-0 flex-col gap-2 overflow-y-auto overscroll-y-contain p-3`,children:[r&&(0,Y.jsxs)(`p`,{className:`py-2 text-xs text-destructive`,children:[`✕ `,r.message]}),n&&e.length===0&&!r&&(0,Y.jsx)(`p`,{className:`py-4 text-sm text-foreground/75`,children:`Loading…`}),!n&&e.length===0&&!r&&(0,Y.jsx)(`p`,{className:`py-6 text-sm text-foreground/75`,children:`No operations recorded yet.`}),!n&&e.length>0&&v.length===0&&(0,Y.jsxs)(`p`,{className:`py-6 text-center text-sm text-foreground/75`,children:[`No operations match your filters.`,` `,(0,Y.jsx)(`button`,{type:`button`,onClick:()=>m(Et),className:`text-primary hover:underline`,children:`Clear filters`})]}),y&&v.length>0&&v.length!==e.length&&(0,Y.jsxs)(`p`,{className:`text-xs text-foreground/75`,children:[`Showing`,` `,(0,Y.jsx)(`span`,{className:`font-medium tabular-nums text-foreground`,children:v.length}),` of`,` `,(0,Y.jsx)(`span`,{className:`tabular-nums`,children:e.length}),` loaded`]}),!y&&typeof t==`number`&&t>0&&e.length<t&&(0,Y.jsxs)(`p`,{className:`text-xs text-foreground/75`,children:[`Showing`,` `,(0,Y.jsx)(`span`,{className:`font-medium tabular-nums text-foreground`,children:e.length}),` `,`of `,(0,Y.jsx)(`span`,{className:`tabular-nums`,children:t}),`. Load more for older entries.`]}),(0,Y.jsx)(G,{initial:!1,children:b.map(e=>(0,Y.jsxs)(K.div,{className:`flex flex-col gap-2`,children:[(0,Y.jsx)(Tt,{label:e.label}),(0,Y.jsx)(G,{initial:!1,children:e.ops.map(e=>(0,Y.jsx)(K.div,{initial:{opacity:0,x:-6},animate:{opacity:1,x:0},transition:{type:`spring`,stiffness:400,damping:35},children:(0,Y.jsx)(wt,{operation:e})},`${e.operationId}-${e.completedAt}`))})]},e.label))}),s?(0,Y.jsxs)(`div`,{role:`alert`,className:`flex shrink-0 flex-col items-center gap-2 border-t border-border/50 pt-3 pb-1 text-center`,children:[(0,Y.jsxs)(`p`,{className:`text-xs text-destructive`,children:[`Could not load older entries: `,s.message]}),c?(0,Y.jsx)(M,{type:`button`,variant:`outline`,size:`sm`,onClick:c,children:`Retry`}):null]}):a&&u?(0,Y.jsx)(`div`,{className:`flex shrink-0 justify-center border-t border-border/50 pt-3 pb-1`,children:(0,Y.jsx)(M,{type:`button`,variant:`outline`,size:`sm`,className:`min-w-[7rem]`,disabled:o,"aria-busy":o,"aria-label":o?`Loading older operations`:`Load older operations`,onClick:u,children:o?`Loading…`:`Load more`})}):null]})]})}var Mt=25;function Nt({status:e}){switch(e){case`success`:return(0,Y.jsx)(H,{className:`size-3 text-emerald-500`});case`partial`:case`blocked`:return(0,Y.jsx)(De,{className:`size-3 text-amber-500`});case`noop`:return(0,Y.jsx)(Ke,{className:`size-3 text-muted-foreground`});case`failed`:return(0,Y.jsx)(V,{className:`size-3 text-destructive`})}}function Pt({envCount:e,opCount:t,lastOp:n}){return(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-xs text-muted-foreground`,children:[(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(Ee,{className:`size-3`}),(0,Y.jsx)(`span`,{className:`font-mono`,children:e}),` environment`,e===1?``:`s`]}),(0,Y.jsx)(`span`,{className:`hidden h-3 w-px bg-border/40 sm:inline-block`}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(G,{mode:`popLayout`,initial:!1,children:(0,Y.jsx)(K.span,{initial:{opacity:0,y:-6},animate:{opacity:1,y:0},exit:{opacity:0,y:6},transition:{type:`spring`,stiffness:500,damping:35},className:`font-mono tabular-nums`,children:t},t)}),` `,`operation`,t===1?``:`s`]}),n&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`span`,{className:`hidden h-3 w-px bg-border/40 sm:inline-block`}),(0,Y.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(Nt,{status:n.status}),(0,Y.jsxs)(`span`,{children:[n.operationType===`apply`?`Applied`:`Cleaned`,` `,Ve(n.completedAt)]})]})]})]})}function Ft(){let e=u({queryKey:f.platforms.environments(),queryFn:()=>le()}),t=e.data??[],n=We({queryKey:f.platforms.operationsList(),queryFn:({pageParam:e})=>y({limit:Mt,offset:e}),initialPageParam:0,getNextPageParam:(e,t,n)=>e.hasMore&&e.operations.length>0?n+Mt:void 0}),r=(0,J.useMemo)(()=>n.data?.pages.flatMap(e=>e.operations)??[],[n.data]),i=n.data?.pages[0]?.total??0,s=u({queryKey:f.catalog.templates(),queryFn:()=>a(`/catalog/templates`)}).data??[],c=O(),l=(0,J.useRef)(c.status);(0,J.useEffect)(()=>{let e=l.current;l.current=c.status,e===`running`&&c.status===`complete`&&o.invalidateQueries({queryKey:f.platforms.operationsList()})},[c.status]);let d=(0,J.useMemo)(()=>{let e=new Map;for(let t of r)e.has(t.environmentId)||e.set(t.environmentId,t);return e},[r]),[p,h]=Oe(`tab`,ke([`environments`,`operations`,`activity`]).withDefault(`environments`));return(0,Y.jsxs)(`div`,{className:`mx-auto flex h-full w-full min-w-0 max-w-screen-2xl flex-col gap-5 p-4 sm:gap-6 sm:p-6`,children:[(0,Y.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2`,children:[(0,Y.jsx)(`h2`,{className:`font-heading text-2xl font-semibold tracking-tight`,children:`Platforms`}),(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Deploy and manage templates across industrial edge platforms.`}),(0,Y.jsx)(Pt,{envCount:t.length,opCount:i,lastOp:r[0]})]}),(0,Y.jsxs)(ie,{value:p,onValueChange:e=>{h(e)},className:`flex-1 min-h-0`,children:[(0,Y.jsx)(`div`,{className:`shrink-0 overflow-x-auto`,children:(0,Y.jsxs)(te,{variant:`line`,className:`h-8! gap-0.5 min-w-max`,children:[(0,Y.jsxs)(S,{value:`environments`,className:`gap-1.5 px-2.5 text-sm`,children:[(0,Y.jsx)(Ee,{className:`size-3.5 shrink-0`}),`Environments`]}),(0,Y.jsxs)(S,{value:`operations`,className:`gap-1.5 px-2.5 text-sm`,children:[(0,Y.jsx)(ue,{className:`size-3.5 shrink-0`}),`Operations`]}),(0,Y.jsxs)(S,{value:`activity`,className:`gap-1.5 px-2.5 text-sm`,children:[(0,Y.jsx)(m,{className:`size-3.5 shrink-0`}),`Activity`]})]})}),(0,Y.jsxs)(G,{mode:`wait`,initial:!1,children:[p===`environments`&&(0,Y.jsx)(K.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},exit:{opacity:0},transition:{duration:.15,ease:`easeOut`},role:`tabpanel`,className:`flex-1 py-2`,children:(0,Y.jsx)(et,{environments:t,onMutate:()=>void e.refetch(),lastOpByEnv:d})},`environments`),p===`operations`&&(0,Y.jsx)(K.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},exit:{opacity:0},transition:{duration:.15,ease:`easeOut`},role:`tabpanel`,className:`flex-1 py-2`,children:t.length===0?(0,Y.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/60 px-4 py-8 text-center`,children:(0,Y.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Add an environment first to run operations.`})}):(0,Y.jsx)(dt,{environments:t,stream:c})},`operations`),p===`activity`&&(0,Y.jsx)(K.div,{initial:{opacity:0,y:6},animate:{opacity:1,y:0},exit:{opacity:0},transition:{duration:.15,ease:`easeOut`},role:`tabpanel`,className:`flex flex-col flex-1 min-h-0 py-2`,children:(0,Y.jsx)(jt,{operations:r,totalKnown:i,isLoading:n.isPending&&!n.data,error:n.error,onRefresh:()=>void o.invalidateQueries({queryKey:f.platforms.operationsList()}),hasNextPage:n.hasNextPage,isFetchingNextPage:n.isFetchingNextPage,loadMoreError:n.isFetchNextPageError&&n.error instanceof Error?n.error:null,onRetryLoadMore:()=>void n.fetchNextPage(),onLoadMore:()=>void n.fetchNextPage()})},`activity`)]})]}),(0,Y.jsx)(G,{children:c.operation||c.status===`running`?(0,Y.jsx)(tt,{stream:c,onReset:c.reset,catalogTemplates:s}):null})]})}export{Ft as t};
@@ -1 +0,0 @@
1
- import{t as e}from"./platforms-BWh0BQ3Y.js";export{e as PlatformsPage};