velloo 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +116 -227
  2. package/THIRD-PARTY-NOTICES.md +3 -3
  3. package/canvas/assets/index-BQ5710lu.js +29 -0
  4. package/canvas/assets/index-GNLd0pCG.css +2 -0
  5. package/canvas/assets/lucide-all-DIRZdJPK.js +1 -0
  6. package/canvas/index.html +2 -2
  7. package/{chunk-qpv28z8d.js → chunk-0e5j6nqs.js} +1 -1
  8. package/{chunk-vrvkvb0v.js → chunk-0pxm5v0b.js} +3 -3
  9. package/{chunk-a16mz9zf.js → chunk-0vaff40g.js} +1 -1
  10. package/{chunk-42bj6r30.js → chunk-3m28pvzr.js} +1 -1
  11. package/{chunk-33t0csxs.js → chunk-4y2xy1kf.js} +2 -2
  12. package/{chunk-d4r0myxr.js → chunk-531xzfq5.js} +1 -1
  13. package/{chunk-1h3gqy7w.js → chunk-5s1wjhtj.js} +1 -1
  14. package/{chunk-4pkw6d9n.js → chunk-5x4nw0zz.js} +5 -5
  15. package/{chunk-b3x80jc1.js → chunk-5yhnnhkd.js} +1 -1
  16. package/{chunk-675tr675.js → chunk-64pex3mw.js} +1 -1
  17. package/chunk-667ag8ts.js +2 -0
  18. package/chunk-7gyzh0vq.js +5 -0
  19. package/{chunk-4sjvdakg.js → chunk-82x2jkfq.js} +1 -1
  20. package/{chunk-5y9hem1j.js → chunk-84n18xgx.js} +257 -3
  21. package/{chunk-edgwx026.js → chunk-abr2hgay.js} +1 -1
  22. package/{chunk-cqt1dpxd.js → chunk-acsv6m3n.js} +1 -1
  23. package/{chunk-j7tzbt3d.js → chunk-asfgvzse.js} +1 -1
  24. package/{chunk-0wqxb8r9.js → chunk-b8vcbbrg.js} +1 -1
  25. package/chunk-bms1sg4c.js +2 -0
  26. package/chunk-brnkprt5.js +723 -0
  27. package/{chunk-afe25dpr.js → chunk-bys7pqdb.js} +1 -1
  28. package/chunk-d0j8dg1e.js +3 -0
  29. package/chunk-d93kpv7s.js +12 -0
  30. package/chunk-dvh0b2r4.js +3 -0
  31. package/{chunk-5ma8zbty.js → chunk-eh2xp4v6.js} +1 -1
  32. package/{chunk-z78c1kf8.js → chunk-ejppcfa5.js} +1 -1
  33. package/{chunk-ngbqd7kb.js → chunk-ex36z3b3.js} +317 -119
  34. package/{chunk-6ytv1v2r.js → chunk-fmcm06xb.js} +1 -1
  35. package/{chunk-3ffs39e8.js → chunk-fvezyap4.js} +1 -1
  36. package/chunk-g7d065ek.js +2 -0
  37. package/{chunk-tw4kw4ps.js → chunk-g8xrwjvq.js} +2 -2
  38. package/{chunk-df557bn4.js → chunk-gbq5wv7x.js} +1 -1
  39. package/chunk-gcce587w.js +3 -0
  40. package/{chunk-cdqah1hy.js → chunk-gfppsgvv.js} +1 -1
  41. package/{chunk-5f0xv80x.js → chunk-j306gr0c.js} +1 -1
  42. package/chunk-j4fn2a2b.js +2 -0
  43. package/chunk-jbgde2v9.js +2 -0
  44. package/{chunk-wkqrb2tz.js → chunk-kkvf0xk2.js} +1 -1
  45. package/{chunk-d9kx7v12.js → chunk-md4mpvqc.js} +1 -1
  46. package/{chunk-vryadew3.js → chunk-mdgwdqnq.js} +2 -2
  47. package/chunk-p93x4pn2.js +3 -0
  48. package/chunk-pjkkp7xa.js +2 -0
  49. package/chunk-qp3wahg4.js +2 -0
  50. package/{chunk-f45p6kcb.js → chunk-qqrac4va.js} +1 -1
  51. package/chunk-qrnkrkkt.js +2 -0
  52. package/chunk-rqd4swxx.js +2 -0
  53. package/{chunk-xzkczmgg.js → chunk-rxkvjyst.js} +1 -1
  54. package/chunk-s84vxcdv.js +4 -0
  55. package/chunk-sjjnm4a1.js +2 -0
  56. package/chunk-skk6yvnw.js +3 -0
  57. package/{chunk-ahm4zd56.js → chunk-sme6hv6f.js} +1 -1
  58. package/chunk-snak5zpr.js +5 -0
  59. package/{chunk-gn9wcc1b.js → chunk-srp5gyr1.js} +1 -1
  60. package/{chunk-rd65xm6r.js → chunk-vdbr81a3.js} +1 -1
  61. package/chunk-vs8j3x6t.js +3 -0
  62. package/{chunk-hr3gbak5.js → chunk-xg71h7nb.js} +1 -1
  63. package/chunk-xzf52wvn.js +6 -0
  64. package/chunk-ykpctq15.js +6 -0
  65. package/chunk-zv17t1n7.js +3 -0
  66. package/cli.js +1 -1
  67. package/launcher.cjs +3 -1
  68. package/package.json +1 -1
  69. package/pkgs/helpers/src/box.tsx +12 -6
  70. package/pkgs/helpers/src/descriptors.ts +7 -0
  71. package/pkgs/helpers/src/icon.tsx +5 -3
  72. package/pkgs/helpers/src/index.ts +9 -6
  73. package/pkgs/helpers/src/lowering.ts +0 -24
  74. package/pkgs/helpers/src/primitive-classes.tsx +43 -0
  75. package/pkgs/helpers/src/text.tsx +29 -5
  76. package/pkgs/provider-antd/src/intro.ts +3 -3
  77. package/pkgs/provider-antd/src/manifest.ts +479 -57
  78. package/pkgs/provider-antd/src/registry.ts +8 -5
  79. package/pkgs/provider-antd/src/render-pass.ts +10 -4
  80. package/pkgs/provider-antd/src/reset-css.d.ts +5 -0
  81. package/pkgs/provider-antd/src/theme.ts +54 -11
  82. package/pkgs/provider-chakra/src/manifest.ts +6 -1
  83. package/pkgs/provider-mui/src/index.ts +4 -2
  84. package/pkgs/provider-mui/src/manifest.ts +11 -1
  85. package/pkgs/provider-mui/src/render-pass.ts +15 -1
  86. package/pkgs/provider-mui/src/theme.ts +10 -4
  87. package/pkgs/provider-none/src/components-inline.tsx +20 -14
  88. package/pkgs/provider-none/src/components.tsx +17 -54
  89. package/pkgs/provider-none/src/manifest.ts +1 -0
  90. package/pkgs/schema/src/annotation.ts +6 -3
  91. package/pkgs/schema/src/comment.ts +10 -1
  92. package/pkgs/schema/src/config.ts +4 -1
  93. package/pkgs/schema/src/index.ts +16 -1
  94. package/pkgs/schema/src/node-identity.ts +97 -0
  95. package/pkgs/schema/src/node.ts +49 -23
  96. package/pkgs/schema/src/snippet-resolve.ts +18 -12
  97. package/pkgs/schema/src/svg-sanitize.ts +3 -0
  98. package/pkgs/schema/src/theme.ts +6 -1
  99. package/pkgs/schema/src/typeset.ts +45 -21
  100. package/pkgs/shadcn-snapshot/dist/manifest.json +7 -0
  101. package/pkgs/shadcn-snapshot/src/components/ui/alert.tsx +2 -4
  102. package/pkgs/shadcn-snapshot/src/components/ui/aspect-ratio.tsx +2 -3
  103. package/pkgs/shadcn-snapshot/src/components/ui/attachment.tsx +3 -4
  104. package/pkgs/shadcn-snapshot/src/components/ui/avatar.tsx +2 -4
  105. package/pkgs/shadcn-snapshot/src/components/ui/badge.tsx +2 -4
  106. package/pkgs/shadcn-snapshot/src/components/ui/breadcrumb.tsx +2 -4
  107. package/pkgs/shadcn-snapshot/src/components/ui/bubble.tsx +2 -4
  108. package/pkgs/shadcn-snapshot/src/components/ui/button-group.tsx +3 -4
  109. package/pkgs/shadcn-snapshot/src/components/ui/button.tsx +2 -4
  110. package/pkgs/shadcn-snapshot/src/components/ui/card.tsx +2 -4
  111. package/pkgs/shadcn-snapshot/src/components/ui/carousel.tsx +3 -4
  112. package/pkgs/shadcn-snapshot/src/components/ui/chart.tsx +1 -1
  113. package/pkgs/shadcn-snapshot/src/components/ui/direction.tsx +2 -3
  114. package/pkgs/shadcn-snapshot/src/components/ui/empty.tsx +2 -4
  115. package/pkgs/shadcn-snapshot/src/components/ui/field.tsx +3 -4
  116. package/pkgs/shadcn-snapshot/src/components/ui/input-group.tsx +3 -4
  117. package/pkgs/shadcn-snapshot/src/components/ui/item.tsx +3 -4
  118. package/pkgs/shadcn-snapshot/src/components/ui/kbd.tsx +2 -3
  119. package/pkgs/shadcn-snapshot/src/components/ui/label.tsx +2 -4
  120. package/pkgs/shadcn-snapshot/src/components/ui/marker.tsx +2 -4
  121. package/pkgs/shadcn-snapshot/src/components/ui/message.tsx +2 -4
  122. package/pkgs/shadcn-snapshot/src/components/ui/native-select.tsx +2 -4
  123. package/pkgs/shadcn-snapshot/src/components/ui/navigation-menu.tsx +2 -4
  124. package/pkgs/shadcn-snapshot/src/components/ui/pagination.tsx +3 -4
  125. package/pkgs/shadcn-snapshot/src/components/ui/progress.tsx +2 -4
  126. package/pkgs/shadcn-snapshot/src/components/ui/radio-group.tsx +2 -4
  127. package/pkgs/shadcn-snapshot/src/components/ui/scroll-area.tsx +2 -4
  128. package/pkgs/shadcn-snapshot/src/components/ui/separator.tsx +2 -4
  129. package/pkgs/shadcn-snapshot/src/components/ui/skeleton.tsx +2 -3
  130. package/pkgs/shadcn-snapshot/src/components/ui/spinner.tsx +2 -3
  131. package/pkgs/shadcn-snapshot/src/components/ui/table.tsx +2 -4
  132. package/pkgs/shadcn-snapshot/src/components/ui/tabs.tsx +2 -4
  133. package/pkgs/shadcn-snapshot/src/components/ui/toggle.tsx +2 -4
  134. package/pkgs/shadcn-snapshot/src/shadcn-tailwind.css +1 -1
  135. package/pkgs/shadcn-snapshot/src/tailwind-entry.css +1 -1
  136. package/canvas/assets/index-BDBBHdHH.css +0 -2
  137. package/canvas/assets/index-QdsLJNY9.js +0 -29
  138. package/canvas/assets/lucide-all-R8DUyY-B.js +0 -1
  139. package/chunk-0rdf6trc.js +0 -2
  140. package/chunk-0wafc9aw.js +0 -4
  141. package/chunk-10hap8kc.js +0 -6
  142. package/chunk-18eqh3s1.js +0 -2
  143. package/chunk-19xyzep8.js +0 -2
  144. package/chunk-49w26e94.js +0 -5
  145. package/chunk-66qgm91k.js +0 -708
  146. package/chunk-6cgvzwec.js +0 -3
  147. package/chunk-75sc3adm.js +0 -2
  148. package/chunk-7cexzg71.js +0 -2
  149. package/chunk-98rann8t.js +0 -2
  150. package/chunk-asvdqkdp.js +0 -6
  151. package/chunk-emv1j50t.js +0 -2
  152. package/chunk-ewgdcgrk.js +0 -2
  153. package/chunk-mm8wv3bg.js +0 -3
  154. package/chunk-nkqtnwzz.js +0 -2
  155. package/chunk-q3kf8243.js +0 -3
  156. package/chunk-ryga3ny1.js +0 -3
  157. package/chunk-sb5h27w9.js +0 -3
  158. package/chunk-vgx47anc.js +0 -3
  159. package/chunk-w6f40y2x.js +0 -11
  160. package/chunk-we8hvy6e.js +0 -2
  161. package/chunk-ycrddh47.js +0 -5
package/canvas/index.html CHANGED
@@ -9,12 +9,12 @@
9
9
  <link rel="manifest" href="/site.webmanifest" />
10
10
  <meta name="theme-color" content="#0d0c0a" />
11
11
  <title>velloo</title>
12
- <script type="module" crossorigin src="/assets/index-QdsLJNY9.js"></script>
12
+ <script type="module" crossorigin src="/assets/index-BQ5710lu.js"></script>
13
13
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/react-D0Ec-185.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/vendor-CKmQ-Zst.js">
16
16
  <link rel="modulepreload" crossorigin href="/assets/radix-gmpYzWRH.js">
17
- <link rel="stylesheet" crossorigin href="/assets/index-BDBBHdHH.css">
17
+ <link rel="stylesheet" crossorigin href="/assets/index-GNLd0pCG.css">
18
18
  </head>
19
19
  <body>
20
20
  <div id="root"></div>
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{require_react_development}from"./chunk-ngbqd7kb.js";import{__toESM,__commonJS}from"./chunk-2smsg2ct.js";var require_react_jsx_runtime_development=__commonJS(function(exports){var React=__toESM(require_react_development());(function(){function getComponentNameFromType(type){if(type==null)return null;if(typeof type==="function")return type.$$typeof===REACT_CLIENT_REFERENCE?null:type.displayName||type.name||null;if(typeof type==="string")return type;switch(type){case REACT_FRAGMENT_TYPE:return"Fragment";case REACT_PROFILER_TYPE:return"Profiler";case REACT_STRICT_MODE_TYPE:return"StrictMode";case REACT_SUSPENSE_TYPE:return"Suspense";case REACT_SUSPENSE_LIST_TYPE:return"SuspenseList";case REACT_ACTIVITY_TYPE:return"Activity"}if(typeof type==="object")switch(typeof type.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),type.$$typeof){case REACT_PORTAL_TYPE:return"Portal";case REACT_CONTEXT_TYPE:return type.displayName||"Context";case REACT_CONSUMER_TYPE:return(type._context.displayName||"Context")+".Consumer";case REACT_FORWARD_REF_TYPE:var innerType=type.render;return type=type.displayName,type||(type=innerType.displayName||innerType.name||"",type=type!==""?"ForwardRef("+type+")":"ForwardRef"),type;case REACT_MEMO_TYPE:return innerType=type.displayName||null,innerType!==null?innerType:getComponentNameFromType(type.type)||"Memo";case REACT_LAZY_TYPE:innerType=type._payload,type=type._init;try{return getComponentNameFromType(type(innerType))}catch(x){}}return null}function testStringCoercion(value){return""+value}function checkKeyStringCoercion(value){try{testStringCoercion(value);var JSCompiler_inline_result=!1}catch(e){JSCompiler_inline_result=!0}if(JSCompiler_inline_result){JSCompiler_inline_result=console;var JSCompiler_temp_const=JSCompiler_inline_result.error,JSCompiler_inline_result$jscomp$0=typeof Symbol==="function"&&Symbol.toStringTag&&value[Symbol.toStringTag]||value.constructor.name||"Object";return JSCompiler_temp_const.call(JSCompiler_inline_result,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",JSCompiler_inline_result$jscomp$0),testStringCoercion(value)}}function getTaskName(type){if(type===REACT_FRAGMENT_TYPE)return"<>";if(typeof type==="object"&&type!==null&&type.$$typeof===REACT_LAZY_TYPE)return"<...>";try{var name=getComponentNameFromType(type);return name?"<"+name+">":"<...>"}catch(x){return"<...>"}}function getOwner(){var dispatcher=ReactSharedInternals.A;return dispatcher===null?null:dispatcher.getOwner()}function UnknownOwner(){return Error("react-stack-top-frame")}function hasValidKey(config){if(hasOwnProperty.call(config,"key")){var getter=Object.getOwnPropertyDescriptor(config,"key").get;if(getter&&getter.isReactWarning)return!1}return config.key!==void 0}function defineKeyPropWarningGetter(props,displayName){function warnAboutAccessingKey(){specialPropKeyWarningShown||(specialPropKeyWarningShown=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",displayName))}warnAboutAccessingKey.isReactWarning=!0,Object.defineProperty(props,"key",{get:warnAboutAccessingKey,configurable:!0})}function elementRefGetterWithDeprecationWarning(){var componentName=getComponentNameFromType(this.type);return didWarnAboutElementRef[componentName]||(didWarnAboutElementRef[componentName]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),componentName=this.props.ref,componentName!==void 0?componentName:null}function ReactElement(type,key,props,owner,debugStack,debugTask){var refProp=props.ref;return type={$$typeof:REACT_ELEMENT_TYPE,type,key,props,_owner:owner},(refProp!==void 0?refProp:null)!==null?Object.defineProperty(type,"ref",{enumerable:!1,get:elementRefGetterWithDeprecationWarning}):Object.defineProperty(type,"ref",{enumerable:!1,value:null}),type._store={},Object.defineProperty(type._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(type,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(type,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:debugStack}),Object.defineProperty(type,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:debugTask}),Object.freeze&&(Object.freeze(type.props),Object.freeze(type)),type}function jsxDEVImpl(type,config,maybeKey,isStaticChildren,debugStack,debugTask){var children=config.children;if(children!==void 0)if(isStaticChildren)if(isArrayImpl(children)){for(isStaticChildren=0;isStaticChildren<children.length;isStaticChildren++)validateChildKeys(children[isStaticChildren]);Object.freeze&&Object.freeze(children)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else validateChildKeys(children);if(hasOwnProperty.call(config,"key")){children=getComponentNameFromType(type);var keys=Object.keys(config).filter(function(k){return k!=="key"});isStaticChildren=0<keys.length?"{key: someKey, "+keys.join(": ..., ")+": ...}":"{key: someKey}",didWarnAboutKeySpread[children+isStaticChildren]||(keys=0<keys.length?"{"+keys.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
2
+ import{require_react_development}from"./chunk-ex36z3b3.js";import{__toESM,__commonJS}from"./chunk-2smsg2ct.js";var require_react_jsx_runtime_development=__commonJS(function(exports){var React=__toESM(require_react_development());(function(){function getComponentNameFromType(type){if(type==null)return null;if(typeof type==="function")return type.$$typeof===REACT_CLIENT_REFERENCE?null:type.displayName||type.name||null;if(typeof type==="string")return type;switch(type){case REACT_FRAGMENT_TYPE:return"Fragment";case REACT_PROFILER_TYPE:return"Profiler";case REACT_STRICT_MODE_TYPE:return"StrictMode";case REACT_SUSPENSE_TYPE:return"Suspense";case REACT_SUSPENSE_LIST_TYPE:return"SuspenseList";case REACT_ACTIVITY_TYPE:return"Activity"}if(typeof type==="object")switch(typeof type.tag==="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),type.$$typeof){case REACT_PORTAL_TYPE:return"Portal";case REACT_CONTEXT_TYPE:return type.displayName||"Context";case REACT_CONSUMER_TYPE:return(type._context.displayName||"Context")+".Consumer";case REACT_FORWARD_REF_TYPE:var innerType=type.render;return type=type.displayName,type||(type=innerType.displayName||innerType.name||"",type=type!==""?"ForwardRef("+type+")":"ForwardRef"),type;case REACT_MEMO_TYPE:return innerType=type.displayName||null,innerType!==null?innerType:getComponentNameFromType(type.type)||"Memo";case REACT_LAZY_TYPE:innerType=type._payload,type=type._init;try{return getComponentNameFromType(type(innerType))}catch(x){}}return null}function testStringCoercion(value){return""+value}function checkKeyStringCoercion(value){try{testStringCoercion(value);var JSCompiler_inline_result=!1}catch(e){JSCompiler_inline_result=!0}if(JSCompiler_inline_result){JSCompiler_inline_result=console;var JSCompiler_temp_const=JSCompiler_inline_result.error,JSCompiler_inline_result$jscomp$0=typeof Symbol==="function"&&Symbol.toStringTag&&value[Symbol.toStringTag]||value.constructor.name||"Object";return JSCompiler_temp_const.call(JSCompiler_inline_result,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",JSCompiler_inline_result$jscomp$0),testStringCoercion(value)}}function getTaskName(type){if(type===REACT_FRAGMENT_TYPE)return"<>";if(typeof type==="object"&&type!==null&&type.$$typeof===REACT_LAZY_TYPE)return"<...>";try{var name=getComponentNameFromType(type);return name?"<"+name+">":"<...>"}catch(x){return"<...>"}}function getOwner(){var dispatcher=ReactSharedInternals.A;return dispatcher===null?null:dispatcher.getOwner()}function UnknownOwner(){return Error("react-stack-top-frame")}function hasValidKey(config){if(hasOwnProperty.call(config,"key")){var getter=Object.getOwnPropertyDescriptor(config,"key").get;if(getter&&getter.isReactWarning)return!1}return config.key!==void 0}function defineKeyPropWarningGetter(props,displayName){function warnAboutAccessingKey(){specialPropKeyWarningShown||(specialPropKeyWarningShown=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",displayName))}warnAboutAccessingKey.isReactWarning=!0,Object.defineProperty(props,"key",{get:warnAboutAccessingKey,configurable:!0})}function elementRefGetterWithDeprecationWarning(){var componentName=getComponentNameFromType(this.type);return didWarnAboutElementRef[componentName]||(didWarnAboutElementRef[componentName]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),componentName=this.props.ref,componentName!==void 0?componentName:null}function ReactElement(type,key,props,owner,debugStack,debugTask){var refProp=props.ref;return type={$$typeof:REACT_ELEMENT_TYPE,type,key,props,_owner:owner},(refProp!==void 0?refProp:null)!==null?Object.defineProperty(type,"ref",{enumerable:!1,get:elementRefGetterWithDeprecationWarning}):Object.defineProperty(type,"ref",{enumerable:!1,value:null}),type._store={},Object.defineProperty(type._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(type,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(type,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:debugStack}),Object.defineProperty(type,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:debugTask}),Object.freeze&&(Object.freeze(type.props),Object.freeze(type)),type}function jsxDEVImpl(type,config,maybeKey,isStaticChildren,debugStack,debugTask){var children=config.children;if(children!==void 0)if(isStaticChildren)if(isArrayImpl(children)){for(isStaticChildren=0;isStaticChildren<children.length;isStaticChildren++)validateChildKeys(children[isStaticChildren]);Object.freeze&&Object.freeze(children)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else validateChildKeys(children);if(hasOwnProperty.call(config,"key")){children=getComponentNameFromType(type);var keys=Object.keys(config).filter(function(k){return k!=="key"});isStaticChildren=0<keys.length?"{key: someKey, "+keys.join(": ..., ")+": ...}":"{key: someKey}",didWarnAboutKeySpread[children+isStaticChildren]||(keys=0<keys.length?"{"+keys.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
3
3
  let props = %s;
4
4
  <%s {...props} />
5
5
  React keys must be passed directly to JSX without using spread:
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{helpersRegistry,parse_default,formatRgb,SX_PROP,catalogFromManifest,helperSourcePath}from"./chunk-66qgm91k.js";import{require_react_is_development,require_object_assign,require_emotion_serialize_development_cjs,$_default,import_emotion_react_development_cjs,$_default2,$_default3}from"./chunk-xzkczmgg.js";import{resolveColors,DEFAULT_TYPESET_NAME,typesetScale}from"./chunk-4pkw6d9n.js";import{require_react_development,require_react_dom}from"./chunk-ngbqd7kb.js";import{__toESM,__commonJS}from"./chunk-2smsg2ct.js";import{MUI_VERSION}from"./chunk-mzhdrawd.js";import{_objectWithoutPropertiesLoose,_extends,_assertThisInitialized,_setPrototypeOf}from"./chunk-h6gchare.js";import{resolveProviderSrcDir}from"./chunk-v6c3h9ft.js";import{require_react_jsx_runtime_development}from"./chunk-qpv28z8d.js";var require_ReactPropTypesSecret=__commonJS(function(exports,module){var ReactPropTypesSecret="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";module.exports=ReactPropTypesSecret});var require_has=__commonJS(function(exports,module){module.exports=Function.call.bind(Object.prototype.hasOwnProperty)});var require_checkPropTypes=__commonJS(function(exports,module){var printWarning=function(){};ReactPropTypesSecret=require_ReactPropTypesSecret(),loggedTypeFailures={},has=require_has(),printWarning=function(text){var message="Warning: "+text;if(typeof console<"u")console.error(message);try{throw Error(message)}catch(x){}};var ReactPropTypesSecret,loggedTypeFailures,has;function checkPropTypes(typeSpecs,values,location,componentName,getStack){for(var typeSpecName in typeSpecs)if(has(typeSpecs,typeSpecName)){var error;try{if(typeof typeSpecs[typeSpecName]!=="function"){var err=Error((componentName||"React class")+": "+location+" type `"+typeSpecName+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof typeSpecs[typeSpecName]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw err.name="Invariant Violation",err}error=typeSpecs[typeSpecName](values,typeSpecName,componentName,location,null,ReactPropTypesSecret)}catch(ex){error=ex}if(error&&!(error instanceof Error))printWarning((componentName||"React class")+": type specification of "+location+" `"+typeSpecName+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof error+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).");if(error instanceof Error&&!(error.message in loggedTypeFailures)){loggedTypeFailures[error.message]=!0;var stack=getStack?getStack():"";printWarning("Failed "+location+" type: "+error.message+(stack!=null?stack:""))}}}checkPropTypes.resetWarningCache=function(){loggedTypeFailures={}};module.exports=checkPropTypes});var require_factoryWithTypeCheckers=__commonJS(function(exports,module){var ReactIs=__toESM(require_react_is_development()),assign=require_object_assign(),ReactPropTypesSecret=require_ReactPropTypesSecret(),has=require_has(),checkPropTypes=require_checkPropTypes(),printWarning=function(){};printWarning=function(text){var message="Warning: "+text;if(typeof console<"u")console.error(message);try{throw Error(message)}catch(x){}};function emptyFunctionThatReturnsNull(){return null}module.exports=function(isValidElement,throwOnDirectAccess){var ITERATOR_SYMBOL=typeof Symbol==="function"&&Symbol.iterator,FAUX_ITERATOR_SYMBOL="@@iterator";function getIteratorFn(maybeIterable){var iteratorFn=maybeIterable&&(ITERATOR_SYMBOL&&maybeIterable[ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL]);if(typeof iteratorFn==="function")return iteratorFn}var ANONYMOUS="<<anonymous>>",ReactPropTypes={array:createPrimitiveTypeChecker("array"),bigint:createPrimitiveTypeChecker("bigint"),bool:createPrimitiveTypeChecker("boolean"),func:createPrimitiveTypeChecker("function"),number:createPrimitiveTypeChecker("number"),object:createPrimitiveTypeChecker("object"),string:createPrimitiveTypeChecker("string"),symbol:createPrimitiveTypeChecker("symbol"),any:createAnyTypeChecker(),arrayOf:createArrayOfTypeChecker,element:createElementTypeChecker(),elementType:createElementTypeTypeChecker(),instanceOf:createInstanceTypeChecker,node:createNodeChecker(),objectOf:createObjectOfTypeChecker,oneOf:createEnumTypeChecker,oneOfType:createUnionTypeChecker,shape:createShapeTypeChecker,exact:createStrictShapeTypeChecker};function is(x,y){if(x===y)return x!==0||1/x===1/y;else return x!==x&&y!==y}function PropTypeError(message,data){this.message=message,this.data=data&&typeof data==="object"?data:{},this.stack=""}PropTypeError.prototype=Error.prototype;function createChainableTypeChecker(validate){var manualPropTypeCallCache={},manualPropTypeWarningCount=0;function checkType(isRequired,props,propName,componentName,location,propFullName,secret){if(componentName=componentName||ANONYMOUS,propFullName=propFullName||propName,secret!==ReactPropTypesSecret){if(throwOnDirectAccess){var err=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw err.name="Invariant Violation",err}else if(typeof console<"u"){var cacheKey=componentName+":"+propName;if(!manualPropTypeCallCache[cacheKey]&&manualPropTypeWarningCount<3)printWarning("You are manually calling a React.PropTypes validation function for the `"+propFullName+"` prop on `"+componentName+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),manualPropTypeCallCache[cacheKey]=!0,manualPropTypeWarningCount++}}if(props[propName]==null){if(isRequired){if(props[propName]===null)return new PropTypeError("The "+location+" `"+propFullName+"` is marked as required "+("in `"+componentName+"`, but its value is `null`."));return new PropTypeError("The "+location+" `"+propFullName+"` is marked as required in "+("`"+componentName+"`, but its value is `undefined`."))}return null}else return validate(props,propName,componentName,location,propFullName)}var chainedCheckType=checkType.bind(null,!1);return chainedCheckType.isRequired=checkType.bind(null,!0),chainedCheckType}function createPrimitiveTypeChecker(expectedType){function validate(props,propName,componentName,location,propFullName,secret){var propValue=props[propName],propType=getPropType(propValue);if(propType!==expectedType){var preciseType=getPreciseType(propValue);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+preciseType+"` supplied to `"+componentName+"`, expected ")+("`"+expectedType+"`."),{expectedType})}return null}return createChainableTypeChecker(validate)}function createAnyTypeChecker(){return createChainableTypeChecker(emptyFunctionThatReturnsNull)}function createArrayOfTypeChecker(typeChecker){function validate(props,propName,componentName,location,propFullName){if(typeof typeChecker!=="function")return new PropTypeError("Property `"+propFullName+"` of component `"+componentName+"` has invalid PropType notation inside arrayOf.");var propValue=props[propName];if(!Array.isArray(propValue)){var propType=getPropType(propValue);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+propType+"` supplied to `"+componentName+"`, expected an array."))}for(var i=0;i<propValue.length;i++){var error=typeChecker(propValue,i,componentName,location,propFullName+"["+i+"]",ReactPropTypesSecret);if(error instanceof Error)return error}return null}return createChainableTypeChecker(validate)}function createElementTypeChecker(){function validate(props,propName,componentName,location,propFullName){var propValue=props[propName];if(!isValidElement(propValue)){var propType=getPropType(propValue);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+propType+"` supplied to `"+componentName+"`, expected a single ReactElement."))}return null}return createChainableTypeChecker(validate)}function createElementTypeTypeChecker(){function validate(props,propName,componentName,location,propFullName){var propValue=props[propName];if(!ReactIs.isValidElementType(propValue)){var propType=getPropType(propValue);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+propType+"` supplied to `"+componentName+"`, expected a single ReactElement type."))}return null}return createChainableTypeChecker(validate)}function createInstanceTypeChecker(expectedClass){function validate(props,propName,componentName,location,propFullName){if(!(props[propName]instanceof expectedClass)){var expectedClassName=expectedClass.name||ANONYMOUS,actualClassName=getClassName(props[propName]);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+actualClassName+"` supplied to `"+componentName+"`, expected ")+("instance of `"+expectedClassName+"`."))}return null}return createChainableTypeChecker(validate)}function createEnumTypeChecker(expectedValues){if(!Array.isArray(expectedValues)){if(arguments.length>1)printWarning("Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).");else printWarning("Invalid argument supplied to oneOf, expected an array.");return emptyFunctionThatReturnsNull}function validate(props,propName,componentName,location,propFullName){var propValue=props[propName];for(var i=0;i<expectedValues.length;i++)if(is(propValue,expectedValues[i]))return null;var valuesString=JSON.stringify(expectedValues,function(key,value){var type=getPreciseType(value);if(type==="symbol")return String(value);return value});return new PropTypeError("Invalid "+location+" `"+propFullName+"` of value `"+String(propValue)+"` "+("supplied to `"+componentName+"`, expected one of "+valuesString+"."))}return createChainableTypeChecker(validate)}function createObjectOfTypeChecker(typeChecker){function validate(props,propName,componentName,location,propFullName){if(typeof typeChecker!=="function")return new PropTypeError("Property `"+propFullName+"` of component `"+componentName+"` has invalid PropType notation inside objectOf.");var propValue=props[propName],propType=getPropType(propValue);if(propType!=="object")return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+propType+"` supplied to `"+componentName+"`, expected an object."));for(var key in propValue)if(has(propValue,key)){var error=typeChecker(propValue,key,componentName,location,propFullName+"."+key,ReactPropTypesSecret);if(error instanceof Error)return error}return null}return createChainableTypeChecker(validate)}function createUnionTypeChecker(arrayOfTypeCheckers){if(!Array.isArray(arrayOfTypeCheckers))return printWarning("Invalid argument supplied to oneOfType, expected an instance of array."),emptyFunctionThatReturnsNull;for(var i=0;i<arrayOfTypeCheckers.length;i++){var checker=arrayOfTypeCheckers[i];if(typeof checker!=="function")return printWarning("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+getPostfixForTypeWarning(checker)+" at index "+i+"."),emptyFunctionThatReturnsNull}function validate(props,propName,componentName,location,propFullName){var expectedTypes=[];for(var i=0;i<arrayOfTypeCheckers.length;i++){var checker=arrayOfTypeCheckers[i],checkerResult=checker(props,propName,componentName,location,propFullName,ReactPropTypesSecret);if(checkerResult==null)return null;if(checkerResult.data&&has(checkerResult.data,"expectedType"))expectedTypes.push(checkerResult.data.expectedType)}var expectedTypesMessage=expectedTypes.length>0?", expected one of type ["+expectedTypes.join(", ")+"]":"";return new PropTypeError("Invalid "+location+" `"+propFullName+"` supplied to "+("`"+componentName+"`"+expectedTypesMessage+"."))}return createChainableTypeChecker(validate)}function createNodeChecker(){function validate(props,propName,componentName,location,propFullName){if(!isNode(props[propName]))return new PropTypeError("Invalid "+location+" `"+propFullName+"` supplied to "+("`"+componentName+"`, expected a ReactNode."));return null}return createChainableTypeChecker(validate)}function invalidValidatorError(componentName,location,propFullName,key,type){return new PropTypeError((componentName||"React class")+": "+location+" type `"+propFullName+"."+key+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+type+"`.")}function createShapeTypeChecker(shapeTypes){function validate(props,propName,componentName,location,propFullName){var propValue=props[propName],propType=getPropType(propValue);if(propType!=="object")return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+propType+"` "+("supplied to `"+componentName+"`, expected `object`."));for(var key in shapeTypes){var checker=shapeTypes[key];if(typeof checker!=="function")return invalidValidatorError(componentName,location,propFullName,key,getPreciseType(checker));var error=checker(propValue,key,componentName,location,propFullName+"."+key,ReactPropTypesSecret);if(error)return error}return null}return createChainableTypeChecker(validate)}function createStrictShapeTypeChecker(shapeTypes){function validate(props,propName,componentName,location,propFullName){var propValue=props[propName],propType=getPropType(propValue);if(propType!=="object")return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+propType+"` "+("supplied to `"+componentName+"`, expected `object`."));var allKeys=assign({},props[propName],shapeTypes);for(var key in allKeys){var checker=shapeTypes[key];if(has(shapeTypes,key)&&typeof checker!=="function")return invalidValidatorError(componentName,location,propFullName,key,getPreciseType(checker));if(!checker)return new PropTypeError("Invalid "+location+" `"+propFullName+"` key `"+key+"` supplied to `"+componentName+"`.\nBad object: "+JSON.stringify(props[propName],null," ")+`
3
- Valid keys: `+JSON.stringify(Object.keys(shapeTypes),null," "));var error=checker(propValue,key,componentName,location,propFullName+"."+key,ReactPropTypesSecret);if(error)return error}return null}return createChainableTypeChecker(validate)}function isNode(propValue){switch(typeof propValue){case"number":case"string":case"undefined":return!0;case"boolean":return!propValue;case"object":if(Array.isArray(propValue))return propValue.every(isNode);if(propValue===null||isValidElement(propValue))return!0;var iteratorFn=getIteratorFn(propValue);if(iteratorFn){var iterator=iteratorFn.call(propValue),step;if(iteratorFn!==propValue.entries){while(!(step=iterator.next()).done)if(!isNode(step.value))return!1}else while(!(step=iterator.next()).done){var entry=step.value;if(entry){if(!isNode(entry[1]))return!1}}}else return!1;return!0;default:return!1}}function isSymbol(propType,propValue){if(propType==="symbol")return!0;if(!propValue)return!1;if(propValue["@@toStringTag"]==="Symbol")return!0;if(typeof Symbol==="function"&&propValue instanceof Symbol)return!0;return!1}function getPropType(propValue){var propType=typeof propValue;if(Array.isArray(propValue))return"array";if(propValue instanceof RegExp)return"object";if(isSymbol(propType,propValue))return"symbol";return propType}function getPreciseType(propValue){if(typeof propValue>"u"||propValue===null)return""+propValue;var propType=getPropType(propValue);if(propType==="object"){if(propValue instanceof Date)return"date";else if(propValue instanceof RegExp)return"regexp"}return propType}function getPostfixForTypeWarning(value){var type=getPreciseType(value);switch(type){case"array":case"object":return"an "+type;case"boolean":case"date":case"regexp":return"a "+type;default:return type}}function getClassName(propValue){if(!propValue.constructor||!propValue.constructor.name)return ANONYMOUS;return propValue.constructor.name}return ReactPropTypes.checkPropTypes=checkPropTypes,ReactPropTypes.resetWarningCache=checkPropTypes.resetWarningCache,ReactPropTypes.PropTypes=ReactPropTypes,ReactPropTypes}});var require_prop_types=__commonJS(function(exports,module){var ReactIs=__toESM(require_react_is_development());throwOnDirectAccess=!0,module.exports=require_factoryWithTypeCheckers()(ReactIs.isElement,throwOnDirectAccess);var throwOnDirectAccess});var require_react_is_development2=__commonJS(function(exports){(function(){function typeOf(object){if(typeof object==="object"&&object!==null){var $$typeof=object.$$typeof;switch($$typeof){case REACT_ELEMENT_TYPE:switch(object=object.type,object){case REACT_FRAGMENT_TYPE:case REACT_PROFILER_TYPE:case REACT_STRICT_MODE_TYPE:case REACT_SUSPENSE_TYPE:case REACT_SUSPENSE_LIST_TYPE:case REACT_VIEW_TRANSITION_TYPE:return object;default:switch(object=object&&object.$$typeof,object){case REACT_CONTEXT_TYPE:case REACT_FORWARD_REF_TYPE:case REACT_LAZY_TYPE:case REACT_MEMO_TYPE:return object;case REACT_CONSUMER_TYPE:return object;default:return $$typeof}}case REACT_PORTAL_TYPE:return $$typeof}}}var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element"),REACT_PORTAL_TYPE=Symbol.for("react.portal"),REACT_FRAGMENT_TYPE=Symbol.for("react.fragment"),REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode"),REACT_PROFILER_TYPE=Symbol.for("react.profiler"),REACT_CONSUMER_TYPE=Symbol.for("react.consumer"),REACT_CONTEXT_TYPE=Symbol.for("react.context"),REACT_FORWARD_REF_TYPE=Symbol.for("react.forward_ref"),REACT_SUSPENSE_TYPE=Symbol.for("react.suspense"),REACT_SUSPENSE_LIST_TYPE=Symbol.for("react.suspense_list"),REACT_MEMO_TYPE=Symbol.for("react.memo"),REACT_LAZY_TYPE=Symbol.for("react.lazy"),REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition"),REACT_CLIENT_REFERENCE=Symbol.for("react.client.reference");exports.ContextConsumer=REACT_CONSUMER_TYPE,exports.ContextProvider=REACT_CONTEXT_TYPE,exports.Element=REACT_ELEMENT_TYPE,exports.ForwardRef=REACT_FORWARD_REF_TYPE,exports.Fragment=REACT_FRAGMENT_TYPE,exports.Lazy=REACT_LAZY_TYPE,exports.Memo=REACT_MEMO_TYPE,exports.Portal=REACT_PORTAL_TYPE,exports.Profiler=REACT_PROFILER_TYPE,exports.StrictMode=REACT_STRICT_MODE_TYPE,exports.Suspense=REACT_SUSPENSE_TYPE,exports.SuspenseList=REACT_SUSPENSE_LIST_TYPE,exports.isContextConsumer=function(object){return typeOf(object)===REACT_CONSUMER_TYPE},exports.isContextProvider=function(object){return typeOf(object)===REACT_CONTEXT_TYPE},exports.isElement=function(object){return typeof object==="object"&&object!==null&&object.$$typeof===REACT_ELEMENT_TYPE},exports.isForwardRef=function(object){return typeOf(object)===REACT_FORWARD_REF_TYPE},exports.isFragment=function(object){return typeOf(object)===REACT_FRAGMENT_TYPE},exports.isLazy=function(object){return typeOf(object)===REACT_LAZY_TYPE},exports.isMemo=function(object){return typeOf(object)===REACT_MEMO_TYPE},exports.isPortal=function(object){return typeOf(object)===REACT_PORTAL_TYPE},exports.isProfiler=function(object){return typeOf(object)===REACT_PROFILER_TYPE},exports.isStrictMode=function(object){return typeOf(object)===REACT_STRICT_MODE_TYPE},exports.isSuspense=function(object){return typeOf(object)===REACT_SUSPENSE_TYPE},exports.isSuspenseList=function(object){return typeOf(object)===REACT_SUSPENSE_LIST_TYPE},exports.isValidElementType=function(type){return typeof type==="string"||typeof type==="function"||type===REACT_FRAGMENT_TYPE||type===REACT_PROFILER_TYPE||type===REACT_STRICT_MODE_TYPE||type===REACT_SUSPENSE_TYPE||type===REACT_SUSPENSE_LIST_TYPE||typeof type==="object"&&type!==null&&(type.$$typeof===REACT_LAZY_TYPE||type.$$typeof===REACT_MEMO_TYPE||type.$$typeof===REACT_CONTEXT_TYPE||type.$$typeof===REACT_CONSUMER_TYPE||type.$$typeof===REACT_FORWARD_REF_TYPE||type.$$typeof===REACT_CLIENT_REFERENCE||type.getModuleId!==void 0)?!0:!1},exports.typeOf=typeOf})()});import{dirname,join}from"path";import{fileURLToPath}from"url";var MUI_INTRO=["**This folder targets Material UI.** Components are real MUI: `Box`/`Stack`/`Container`/`Paper` for layout, `Card`/`CardContent`/`CardHeader`/`CardActions`, `Typography` (ALL text \u2014 pick `variant` for the type scale), `Button`/`IconButton`, `TextField`, `Chip`, `Divider`, `Avatar`, `List`/`ListItem`, `Table*`, `Tabs`/`Tab`, `Alert`, `Tooltip`, and the overlay surface `Dialog`/`Menu`/`Popover`/`Drawer`/`Snackbar` (rendered open + inline in design mode). Call `list_components` for the full set and per-component `example` props.","",'**Style through `sx`.** `update_props { style: { display: "flex", alignItems: "center", gap: 2, p: 3, color: "primary.main" } }` \u2014 an object of MUI system props, where spacing is theme units (`p: 2` = 16px). It merges shallowly; an inner `null` drops a key, `style: null` clears. `emit_code` emits `<Component sx={{\u2026}} />` importing from `@mui/material`; `emit_theme` emits a `createTheme(...)` module. Tailwind utility diagnostics do not apply here \u2014 style via `sx` plus the shared theme tokens from `get_theme`, which project onto MUI.',""];var sx={name:"sx",type:"SxProps | undefined",optional:!0,control:"string"},children={name:"children",type:"ReactNode",optional:!0,control:"string"},enumProp=(name,values,defaultValue)=>({name,type:values.map((v)=>`"${v}"`).join(" | "),optional:!0,control:"enum",enumValues:values,defaultValue});function ui(id,props,notes,example){return{id,category:"ui",source:"mui",props:[...props,sx],designModeNotes:notes,example}}var className={name:"className",type:"string | undefined",optional:!0,control:"string"};function helper(id,props,notes,example){return{id,category:"ui",source:"velloo",props:[...props,className],designModeNotes:notes,example}}var MUI_MANIFEST=[ui("Box",[children],"Generic layout primitive; style via sx."),ui("Stack",[children,enumProp("direction",["row","column"],"column")],"Flex layout; set spacing via sx or the spacing prop."),ui("Container",[children,enumProp("maxWidth",["xs","sm","md","lg","xl"],"lg")],"Centers + max-widths content."),ui("Paper",[children,enumProp("variant",["elevation","outlined"],"elevation")]),ui("Card",[children,enumProp("variant",["elevation","outlined"],"elevation")]),ui("CardContent",[children]),ui("CardHeader",[{name:"title",type:"ReactNode",optional:!0,control:"string"},{name:"subheader",type:"ReactNode",optional:!0,control:"string"}]),ui("CardActions",[children]),ui("Button",[children,enumProp("variant",["text","outlined","contained"],"text"),enumProp("color",["primary","secondary","success","error","inherit"],"primary"),enumProp("size",["small","medium","large"],"medium")],"Action button.",{variant:"contained",color:"primary",children:"Submit"}),ui("Typography",[children,enumProp("variant",["h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","overline"],"body1"),enumProp("color",["text.primary","text.secondary","primary","error"])],"All text. Pick variant for the type scale; this is MUI's Heading + Text.",{variant:"h4",children:"Team analytics"}),ui("TextField",[enumProp("variant",["outlined","filled","standard"],"outlined"),{name:"label",type:"string",optional:!0,control:"string"},{name:"placeholder",type:"string",optional:!0,control:"string"}]),ui("Chip",[{name:"label",type:"ReactNode",optional:!0,control:"string"},enumProp("variant",["filled","outlined"],"filled"),enumProp("color",["default","primary","success","warning","error"],"default"),enumProp("size",["small","medium"],"medium")]),ui("Divider",[]),ui("Avatar",[children,{name:"src",type:"string",optional:!0,control:"string"}]),ui("LinearProgress",[{name:"value",type:"number",optional:!0,control:"number"},enumProp("variant",["determinate","indeterminate"],"indeterminate")]),ui("AppBar",[children,enumProp("position",["fixed","static","sticky"],"fixed"),enumProp("color",["primary","default","transparent","inherit"],"primary")]),ui("Toolbar",[children]),ui("IconButton",[children,enumProp("size",["small","medium","large"],"medium")]),ui("Link",[children,{name:"href",type:"string",optional:!0,control:"string"}]),ui("List",[children]),ui("ListItem",[children]),ui("ListItemText",[{name:"primary",type:"ReactNode",optional:!0,control:"string"},{name:"secondary",type:"ReactNode",optional:!0,control:"string"}]),ui("Table",[children]),ui("TableHead",[children]),ui("TableBody",[children]),ui("TableRow",[children]),ui("TableCell",[children,enumProp("align",["left","center","right"],"left")]),ui("Tabs",[children,{name:"value",type:"number | string",optional:!0,control:"string"}]),ui("Tab",[{name:"label",type:"ReactNode",optional:!0,control:"string"}]),ui("Badge",[children,{name:"badgeContent",type:"ReactNode",optional:!0,control:"string"}]),ui("Checkbox",[{name:"checked",type:"boolean",optional:!0,control:"boolean"}]),ui("Switch",[{name:"checked",type:"boolean",optional:!0,control:"boolean"}]),ui("Select",[children,enumProp("variant",["outlined","filled","standard"],"outlined")]),ui("MenuItem",[children,{name:"value",type:"string | number",optional:!0,control:"string"}]),ui("Tooltip",[children,{name:"title",type:"ReactNode",optional:!0,control:"string"}]),ui("Alert",[children,enumProp("severity",["success","info","warning","error"],"success")]),ui("Dialog",[children,enumProp("maxWidth",["xs","sm","md","lg","xl"],"sm")],"Modal dialog surface \u2014 renders open + inline in design mode. Fill it with DialogTitle / DialogContent / DialogActions.",{maxWidth:"sm"}),ui("DialogTitle",[children],"The dialog's heading row."),ui("DialogContent",[children],"The dialog's body."),ui("DialogContentText",[children],"Secondary text inside DialogContent."),ui("DialogActions",[children],"The dialog's button row (right-aligned)."),ui("Menu",[children],"A menu surface holding MenuItems \u2014 renders open + inline in design mode."),ui("Popover",[children],"A popover surface \u2014 renders open + inline in design mode."),ui("Drawer",[children],"A side panel \u2014 renders inline as a fixed-width column in design mode."),ui("Snackbar",[children,{name:"message",type:"ReactNode",optional:!0,control:"string"}],"A toast \u2014 renders inline as a dark pill in design mode. Use `message` or children.",{message:"Saved"}),helper("Icon",[{name:"name",type:"string",optional:!1,control:"icon"},{name:"size",type:"number",optional:!0,control:"number"}],"A lucide icon \u2014 MUI has no bundled icon set. Set the pixel `size` prop (not Tailwind). `name` is a lucide id (PascalCase or kebab). Emits a `lucide-react` import.",{name:"ArrowRight",size:20}),helper("Image",[{name:"src",type:"string",optional:!1,control:"string"},{name:"alt",type:"string",optional:!1,control:"string"}],"An image. Use velloo assets (`/assets/\u2026`) or a URL."),helper("Placeholder",[{name:"label",type:"string",optional:!0,control:"string"}],"A labeled placeholder box for imagery you haven't authored yet (avatars, hero shots)."),helper("SVG",[{name:"content",type:"string",optional:!1,control:"string"},{name:"viewBox",type:"string",optional:!1,control:"string"}],"Raw inline SVG markup."),helper("Layer",[children],"An absolutely-positioned overlay layer for stacked composition."),helper("Gradient",[{name:"from",type:"string",optional:!0,control:"color"}],"A gradient fill block."),helper("Prose",[children,{name:"preset",type:"string",optional:!0,control:"string"},{name:"as",type:"string",optional:!0,control:"string"}],"A long-form content region. Everything inside \u2014 Typography, headings, lists, quotes, code, tables \u2014 picks up the theme typeset's proportions and vertical rhythm automatically. `preset` selects a named typeset (see set_typeset). Reach for this for articles, docs, and marketing copy instead of setting sizes block by block.",{as:"article"})];var React49=__toESM(require_react_development()),import_prop_types26=__toESM(require_prop_types());import clsx13 from"clsx";function composeClasses(slots,getUtilityClass,classes=void 0){let output={};for(let slotName in slots){let slot=slots[slotName],buffer="",start=!0;for(let i=0;i<slot.length;i+=1){let value=slot[i];if(value){if(buffer+=(start===!0?"":" ")+getUtilityClass(value),start=!1,classes&&classes[value])buffer+=" "+classes[value]}}output[slotName]=buffer}return output}function clamp(val,min=Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER){return Math.max(min,Math.min(val,max))}var clamp_default=clamp;function clampWrapper(value,min=0,max=1){if(value<min||value>max)console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);return clamp_default(value,min,max)}function hexToRgb(color){color=color.slice(1);let re=new RegExp(`.{1,${color.length>=6?2:1}}`,"g"),colors=color.match(re);if(colors&&colors[0].length===1)colors=colors.map((n)=>n+n);if(color.length!==color.trim().length)console.error(`MUI: The color: "${color}" is invalid. Make sure the color input doesn't contain leading/trailing space.`);return colors?`rgb${colors.length===4?"a":""}(${colors.map((n,index)=>index<3?parseInt(n,16):Math.round(parseInt(n,16)/255*1000)/1000).join(", ")})`:""}function decomposeColor(color){if(color.type)return color;if(color.charAt(0)==="#")return decomposeColor(hexToRgb(color));let marker=color.indexOf("("),type=color.substring(0,marker);if(!["rgb","rgba","hsl","hsla","color"].includes(type))throw Error(`MUI: Unsupported \`${color}\` color.
2
+ import{helpersRegistry,parse_default,formatRgb,helperSourcePath}from"./chunk-brnkprt5.js";import{sanitizeCssTokenValue,resolveColors,DEFAULT_TYPESET_NAME,typesetScale}from"./chunk-5x4nw0zz.js";import{require_react_is_development,require_object_assign,require_emotion_serialize_development_cjs,$_default,import_emotion_react_development_cjs,$_default2,$_default3}from"./chunk-rxkvjyst.js";import{SX_PROP,catalogFromManifest,require_react_development,require_react_dom}from"./chunk-ex36z3b3.js";import{__toESM,__commonJS}from"./chunk-2smsg2ct.js";import{MUI_VERSION}from"./chunk-mzhdrawd.js";import{_objectWithoutPropertiesLoose,_extends,_assertThisInitialized,_setPrototypeOf}from"./chunk-h6gchare.js";import{resolveProviderSrcDir}from"./chunk-v6c3h9ft.js";import{require_react_jsx_runtime_development}from"./chunk-0e5j6nqs.js";var require_ReactPropTypesSecret=__commonJS(function(exports,module){var ReactPropTypesSecret="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";module.exports=ReactPropTypesSecret});var require_has=__commonJS(function(exports,module){module.exports=Function.call.bind(Object.prototype.hasOwnProperty)});var require_checkPropTypes=__commonJS(function(exports,module){var printWarning=function(){};ReactPropTypesSecret=require_ReactPropTypesSecret(),loggedTypeFailures={},has=require_has(),printWarning=function(text){var message="Warning: "+text;if(typeof console<"u")console.error(message);try{throw Error(message)}catch(x){}};var ReactPropTypesSecret,loggedTypeFailures,has;function checkPropTypes(typeSpecs,values,location,componentName,getStack){for(var typeSpecName in typeSpecs)if(has(typeSpecs,typeSpecName)){var error;try{if(typeof typeSpecs[typeSpecName]!=="function"){var err=Error((componentName||"React class")+": "+location+" type `"+typeSpecName+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof typeSpecs[typeSpecName]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw err.name="Invariant Violation",err}error=typeSpecs[typeSpecName](values,typeSpecName,componentName,location,null,ReactPropTypesSecret)}catch(ex){error=ex}if(error&&!(error instanceof Error))printWarning((componentName||"React class")+": type specification of "+location+" `"+typeSpecName+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof error+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).");if(error instanceof Error&&!(error.message in loggedTypeFailures)){loggedTypeFailures[error.message]=!0;var stack=getStack?getStack():"";printWarning("Failed "+location+" type: "+error.message+(stack!=null?stack:""))}}}checkPropTypes.resetWarningCache=function(){loggedTypeFailures={}};module.exports=checkPropTypes});var require_factoryWithTypeCheckers=__commonJS(function(exports,module){var ReactIs=__toESM(require_react_is_development()),assign=require_object_assign(),ReactPropTypesSecret=require_ReactPropTypesSecret(),has=require_has(),checkPropTypes=require_checkPropTypes(),printWarning=function(){};printWarning=function(text){var message="Warning: "+text;if(typeof console<"u")console.error(message);try{throw Error(message)}catch(x){}};function emptyFunctionThatReturnsNull(){return null}module.exports=function(isValidElement,throwOnDirectAccess){var ITERATOR_SYMBOL=typeof Symbol==="function"&&Symbol.iterator,FAUX_ITERATOR_SYMBOL="@@iterator";function getIteratorFn(maybeIterable){var iteratorFn=maybeIterable&&(ITERATOR_SYMBOL&&maybeIterable[ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL]);if(typeof iteratorFn==="function")return iteratorFn}var ANONYMOUS="<<anonymous>>",ReactPropTypes={array:createPrimitiveTypeChecker("array"),bigint:createPrimitiveTypeChecker("bigint"),bool:createPrimitiveTypeChecker("boolean"),func:createPrimitiveTypeChecker("function"),number:createPrimitiveTypeChecker("number"),object:createPrimitiveTypeChecker("object"),string:createPrimitiveTypeChecker("string"),symbol:createPrimitiveTypeChecker("symbol"),any:createAnyTypeChecker(),arrayOf:createArrayOfTypeChecker,element:createElementTypeChecker(),elementType:createElementTypeTypeChecker(),instanceOf:createInstanceTypeChecker,node:createNodeChecker(),objectOf:createObjectOfTypeChecker,oneOf:createEnumTypeChecker,oneOfType:createUnionTypeChecker,shape:createShapeTypeChecker,exact:createStrictShapeTypeChecker};function is(x,y){if(x===y)return x!==0||1/x===1/y;else return x!==x&&y!==y}function PropTypeError(message,data){this.message=message,this.data=data&&typeof data==="object"?data:{},this.stack=""}PropTypeError.prototype=Error.prototype;function createChainableTypeChecker(validate){var manualPropTypeCallCache={},manualPropTypeWarningCount=0;function checkType(isRequired,props,propName,componentName,location,propFullName,secret){if(componentName=componentName||ANONYMOUS,propFullName=propFullName||propName,secret!==ReactPropTypesSecret){if(throwOnDirectAccess){var err=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw err.name="Invariant Violation",err}else if(typeof console<"u"){var cacheKey=componentName+":"+propName;if(!manualPropTypeCallCache[cacheKey]&&manualPropTypeWarningCount<3)printWarning("You are manually calling a React.PropTypes validation function for the `"+propFullName+"` prop on `"+componentName+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),manualPropTypeCallCache[cacheKey]=!0,manualPropTypeWarningCount++}}if(props[propName]==null){if(isRequired){if(props[propName]===null)return new PropTypeError("The "+location+" `"+propFullName+"` is marked as required "+("in `"+componentName+"`, but its value is `null`."));return new PropTypeError("The "+location+" `"+propFullName+"` is marked as required in "+("`"+componentName+"`, but its value is `undefined`."))}return null}else return validate(props,propName,componentName,location,propFullName)}var chainedCheckType=checkType.bind(null,!1);return chainedCheckType.isRequired=checkType.bind(null,!0),chainedCheckType}function createPrimitiveTypeChecker(expectedType){function validate(props,propName,componentName,location,propFullName,secret){var propValue=props[propName],propType=getPropType(propValue);if(propType!==expectedType){var preciseType=getPreciseType(propValue);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+preciseType+"` supplied to `"+componentName+"`, expected ")+("`"+expectedType+"`."),{expectedType})}return null}return createChainableTypeChecker(validate)}function createAnyTypeChecker(){return createChainableTypeChecker(emptyFunctionThatReturnsNull)}function createArrayOfTypeChecker(typeChecker){function validate(props,propName,componentName,location,propFullName){if(typeof typeChecker!=="function")return new PropTypeError("Property `"+propFullName+"` of component `"+componentName+"` has invalid PropType notation inside arrayOf.");var propValue=props[propName];if(!Array.isArray(propValue)){var propType=getPropType(propValue);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+propType+"` supplied to `"+componentName+"`, expected an array."))}for(var i=0;i<propValue.length;i++){var error=typeChecker(propValue,i,componentName,location,propFullName+"["+i+"]",ReactPropTypesSecret);if(error instanceof Error)return error}return null}return createChainableTypeChecker(validate)}function createElementTypeChecker(){function validate(props,propName,componentName,location,propFullName){var propValue=props[propName];if(!isValidElement(propValue)){var propType=getPropType(propValue);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+propType+"` supplied to `"+componentName+"`, expected a single ReactElement."))}return null}return createChainableTypeChecker(validate)}function createElementTypeTypeChecker(){function validate(props,propName,componentName,location,propFullName){var propValue=props[propName];if(!ReactIs.isValidElementType(propValue)){var propType=getPropType(propValue);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+propType+"` supplied to `"+componentName+"`, expected a single ReactElement type."))}return null}return createChainableTypeChecker(validate)}function createInstanceTypeChecker(expectedClass){function validate(props,propName,componentName,location,propFullName){if(!(props[propName]instanceof expectedClass)){var expectedClassName=expectedClass.name||ANONYMOUS,actualClassName=getClassName(props[propName]);return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+actualClassName+"` supplied to `"+componentName+"`, expected ")+("instance of `"+expectedClassName+"`."))}return null}return createChainableTypeChecker(validate)}function createEnumTypeChecker(expectedValues){if(!Array.isArray(expectedValues)){if(arguments.length>1)printWarning("Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).");else printWarning("Invalid argument supplied to oneOf, expected an array.");return emptyFunctionThatReturnsNull}function validate(props,propName,componentName,location,propFullName){var propValue=props[propName];for(var i=0;i<expectedValues.length;i++)if(is(propValue,expectedValues[i]))return null;var valuesString=JSON.stringify(expectedValues,function(key,value){var type=getPreciseType(value);if(type==="symbol")return String(value);return value});return new PropTypeError("Invalid "+location+" `"+propFullName+"` of value `"+String(propValue)+"` "+("supplied to `"+componentName+"`, expected one of "+valuesString+"."))}return createChainableTypeChecker(validate)}function createObjectOfTypeChecker(typeChecker){function validate(props,propName,componentName,location,propFullName){if(typeof typeChecker!=="function")return new PropTypeError("Property `"+propFullName+"` of component `"+componentName+"` has invalid PropType notation inside objectOf.");var propValue=props[propName],propType=getPropType(propValue);if(propType!=="object")return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type "+("`"+propType+"` supplied to `"+componentName+"`, expected an object."));for(var key in propValue)if(has(propValue,key)){var error=typeChecker(propValue,key,componentName,location,propFullName+"."+key,ReactPropTypesSecret);if(error instanceof Error)return error}return null}return createChainableTypeChecker(validate)}function createUnionTypeChecker(arrayOfTypeCheckers){if(!Array.isArray(arrayOfTypeCheckers))return printWarning("Invalid argument supplied to oneOfType, expected an instance of array."),emptyFunctionThatReturnsNull;for(var i=0;i<arrayOfTypeCheckers.length;i++){var checker=arrayOfTypeCheckers[i];if(typeof checker!=="function")return printWarning("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+getPostfixForTypeWarning(checker)+" at index "+i+"."),emptyFunctionThatReturnsNull}function validate(props,propName,componentName,location,propFullName){var expectedTypes=[];for(var i=0;i<arrayOfTypeCheckers.length;i++){var checker=arrayOfTypeCheckers[i],checkerResult=checker(props,propName,componentName,location,propFullName,ReactPropTypesSecret);if(checkerResult==null)return null;if(checkerResult.data&&has(checkerResult.data,"expectedType"))expectedTypes.push(checkerResult.data.expectedType)}var expectedTypesMessage=expectedTypes.length>0?", expected one of type ["+expectedTypes.join(", ")+"]":"";return new PropTypeError("Invalid "+location+" `"+propFullName+"` supplied to "+("`"+componentName+"`"+expectedTypesMessage+"."))}return createChainableTypeChecker(validate)}function createNodeChecker(){function validate(props,propName,componentName,location,propFullName){if(!isNode(props[propName]))return new PropTypeError("Invalid "+location+" `"+propFullName+"` supplied to "+("`"+componentName+"`, expected a ReactNode."));return null}return createChainableTypeChecker(validate)}function invalidValidatorError(componentName,location,propFullName,key,type){return new PropTypeError((componentName||"React class")+": "+location+" type `"+propFullName+"."+key+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+type+"`.")}function createShapeTypeChecker(shapeTypes){function validate(props,propName,componentName,location,propFullName){var propValue=props[propName],propType=getPropType(propValue);if(propType!=="object")return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+propType+"` "+("supplied to `"+componentName+"`, expected `object`."));for(var key in shapeTypes){var checker=shapeTypes[key];if(typeof checker!=="function")return invalidValidatorError(componentName,location,propFullName,key,getPreciseType(checker));var error=checker(propValue,key,componentName,location,propFullName+"."+key,ReactPropTypesSecret);if(error)return error}return null}return createChainableTypeChecker(validate)}function createStrictShapeTypeChecker(shapeTypes){function validate(props,propName,componentName,location,propFullName){var propValue=props[propName],propType=getPropType(propValue);if(propType!=="object")return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+propType+"` "+("supplied to `"+componentName+"`, expected `object`."));var allKeys=assign({},props[propName],shapeTypes);for(var key in allKeys){var checker=shapeTypes[key];if(has(shapeTypes,key)&&typeof checker!=="function")return invalidValidatorError(componentName,location,propFullName,key,getPreciseType(checker));if(!checker)return new PropTypeError("Invalid "+location+" `"+propFullName+"` key `"+key+"` supplied to `"+componentName+"`.\nBad object: "+JSON.stringify(props[propName],null," ")+`
3
+ Valid keys: `+JSON.stringify(Object.keys(shapeTypes),null," "));var error=checker(propValue,key,componentName,location,propFullName+"."+key,ReactPropTypesSecret);if(error)return error}return null}return createChainableTypeChecker(validate)}function isNode(propValue){switch(typeof propValue){case"number":case"string":case"undefined":return!0;case"boolean":return!propValue;case"object":if(Array.isArray(propValue))return propValue.every(isNode);if(propValue===null||isValidElement(propValue))return!0;var iteratorFn=getIteratorFn(propValue);if(iteratorFn){var iterator=iteratorFn.call(propValue),step;if(iteratorFn!==propValue.entries){while(!(step=iterator.next()).done)if(!isNode(step.value))return!1}else while(!(step=iterator.next()).done){var entry=step.value;if(entry){if(!isNode(entry[1]))return!1}}}else return!1;return!0;default:return!1}}function isSymbol(propType,propValue){if(propType==="symbol")return!0;if(!propValue)return!1;if(propValue["@@toStringTag"]==="Symbol")return!0;if(typeof Symbol==="function"&&propValue instanceof Symbol)return!0;return!1}function getPropType(propValue){var propType=typeof propValue;if(Array.isArray(propValue))return"array";if(propValue instanceof RegExp)return"object";if(isSymbol(propType,propValue))return"symbol";return propType}function getPreciseType(propValue){if(typeof propValue>"u"||propValue===null)return""+propValue;var propType=getPropType(propValue);if(propType==="object"){if(propValue instanceof Date)return"date";else if(propValue instanceof RegExp)return"regexp"}return propType}function getPostfixForTypeWarning(value){var type=getPreciseType(value);switch(type){case"array":case"object":return"an "+type;case"boolean":case"date":case"regexp":return"a "+type;default:return type}}function getClassName(propValue){if(!propValue.constructor||!propValue.constructor.name)return ANONYMOUS;return propValue.constructor.name}return ReactPropTypes.checkPropTypes=checkPropTypes,ReactPropTypes.resetWarningCache=checkPropTypes.resetWarningCache,ReactPropTypes.PropTypes=ReactPropTypes,ReactPropTypes}});var require_prop_types=__commonJS(function(exports,module){var ReactIs=__toESM(require_react_is_development());throwOnDirectAccess=!0,module.exports=require_factoryWithTypeCheckers()(ReactIs.isElement,throwOnDirectAccess);var throwOnDirectAccess});var require_react_is_development2=__commonJS(function(exports){(function(){function typeOf(object){if(typeof object==="object"&&object!==null){var $$typeof=object.$$typeof;switch($$typeof){case REACT_ELEMENT_TYPE:switch(object=object.type,object){case REACT_FRAGMENT_TYPE:case REACT_PROFILER_TYPE:case REACT_STRICT_MODE_TYPE:case REACT_SUSPENSE_TYPE:case REACT_SUSPENSE_LIST_TYPE:case REACT_VIEW_TRANSITION_TYPE:return object;default:switch(object=object&&object.$$typeof,object){case REACT_CONTEXT_TYPE:case REACT_FORWARD_REF_TYPE:case REACT_LAZY_TYPE:case REACT_MEMO_TYPE:return object;case REACT_CONSUMER_TYPE:return object;default:return $$typeof}}case REACT_PORTAL_TYPE:return $$typeof}}}var REACT_ELEMENT_TYPE=Symbol.for("react.transitional.element"),REACT_PORTAL_TYPE=Symbol.for("react.portal"),REACT_FRAGMENT_TYPE=Symbol.for("react.fragment"),REACT_STRICT_MODE_TYPE=Symbol.for("react.strict_mode"),REACT_PROFILER_TYPE=Symbol.for("react.profiler"),REACT_CONSUMER_TYPE=Symbol.for("react.consumer"),REACT_CONTEXT_TYPE=Symbol.for("react.context"),REACT_FORWARD_REF_TYPE=Symbol.for("react.forward_ref"),REACT_SUSPENSE_TYPE=Symbol.for("react.suspense"),REACT_SUSPENSE_LIST_TYPE=Symbol.for("react.suspense_list"),REACT_MEMO_TYPE=Symbol.for("react.memo"),REACT_LAZY_TYPE=Symbol.for("react.lazy"),REACT_VIEW_TRANSITION_TYPE=Symbol.for("react.view_transition"),REACT_CLIENT_REFERENCE=Symbol.for("react.client.reference");exports.ContextConsumer=REACT_CONSUMER_TYPE,exports.ContextProvider=REACT_CONTEXT_TYPE,exports.Element=REACT_ELEMENT_TYPE,exports.ForwardRef=REACT_FORWARD_REF_TYPE,exports.Fragment=REACT_FRAGMENT_TYPE,exports.Lazy=REACT_LAZY_TYPE,exports.Memo=REACT_MEMO_TYPE,exports.Portal=REACT_PORTAL_TYPE,exports.Profiler=REACT_PROFILER_TYPE,exports.StrictMode=REACT_STRICT_MODE_TYPE,exports.Suspense=REACT_SUSPENSE_TYPE,exports.SuspenseList=REACT_SUSPENSE_LIST_TYPE,exports.isContextConsumer=function(object){return typeOf(object)===REACT_CONSUMER_TYPE},exports.isContextProvider=function(object){return typeOf(object)===REACT_CONTEXT_TYPE},exports.isElement=function(object){return typeof object==="object"&&object!==null&&object.$$typeof===REACT_ELEMENT_TYPE},exports.isForwardRef=function(object){return typeOf(object)===REACT_FORWARD_REF_TYPE},exports.isFragment=function(object){return typeOf(object)===REACT_FRAGMENT_TYPE},exports.isLazy=function(object){return typeOf(object)===REACT_LAZY_TYPE},exports.isMemo=function(object){return typeOf(object)===REACT_MEMO_TYPE},exports.isPortal=function(object){return typeOf(object)===REACT_PORTAL_TYPE},exports.isProfiler=function(object){return typeOf(object)===REACT_PROFILER_TYPE},exports.isStrictMode=function(object){return typeOf(object)===REACT_STRICT_MODE_TYPE},exports.isSuspense=function(object){return typeOf(object)===REACT_SUSPENSE_TYPE},exports.isSuspenseList=function(object){return typeOf(object)===REACT_SUSPENSE_LIST_TYPE},exports.isValidElementType=function(type){return typeof type==="string"||typeof type==="function"||type===REACT_FRAGMENT_TYPE||type===REACT_PROFILER_TYPE||type===REACT_STRICT_MODE_TYPE||type===REACT_SUSPENSE_TYPE||type===REACT_SUSPENSE_LIST_TYPE||typeof type==="object"&&type!==null&&(type.$$typeof===REACT_LAZY_TYPE||type.$$typeof===REACT_MEMO_TYPE||type.$$typeof===REACT_CONTEXT_TYPE||type.$$typeof===REACT_CONSUMER_TYPE||type.$$typeof===REACT_FORWARD_REF_TYPE||type.$$typeof===REACT_CLIENT_REFERENCE||type.getModuleId!==void 0)?!0:!1},exports.typeOf=typeOf})()});import{dirname,join}from"path";import{fileURLToPath}from"url";var MUI_INTRO=["**This folder targets Material UI.** Components are real MUI: `Box`/`Stack`/`Container`/`Paper` for layout, `Card`/`CardContent`/`CardHeader`/`CardActions`, `Typography` (ALL text \u2014 pick `variant` for the type scale), `Button`/`IconButton`, `TextField`, `Chip`, `Divider`, `Avatar`, `List`/`ListItem`, `Table*`, `Tabs`/`Tab`, `Alert`, `Tooltip`, and the overlay surface `Dialog`/`Menu`/`Popover`/`Drawer`/`Snackbar` (rendered open + inline in design mode). Call `list_components` for the full set and per-component `example` props.","",'**Style through `sx`.** `update_props { style: { display: "flex", alignItems: "center", gap: 2, p: 3, color: "primary.main" } }` \u2014 an object of MUI system props, where spacing is theme units (`p: 2` = 16px). It merges shallowly; an inner `null` drops a key, `style: null` clears. `emit_code` emits `<Component sx={{\u2026}} />` importing from `@mui/material`; `emit_theme` emits a `createTheme(...)` module. Tailwind utility diagnostics do not apply here \u2014 style via `sx` plus the shared theme tokens from `get_theme`, which project onto MUI.',""];var sx={name:"sx",type:"SxProps | undefined",optional:!0,control:"string"},children={name:"children",type:"ReactNode",optional:!0,control:"string"},enumProp=(name,values,defaultValue)=>({name,type:values.map((v)=>`"${v}"`).join(" | "),optional:!0,control:"enum",enumValues:values,defaultValue});function ui(id,props,notes,example){return{id,category:"ui",source:"mui",props:[...props,sx],designModeNotes:notes,example}}var className={name:"className",type:"string | undefined",optional:!0,control:"string"};function helper(id,props,notes,example){return{id,category:"ui",source:"velloo",props:[...props,className],designModeNotes:notes,example}}var MUI_MANIFEST=[ui("Box",[children,{name:"as",type:"string",optional:!0,control:"string",nativeName:"component"}],'Generic layout primitive; style via sx. `as` renders another HTML tag ("span", "section") and emits as MUI\'s `component`.'),ui("Stack",[children,enumProp("direction",["row","column"],"column")],"Flex layout; set spacing via sx or the spacing prop."),ui("Container",[children,enumProp("maxWidth",["xs","sm","md","lg","xl"],"lg")],"Centers + max-widths content."),ui("Paper",[children,enumProp("variant",["elevation","outlined"],"elevation")]),ui("Card",[children,enumProp("variant",["elevation","outlined"],"elevation")]),ui("CardContent",[children]),ui("CardHeader",[{name:"title",type:"ReactNode",optional:!0,control:"string"},{name:"subheader",type:"ReactNode",optional:!0,control:"string"}]),ui("CardActions",[children]),ui("Button",[children,enumProp("variant",["text","outlined","contained"],"text"),enumProp("color",["primary","secondary","success","error","inherit"],"primary"),enumProp("size",["small","medium","large"],"medium")],"Action button.",{variant:"contained",color:"primary",children:"Submit"}),ui("Typography",[children,enumProp("variant",["h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","caption","overline"],"body1"),enumProp("color",["text.primary","text.secondary","primary","error"])],"All text. Pick variant for the type scale; this is MUI's Heading + Text.",{variant:"h4",children:"Team analytics"}),ui("TextField",[enumProp("variant",["outlined","filled","standard"],"outlined"),{name:"label",type:"string",optional:!0,control:"string"},{name:"placeholder",type:"string",optional:!0,control:"string"}]),ui("Chip",[{name:"label",type:"ReactNode",optional:!0,control:"string"},enumProp("variant",["filled","outlined"],"filled"),enumProp("color",["default","primary","success","warning","error"],"default"),enumProp("size",["small","medium"],"medium")]),ui("Divider",[]),ui("Avatar",[children,{name:"src",type:"string",optional:!0,control:"string"}]),ui("LinearProgress",[{name:"value",type:"number",optional:!0,control:"number"},enumProp("variant",["determinate","indeterminate"],"indeterminate")]),ui("AppBar",[children,enumProp("position",["fixed","static","sticky"],"fixed"),enumProp("color",["primary","default","transparent","inherit"],"primary")]),ui("Toolbar",[children]),ui("IconButton",[children,enumProp("size",["small","medium","large"],"medium")]),ui("Link",[children,{name:"href",type:"string",optional:!0,control:"string"}]),ui("List",[children]),ui("ListItem",[children]),ui("ListItemText",[{name:"primary",type:"ReactNode",optional:!0,control:"string"},{name:"secondary",type:"ReactNode",optional:!0,control:"string"}]),ui("Table",[children]),ui("TableHead",[children]),ui("TableBody",[children]),ui("TableRow",[children]),ui("TableCell",[children,enumProp("align",["left","center","right"],"left")]),ui("Tabs",[children,{name:"value",type:"number | string",optional:!0,control:"string"}]),ui("Tab",[{name:"label",type:"ReactNode",optional:!0,control:"string"}]),ui("Badge",[children,{name:"badgeContent",type:"ReactNode",optional:!0,control:"string"}]),ui("Checkbox",[{name:"checked",type:"boolean",optional:!0,control:"boolean"}]),ui("Switch",[{name:"checked",type:"boolean",optional:!0,control:"boolean"}]),ui("Select",[children,enumProp("variant",["outlined","filled","standard"],"outlined")]),ui("MenuItem",[children,{name:"value",type:"string | number",optional:!0,control:"string"}]),ui("Tooltip",[children,{name:"title",type:"ReactNode",optional:!0,control:"string"}]),ui("Alert",[children,enumProp("severity",["success","info","warning","error"],"success")]),ui("Dialog",[children,enumProp("maxWidth",["xs","sm","md","lg","xl"],"sm")],"Modal dialog surface \u2014 renders open + inline in design mode. Fill it with DialogTitle / DialogContent / DialogActions.",{maxWidth:"sm"}),ui("DialogTitle",[children],"The dialog's heading row."),ui("DialogContent",[children],"The dialog's body."),ui("DialogContentText",[children],"Secondary text inside DialogContent."),ui("DialogActions",[children],"The dialog's button row (right-aligned)."),ui("Menu",[children],"A menu surface holding MenuItems \u2014 renders open + inline in design mode."),ui("Popover",[children],"A popover surface \u2014 renders open + inline in design mode."),ui("Drawer",[children],"A side panel \u2014 renders inline as a fixed-width column in design mode."),ui("Snackbar",[children,{name:"message",type:"ReactNode",optional:!0,control:"string"}],"A toast \u2014 renders inline as a dark pill in design mode. Use `message` or children.",{message:"Saved"}),helper("Icon",[{name:"name",type:"string",optional:!1,control:"icon"},{name:"size",type:"number",optional:!0,control:"number"}],"A lucide icon \u2014 MUI has no bundled icon set. Set the pixel `size` prop (not Tailwind). `name` is a lucide id (PascalCase or kebab). Emits a `lucide-react` import.",{name:"ArrowRight",size:20}),helper("Image",[{name:"src",type:"string",optional:!1,control:"string"},{name:"alt",type:"string",optional:!1,control:"string"}],"An image. Use velloo assets (`/assets/\u2026`) or a URL."),helper("Placeholder",[{name:"label",type:"string",optional:!0,control:"string"}],"A labeled placeholder box for imagery you haven't authored yet (avatars, hero shots)."),helper("SVG",[{name:"content",type:"string",optional:!1,control:"string"},{name:"viewBox",type:"string",optional:!1,control:"string"},{name:"preserveAspectRatio",type:"string",optional:!0,control:"string"}],"Raw inline SVG markup."),helper("Layer",[children],"An absolutely-positioned overlay layer for stacked composition."),helper("Gradient",[{name:"from",type:"string",optional:!0,control:"color"}],"A gradient fill block."),helper("Prose",[children,{name:"preset",type:"string",optional:!0,control:"string"},{name:"as",type:"string",optional:!0,control:"string"}],"A long-form content region. Everything inside \u2014 Typography, headings, lists, quotes, code, tables \u2014 picks up the theme typeset's proportions and vertical rhythm automatically. `preset` selects a named typeset (see set_typeset). Reach for this for articles, docs, and marketing copy instead of setting sizes block by block.",{as:"article"})];var React49=__toESM(require_react_development()),import_prop_types26=__toESM(require_prop_types());import clsx13 from"clsx";function composeClasses(slots,getUtilityClass,classes=void 0){let output={};for(let slotName in slots){let slot=slots[slotName],buffer="",start=!0;for(let i=0;i<slot.length;i+=1){let value=slot[i];if(value){if(buffer+=(start===!0?"":" ")+getUtilityClass(value),start=!1,classes&&classes[value])buffer+=" "+classes[value]}}output[slotName]=buffer}return output}function clamp(val,min=Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER){return Math.max(min,Math.min(val,max))}var clamp_default=clamp;function clampWrapper(value,min=0,max=1){if(value<min||value>max)console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);return clamp_default(value,min,max)}function hexToRgb(color){color=color.slice(1);let re=new RegExp(`.{1,${color.length>=6?2:1}}`,"g"),colors=color.match(re);if(colors&&colors[0].length===1)colors=colors.map((n)=>n+n);if(color.length!==color.trim().length)console.error(`MUI: The color: "${color}" is invalid. Make sure the color input doesn't contain leading/trailing space.`);return colors?`rgb${colors.length===4?"a":""}(${colors.map((n,index)=>index<3?parseInt(n,16):Math.round(parseInt(n,16)/255*1000)/1000).join(", ")})`:""}function decomposeColor(color){if(color.type)return color;if(color.charAt(0)==="#")return decomposeColor(hexToRgb(color));let marker=color.indexOf("("),type=color.substring(0,marker);if(!["rgb","rgba","hsl","hsla","color"].includes(type))throw Error(`MUI: Unsupported \`${color}\` color.
4
4
  The following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().`);let values=color.substring(marker+1,color.length-1),colorSpace;if(type==="color"){if(values=values.split(" "),colorSpace=values.shift(),values.length===4&&values[3].charAt(0)==="/")values[3]=values[3].slice(1);if(!["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].includes(colorSpace))throw Error(`MUI: unsupported \`${colorSpace}\` color space.
5
5
  The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.`)}else values=values.split(",");return values=values.map((value)=>parseFloat(value)),{type,values,colorSpace}}var colorChannel=(color)=>{let decomposedColor=decomposeColor(color);return decomposedColor.values.slice(0,3).map((val,idx)=>decomposedColor.type.includes("hsl")&&idx!==0?`${val}%`:val).join(" ")},private_safeColorChannel=(color,warning)=>{try{return colorChannel(color)}catch(error){if(warning)console.warn(warning);return color}};function recomposeColor(color){let{type,colorSpace}=color,{values}=color;if(type.includes("rgb"))values=values.map((n,i)=>i<3?parseInt(n,10):n);else if(type.includes("hsl"))values[1]=`${values[1]}%`,values[2]=`${values[2]}%`;if(type.includes("color"))values=`${colorSpace} ${values.join(" ")}`;else values=`${values.join(", ")}`;return`${type}(${values})`}function hslToRgb(color){color=decomposeColor(color);let{values}=color,h=values[0],s=values[1]/100,l=values[2]/100,a=s*Math.min(l,1-l),f=(n,k=(n+h/30)%12)=>l-a*Math.max(Math.min(k-3,9-k,1),-1),type="rgb",rgb=[Math.round(f(0)*255),Math.round(f(8)*255),Math.round(f(4)*255)];if(color.type==="hsla")type+="a",rgb.push(values[3]);return recomposeColor({type,values:rgb})}function getLuminance(color){color=decomposeColor(color);let rgb=color.type==="hsl"||color.type==="hsla"?decomposeColor(hslToRgb(color)).values:color.values;return rgb=rgb.map((val)=>{if(color.type!=="color")val/=255;return val<=0.03928?val/12.92:((val+0.055)/1.055)**2.4}),Number((0.2126*rgb[0]+0.7152*rgb[1]+0.0722*rgb[2]).toFixed(3))}function getContrastRatio(foreground,background){let lumA=getLuminance(foreground),lumB=getLuminance(background);return(Math.max(lumA,lumB)+0.05)/(Math.min(lumA,lumB)+0.05)}function alpha(color,value){if(color=decomposeColor(color),value=clampWrapper(value),color.type==="rgb"||color.type==="hsl")color.type+="a";if(color.type==="color")color.values[3]=`/${value}`;else color.values[3]=value;return recomposeColor(color)}function private_safeAlpha(color,value,warning){try{return alpha(color,value)}catch(error){if(warning)console.warn(warning);return color}}function darken(color,coefficient){if(color=decomposeColor(color),coefficient=clampWrapper(coefficient),color.type.includes("hsl"))color.values[2]*=1-coefficient;else if(color.type.includes("rgb")||color.type.includes("color"))for(let i=0;i<3;i+=1)color.values[i]*=1-coefficient;return recomposeColor(color)}function private_safeDarken(color,coefficient,warning){try{return darken(color,coefficient)}catch(error){if(warning)console.warn(warning);return color}}function lighten(color,coefficient){if(color=decomposeColor(color),coefficient=clampWrapper(coefficient),color.type.includes("hsl"))color.values[2]+=(100-color.values[2])*coefficient;else if(color.type.includes("rgb"))for(let i=0;i<3;i+=1)color.values[i]+=(255-color.values[i])*coefficient;else if(color.type.includes("color"))for(let i=0;i<3;i+=1)color.values[i]+=(1-color.values[i])*coefficient;return recomposeColor(color)}function private_safeLighten(color,coefficient,warning){try{return lighten(color,coefficient)}catch(error){if(warning)console.warn(warning);return color}}function emphasize(color,coefficient=0.15){return getLuminance(color)>0.5?darken(color,coefficient):lighten(color,coefficient)}function private_safeEmphasize(color,coefficient,warning){try{return emphasize(color,coefficient)}catch(error){if(warning)console.warn(warning);return color}}var React27=__toESM(require_react_development());function capitalize(string){if(typeof string!=="string")throw Error("MUI: `capitalize(string)` expects a string argument.");return string.charAt(0).toUpperCase()+string.slice(1)}var React=__toESM(require_react_development()),import_react_is=__toESM(require_react_is_development2());function isPlainObject(item){if(typeof item!=="object"||item===null)return!1;let prototype=Object.getPrototypeOf(item);return(prototype===null||prototype===Object.prototype||Object.getPrototypeOf(prototype)===null)&&!(Symbol.toStringTag in item)&&!(Symbol.iterator in item)}function deepClone(source){if(React.isValidElement(source)||import_react_is.isValidElementType(source)||!isPlainObject(source))return source;let output={};return Object.keys(source).forEach((key)=>{output[key]=deepClone(source[key])}),output}function deepmerge(target,source,options={clone:!0}){let output=options.clone?{...target}:target;if(isPlainObject(target)&&isPlainObject(source))Object.keys(source).forEach((key)=>{if(React.isValidElement(source[key])||import_react_is.isValidElementType(source[key]))output[key]=source[key];else if(isPlainObject(source[key])&&Object.prototype.hasOwnProperty.call(target,key)&&isPlainObject(target[key]))output[key]=deepmerge(target[key],source[key],options);else if(options.clone)output[key]=isPlainObject(source[key])?deepClone(source[key]):source[key];else output[key]=source[key]});return output}function merge(acc,item){if(!item)return acc;return deepmerge(acc,item,{clone:!1})}var merge_default=merge;var import_prop_types=__toESM(require_prop_types()),responsivePropType=import_prop_types.default.oneOfType([import_prop_types.default.number,import_prop_types.default.string,import_prop_types.default.object,import_prop_types.default.array]),responsivePropType_default=responsivePropType;function sortContainerQueries(theme,css){if(!theme.containerQueries)return css;let sorted=Object.keys(css).filter((key)=>key.startsWith("@container")).sort((a,b)=>{let regex=/min-width:\s*([0-9.]+)/;return+(a.match(regex)?.[1]||0)-+(b.match(regex)?.[1]||0)});if(!sorted.length)return css;return sorted.reduce((acc,key)=>{let value=css[key];return delete acc[key],acc[key]=value,acc},{...css})}function isCqShorthand(breakpointKeys,value){return value==="@"||value.startsWith("@")&&(breakpointKeys.some((key)=>value.startsWith(`@${key}`))||!!value.match(/^@\d/))}function getContainerQuery(theme,shorthand){let matches=shorthand.match(/^@([^/]+)?\/?(.+)?$/);if(!matches)throw Error(`MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \`@<breakpoint | number>\` or \`@<breakpoint | number>/<container>\`.
6
6
  For example, \`@sm\` or \`@600\` or \`@40rem/sidebar\`.`);let[,containerQuery,containerName]=matches,value=Number.isNaN(+containerQuery)?containerQuery||0:+containerQuery;return theme.containerQueries(containerName).up(value)}function cssContainerQueries(themeInput){let toContainerQuery=(mediaQuery,name)=>mediaQuery.replace("@media",name?`@container ${name}`:"@container");function attachCq(node,name){node.up=(...args)=>toContainerQuery(themeInput.breakpoints.up(...args),name),node.down=(...args)=>toContainerQuery(themeInput.breakpoints.down(...args),name),node.between=(...args)=>toContainerQuery(themeInput.breakpoints.between(...args),name),node.only=(...args)=>toContainerQuery(themeInput.breakpoints.only(...args),name),node.not=(...args)=>{let result=toContainerQuery(themeInput.breakpoints.not(...args),name);if(result.includes("not all and"))return result.replace("not all and ","").replace("min-width:","width<").replace("max-width:","width>").replace("and","or");return result}}let node={},containerQueries=(name)=>(attachCq(node,name),node);return attachCq(containerQueries),{...themeInput,containerQueries}}var values={xs:0,sm:600,md:900,lg:1200,xl:1536},defaultBreakpoints={keys:["xs","sm","md","lg","xl"],up:(key)=>`@media (min-width:${values[key]}px)`},defaultContainerQueries={containerQueries:(containerName)=>({up:(key)=>{let result=typeof key==="number"?key:values[key]||key;if(typeof result==="number")result=`${result}px`;return containerName?`@container ${containerName} (min-width:${result})`:`@container (min-width:${result})`}})};function handleBreakpoints(props,propValue,styleFromPropValue){let theme=props.theme||{};if(Array.isArray(propValue)){let themeBreakpoints=theme.breakpoints||defaultBreakpoints;return propValue.reduce((acc,item,index)=>(acc[themeBreakpoints.up(themeBreakpoints.keys[index])]=styleFromPropValue(propValue[index]),acc),{})}if(typeof propValue==="object"){let themeBreakpoints=theme.breakpoints||defaultBreakpoints;return Object.keys(propValue).reduce((acc,breakpoint)=>{if(isCqShorthand(themeBreakpoints.keys,breakpoint)){let containerKey=getContainerQuery(theme.containerQueries?theme:defaultContainerQueries,breakpoint);if(containerKey)acc[containerKey]=styleFromPropValue(propValue[breakpoint],breakpoint)}else if(Object.keys(themeBreakpoints.values||values).includes(breakpoint)){let mediaKey=themeBreakpoints.up(breakpoint);acc[mediaKey]=styleFromPropValue(propValue[breakpoint],breakpoint)}else{let cssKey=breakpoint;acc[cssKey]=propValue[cssKey]}return acc},{})}return styleFromPropValue(propValue)}function createEmptyBreakpointObject(breakpointsInput={}){return breakpointsInput.keys?.reduce((acc,key)=>{let breakpointStyleKey=breakpointsInput.up(key);return acc[breakpointStyleKey]={},acc},{})||{}}function removeUnusedBreakpoints(breakpointKeys,style){return breakpointKeys.reduce((acc,key)=>{let breakpointOutput=acc[key];if(!breakpointOutput||Object.keys(breakpointOutput).length===0)delete acc[key];return acc},style)}function mergeBreakpointsInOrder(breakpointsInput,...styles){let emptyBreakpoints=createEmptyBreakpointObject(breakpointsInput),mergedOutput=[emptyBreakpoints,...styles].reduce((prev,next)=>deepmerge(prev,next),{});return removeUnusedBreakpoints(Object.keys(emptyBreakpoints),mergedOutput)}function computeBreakpointsBase(breakpointValues,themeBreakpoints){if(typeof breakpointValues!=="object")return{};let base={},breakpointsKeys=Object.keys(themeBreakpoints);if(Array.isArray(breakpointValues))breakpointsKeys.forEach((breakpoint,i)=>{if(i<breakpointValues.length)base[breakpoint]=!0});else breakpointsKeys.forEach((breakpoint)=>{if(breakpointValues[breakpoint]!=null)base[breakpoint]=!0});return base}function resolveBreakpointValues({values:breakpointValues,breakpoints:themeBreakpoints,base:customBase}){let base=customBase||computeBreakpointsBase(breakpointValues,themeBreakpoints),keys=Object.keys(base);if(keys.length===0)return breakpointValues;let previous;return keys.reduce((acc,breakpoint,i)=>{if(Array.isArray(breakpointValues))acc[breakpoint]=breakpointValues[i]!=null?breakpointValues[i]:breakpointValues[previous],previous=i;else if(typeof breakpointValues==="object")acc[breakpoint]=breakpointValues[breakpoint]!=null?breakpointValues[breakpoint]:breakpointValues[previous],previous=breakpoint;else acc[breakpoint]=breakpointValues;return acc},{})}function getPath(obj,path,checkVars=!0){if(!path||typeof path!=="string")return null;if(obj&&obj.vars&&checkVars){let val=`vars.${path}`.split(".").reduce((acc,item)=>acc&&acc[item]?acc[item]:null,obj);if(val!=null)return val}return path.split(".").reduce((acc,item)=>{if(acc&&acc[item]!=null)return acc[item];return null},obj)}function getStyleValue(themeMapping,transform,propValueFinal,userValue=propValueFinal){let value;if(typeof themeMapping==="function")value=themeMapping(propValueFinal);else if(Array.isArray(themeMapping))value=themeMapping[propValueFinal]||userValue;else value=getPath(themeMapping,propValueFinal)||userValue;if(transform)value=transform(value,userValue,themeMapping);return value}function style(options){let{prop,cssProperty=options.prop,themeKey,transform}=options,fn=(props)=>{if(props[prop]==null)return null;let propValue=props[prop],theme=props.theme,themeMapping=getPath(theme,themeKey)||{};return handleBreakpoints(props,propValue,(propValueFinal)=>{let value=getStyleValue(themeMapping,transform,propValueFinal);if(propValueFinal===value&&typeof propValueFinal==="string")value=getStyleValue(themeMapping,transform,`${prop}${propValueFinal==="default"?"":capitalize(propValueFinal)}`,propValueFinal);if(cssProperty===!1)return value;return{[cssProperty]:value}})};return fn.propTypes={[prop]:responsivePropType_default},fn.filterProps=[prop],fn}var style_default=style;function memoize(fn){let cache={};return(arg)=>{if(cache[arg]===void 0)cache[arg]=fn(arg);return cache[arg]}}var properties={m:"margin",p:"padding"},directions={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},aliases={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},getCssProperties=memoize((prop)=>{if(prop.length>2)if(aliases[prop])prop=aliases[prop];else return[prop];let[a,b]=prop.split(""),property=properties[a],direction=directions[b]||"";return Array.isArray(direction)?direction.map((dir)=>property+dir):[property+direction]}),marginKeys=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],paddingKeys=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],spacingKeys=[...marginKeys,...paddingKeys];function createUnaryUnit(theme,themeKey,defaultValue,propName){let themeSpacing=getPath(theme,themeKey,!0)??defaultValue;if(typeof themeSpacing==="number"||typeof themeSpacing==="string")return(val)=>{if(typeof val==="string")return val;if(typeof val!=="number")console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);if(typeof themeSpacing==="string")return`calc(${val} * ${themeSpacing})`;return themeSpacing*val};if(Array.isArray(themeSpacing))return(val)=>{if(typeof val==="string")return val;let abs=Math.abs(val);if(!Number.isInteger(abs))console.error([`MUI: The \`theme.${themeKey}\` array type cannot be combined with non integer values.You should either use an integer value that can be used as index, or define the \`theme.${themeKey}\` as a number.`].join(`
@@ -241,4 +241,4 @@ To suppress this warning, you need to explicitly provide the \`palette.${key}Cha
241
241
  `))}return null}),children:import_prop_types84.default.oneOfType([import_prop_types84.default.node,import_prop_types84.default.func]),container:import_prop_types84.default.oneOfType([HTMLElementType,import_prop_types84.default.func]),direction:import_prop_types84.default.oneOf(["ltr","rtl"]),disablePortal:import_prop_types84.default.bool,keepMounted:import_prop_types84.default.bool,modifiers:import_prop_types84.default.arrayOf(import_prop_types84.default.shape({data:import_prop_types84.default.object,effect:import_prop_types84.default.func,enabled:import_prop_types84.default.bool,fn:import_prop_types84.default.func,name:import_prop_types84.default.any,options:import_prop_types84.default.object,phase:import_prop_types84.default.oneOf(["afterMain","afterRead","afterWrite","beforeMain","beforeRead","beforeWrite","main","read","write"]),requires:import_prop_types84.default.arrayOf(import_prop_types84.default.string),requiresIfExists:import_prop_types84.default.arrayOf(import_prop_types84.default.string)})),open:import_prop_types84.default.bool.isRequired,placement:import_prop_types84.default.oneOf(["auto-end","auto-start","auto","bottom-end","bottom-start","bottom","left-end","left-start","left","right-end","right-start","right","top-end","top-start","top"]),popperOptions:import_prop_types84.default.shape({modifiers:import_prop_types84.default.array,onFirstUpdate:import_prop_types84.default.func,placement:import_prop_types84.default.oneOf(["auto-end","auto-start","auto","bottom-end","bottom-start","bottom","left-end","left-start","left","right-end","right-start","right","top-end","top-start","top"]),strategy:import_prop_types84.default.oneOf(["absolute","fixed"])}),popperRef:refType_default,slotProps:import_prop_types84.default.shape({root:import_prop_types84.default.oneOfType([import_prop_types84.default.func,import_prop_types84.default.object])}),slots:import_prop_types84.default.shape({root:import_prop_types84.default.elementType}),transition:import_prop_types84.default.bool};var BasePopper_default=Popper;var import_jsx_runtime96=__toESM(require_react_jsx_runtime_development()),PopperRoot=styled_default2(BasePopper_default,{name:"MuiPopper",slot:"Root",overridesResolver:(props,styles)=>styles.root})({}),Popper2=React125.forwardRef(function(inProps,ref){let isRtl=useRtl(),props=useDefaultProps2({props:inProps,name:"MuiPopper"}),{anchorEl,component,components,componentsProps,container,disablePortal,keepMounted,modifiers,open,placement,popperOptions,popperRef,transition,slots,slotProps,...other}=props,RootComponent=slots?.root??components?.Root,otherProps={anchorEl,container,disablePortal,keepMounted,modifiers,open,placement,popperOptions,popperRef,transition,...other};return import_jsx_runtime96.jsx(PopperRoot,{as:component,direction:isRtl?"rtl":"ltr",slots:{root:RootComponent},slotProps:slotProps??componentsProps,...otherProps,ref})});Popper2.propTypes={anchorEl:import_prop_types85.default.oneOfType([HTMLElementType,import_prop_types85.default.object,import_prop_types85.default.func]),children:import_prop_types85.default.oneOfType([import_prop_types85.default.node,import_prop_types85.default.func]),component:import_prop_types85.default.elementType,components:import_prop_types85.default.shape({Root:import_prop_types85.default.elementType}),componentsProps:import_prop_types85.default.shape({root:import_prop_types85.default.oneOfType([import_prop_types85.default.func,import_prop_types85.default.object])}),container:import_prop_types85.default.oneOfType([HTMLElementType,import_prop_types85.default.func]),disablePortal:import_prop_types85.default.bool,keepMounted:import_prop_types85.default.bool,modifiers:import_prop_types85.default.arrayOf(import_prop_types85.default.shape({data:import_prop_types85.default.object,effect:import_prop_types85.default.func,enabled:import_prop_types85.default.bool,fn:import_prop_types85.default.func,name:import_prop_types85.default.any,options:import_prop_types85.default.object,phase:import_prop_types85.default.oneOf(["afterMain","afterRead","afterWrite","beforeMain","beforeRead","beforeWrite","main","read","write"]),requires:import_prop_types85.default.arrayOf(import_prop_types85.default.string),requiresIfExists:import_prop_types85.default.arrayOf(import_prop_types85.default.string)})),open:import_prop_types85.default.bool.isRequired,placement:import_prop_types85.default.oneOf(["auto-end","auto-start","auto","bottom-end","bottom-start","bottom","left-end","left-start","left","right-end","right-start","right","top-end","top-start","top"]),popperOptions:import_prop_types85.default.shape({modifiers:import_prop_types85.default.array,onFirstUpdate:import_prop_types85.default.func,placement:import_prop_types85.default.oneOf(["auto-end","auto-start","auto","bottom-end","bottom-start","bottom","left-end","left-start","left","right-end","right-start","right","top-end","top-start","top"]),strategy:import_prop_types85.default.oneOf(["absolute","fixed"])}),popperRef:refType_default,slotProps:import_prop_types85.default.shape({root:import_prop_types85.default.oneOfType([import_prop_types85.default.func,import_prop_types85.default.object])}),slots:import_prop_types85.default.shape({root:import_prop_types85.default.elementType}),sx:import_prop_types85.default.oneOfType([import_prop_types85.default.arrayOf(import_prop_types85.default.oneOfType([import_prop_types85.default.func,import_prop_types85.default.object,import_prop_types85.default.bool])),import_prop_types85.default.func,import_prop_types85.default.object]),transition:import_prop_types85.default.bool};var Popper_default=Popper2;function getTooltipUtilityClass(slot){return generateUtilityClass("MuiTooltip",slot)}var tooltipClasses=generateUtilityClasses("MuiTooltip",["popper","popperInteractive","popperArrow","popperClose","tooltip","tooltipArrow","touch","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","arrow"]),tooltipClasses_default=tooltipClasses;var import_jsx_runtime97=__toESM(require_react_jsx_runtime_development());function round3(value){return Math.round(value*1e5)/1e5}var useUtilityClasses55=(ownerState)=>{let{classes,disableInteractive,arrow,touch,placement}=ownerState,slots={popper:["popper",!disableInteractive&&"popperInteractive",arrow&&"popperArrow"],tooltip:["tooltip",arrow&&"tooltipArrow",touch&&"touch",`tooltipPlacement${capitalize_default(placement.split("-")[0])}`],arrow:["arrow"]};return composeClasses(slots,getTooltipUtilityClass,classes)},TooltipPopper=styled_default2(Popper_default,{name:"MuiTooltip",slot:"Popper",overridesResolver:(props,styles)=>{let{ownerState}=props;return[styles.popper,!ownerState.disableInteractive&&styles.popperInteractive,ownerState.arrow&&styles.popperArrow,!ownerState.open&&styles.popperClose]}})(memoTheme_default(({theme})=>({zIndex:(theme.vars||theme).zIndex.tooltip,pointerEvents:"none",variants:[{props:({ownerState})=>!ownerState.disableInteractive,style:{pointerEvents:"auto"}},{props:({open})=>!open,style:{pointerEvents:"none"}},{props:({ownerState})=>ownerState.arrow,style:{[`&[data-popper-placement*="bottom"] .${tooltipClasses_default.arrow}`]:{top:0,marginTop:"-0.71em","&::before":{transformOrigin:"0 100%"}},[`&[data-popper-placement*="top"] .${tooltipClasses_default.arrow}`]:{bottom:0,marginBottom:"-0.71em","&::before":{transformOrigin:"100% 0"}},[`&[data-popper-placement*="right"] .${tooltipClasses_default.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"100% 100%"}},[`&[data-popper-placement*="left"] .${tooltipClasses_default.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"0 0"}}}},{props:({ownerState})=>ownerState.arrow&&!ownerState.isRtl,style:{[`&[data-popper-placement*="right"] .${tooltipClasses_default.arrow}`]:{left:0,marginLeft:"-0.71em"}}},{props:({ownerState})=>ownerState.arrow&&!!ownerState.isRtl,style:{[`&[data-popper-placement*="right"] .${tooltipClasses_default.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState})=>ownerState.arrow&&!ownerState.isRtl,style:{[`&[data-popper-placement*="left"] .${tooltipClasses_default.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState})=>ownerState.arrow&&!!ownerState.isRtl,style:{[`&[data-popper-placement*="left"] .${tooltipClasses_default.arrow}`]:{left:0,marginLeft:"-0.71em"}}}]}))),TooltipTooltip=styled_default2("div",{name:"MuiTooltip",slot:"Tooltip",overridesResolver:(props,styles)=>{let{ownerState}=props;return[styles.tooltip,ownerState.touch&&styles.touch,ownerState.arrow&&styles.tooltipArrow,styles[`tooltipPlacement${capitalize_default(ownerState.placement.split("-")[0])}`]]}})(memoTheme_default(({theme})=>({backgroundColor:theme.vars?theme.vars.palette.Tooltip.bg:alpha(theme.palette.grey[700],0.92),borderRadius:(theme.vars||theme).shape.borderRadius,color:(theme.vars||theme).palette.common.white,fontFamily:theme.typography.fontFamily,padding:"4px 8px",fontSize:theme.typography.pxToRem(11),maxWidth:300,margin:2,wordWrap:"break-word",fontWeight:theme.typography.fontWeightMedium,[`.${tooltipClasses_default.popper}[data-popper-placement*="left"] &`]:{transformOrigin:"right center"},[`.${tooltipClasses_default.popper}[data-popper-placement*="right"] &`]:{transformOrigin:"left center"},[`.${tooltipClasses_default.popper}[data-popper-placement*="top"] &`]:{transformOrigin:"center bottom",marginBottom:"14px"},[`.${tooltipClasses_default.popper}[data-popper-placement*="bottom"] &`]:{transformOrigin:"center top",marginTop:"14px"},variants:[{props:({ownerState})=>ownerState.arrow,style:{position:"relative",margin:0}},{props:({ownerState})=>ownerState.touch,style:{padding:"8px 16px",fontSize:theme.typography.pxToRem(14),lineHeight:`${round3(1.1428571428571428)}em`,fontWeight:theme.typography.fontWeightRegular}},{props:({ownerState})=>!ownerState.isRtl,style:{[`.${tooltipClasses_default.popper}[data-popper-placement*="left"] &`]:{marginRight:"14px"},[`.${tooltipClasses_default.popper}[data-popper-placement*="right"] &`]:{marginLeft:"14px"}}},{props:({ownerState})=>!ownerState.isRtl&&ownerState.touch,style:{[`.${tooltipClasses_default.popper}[data-popper-placement*="left"] &`]:{marginRight:"24px"},[`.${tooltipClasses_default.popper}[data-popper-placement*="right"] &`]:{marginLeft:"24px"}}},{props:({ownerState})=>!!ownerState.isRtl,style:{[`.${tooltipClasses_default.popper}[data-popper-placement*="left"] &`]:{marginLeft:"14px"},[`.${tooltipClasses_default.popper}[data-popper-placement*="right"] &`]:{marginRight:"14px"}}},{props:({ownerState})=>!!ownerState.isRtl&&ownerState.touch,style:{[`.${tooltipClasses_default.popper}[data-popper-placement*="left"] &`]:{marginLeft:"24px"},[`.${tooltipClasses_default.popper}[data-popper-placement*="right"] &`]:{marginRight:"24px"}}},{props:({ownerState})=>ownerState.touch,style:{[`.${tooltipClasses_default.popper}[data-popper-placement*="top"] &`]:{marginBottom:"24px"}}},{props:({ownerState})=>ownerState.touch,style:{[`.${tooltipClasses_default.popper}[data-popper-placement*="bottom"] &`]:{marginTop:"24px"}}}]}))),TooltipArrow=styled_default2("span",{name:"MuiTooltip",slot:"Arrow",overridesResolver:(props,styles)=>styles.arrow})(memoTheme_default(({theme})=>({overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:theme.vars?theme.vars.palette.Tooltip.bg:alpha(theme.palette.grey[700],0.9),"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",backgroundColor:"currentColor",transform:"rotate(45deg)"}}))),hystersisOpen=!1,hystersisTimer=new Timeout2,cursorPosition={x:0,y:0};function composeEventHandler(handler,eventHandler){return(event,...params)=>{if(eventHandler)eventHandler(event,...params);handler(event,...params)}}var Tooltip=React126.forwardRef(function(inProps,ref){let props=useDefaultProps2({props:inProps,name:"MuiTooltip"}),{arrow=!1,children:childrenProp,classes:classesProp,components={},componentsProps={},describeChild=!1,disableFocusListener=!1,disableHoverListener=!1,disableInteractive:disableInteractiveProp=!1,disableTouchListener=!1,enterDelay=100,enterNextDelay=0,enterTouchDelay=700,followCursor=!1,id:idProp,leaveDelay=0,leaveTouchDelay=1500,onClose,onOpen,open:openProp,placement="bottom",PopperComponent:PopperComponentProp,PopperProps={},slotProps={},slots={},title,TransitionComponent:TransitionComponentProp,TransitionProps,...other}=props,children=React126.isValidElement(childrenProp)?childrenProp:import_jsx_runtime97.jsx("span",{children:childrenProp}),theme=useTheme5(),isRtl=useRtl(),[childNode,setChildNode]=React126.useState(),[arrowRef,setArrowRef]=React126.useState(null),ignoreNonTouchEvents=React126.useRef(!1),disableInteractive=disableInteractiveProp||followCursor,closeTimer=useTimeout(),enterTimer=useTimeout(),leaveTimer=useTimeout(),touchTimer=useTimeout(),[openState,setOpenState]=useControlled_default({controlled:openProp,default:!1,name:"Tooltip",state:"open"}),open=openState;{let{current:isControlled}=React126.useRef(openProp!==void 0);React126.useEffect(()=>{if(childNode&&childNode.disabled&&!isControlled&&title!==""&&childNode.tagName.toLowerCase()==="button")console.warn(["MUI: You are providing a disabled `button` child to the Tooltip component.","A disabled element does not fire events.","Tooltip needs to listen to the child element's events to display the title.","","Add a simple wrapper element, such as a `span`."].join(`
242
242
  `))},[title,childNode,isControlled])}let id=useId_default(idProp),prevUserSelect=React126.useRef(),stopTouchInteraction=useEventCallback_default2(()=>{if(prevUserSelect.current!==void 0)document.body.style.WebkitUserSelect=prevUserSelect.current,prevUserSelect.current=void 0;touchTimer.clear()});React126.useEffect(()=>stopTouchInteraction,[stopTouchInteraction]);let handleOpen=(event)=>{if(hystersisTimer.clear(),hystersisOpen=!0,setOpenState(!0),onOpen&&!open)onOpen(event)},handleClose=useEventCallback_default2((event)=>{if(hystersisTimer.start(800+leaveDelay,()=>{hystersisOpen=!1}),setOpenState(!1),onClose&&open)onClose(event);closeTimer.start(theme.transitions.duration.shortest,()=>{ignoreNonTouchEvents.current=!1})}),handleMouseOver=(event)=>{if(ignoreNonTouchEvents.current&&event.type!=="touchstart")return;if(childNode)childNode.removeAttribute("title");if(enterTimer.clear(),leaveTimer.clear(),enterDelay||hystersisOpen&&enterNextDelay)enterTimer.start(hystersisOpen?enterNextDelay:enterDelay,()=>{handleOpen(event)});else handleOpen(event)},handleMouseLeave=(event)=>{enterTimer.clear(),leaveTimer.start(leaveDelay,()=>{handleClose(event)})},[,setChildIsFocusVisible]=React126.useState(!1),handleBlur=(event)=>{if(!isFocusVisible(event.target))setChildIsFocusVisible(!1),handleMouseLeave(event)},handleFocus=(event)=>{if(!childNode)setChildNode(event.currentTarget);if(isFocusVisible(event.target))setChildIsFocusVisible(!0),handleMouseOver(event)},detectTouchStart=(event)=>{ignoreNonTouchEvents.current=!0;let childrenProps=children.props;if(childrenProps.onTouchStart)childrenProps.onTouchStart(event)},handleTouchStart=(event)=>{detectTouchStart(event),leaveTimer.clear(),closeTimer.clear(),stopTouchInteraction(),prevUserSelect.current=document.body.style.WebkitUserSelect,document.body.style.WebkitUserSelect="none",touchTimer.start(enterTouchDelay,()=>{document.body.style.WebkitUserSelect=prevUserSelect.current,handleMouseOver(event)})},handleTouchEnd=(event)=>{if(children.props.onTouchEnd)children.props.onTouchEnd(event);stopTouchInteraction(),leaveTimer.start(leaveTouchDelay,()=>{handleClose(event)})};React126.useEffect(()=>{if(!open)return;function handleKeyDown(nativeEvent){if(nativeEvent.key==="Escape")handleClose(nativeEvent)}return document.addEventListener("keydown",handleKeyDown),()=>{document.removeEventListener("keydown",handleKeyDown)}},[handleClose,open]);let handleRef=useForkRef_default(getReactElementRef(children),setChildNode,ref);if(!title&&title!==0)open=!1;let popperRef=React126.useRef(),handleMouseMove=(event)=>{let childrenProps=children.props;if(childrenProps.onMouseMove)childrenProps.onMouseMove(event);if(cursorPosition={x:event.clientX,y:event.clientY},popperRef.current)popperRef.current.update()},nameOrDescProps={},titleIsString=typeof title==="string";if(describeChild)nameOrDescProps.title=!open&&titleIsString&&!disableHoverListener?title:null,nameOrDescProps["aria-describedby"]=open?id:null;else nameOrDescProps["aria-label"]=titleIsString?title:null,nameOrDescProps["aria-labelledby"]=open&&!titleIsString?id:null;let childrenProps={...nameOrDescProps,...other,...children.props,className:clsx55(other.className,children.props.className),onTouchStart:detectTouchStart,ref:handleRef,...followCursor?{onMouseMove:handleMouseMove}:{}};childrenProps["data-mui-internal-clone-element"]=!0,React126.useEffect(()=>{if(childNode&&!childNode.getAttribute("data-mui-internal-clone-element"))console.error(["MUI: The `children` component of the Tooltip is not forwarding its props correctly.","Please make sure that props are spread on the same element that the ref is applied to."].join(`
243
243
  `))},[childNode]);let interactiveWrapperListeners={};if(!disableTouchListener)childrenProps.onTouchStart=handleTouchStart,childrenProps.onTouchEnd=handleTouchEnd;if(!disableHoverListener){if(childrenProps.onMouseOver=composeEventHandler(handleMouseOver,childrenProps.onMouseOver),childrenProps.onMouseLeave=composeEventHandler(handleMouseLeave,childrenProps.onMouseLeave),!disableInteractive)interactiveWrapperListeners.onMouseOver=handleMouseOver,interactiveWrapperListeners.onMouseLeave=handleMouseLeave}if(!disableFocusListener){if(childrenProps.onFocus=composeEventHandler(handleFocus,childrenProps.onFocus),childrenProps.onBlur=composeEventHandler(handleBlur,childrenProps.onBlur),!disableInteractive)interactiveWrapperListeners.onFocus=handleFocus,interactiveWrapperListeners.onBlur=handleBlur}if(children.props.title)console.error(["MUI: You have provided a `title` prop to the child of <Tooltip />.",`Remove this title prop \`${children.props.title}\` or the Tooltip component.`].join(`
244
- `));let ownerState={...props,isRtl,arrow,disableInteractive,placement,PopperComponentProp,touch:ignoreNonTouchEvents.current},resolvedPopperProps=typeof slotProps.popper==="function"?slotProps.popper(ownerState):slotProps.popper,popperOptions=React126.useMemo(()=>{let tooltipModifiers=[{name:"arrow",enabled:Boolean(arrowRef),options:{element:arrowRef,padding:4}}];if(PopperProps.popperOptions?.modifiers)tooltipModifiers=tooltipModifiers.concat(PopperProps.popperOptions.modifiers);if(resolvedPopperProps?.popperOptions?.modifiers)tooltipModifiers=tooltipModifiers.concat(resolvedPopperProps.popperOptions.modifiers);return{...PopperProps.popperOptions,...resolvedPopperProps?.popperOptions,modifiers:tooltipModifiers}},[arrowRef,PopperProps.popperOptions,resolvedPopperProps?.popperOptions]),classes=useUtilityClasses55(ownerState),resolvedTransitionProps=typeof slotProps.transition==="function"?slotProps.transition(ownerState):slotProps.transition,externalForwardedProps={slots:{popper:components.Popper,transition:components.Transition??TransitionComponentProp,tooltip:components.Tooltip,arrow:components.Arrow,...slots},slotProps:{arrow:slotProps.arrow??componentsProps.arrow,popper:{...PopperProps,...resolvedPopperProps??componentsProps.popper},tooltip:slotProps.tooltip??componentsProps.tooltip,transition:{...TransitionProps,...resolvedTransitionProps??componentsProps.transition}}},[PopperSlot,popperSlotProps]=useSlot("popper",{elementType:TooltipPopper,externalForwardedProps,ownerState,className:clsx55(classes.popper,PopperProps?.className)}),[TransitionSlot,transitionSlotProps]=useSlot("transition",{elementType:Grow_default,externalForwardedProps,ownerState}),[TooltipSlot,tooltipSlotProps]=useSlot("tooltip",{elementType:TooltipTooltip,className:classes.tooltip,externalForwardedProps,ownerState}),[ArrowSlot,arrowSlotProps]=useSlot("arrow",{elementType:TooltipArrow,className:classes.arrow,externalForwardedProps,ownerState,ref:setArrowRef});return import_jsx_runtime97.jsxs(React126.Fragment,{children:[React126.cloneElement(children,childrenProps),import_jsx_runtime97.jsx(PopperSlot,{as:PopperComponentProp??Popper_default,placement,anchorEl:followCursor?{getBoundingClientRect:()=>({top:cursorPosition.y,left:cursorPosition.x,right:cursorPosition.x,bottom:cursorPosition.y,width:0,height:0})}:childNode,popperRef,open:childNode?open:!1,id,transition:!0,...interactiveWrapperListeners,...popperSlotProps,popperOptions,children:({TransitionProps:TransitionPropsInner})=>import_jsx_runtime97.jsx(TransitionSlot,{timeout:theme.transitions.duration.shorter,...TransitionPropsInner,...transitionSlotProps,children:import_jsx_runtime97.jsxs(TooltipSlot,{...tooltipSlotProps,children:[title,arrow?import_jsx_runtime97.jsx(ArrowSlot,{...arrowSlotProps}):null]})})})]})});Tooltip.propTypes={arrow:import_prop_types86.default.bool,children:elementAcceptingRef_default.isRequired,classes:import_prop_types86.default.object,className:import_prop_types86.default.string,components:import_prop_types86.default.shape({Arrow:import_prop_types86.default.elementType,Popper:import_prop_types86.default.elementType,Tooltip:import_prop_types86.default.elementType,Transition:import_prop_types86.default.elementType}),componentsProps:import_prop_types86.default.shape({arrow:import_prop_types86.default.object,popper:import_prop_types86.default.object,tooltip:import_prop_types86.default.object,transition:import_prop_types86.default.object}),describeChild:import_prop_types86.default.bool,disableFocusListener:import_prop_types86.default.bool,disableHoverListener:import_prop_types86.default.bool,disableInteractive:import_prop_types86.default.bool,disableTouchListener:import_prop_types86.default.bool,enterDelay:import_prop_types86.default.number,enterNextDelay:import_prop_types86.default.number,enterTouchDelay:import_prop_types86.default.number,followCursor:import_prop_types86.default.bool,id:import_prop_types86.default.string,leaveDelay:import_prop_types86.default.number,leaveTouchDelay:import_prop_types86.default.number,onClose:import_prop_types86.default.func,onOpen:import_prop_types86.default.func,open:import_prop_types86.default.bool,placement:import_prop_types86.default.oneOf(["auto-end","auto-start","auto","bottom-end","bottom-start","bottom","left-end","left-start","left","right-end","right-start","right","top-end","top-start","top"]),PopperComponent:import_prop_types86.default.elementType,PopperProps:import_prop_types86.default.object,slotProps:import_prop_types86.default.shape({arrow:import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object]),popper:import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object]),tooltip:import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object]),transition:import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object])}),slots:import_prop_types86.default.shape({arrow:import_prop_types86.default.elementType,popper:import_prop_types86.default.elementType,tooltip:import_prop_types86.default.elementType,transition:import_prop_types86.default.elementType}),sx:import_prop_types86.default.oneOfType([import_prop_types86.default.arrayOf(import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object,import_prop_types86.default.bool])),import_prop_types86.default.func,import_prop_types86.default.object]),title:import_prop_types86.default.node,TransitionComponent:import_prop_types86.default.elementType,TransitionProps:import_prop_types86.default.object};var Tooltip_default=Tooltip;var React127=__toESM(require_react_development()),import_prop_types87=__toESM(require_prop_types());import clsx56 from"clsx";function getDialogActionsUtilityClass(slot){return generateUtilityClass("MuiDialogActions",slot)}var dialogActionsClasses=generateUtilityClasses("MuiDialogActions",["root","spacing"]);var import_jsx_runtime98=__toESM(require_react_jsx_runtime_development()),useUtilityClasses56=(ownerState)=>{let{classes,disableSpacing}=ownerState;return composeClasses({root:["root",!disableSpacing&&"spacing"]},getDialogActionsUtilityClass,classes)},DialogActionsRoot=styled_default2("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(props,styles)=>{let{ownerState}=props;return[styles.root,!ownerState.disableSpacing&&styles.spacing]}})({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto",variants:[{props:({ownerState})=>!ownerState.disableSpacing,style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),DialogActions=React127.forwardRef(function(inProps,ref){let props=useDefaultProps2({props:inProps,name:"MuiDialogActions"}),{className,disableSpacing=!1,...other}=props,ownerState={...props,disableSpacing},classes=useUtilityClasses56(ownerState);return import_jsx_runtime98.jsx(DialogActionsRoot,{className:clsx56(classes.root,className),ownerState,ref,...other})});DialogActions.propTypes={children:import_prop_types87.default.node,classes:import_prop_types87.default.object,className:import_prop_types87.default.string,disableSpacing:import_prop_types87.default.bool,sx:import_prop_types87.default.oneOfType([import_prop_types87.default.arrayOf(import_prop_types87.default.oneOfType([import_prop_types87.default.func,import_prop_types87.default.object,import_prop_types87.default.bool])),import_prop_types87.default.func,import_prop_types87.default.object])};var DialogActions_default=DialogActions;var React128=__toESM(require_react_development()),import_prop_types88=__toESM(require_prop_types());import clsx57 from"clsx";function getDialogContentUtilityClass(slot){return generateUtilityClass("MuiDialogContent",slot)}var dialogContentClasses=generateUtilityClasses("MuiDialogContent",["root","dividers"]);function getDialogTitleUtilityClass(slot){return generateUtilityClass("MuiDialogTitle",slot)}var dialogTitleClasses=generateUtilityClasses("MuiDialogTitle",["root"]),dialogTitleClasses_default=dialogTitleClasses;var import_jsx_runtime99=__toESM(require_react_jsx_runtime_development()),useUtilityClasses57=(ownerState)=>{let{classes,dividers}=ownerState;return composeClasses({root:["root",dividers&&"dividers"]},getDialogContentUtilityClass,classes)},DialogContentRoot=styled_default2("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(props,styles)=>{let{ownerState}=props;return[styles.root,ownerState.dividers&&styles.dividers]}})(memoTheme_default(({theme})=>({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px",variants:[{props:({ownerState})=>ownerState.dividers,style:{padding:"16px 24px",borderTop:`1px solid ${(theme.vars||theme).palette.divider}`,borderBottom:`1px solid ${(theme.vars||theme).palette.divider}`}},{props:({ownerState})=>!ownerState.dividers,style:{[`.${dialogTitleClasses_default.root} + &`]:{paddingTop:0}}}]}))),DialogContent=React128.forwardRef(function(inProps,ref){let props=useDefaultProps2({props:inProps,name:"MuiDialogContent"}),{className,dividers=!1,...other}=props,ownerState={...props,dividers},classes=useUtilityClasses57(ownerState);return import_jsx_runtime99.jsx(DialogContentRoot,{className:clsx57(classes.root,className),ownerState,ref,...other})});DialogContent.propTypes={children:import_prop_types88.default.node,classes:import_prop_types88.default.object,className:import_prop_types88.default.string,dividers:import_prop_types88.default.bool,sx:import_prop_types88.default.oneOfType([import_prop_types88.default.arrayOf(import_prop_types88.default.oneOfType([import_prop_types88.default.func,import_prop_types88.default.object,import_prop_types88.default.bool])),import_prop_types88.default.func,import_prop_types88.default.object])};var DialogContent_default=DialogContent;var React129=__toESM(require_react_development()),import_prop_types89=__toESM(require_prop_types());import clsx58 from"clsx";function getDialogContentTextUtilityClass(slot){return generateUtilityClass("MuiDialogContentText",slot)}var dialogContentTextClasses=generateUtilityClasses("MuiDialogContentText",["root"]);var import_jsx_runtime100=__toESM(require_react_jsx_runtime_development()),useUtilityClasses58=(ownerState)=>{let{classes}=ownerState,composedClasses=composeClasses({root:["root"]},getDialogContentTextUtilityClass,classes);return{...classes,...composedClasses}},DialogContentTextRoot=styled_default2(Typography_default,{shouldForwardProp:(prop)=>rootShouldForwardProp_default(prop)||prop==="classes",name:"MuiDialogContentText",slot:"Root",overridesResolver:(props,styles)=>styles.root})({}),DialogContentText=React129.forwardRef(function(inProps,ref){let props=useDefaultProps2({props:inProps,name:"MuiDialogContentText"}),{children,className,...ownerState}=props,classes=useUtilityClasses58(ownerState);return import_jsx_runtime100.jsx(DialogContentTextRoot,{component:"p",variant:"body1",color:"textSecondary",ref,ownerState,className:clsx58(classes.root,className),...props,classes})});DialogContentText.propTypes={children:import_prop_types89.default.node,classes:import_prop_types89.default.object,className:import_prop_types89.default.string,sx:import_prop_types89.default.oneOfType([import_prop_types89.default.arrayOf(import_prop_types89.default.oneOfType([import_prop_types89.default.func,import_prop_types89.default.object,import_prop_types89.default.bool])),import_prop_types89.default.func,import_prop_types89.default.object])};var DialogContentText_default=DialogContentText;var React131=__toESM(require_react_development()),import_prop_types90=__toESM(require_prop_types());import clsx59 from"clsx";var React130=__toESM(require_react_development()),DialogContext=React130.createContext({});DialogContext.displayName="DialogContext";var DialogContext_default=DialogContext;var import_jsx_runtime101=__toESM(require_react_jsx_runtime_development()),useUtilityClasses59=(ownerState)=>{let{classes}=ownerState;return composeClasses({root:["root"]},getDialogTitleUtilityClass,classes)},DialogTitleRoot=styled_default2(Typography_default,{name:"MuiDialogTitle",slot:"Root",overridesResolver:(props,styles)=>styles.root})({padding:"16px 24px",flex:"0 0 auto"}),DialogTitle=React131.forwardRef(function(inProps,ref){let props=useDefaultProps2({props:inProps,name:"MuiDialogTitle"}),{className,id:idProp,...other}=props,ownerState=props,classes=useUtilityClasses59(ownerState),{titleId=idProp}=React131.useContext(DialogContext_default);return import_jsx_runtime101.jsx(DialogTitleRoot,{component:"h2",className:clsx59(classes.root,className),ownerState,ref,variant:"h6",id:idProp??titleId,...other})});DialogTitle.propTypes={children:import_prop_types90.default.node,classes:import_prop_types90.default.object,className:import_prop_types90.default.string,id:import_prop_types90.default.string,sx:import_prop_types90.default.oneOfType([import_prop_types90.default.arrayOf(import_prop_types90.default.oneOfType([import_prop_types90.default.func,import_prop_types90.default.object,import_prop_types90.default.bool])),import_prop_types90.default.func,import_prop_types90.default.object])};var DialogTitle_default=DialogTitle;var import_react7=__toESM(require_react_development(),1);function chrome(props){let className=typeof props.className==="string"?props.className:void 0,nodePath=props["data-node-path"];return{...className!==void 0?{className}:{},...typeof nodePath==="string"?{"data-node-path":nodePath}:{}}}function mergeSx(base,sx){return sx&&typeof sx==="object"&&!Array.isArray(sx)?{...base,...sx}:base}var DIALOG_WIDTH={xs:360,sm:480,md:600,lg:800,xl:960};function Dialog(props){let width=typeof props.maxWidth==="string"?DIALOG_WIDTH[props.maxWidth]??600:600;return import_react7.createElement(Paper_default,{...chrome(props),elevation:8,sx:mergeSx({width:"100%",maxWidth:width,mx:"auto",my:2,borderRadius:2,overflow:"hidden"},props.sx)},props.children)}function Menu2(props){return import_react7.createElement(Paper_default,{...chrome(props),elevation:3,sx:mergeSx({display:"inline-block",minWidth:180,py:1,borderRadius:1.5},props.sx)},props.children)}function Popover3(props){return import_react7.createElement(Paper_default,{...chrome(props),elevation:3,sx:mergeSx({display:"inline-block",p:2,borderRadius:1.5},props.sx)},props.children)}function Drawer(props){return import_react7.createElement(Paper_default,{...chrome(props),elevation:2,square:!0,sx:mergeSx({width:280,height:"100%",p:2},props.sx)},props.children)}function Snackbar(props){let body=props.message!==void 0?props.message:props.children;return import_react7.createElement(Box_default,{...chrome(props),sx:mergeSx({display:"inline-flex",alignItems:"center",px:2,py:1.25,bgcolor:"grey.900",color:"common.white",borderRadius:1,fontSize:14},props.sx)},body)}var REUSED_HELPER_IDS=["Icon","Image","Placeholder","SVG","Layer","Gradient","Prose"],registry={Alert:Alert_default,AppBar:AppBar_default,Avatar:Avatar_default,Badge:Badge_default,Box:Box_default,Button:Button_default,Card:Card_default,CardActions:CardActions_default,CardContent:CardContent_default,CardHeader:CardHeader_default,Checkbox:Checkbox_default,Chip:Chip_default,Container:Container_default,Dialog,DialogActions:DialogActions_default,DialogContent:DialogContent_default,DialogContentText:DialogContentText_default,DialogTitle:DialogTitle_default,Divider:Divider_default,Drawer,IconButton:IconButton_default,LinearProgress:LinearProgress_default,Link:Link_default,List:List_default,ListItem:ListItem_default,ListItemText:ListItemText_default,Menu:Menu2,MenuItem:MenuItem_default,Paper:Paper_default,Popover:Popover3,Select:Select_default,Snackbar,Stack:Stack_default,Switch:Switch_default,Tab:Tab_default,Table:Table_default,TableBody:TableBody_default,TableCell:TableCell_default,TableHead:TableHead_default,TableRow:TableRow_default,Tabs:Tabs_default,TextField:TextField_default,Toolbar:Toolbar_default,Tooltip:Tooltip_default,Typography:Typography_default,...helpersRegistry(REUSED_HELPER_IDS)};var import_react9=__toESM(require_react_development(),1);function muiColor(css){let s=css.trim();if(/^(#|rgb|hsl)/i.test(s))return s;return formatRgb(parse_default(s))??s}function base(slot,fallback){if(typeof slot==="string")return muiColor(slot);if(slot&&typeof slot==="object"&&typeof slot.DEFAULT==="string")return muiColor(slot.DEFAULT);return muiColor(fallback)}function fg(slot,fallback){if(slot&&typeof slot==="object"&&typeof slot.foreground==="string")return muiColor(slot.foreground);return muiColor(fallback)}function radiusPx(theme){let md=theme.radius?.md;if(typeof md==="number")return md;if(typeof md==="string"){let n=Number.parseFloat(md);return Number.isFinite(n)?md.includes("rem")?n*16:n:8}return 8}function muiThemeOptions(theme,dark=!1){let c=resolveColors(theme,dark);return{palette:{mode:dark?"dark":"light",primary:{main:base(c.primary,"#4f46e5"),contrastText:fg(c.primary,"#ffffff")},secondary:{main:base(c.secondary,"#64748b"),contrastText:fg(c.secondary,"#ffffff")},error:{main:base(c.destructive,"#dc2626"),contrastText:fg(c.destructive,"#ffffff")},background:{default:muiColor(c.background),paper:base(c.card,c.background)},text:{primary:muiColor(c.foreground),secondary:base(c.muted,c.foreground)},divider:c.border?muiColor(c.border):"rgba(0,0,0,0.12)"},shape:{borderRadius:radiusPx(theme)},typography:muiTypography(theme)}}function muiTypography(theme){let typography=theme.typography,typeset=typography.typesets?.[DEFAULT_TYPESET_NAME],scale=typesetScale(typeset,{...typography.fontFamily?{fontFamily:typography.fontFamily}:{}}),bodyFamily=scale.body.fontFamily??typography.fontFamily?.sans??"system-ui, -apple-system, sans-serif",variant=(role)=>{let r=scale[role];return{...r.fontFamily&&r.fontFamily!==bodyFamily?{fontFamily:r.fontFamily}:{},fontSize:`${r.fontSize}px`,lineHeight:r.lineHeight,letterSpacing:r.letterSpacing,fontWeight:r.fontWeight}};return{fontFamily:bodyFamily,fontSize:scale.body.fontSize,h1:variant("h1"),h2:variant("h2"),h3:variant("h3"),h4:variant("h4"),h5:variant("h5"),h6:variant("h6"),subtitle1:variant("lead"),subtitle2:variant("small"),body1:variant("body"),body2:variant("caption"),caption:variant("caption")}}function muiThemeFrom(theme,dark=!1){return createTheme2(muiThemeOptions(theme,dark))}function makeRenderPass(theme,dark=!1){let cache=$_default2({key:"vmui",prepend:!0}),server=$_default3(cache),muiTheme=muiThemeFrom(theme,dark);return{wrap:(element)=>import_react9.createElement(import_emotion_react_development_cjs.CacheProvider,{value:cache},import_react9.createElement(ThemeProvider4,{theme:muiTheme},element)),css:(html)=>server.extractCriticalToChunks(html).styles.map((s)=>s.css).join("")}}var here=dirname(fileURLToPath(import.meta.url)),srcDir=resolveProviderSrcDir(here,"provider-mui",process.env.VELLOO_MUI_SRC);function createProvider(){let overlayIds=["Dialog","Menu","Popover","Drawer","Snackbar"];return{id:"mui",version:MUI_VERSION,label:"Material UI v6",componentsDir:srcDir,styleEntryPath:join(srcDir,"tailwind-entry.css"),registry,loadManifest:async()=>MUI_MANIFEST,catalog:async()=>catalogFromManifest(MUI_MANIFEST.filter((c)=>c.source==="mui"),{importPath:"@mui/material"}),styleChannel:SX_PROP,styleChannels:["sx"],mcpIntro:()=>[...MUI_INTRO],renderPass:(theme,dark)=>makeRenderPass(theme,dark??!1),codegenModule:"@mui/material",themeToNative:(theme,dark)=>muiThemeOptions(theme,dark),themeModule:{importLines:['import { createTheme } from "@mui/material/styles";'],factory:"createTheme",defaultPath:"theme.ts"},ownedModules:{packages:["@mui/material"]},canvasBundleSpec:{components:(ids)=>ids.flatMap((id)=>{let descriptor=MUI_MANIFEST.find((entry)=>entry.id===id);if(!descriptor)return[];if(descriptor.source==="velloo"){let path=helperSourcePath(id);return path?[{id,sources:[{importPath:path,exportName:id,fidelity:"fallback",note:"Velloo helper used alongside the host framework."}]}]:[]}return[{id,sources:[{importPath:`@mui/material/${id}`,exportName:id,fidelity:overlayIds.includes(id)?"adapted":"exact",...overlayIds.includes(id)?{note:"Real MUI surface rendered through an inline canvas overlay shim."}:{}}]}]}),overlayIds,styleRuntime:{kind:"emotion",cacheKey:"vmui",stylesModule:"@mui/material/styles"}}}}export{createProvider};
244
+ `));let ownerState={...props,isRtl,arrow,disableInteractive,placement,PopperComponentProp,touch:ignoreNonTouchEvents.current},resolvedPopperProps=typeof slotProps.popper==="function"?slotProps.popper(ownerState):slotProps.popper,popperOptions=React126.useMemo(()=>{let tooltipModifiers=[{name:"arrow",enabled:Boolean(arrowRef),options:{element:arrowRef,padding:4}}];if(PopperProps.popperOptions?.modifiers)tooltipModifiers=tooltipModifiers.concat(PopperProps.popperOptions.modifiers);if(resolvedPopperProps?.popperOptions?.modifiers)tooltipModifiers=tooltipModifiers.concat(resolvedPopperProps.popperOptions.modifiers);return{...PopperProps.popperOptions,...resolvedPopperProps?.popperOptions,modifiers:tooltipModifiers}},[arrowRef,PopperProps.popperOptions,resolvedPopperProps?.popperOptions]),classes=useUtilityClasses55(ownerState),resolvedTransitionProps=typeof slotProps.transition==="function"?slotProps.transition(ownerState):slotProps.transition,externalForwardedProps={slots:{popper:components.Popper,transition:components.Transition??TransitionComponentProp,tooltip:components.Tooltip,arrow:components.Arrow,...slots},slotProps:{arrow:slotProps.arrow??componentsProps.arrow,popper:{...PopperProps,...resolvedPopperProps??componentsProps.popper},tooltip:slotProps.tooltip??componentsProps.tooltip,transition:{...TransitionProps,...resolvedTransitionProps??componentsProps.transition}}},[PopperSlot,popperSlotProps]=useSlot("popper",{elementType:TooltipPopper,externalForwardedProps,ownerState,className:clsx55(classes.popper,PopperProps?.className)}),[TransitionSlot,transitionSlotProps]=useSlot("transition",{elementType:Grow_default,externalForwardedProps,ownerState}),[TooltipSlot,tooltipSlotProps]=useSlot("tooltip",{elementType:TooltipTooltip,className:classes.tooltip,externalForwardedProps,ownerState}),[ArrowSlot,arrowSlotProps]=useSlot("arrow",{elementType:TooltipArrow,className:classes.arrow,externalForwardedProps,ownerState,ref:setArrowRef});return import_jsx_runtime97.jsxs(React126.Fragment,{children:[React126.cloneElement(children,childrenProps),import_jsx_runtime97.jsx(PopperSlot,{as:PopperComponentProp??Popper_default,placement,anchorEl:followCursor?{getBoundingClientRect:()=>({top:cursorPosition.y,left:cursorPosition.x,right:cursorPosition.x,bottom:cursorPosition.y,width:0,height:0})}:childNode,popperRef,open:childNode?open:!1,id,transition:!0,...interactiveWrapperListeners,...popperSlotProps,popperOptions,children:({TransitionProps:TransitionPropsInner})=>import_jsx_runtime97.jsx(TransitionSlot,{timeout:theme.transitions.duration.shorter,...TransitionPropsInner,...transitionSlotProps,children:import_jsx_runtime97.jsxs(TooltipSlot,{...tooltipSlotProps,children:[title,arrow?import_jsx_runtime97.jsx(ArrowSlot,{...arrowSlotProps}):null]})})})]})});Tooltip.propTypes={arrow:import_prop_types86.default.bool,children:elementAcceptingRef_default.isRequired,classes:import_prop_types86.default.object,className:import_prop_types86.default.string,components:import_prop_types86.default.shape({Arrow:import_prop_types86.default.elementType,Popper:import_prop_types86.default.elementType,Tooltip:import_prop_types86.default.elementType,Transition:import_prop_types86.default.elementType}),componentsProps:import_prop_types86.default.shape({arrow:import_prop_types86.default.object,popper:import_prop_types86.default.object,tooltip:import_prop_types86.default.object,transition:import_prop_types86.default.object}),describeChild:import_prop_types86.default.bool,disableFocusListener:import_prop_types86.default.bool,disableHoverListener:import_prop_types86.default.bool,disableInteractive:import_prop_types86.default.bool,disableTouchListener:import_prop_types86.default.bool,enterDelay:import_prop_types86.default.number,enterNextDelay:import_prop_types86.default.number,enterTouchDelay:import_prop_types86.default.number,followCursor:import_prop_types86.default.bool,id:import_prop_types86.default.string,leaveDelay:import_prop_types86.default.number,leaveTouchDelay:import_prop_types86.default.number,onClose:import_prop_types86.default.func,onOpen:import_prop_types86.default.func,open:import_prop_types86.default.bool,placement:import_prop_types86.default.oneOf(["auto-end","auto-start","auto","bottom-end","bottom-start","bottom","left-end","left-start","left","right-end","right-start","right","top-end","top-start","top"]),PopperComponent:import_prop_types86.default.elementType,PopperProps:import_prop_types86.default.object,slotProps:import_prop_types86.default.shape({arrow:import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object]),popper:import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object]),tooltip:import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object]),transition:import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object])}),slots:import_prop_types86.default.shape({arrow:import_prop_types86.default.elementType,popper:import_prop_types86.default.elementType,tooltip:import_prop_types86.default.elementType,transition:import_prop_types86.default.elementType}),sx:import_prop_types86.default.oneOfType([import_prop_types86.default.arrayOf(import_prop_types86.default.oneOfType([import_prop_types86.default.func,import_prop_types86.default.object,import_prop_types86.default.bool])),import_prop_types86.default.func,import_prop_types86.default.object]),title:import_prop_types86.default.node,TransitionComponent:import_prop_types86.default.elementType,TransitionProps:import_prop_types86.default.object};var Tooltip_default=Tooltip;var React127=__toESM(require_react_development()),import_prop_types87=__toESM(require_prop_types());import clsx56 from"clsx";function getDialogActionsUtilityClass(slot){return generateUtilityClass("MuiDialogActions",slot)}var dialogActionsClasses=generateUtilityClasses("MuiDialogActions",["root","spacing"]);var import_jsx_runtime98=__toESM(require_react_jsx_runtime_development()),useUtilityClasses56=(ownerState)=>{let{classes,disableSpacing}=ownerState;return composeClasses({root:["root",!disableSpacing&&"spacing"]},getDialogActionsUtilityClass,classes)},DialogActionsRoot=styled_default2("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(props,styles)=>{let{ownerState}=props;return[styles.root,!ownerState.disableSpacing&&styles.spacing]}})({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto",variants:[{props:({ownerState})=>!ownerState.disableSpacing,style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),DialogActions=React127.forwardRef(function(inProps,ref){let props=useDefaultProps2({props:inProps,name:"MuiDialogActions"}),{className,disableSpacing=!1,...other}=props,ownerState={...props,disableSpacing},classes=useUtilityClasses56(ownerState);return import_jsx_runtime98.jsx(DialogActionsRoot,{className:clsx56(classes.root,className),ownerState,ref,...other})});DialogActions.propTypes={children:import_prop_types87.default.node,classes:import_prop_types87.default.object,className:import_prop_types87.default.string,disableSpacing:import_prop_types87.default.bool,sx:import_prop_types87.default.oneOfType([import_prop_types87.default.arrayOf(import_prop_types87.default.oneOfType([import_prop_types87.default.func,import_prop_types87.default.object,import_prop_types87.default.bool])),import_prop_types87.default.func,import_prop_types87.default.object])};var DialogActions_default=DialogActions;var React128=__toESM(require_react_development()),import_prop_types88=__toESM(require_prop_types());import clsx57 from"clsx";function getDialogContentUtilityClass(slot){return generateUtilityClass("MuiDialogContent",slot)}var dialogContentClasses=generateUtilityClasses("MuiDialogContent",["root","dividers"]);function getDialogTitleUtilityClass(slot){return generateUtilityClass("MuiDialogTitle",slot)}var dialogTitleClasses=generateUtilityClasses("MuiDialogTitle",["root"]),dialogTitleClasses_default=dialogTitleClasses;var import_jsx_runtime99=__toESM(require_react_jsx_runtime_development()),useUtilityClasses57=(ownerState)=>{let{classes,dividers}=ownerState;return composeClasses({root:["root",dividers&&"dividers"]},getDialogContentUtilityClass,classes)},DialogContentRoot=styled_default2("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(props,styles)=>{let{ownerState}=props;return[styles.root,ownerState.dividers&&styles.dividers]}})(memoTheme_default(({theme})=>({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px",variants:[{props:({ownerState})=>ownerState.dividers,style:{padding:"16px 24px",borderTop:`1px solid ${(theme.vars||theme).palette.divider}`,borderBottom:`1px solid ${(theme.vars||theme).palette.divider}`}},{props:({ownerState})=>!ownerState.dividers,style:{[`.${dialogTitleClasses_default.root} + &`]:{paddingTop:0}}}]}))),DialogContent=React128.forwardRef(function(inProps,ref){let props=useDefaultProps2({props:inProps,name:"MuiDialogContent"}),{className,dividers=!1,...other}=props,ownerState={...props,dividers},classes=useUtilityClasses57(ownerState);return import_jsx_runtime99.jsx(DialogContentRoot,{className:clsx57(classes.root,className),ownerState,ref,...other})});DialogContent.propTypes={children:import_prop_types88.default.node,classes:import_prop_types88.default.object,className:import_prop_types88.default.string,dividers:import_prop_types88.default.bool,sx:import_prop_types88.default.oneOfType([import_prop_types88.default.arrayOf(import_prop_types88.default.oneOfType([import_prop_types88.default.func,import_prop_types88.default.object,import_prop_types88.default.bool])),import_prop_types88.default.func,import_prop_types88.default.object])};var DialogContent_default=DialogContent;var React129=__toESM(require_react_development()),import_prop_types89=__toESM(require_prop_types());import clsx58 from"clsx";function getDialogContentTextUtilityClass(slot){return generateUtilityClass("MuiDialogContentText",slot)}var dialogContentTextClasses=generateUtilityClasses("MuiDialogContentText",["root"]);var import_jsx_runtime100=__toESM(require_react_jsx_runtime_development()),useUtilityClasses58=(ownerState)=>{let{classes}=ownerState,composedClasses=composeClasses({root:["root"]},getDialogContentTextUtilityClass,classes);return{...classes,...composedClasses}},DialogContentTextRoot=styled_default2(Typography_default,{shouldForwardProp:(prop)=>rootShouldForwardProp_default(prop)||prop==="classes",name:"MuiDialogContentText",slot:"Root",overridesResolver:(props,styles)=>styles.root})({}),DialogContentText=React129.forwardRef(function(inProps,ref){let props=useDefaultProps2({props:inProps,name:"MuiDialogContentText"}),{children,className,...ownerState}=props,classes=useUtilityClasses58(ownerState);return import_jsx_runtime100.jsx(DialogContentTextRoot,{component:"p",variant:"body1",color:"textSecondary",ref,ownerState,className:clsx58(classes.root,className),...props,classes})});DialogContentText.propTypes={children:import_prop_types89.default.node,classes:import_prop_types89.default.object,className:import_prop_types89.default.string,sx:import_prop_types89.default.oneOfType([import_prop_types89.default.arrayOf(import_prop_types89.default.oneOfType([import_prop_types89.default.func,import_prop_types89.default.object,import_prop_types89.default.bool])),import_prop_types89.default.func,import_prop_types89.default.object])};var DialogContentText_default=DialogContentText;var React131=__toESM(require_react_development()),import_prop_types90=__toESM(require_prop_types());import clsx59 from"clsx";var React130=__toESM(require_react_development()),DialogContext=React130.createContext({});DialogContext.displayName="DialogContext";var DialogContext_default=DialogContext;var import_jsx_runtime101=__toESM(require_react_jsx_runtime_development()),useUtilityClasses59=(ownerState)=>{let{classes}=ownerState;return composeClasses({root:["root"]},getDialogTitleUtilityClass,classes)},DialogTitleRoot=styled_default2(Typography_default,{name:"MuiDialogTitle",slot:"Root",overridesResolver:(props,styles)=>styles.root})({padding:"16px 24px",flex:"0 0 auto"}),DialogTitle=React131.forwardRef(function(inProps,ref){let props=useDefaultProps2({props:inProps,name:"MuiDialogTitle"}),{className,id:idProp,...other}=props,ownerState=props,classes=useUtilityClasses59(ownerState),{titleId=idProp}=React131.useContext(DialogContext_default);return import_jsx_runtime101.jsx(DialogTitleRoot,{component:"h2",className:clsx59(classes.root,className),ownerState,ref,variant:"h6",id:idProp??titleId,...other})});DialogTitle.propTypes={children:import_prop_types90.default.node,classes:import_prop_types90.default.object,className:import_prop_types90.default.string,id:import_prop_types90.default.string,sx:import_prop_types90.default.oneOfType([import_prop_types90.default.arrayOf(import_prop_types90.default.oneOfType([import_prop_types90.default.func,import_prop_types90.default.object,import_prop_types90.default.bool])),import_prop_types90.default.func,import_prop_types90.default.object])};var DialogTitle_default=DialogTitle;var import_react7=__toESM(require_react_development(),1);function chrome(props){let className=typeof props.className==="string"?props.className:void 0,nodePath=props["data-node-path"];return{...className!==void 0?{className}:{},...typeof nodePath==="string"?{"data-node-path":nodePath}:{}}}function mergeSx(base,sx){return sx&&typeof sx==="object"&&!Array.isArray(sx)?{...base,...sx}:base}var DIALOG_WIDTH={xs:360,sm:480,md:600,lg:800,xl:960};function Dialog(props){let width=typeof props.maxWidth==="string"?DIALOG_WIDTH[props.maxWidth]??600:600;return import_react7.createElement(Paper_default,{...chrome(props),elevation:8,sx:mergeSx({width:"100%",maxWidth:width,mx:"auto",my:2,borderRadius:2,overflow:"hidden"},props.sx)},props.children)}function Menu2(props){return import_react7.createElement(Paper_default,{...chrome(props),elevation:3,sx:mergeSx({display:"inline-block",minWidth:180,py:1,borderRadius:1.5},props.sx)},props.children)}function Popover3(props){return import_react7.createElement(Paper_default,{...chrome(props),elevation:3,sx:mergeSx({display:"inline-block",p:2,borderRadius:1.5},props.sx)},props.children)}function Drawer(props){return import_react7.createElement(Paper_default,{...chrome(props),elevation:2,square:!0,sx:mergeSx({width:280,height:"100%",p:2},props.sx)},props.children)}function Snackbar(props){let body=props.message!==void 0?props.message:props.children;return import_react7.createElement(Box_default,{...chrome(props),sx:mergeSx({display:"inline-flex",alignItems:"center",px:2,py:1.25,bgcolor:"grey.900",color:"common.white",borderRadius:1,fontSize:14},props.sx)},body)}var REUSED_HELPER_IDS=["Icon","Image","Placeholder","SVG","Layer","Gradient","Prose"],registry={Alert:Alert_default,AppBar:AppBar_default,Avatar:Avatar_default,Badge:Badge_default,Box:Box_default,Button:Button_default,Card:Card_default,CardActions:CardActions_default,CardContent:CardContent_default,CardHeader:CardHeader_default,Checkbox:Checkbox_default,Chip:Chip_default,Container:Container_default,Dialog,DialogActions:DialogActions_default,DialogContent:DialogContent_default,DialogContentText:DialogContentText_default,DialogTitle:DialogTitle_default,Divider:Divider_default,Drawer,IconButton:IconButton_default,LinearProgress:LinearProgress_default,Link:Link_default,List:List_default,ListItem:ListItem_default,ListItemText:ListItemText_default,Menu:Menu2,MenuItem:MenuItem_default,Paper:Paper_default,Popover:Popover3,Select:Select_default,Snackbar,Stack:Stack_default,Switch:Switch_default,Tab:Tab_default,Table:Table_default,TableBody:TableBody_default,TableCell:TableCell_default,TableHead:TableHead_default,TableRow:TableRow_default,Tabs:Tabs_default,TextField:TextField_default,Toolbar:Toolbar_default,Tooltip:Tooltip_default,Typography:Typography_default,...helpersRegistry(REUSED_HELPER_IDS)};var React132=__toESM(require_react_development()),import_prop_types91=__toESM(require_prop_types());var import_jsx_runtime102=__toESM(require_react_jsx_runtime_development()),isDynamicSupport=typeof globalCss({})==="function",html=(theme,enableColorScheme)=>({WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%",...enableColorScheme&&!theme.vars&&{colorScheme:theme.palette.mode}}),body=(theme)=>({color:(theme.vars||theme).palette.text.primary,...theme.typography.body1,backgroundColor:(theme.vars||theme).palette.background.default,"@media print":{backgroundColor:(theme.vars||theme).palette.common.white}}),styles5=(theme,enableColorScheme=!1)=>{let colorSchemeStyles={};if(enableColorScheme&&theme.colorSchemes&&typeof theme.getColorSchemeSelector==="function")Object.entries(theme.colorSchemes).forEach(([key,scheme])=>{let selector=theme.getColorSchemeSelector(key);if(selector.startsWith("@"))colorSchemeStyles[selector]={":root":{colorScheme:scheme.palette?.mode}};else colorSchemeStyles[selector.replace(/\s*&/,"")]={colorScheme:scheme.palette?.mode}});let defaultStyles={html:html(theme,enableColorScheme),"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:theme.typography.fontWeightBold},body:{margin:0,...body(theme),"&::backdrop":{backgroundColor:(theme.vars||theme).palette.background.default}},...colorSchemeStyles},themeOverrides=theme.components?.MuiCssBaseline?.styleOverrides;if(themeOverrides)defaultStyles=[defaultStyles,themeOverrides];return defaultStyles},SELECTOR="mui-ecs",staticStyles=(theme)=>{let result=styles5(theme,!1),baseStyles=Array.isArray(result)?result[0]:result;if(!theme.vars&&baseStyles)baseStyles.html[`:root:has(${SELECTOR})`]={colorScheme:theme.palette.mode};if(theme.colorSchemes)Object.entries(theme.colorSchemes).forEach(([key,scheme])=>{let selector=theme.getColorSchemeSelector(key);if(selector.startsWith("@"))baseStyles[selector]={[`:root:not(:has(.${SELECTOR}))`]:{colorScheme:scheme.palette?.mode}};else baseStyles[selector.replace(/\s*&/,"")]={[`&:not(:has(.${SELECTOR}))`]:{colorScheme:scheme.palette?.mode}}});return result},GlobalStyles5=globalCss(isDynamicSupport?({theme,enableColorScheme})=>styles5(theme,enableColorScheme):({theme})=>staticStyles(theme));function CssBaseline(inProps){let props=useDefaultProps2({props:inProps,name:"MuiCssBaseline"}),{children,enableColorScheme=!1}=props;return import_jsx_runtime102.jsxs(React132.Fragment,{children:[isDynamicSupport&&import_jsx_runtime102.jsx(GlobalStyles5,{enableColorScheme}),!isDynamicSupport&&!enableColorScheme&&import_jsx_runtime102.jsx("span",{className:SELECTOR,style:{display:"none"}}),children]})}CssBaseline.propTypes={children:import_prop_types91.default.node,enableColorScheme:import_prop_types91.default.bool};var CssBaseline_default=CssBaseline;var import_react9=__toESM(require_react_development(),1);function muiColor(css){let s=sanitizeCssTokenValue(css);if(/^(#|rgb|hsl)/i.test(s))return s;return formatRgb(parse_default(s))??s}function base(slot,fallback){if(typeof slot==="string")return muiColor(slot);if(slot&&typeof slot==="object"&&typeof slot.DEFAULT==="string")return muiColor(slot.DEFAULT);return muiColor(fallback)}function fg(slot,fallback){if(slot&&typeof slot==="object"&&typeof slot.foreground==="string")return muiColor(slot.foreground);return muiColor(fallback)}function radiusPx(theme){let md=theme.radius?.md;if(typeof md==="number")return md;if(typeof md==="string"){let n=Number.parseFloat(md);return Number.isFinite(n)?md.includes("rem")?n*16:n:8}return 8}function muiThemeOptions(theme,dark=!1){let c=resolveColors(theme,dark);return{palette:{mode:dark?"dark":"light",primary:{main:base(c.primary,"#4f46e5"),contrastText:fg(c.primary,"#ffffff")},secondary:{main:base(c.secondary,"#64748b"),contrastText:fg(c.secondary,"#ffffff")},error:{main:base(c.destructive,"#dc2626"),contrastText:fg(c.destructive,"#ffffff")},background:{default:muiColor(c.background),paper:base(c.card,c.background)},text:{primary:muiColor(c.foreground),secondary:base(c.muted,c.foreground)},divider:c.border?muiColor(c.border):"rgba(0,0,0,0.12)"},shape:{borderRadius:radiusPx(theme)},typography:muiTypography(theme)}}function muiTypography(theme){let typography=theme.typography,typeset=typography.typesets?.[DEFAULT_TYPESET_NAME],scale=typesetScale(typeset,{...typography.fontFamily?{fontFamily:typography.fontFamily}:{}}),bodyFamily=sanitizeCssTokenValue(scale.body.fontFamily??typography.fontFamily?.sans??"system-ui, -apple-system, sans-serif"),variant=(role)=>{let r=scale[role];return{...r.fontFamily&&sanitizeCssTokenValue(r.fontFamily)!==bodyFamily?{fontFamily:sanitizeCssTokenValue(r.fontFamily)}:{},fontSize:`${r.fontSize}px`,lineHeight:r.lineHeight,letterSpacing:r.letterSpacing,fontWeight:r.fontWeight}};return{fontFamily:bodyFamily,fontSize:scale.body.fontSize,h1:variant("h1"),h2:variant("h2"),h3:variant("h3"),h4:variant("h4"),h5:variant("h5"),h6:variant("h6"),subtitle1:variant("lead"),subtitle2:variant("small"),body1:variant("body"),body2:variant("caption"),caption:variant("caption")}}function muiThemeFrom(theme,dark=!1){return createTheme2(muiThemeOptions(theme,dark))}function makeRenderPass(theme,dark=!1){let cache=$_default2({key:"vmui",prepend:!0}),server=$_default3(cache),muiTheme=muiThemeFrom(theme,dark);return{wrap:(element)=>import_react9.createElement(import_emotion_react_development_cjs.CacheProvider,{value:cache},import_react9.createElement(ThemeProvider4,{theme:muiTheme},import_react9.createElement(CssBaseline_default,{enableColorScheme:!0}),element)),css:(html)=>server.extractCriticalToChunks(html).styles.map((s)=>s.css).join("")}}var here=dirname(fileURLToPath(import.meta.url)),srcDir=resolveProviderSrcDir(here,"provider-mui",process.env.VELLOO_MUI_SRC);function createProvider(){let overlayIds=["Dialog","Menu","Popover","Drawer","Snackbar"];return{id:"mui",version:MUI_VERSION,label:"Material UI v6",componentsDir:srcDir,styleEntryPath:join(srcDir,"tailwind-entry.css"),registry,loadManifest:async()=>MUI_MANIFEST,catalog:async()=>catalogFromManifest(MUI_MANIFEST.filter((c)=>c.source==="mui"),{importPath:"@mui/material"}),styleChannel:SX_PROP,styleChannels:["sx"],mcpIntro:()=>[...MUI_INTRO],renderPass:(theme,dark)=>makeRenderPass(theme,dark??!1),codegenModule:"@mui/material",themeToNative:(theme,dark)=>muiThemeOptions(theme,dark),themeModule:{importLines:['import { createTheme } from "@mui/material/styles";'],factory:"createTheme",defaultPath:"theme.ts"},ownedModules:{packages:["@mui/material"]},canvasBundleSpec:{components:(ids)=>ids.flatMap((id)=>{let descriptor=MUI_MANIFEST.find((entry)=>entry.id===id);if(!descriptor)return[];if(descriptor.source==="velloo"){let path=helperSourcePath(id);return path?[{id,sources:[{importPath:path,exportName:id,fidelity:"exact",note:"Velloo helper, mounted beside the host framework's components."}]}]:[]}return[{id,sources:[{importPath:`@mui/material/${id}`,exportName:id,fidelity:overlayIds.includes(id)?"adapted":"exact",...overlayIds.includes(id)?{note:"Real MUI surface rendered through an inline canvas overlay shim."}:{}}]}]}),overlayIds,styleRuntime:{kind:"emotion",cacheKey:"vmui",stylesModule:"@mui/material/styles"}}}}export{createProvider};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{CURRENT_SCHEMA_VERSION}from"./chunk-4pkw6d9n.js";import{localDesignOf,recordedDesignName}from"./chunk-66qgm91k.js";import{AGENTS,designArgumentFor,agentRootCandidates,writeAgentConfig,refreshAgentArtifacts}from"./chunk-33t0csxs.js";import{daemonRoot,readLock,isLive,stopDaemon}from"./chunk-asvdqkdp.js";import{fail}from"./chunk-s23gtejf.js";import{installedVellooBin,upgradeInstalledVelloo}from"./chunk-0wafc9aw.js";import{createProgress}from"./chunk-pjtg3wnm.js";import{upgradeFolder}from"./chunk-b3x80jc1.js";import{DESIGN_ARG_DESCRIPTION,resolveDesign,checkoutDesigns}from"./chunk-675tr675.js";import{require_picocolors}from"./chunk-jrsknzjt.js";import{__toESM,defineCommand}from"./chunk-2smsg2ct.js";import{resolve}from"path";var import_picocolors=__toESM(require_picocolors(),1);import{readFile}from"fs/promises";import{homedir}from"os";var isStrings=(value)=>Array.isArray(value)&&value.every((item)=>typeof item==="string");function asEntry(value){if(value===null||typeof value!=="object")return null;let{command,args}=value;return typeof command==="string"&&isStrings(args)?{command,args}:null}function readStdioEntry(content,format){try{switch(format){case"json":return asEntry(JSON.parse(content).mcpServers?.velloo);case"vscode-json":return asEntry(JSON.parse(content).servers?.velloo);case"opencode-json":{let command=JSON.parse(content).mcp?.velloo?.command;return isStrings(command)&&command[0]?{command:command[0],args:command.slice(1)}:null}case"codex-toml":return asEntry(Bun.TOML.parse(content).mcp_servers?.velloo);case"continue-block":return asEntry(Bun.YAML.parse(content).mcpServers?.[0]);case"continue-config":return null}}catch{return null}}async function repinAgentConfigs(opts){if(localDesignOf(opts.designFolder))return[];let homeDir=opts.homeDir??homedir(),names=new Set(opts.names),rewritten=[];for(let projectRoot of opts.projectRoots){let designArg=await designArgumentFor(projectRoot,opts.designFolder),desired=designArg?["mcp",designArg]:["mcp"];for(let agent of Object.values(AGENTS)){if(agent.scope!=="project"||agent.gui)continue;let path=agent.path(projectRoot,homeDir),content;try{content=await readFile(path,"utf8")}catch{continue}let entry=readStdioEntry(content,agent.format),pinned=entry?.args.length===2&&entry.args[0]==="mcp"?entry.args[1]:void 0;if(!entry||pinned===void 0||!names.has(pinned)||pinned===desired[1])continue;await writeAgentConfig(projectRoot,agent,{transport:"stdio",command:entry.command,args:desired},homeDir),rewritten.push(path)}}return rewritten}async function targetFolders(arg){if(arg)return[await resolveDesign(arg,"upgrade",{requireConfig:!0})];return checkoutDesigns(resolve("."))}var upgrade_default=defineCommand({meta:{name:"upgrade",description:"Upgrade Velloo and migrate designs to the current format \u2014 every design in this checkout, or the one named"},args:{design:{type:"positional",required:!1,description:DESIGN_ARG_DESCRIPTION},"dry-run":{type:"boolean",default:!1,description:"Show what would change without writing"},check:{type:"boolean",default:!1,description:"Check for a Velloo update without installing it"},"binary-only":{type:"boolean",default:!1,description:"Upgrade the Velloo installation and leave the designs alone"},"design-only":{type:"boolean",default:!1,description:"Migrate the designs with this Velloo, without self-upgrading first (same as `velloo design upgrade`)"},skills:{type:"boolean",default:!0,description:"Also refresh the installed agent skills / plugin / rules to this velloo's versions"}},async run({args}){let dryRun=args["dry-run"]||args.check,folders=args["binary-only"]?[]:await targetFolders(args.design),outcome=null;if(!(args["design-only"]||args["folder-only"]===!0))try{outcome=await upgradeInstalledVelloo({checkOnly:dryRun})}catch(error){let message=error instanceof Error?error.message:String(error);if(folders.length===0)fail("upgrade",message);console.log(import_picocolors.default.dim(`velloo: skipping the self-upgrade \u2014 ${message}`))}if(folders.length===0)return;if(outcome?.upgraded){let bin=installedVellooBin();if(bin){for(let folder of folders){let argv=[bin,"upgrade",folder,"--design-only",...args.skills?[]:["--no-skills"]];if(await Bun.spawn(argv,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:{...process.env,VELLOO_DISABLE_UPDATE_CHECK:"1"}}).exited!==0)fail("upgrade",`the upgraded velloo could not migrate ${folder}`)}return}console.log(import_picocolors.default.dim(`velloo: could not locate the upgraded velloo \u2014 run \`velloo upgrade\` again to migrate ${folders.length===1?"the design":"the designs"}.`));return}for(let folder of folders)await migrateFolder2(folder,{dryRun,skills:args.skills})}});async function migrateFolder2(folder,opts){let{dryRun}=opts,progress=createProgress();progress.start(dryRun?"checking upgrade":"preparing upgrade");let stopped=!1,result;try{if(!dryRun){let root=daemonRoot(folder),running=await readLock(root);if(running&&await isLive(running))progress.step("stopping running canvas");stopped=await stopDaemon(root)}progress.step(dryRun?"checking design folder":"upgrading design folder"),result=await upgradeFolder(folder,{dryRun})}catch(err){progress.fail("upgrade failed"),fail("upgrade",err instanceof Error?err.message:String(err))}let refreshed=[],repinned=[];try{let name=recordedDesignName(folder);if(!dryRun&&name)repinned=await repinAgentConfigs({projectRoots:await agentRootCandidates(folder),designFolder:folder,names:[name]});if(opts.skills&&!dryRun){progress.step("refreshing agent guidance");let projectRoots=await agentRootCandidates(folder);({refreshed}=await refreshAgentArtifacts({projectRoots,designFolder:folder}))}progress.succeed(dryRun?"upgrade check complete":"upgrade complete")}catch(error){throw progress.fail("upgrade failed"),error}if(stopped)console.log("velloo: stopped the running canvas for this folder.");if(result.applied.length===0){console.log(`velloo: ${folder} is already at schema version ${CURRENT_SCHEMA_VERSION}.`);for(let file of result.changedFiles)console.log(` ${dryRun?"~":"\u2713"} ${file} (designs list format)`)}else{console.log(`velloo: ${dryRun?"would migrate":"migrated"} ${folder} from schema version ${result.from} to ${result.to}:`);for(let step of result.applied)console.log(` - ${step}`);for(let file of result.changedFiles)console.log(` ${dryRun?"~":"\u2713"} ${file}`);if(!dryRun)console.log("velloo: folder validated against the current schemas.")}if(repinned.length>0){console.log(""),console.log(import_picocolors.default.green("\u2713 Agent MCP configs now find the design without naming it:"));for(let path of repinned)console.log(` ${import_picocolors.default.cyan(path)}`)}if(refreshed.length>0){console.log(""),console.log(import_picocolors.default.green("\u2713 Refreshed agent guidance to this velloo:"));for(let line of refreshed)console.log(` ${import_picocolors.default.cyan(line)}`)}}
2
+ import{CURRENT_SCHEMA_VERSION}from"./chunk-5x4nw0zz.js";import{localDesignOf,recordedDesignName}from"./chunk-brnkprt5.js";import{AGENTS,designArgumentFor,agentRootCandidates,writeAgentConfig,refreshAgentArtifacts}from"./chunk-4y2xy1kf.js";import{daemonRoot,readLock,isLive,stopDaemon}from"./chunk-xzf52wvn.js";import{fail}from"./chunk-s23gtejf.js";import{installedVellooBin,upgradeInstalledVelloo}from"./chunk-s84vxcdv.js";import{createProgress}from"./chunk-pjtg3wnm.js";import{upgradeFolder}from"./chunk-5yhnnhkd.js";import{DESIGN_ARG_DESCRIPTION,resolveDesign,checkoutDesigns}from"./chunk-64pex3mw.js";import{require_picocolors}from"./chunk-jrsknzjt.js";import{__toESM,defineCommand}from"./chunk-2smsg2ct.js";import{resolve}from"path";var import_picocolors=__toESM(require_picocolors(),1);import{readFile}from"fs/promises";import{homedir}from"os";var isStrings=(value)=>Array.isArray(value)&&value.every((item)=>typeof item==="string");function asEntry(value){if(value===null||typeof value!=="object")return null;let{command,args}=value;return typeof command==="string"&&isStrings(args)?{command,args}:null}function readStdioEntry(content,format){try{switch(format){case"json":return asEntry(JSON.parse(content).mcpServers?.velloo);case"vscode-json":return asEntry(JSON.parse(content).servers?.velloo);case"opencode-json":{let command=JSON.parse(content).mcp?.velloo?.command;return isStrings(command)&&command[0]?{command:command[0],args:command.slice(1)}:null}case"codex-toml":return asEntry(Bun.TOML.parse(content).mcp_servers?.velloo);case"continue-block":return asEntry(Bun.YAML.parse(content).mcpServers?.[0]);case"continue-config":return null}}catch{return null}}async function repinAgentConfigs(opts){if(localDesignOf(opts.designFolder))return[];let homeDir=opts.homeDir??homedir(),names=new Set(opts.names),rewritten=[];for(let projectRoot of opts.projectRoots){let designArg=await designArgumentFor(projectRoot,opts.designFolder),desired=designArg?["mcp",designArg]:["mcp"];for(let agent of Object.values(AGENTS)){if(agent.scope!=="project"||agent.gui)continue;let path=agent.path(projectRoot,homeDir),content;try{content=await readFile(path,"utf8")}catch{continue}let entry=readStdioEntry(content,agent.format),pinned=entry?.args.length===2&&entry.args[0]==="mcp"?entry.args[1]:void 0;if(!entry||pinned===void 0||!names.has(pinned)||pinned===desired[1])continue;await writeAgentConfig(projectRoot,agent,{transport:"stdio",command:entry.command,args:desired},homeDir),rewritten.push(path)}}return rewritten}async function targetFolders(arg){if(arg)return[await resolveDesign(arg,"upgrade",{requireConfig:!0})];return checkoutDesigns(resolve("."))}var upgrade_default=defineCommand({meta:{name:"upgrade",description:"Upgrade Velloo and migrate designs to the current format \u2014 every design in this checkout, or the one named"},args:{design:{type:"positional",required:!1,description:DESIGN_ARG_DESCRIPTION},"dry-run":{type:"boolean",default:!1,description:"Show what would change without writing"},check:{type:"boolean",default:!1,description:"Check for a Velloo update without installing it"},"binary-only":{type:"boolean",default:!1,description:"Upgrade the Velloo installation and leave the designs alone"},"design-only":{type:"boolean",default:!1,description:"Migrate the designs with this Velloo, without self-upgrading first (same as `velloo design upgrade`)"},skills:{type:"boolean",default:!0,description:"Also refresh the installed agent skills / plugin / rules to this velloo's versions"}},async run({args}){let dryRun=args["dry-run"]||args.check,folders=args["binary-only"]?[]:await targetFolders(args.design),outcome=null;if(!(args["design-only"]||args["folder-only"]===!0))try{outcome=await upgradeInstalledVelloo({checkOnly:dryRun})}catch(error){let message=error instanceof Error?error.message:String(error);if(folders.length===0)fail("upgrade",message);console.log(import_picocolors.default.dim(`velloo: skipping the self-upgrade \u2014 ${message}`))}if(folders.length===0)return;if(outcome?.upgraded){let bin=installedVellooBin();if(bin){for(let folder of folders){let argv=[bin,"upgrade",folder,"--design-only",...args.skills?[]:["--no-skills"]];if(await Bun.spawn(argv,{stdin:"inherit",stdout:"inherit",stderr:"inherit",env:{...process.env,VELLOO_DISABLE_UPDATE_CHECK:"1"}}).exited!==0)fail("upgrade",`the upgraded velloo could not migrate ${folder}`)}return}console.log(import_picocolors.default.dim(`velloo: could not locate the upgraded velloo \u2014 run \`velloo upgrade\` again to migrate ${folders.length===1?"the design":"the designs"}.`));return}for(let folder of folders)await migrateFolder2(folder,{dryRun,skills:args.skills})}});async function migrateFolder2(folder,opts){let{dryRun}=opts,progress=createProgress();progress.start(dryRun?"checking upgrade":"preparing upgrade");let stopped=!1,result;try{if(!dryRun){let root=daemonRoot(folder),running=await readLock(root);if(running&&await isLive(running))progress.step("stopping running canvas");stopped=await stopDaemon(root)}progress.step(dryRun?"checking design folder":"upgrading design folder"),result=await upgradeFolder(folder,{dryRun})}catch(err){progress.fail("upgrade failed"),fail("upgrade",err instanceof Error?err.message:String(err))}let refreshed=[],repinned=[];try{let name=recordedDesignName(folder);if(!dryRun&&name)repinned=await repinAgentConfigs({projectRoots:await agentRootCandidates(folder),designFolder:folder,names:[name]});if(opts.skills&&!dryRun){progress.step("refreshing agent guidance");let projectRoots=await agentRootCandidates(folder);({refreshed}=await refreshAgentArtifacts({projectRoots,designFolder:folder}))}progress.succeed(dryRun?"upgrade check complete":"upgrade complete")}catch(error){throw progress.fail("upgrade failed"),error}if(stopped)console.log("velloo: stopped the running canvas for this folder.");if(result.applied.length===0){console.log(`velloo: ${folder} is already at schema version ${CURRENT_SCHEMA_VERSION}.`);for(let file of result.changedFiles)console.log(` ${dryRun?"~":"\u2713"} ${file} (designs list format)`)}else{console.log(`velloo: ${dryRun?"would migrate":"migrated"} ${folder} from schema version ${result.from} to ${result.to}:`);for(let step of result.applied)console.log(` - ${step}`);for(let file of result.changedFiles)console.log(` ${dryRun?"~":"\u2713"} ${file}`);if(!dryRun)console.log("velloo: folder validated against the current schemas.")}if(repinned.length>0){console.log(""),console.log(import_picocolors.default.green("\u2713 Agent MCP configs now find the design without naming it:"));for(let path of repinned)console.log(` ${import_picocolors.default.cyan(path)}`)}if(refreshed.length>0){console.log(""),console.log(import_picocolors.default.green("\u2713 Refreshed agent guidance to this velloo:"));for(let line of refreshed)console.log(` ${import_picocolors.default.cyan(line)}`)}}
3
3
  export{repinAgentConfigs,upgrade_default,migrateFolder2};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- var package_default={name:"@velloo/cli",version:"0.5.0",license:"Apache-2.0",private:!0,type:"module",description:"Velloo CLI",bin:{velloo:"./src/cli.ts"},exports:{".":"./src/cli.ts"},engines:{bun:">=1.4.0"},scripts:{build:"bun run build.ts"},dependencies:{"@clack/prompts":"1.7.0","@velloo/canvas":"workspace:*","@velloo/codegen":"workspace:*","@velloo/protocol":"workspace:*","@velloo/provider":"workspace:*","@velloo/provider-antd":"workspace:*","@velloo/provider-chakra":"workspace:*","@velloo/provider-html":"workspace:*","@velloo/provider-mui":"workspace:*","@velloo/provider-none":"workspace:*","@velloo/renderer":"workspace:*","@velloo/result":"workspace:*","@velloo/schema":"workspace:*","@velloo/server":"workspace:*","@velloo/shadcn-snapshot":"workspace:*",citty:"0.2.2",picocolors:"1.1.1",zod:"4.5.4"}};var PACKAGE_VERSION=package_default.version,TOOL_VERSION="0.5.0",BUILD_TIME_MS=1790768649755;
2
+ var package_default={name:"@velloo/cli",version:"0.7.0",license:"Apache-2.0",private:!0,type:"module",description:"Velloo CLI",bin:{velloo:"./src/cli.ts"},exports:{".":"./src/cli.ts"},engines:{bun:">=1.4.0"},scripts:{build:"bun run build.ts"},dependencies:{"@clack/prompts":"1.7.0","@velloo/canvas":"workspace:*","@velloo/codegen":"workspace:*","@velloo/protocol":"workspace:*","@velloo/provider":"workspace:*","@velloo/provider-antd":"workspace:*","@velloo/provider-chakra":"workspace:*","@velloo/provider-html":"workspace:*","@velloo/provider-mui":"workspace:*","@velloo/provider-none":"workspace:*","@velloo/renderer":"workspace:*","@velloo/result":"workspace:*","@velloo/schema":"workspace:*","@velloo/server":"workspace:*","@velloo/shadcn-snapshot":"workspace:*",citty:"0.2.2",picocolors:"1.1.1",zod:"4.5.4"},devDependencies:{"@types/pngjs":"6.0.5",pngjs:"7.0.0",react:"19.2.8","react-dom":"19.2.8"}};var PACKAGE_VERSION=package_default.version,TOOL_VERSION="0.7.0",BUILD_TIME_MS=1791408265521;
3
3
  export{PACKAGE_VERSION,TOOL_VERSION,BUILD_TIME_MS};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{localDesignOf}from"./chunk-66qgm91k.js";import{TOOL_VERSION}from"./chunk-42bj6r30.js";import{isCancel,multiselect,log,select}from"./chunk-80fjfyha.js";import{manifestListing,findDesigns}from"./chunk-675tr675.js";import{require_picocolors}from"./chunk-jrsknzjt.js";import{__toESM}from"./chunk-2smsg2ct.js";import{existsSync}from"fs";import{homedir}from"os";import{dirname,join}from"path";var claudeEntry=(conn)=>conn.transport==="http"?{type:"http",url:conn.url}:{command:conn.command,args:conn.args},cursorEntry=(conn)=>conn.transport==="http"?{url:conn.url}:{command:conn.command,args:conn.args},codexEntry=cursorEntry,continueEntry=(conn)=>conn.transport==="http"?{name:"velloo",type:"streamable-http",url:conn.url}:{name:"velloo",type:"stdio",command:conn.command,args:conn.args},droidEntry=(conn)=>conn.transport==="http"?{type:"http",url:conn.url}:{type:"stdio",command:conn.command,args:conn.args,disabled:!1},geminiEntry=(conn)=>conn.transport==="http"?{httpUrl:conn.url}:{command:conn.command,args:conn.args},opencodeEntry=(conn)=>conn.transport==="http"?{type:"remote",url:conn.url,enabled:!0}:{type:"local",command:[conn.command,...conn.args],enabled:!0},vscodeEntry=(conn)=>conn.transport==="http"?{type:"http",url:conn.url}:{type:"stdio",command:conn.command,args:conn.args};function claudeDesktopConfigPath(homeDir){if(process.platform==="win32")return join(homeDir,"AppData","Roaming","Claude","claude_desktop_config.json");if(process.platform==="darwin")return join(homeDir,"Library","Application Support","Claude","claude_desktop_config.json");return join(homeDir,".config","Claude","claude_desktop_config.json")}var AGENTS={"claude-code":{id:"claude-code",label:"Claude Code (project)",scope:"project",format:"json",family:"claude-code",path:(root)=>join(root,".mcp.json"),entry:claudeEntry},cursor:{id:"cursor",label:"Cursor (project)",scope:"project",format:"json",family:"cursor",path:(root)=>join(root,".cursor","mcp.json"),entry:cursorEntry},codex:{id:"codex",label:"Codex CLI (project)",scope:"project",format:"codex-toml",path:(root)=>join(root,".codex","config.toml"),entry:codexEntry},continue:{id:"continue",label:"Continue (project)",scope:"project",format:"continue-block",path:(root)=>join(root,".continue","mcpServers","velloo.yaml"),entry:continueEntry},"claude-code-global":{id:"claude-code-global",label:"Claude Code (global)",scope:"global",format:"json",family:"claude-code",path:(_root,home)=>join(home,".claude.json"),entry:claudeEntry},"cursor-global":{id:"cursor-global",label:"Cursor (global)",scope:"global",format:"json",family:"cursor",path:(_root,home)=>join(home,".cursor","mcp.json"),entry:cursorEntry},"codex-global":{id:"codex-global",label:"Codex CLI (global)",scope:"global",format:"codex-toml",path:(_root,home)=>join(home,".codex","config.toml"),entry:codexEntry},"continue-global":{id:"continue-global",label:"Continue (global)",scope:"global",format:"continue-config",path:(_root,home)=>join(home,".continue","config.yaml"),entry:continueEntry},"claude-desktop":{id:"claude-desktop",label:"Claude Desktop",scope:"global",format:"json",gui:!0,path:(_root,home)=>claudeDesktopConfigPath(home),entry:claudeEntry},opencode:{id:"opencode",label:"opencode (project)",scope:"project",format:"opencode-json",path:(root)=>join(root,"opencode.json"),entry:opencodeEntry},"opencode-global":{id:"opencode-global",label:"opencode (global)",scope:"global",format:"opencode-json",path:(_root,home)=>join(home,".config","opencode","opencode.json"),entry:opencodeEntry},"droid-global":{id:"droid-global",label:"Droid (global)",scope:"global",format:"json",path:(_root,home)=>join(home,".factory","mcp.json"),entry:droidEntry},"cline-global":{id:"cline-global",label:"Cline (global)",scope:"global",format:"json",path:(_root,home)=>join(home,".cline","data","settings","cline_mcp_settings.json"),entry:cursorEntry},gemini:{id:"gemini",label:"Gemini CLI (project)",scope:"project",format:"json",path:(root)=>join(root,".gemini","settings.json"),entry:geminiEntry},"gemini-global":{id:"gemini-global",label:"Gemini CLI (global)",scope:"global",format:"json",path:(_root,home)=>join(home,".gemini","settings.json"),entry:geminiEntry},"windsurf-global":{id:"windsurf-global",label:"Windsurf (global)",scope:"global",format:"json",path:(_root,home)=>join(home,".codeium","windsurf","mcp_config.json"),entry:cursorEntry},vscode:{id:"vscode",label:"VS Code / Copilot (project)",scope:"project",format:"vscode-json",path:(root)=>join(root,".vscode","mcp.json"),entry:vscodeEntry}},AGENT_IDS=Object.keys(AGENTS),PROJECT_AGENT_IDS=["claude-code","cursor"],GLOBAL_AGENT_IDS=["claude-code-global","cursor-global"];function detectInstalledAgents(homeDir=homedir()){let has=(rel)=>existsSync(join(homeDir,rel)),found=[];if(Bun.which("claude")||has(".claude.json")||has(".claude"))found.push("claude-code-global");if(Bun.which("cursor-agent")||Bun.which("cursor")||has(".cursor"))found.push("cursor-global");if(Bun.which("codex")||has(".codex"))found.push("codex-global");if(has(".continue"))found.push("continue-global");if(existsSync(dirname(claudeDesktopConfigPath(homeDir))))found.push("claude-desktop");if(Bun.which("opencode")||has(join(".config","opencode")))found.push("opencode-global");if(Bun.which("droid")||has(".factory"))found.push("droid-global");if(Bun.which("cline")||has(".cline"))found.push("cline-global");if(Bun.which("gemini")||has(join(".gemini","settings.json")))found.push("gemini-global");if(has(join(".codeium","windsurf")))found.push("windsurf-global");return found}import{existsSync as existsSync2,realpathSync}from"fs";import{access}from"fs/promises";import{dirname as dirname2,join as join2,parse,relative,resolve,sep}from"path";async function resolveProjectRoot(designFolder,override){if(override)return override;let local=localDesignOf(designFolder);if(local)return local.root;let registered=await registeringManifest(designFolder);if(registered)return registered.dir;return nearestPackageRoot(designFolder)}async function designArgumentFor(projectRoot,designFolder){let set=await findDesigns(projectRoot).catch(()=>null),target=realOr(designFolder);if(set?.designs.some((d)=>!d.outsideRepo&&realOr(d.root)===target))return null;return relative(projectRoot,designFolder).split(sep).join("/")||"."}function realOr(path){return existsSync2(path)?realpathSync(path):resolve(path)}async function agentRootCandidates(designFolder){if(localDesignOf(designFolder))return[];let roots=[await resolveProjectRoot(designFolder)];return roots.push(await nearestPackageRoot(designFolder)),[...new Set(roots)]}async function registeringManifest(designFolder){let abs=resolve(designFolder),found;try{found=await manifestListing(abs)}catch{return null}if(!found)return null;let real=existsSync2(abs)?realpathSync(abs):abs;return found.folders.some((folder)=>folder===abs||existsSync2(folder)&&realpathSync(folder)===real)?found:null}async function nearestPackageRoot(designFolder){let fallback=dirname2(designFolder),dir=fallback,fsRoot=parse(dir).root;for(let i=0;i<8;i++){try{return await access(join2(dir,"package.json")),dir}catch{}if(dir===fsRoot)break;dir=dirname2(dir)}return fallback}import{existsSync as existsSync5}from"fs";import{homedir as homedir3}from"os";import{join as join6}from"path";import{mkdir,writeFile}from"fs/promises";import{dirname as dirname3,join as join3}from"path";async function installCursorRules(projectRoot,designFolder){let pinned=await designArgumentFor(projectRoot,designFolder),arg=pinned?` ${pinned}`:"",body=`---
2
+ import{localDesignOf}from"./chunk-brnkprt5.js";import{TOOL_VERSION}from"./chunk-3m28pvzr.js";import{isCancel,multiselect,log,select}from"./chunk-80fjfyha.js";import{manifestListing,findDesigns}from"./chunk-64pex3mw.js";import{BUN_RUNTIME_FLAGS}from"./chunk-skk6yvnw.js";import{require_picocolors}from"./chunk-jrsknzjt.js";import{__toESM}from"./chunk-2smsg2ct.js";import{existsSync}from"fs";import{homedir}from"os";import{dirname,join}from"path";var claudeEntry=(conn)=>conn.transport==="http"?{type:"http",url:conn.url}:{command:conn.command,args:conn.args},cursorEntry=(conn)=>conn.transport==="http"?{url:conn.url}:{command:conn.command,args:conn.args},codexEntry=cursorEntry,continueEntry=(conn)=>conn.transport==="http"?{name:"velloo",type:"streamable-http",url:conn.url}:{name:"velloo",type:"stdio",command:conn.command,args:conn.args},droidEntry=(conn)=>conn.transport==="http"?{type:"http",url:conn.url}:{type:"stdio",command:conn.command,args:conn.args,disabled:!1},geminiEntry=(conn)=>conn.transport==="http"?{httpUrl:conn.url}:{command:conn.command,args:conn.args},opencodeEntry=(conn)=>conn.transport==="http"?{type:"remote",url:conn.url,enabled:!0}:{type:"local",command:[conn.command,...conn.args],enabled:!0},vscodeEntry=(conn)=>conn.transport==="http"?{type:"http",url:conn.url}:{type:"stdio",command:conn.command,args:conn.args};function claudeDesktopConfigPath(homeDir){if(process.platform==="win32")return join(homeDir,"AppData","Roaming","Claude","claude_desktop_config.json");if(process.platform==="darwin")return join(homeDir,"Library","Application Support","Claude","claude_desktop_config.json");return join(homeDir,".config","Claude","claude_desktop_config.json")}var AGENTS={"claude-code":{id:"claude-code",label:"Claude Code (project)",scope:"project",format:"json",family:"claude-code",path:(root)=>join(root,".mcp.json"),entry:claudeEntry},cursor:{id:"cursor",label:"Cursor (project)",scope:"project",format:"json",family:"cursor",path:(root)=>join(root,".cursor","mcp.json"),entry:cursorEntry},codex:{id:"codex",label:"Codex CLI (project)",scope:"project",format:"codex-toml",path:(root)=>join(root,".codex","config.toml"),entry:codexEntry},continue:{id:"continue",label:"Continue (project)",scope:"project",format:"continue-block",path:(root)=>join(root,".continue","mcpServers","velloo.yaml"),entry:continueEntry},"claude-code-global":{id:"claude-code-global",label:"Claude Code (global)",scope:"global",format:"json",family:"claude-code",path:(_root,home)=>join(home,".claude.json"),entry:claudeEntry},"cursor-global":{id:"cursor-global",label:"Cursor (global)",scope:"global",format:"json",family:"cursor",path:(_root,home)=>join(home,".cursor","mcp.json"),entry:cursorEntry},"codex-global":{id:"codex-global",label:"Codex CLI (global)",scope:"global",format:"codex-toml",path:(_root,home)=>join(home,".codex","config.toml"),entry:codexEntry},"continue-global":{id:"continue-global",label:"Continue (global)",scope:"global",format:"continue-config",path:(_root,home)=>join(home,".continue","config.yaml"),entry:continueEntry},"claude-desktop":{id:"claude-desktop",label:"Claude Desktop",scope:"global",format:"json",gui:!0,path:(_root,home)=>claudeDesktopConfigPath(home),entry:claudeEntry},opencode:{id:"opencode",label:"opencode (project)",scope:"project",format:"opencode-json",path:(root)=>join(root,"opencode.json"),entry:opencodeEntry},"opencode-global":{id:"opencode-global",label:"opencode (global)",scope:"global",format:"opencode-json",path:(_root,home)=>join(home,".config","opencode","opencode.json"),entry:opencodeEntry},"droid-global":{id:"droid-global",label:"Droid (global)",scope:"global",format:"json",path:(_root,home)=>join(home,".factory","mcp.json"),entry:droidEntry},"cline-global":{id:"cline-global",label:"Cline (global)",scope:"global",format:"json",path:(_root,home)=>join(home,".cline","data","settings","cline_mcp_settings.json"),entry:cursorEntry},gemini:{id:"gemini",label:"Gemini CLI (project)",scope:"project",format:"json",path:(root)=>join(root,".gemini","settings.json"),entry:geminiEntry},"gemini-global":{id:"gemini-global",label:"Gemini CLI (global)",scope:"global",format:"json",path:(_root,home)=>join(home,".gemini","settings.json"),entry:geminiEntry},"windsurf-global":{id:"windsurf-global",label:"Windsurf (global)",scope:"global",format:"json",path:(_root,home)=>join(home,".codeium","windsurf","mcp_config.json"),entry:cursorEntry},vscode:{id:"vscode",label:"VS Code / Copilot (project)",scope:"project",format:"vscode-json",path:(root)=>join(root,".vscode","mcp.json"),entry:vscodeEntry}},AGENT_IDS=Object.keys(AGENTS),PROJECT_AGENT_IDS=["claude-code","cursor"],GLOBAL_AGENT_IDS=["claude-code-global","cursor-global"];function detectInstalledAgents(homeDir=homedir()){let has=(rel)=>existsSync(join(homeDir,rel)),found=[];if(Bun.which("claude")||has(".claude.json")||has(".claude"))found.push("claude-code-global");if(Bun.which("cursor-agent")||Bun.which("cursor")||has(".cursor"))found.push("cursor-global");if(Bun.which("codex")||has(".codex"))found.push("codex-global");if(has(".continue"))found.push("continue-global");if(existsSync(dirname(claudeDesktopConfigPath(homeDir))))found.push("claude-desktop");if(Bun.which("opencode")||has(join(".config","opencode")))found.push("opencode-global");if(Bun.which("droid")||has(".factory"))found.push("droid-global");if(Bun.which("cline")||has(".cline"))found.push("cline-global");if(Bun.which("gemini")||has(join(".gemini","settings.json")))found.push("gemini-global");if(has(join(".codeium","windsurf")))found.push("windsurf-global");return found}import{existsSync as existsSync2,realpathSync}from"fs";import{access}from"fs/promises";import{dirname as dirname2,join as join2,parse,relative,resolve,sep}from"path";async function resolveProjectRoot(designFolder,override){if(override)return override;let local=localDesignOf(designFolder);if(local)return local.root;let registered=await registeringManifest(designFolder);if(registered)return registered.dir;return nearestPackageRoot(designFolder)}async function designArgumentFor(projectRoot,designFolder){let set=await findDesigns(projectRoot).catch(()=>null),target=realOr(designFolder);if(set?.designs.some((d)=>!d.outsideRepo&&realOr(d.root)===target))return null;return relative(projectRoot,designFolder).split(sep).join("/")||"."}function realOr(path){return existsSync2(path)?realpathSync(path):resolve(path)}async function agentRootCandidates(designFolder){if(localDesignOf(designFolder))return[];let roots=[await resolveProjectRoot(designFolder)];return roots.push(await nearestPackageRoot(designFolder)),[...new Set(roots)]}async function registeringManifest(designFolder){let abs=resolve(designFolder),found;try{found=await manifestListing(abs)}catch{return null}if(!found)return null;let real=existsSync2(abs)?realpathSync(abs):abs;return found.folders.some((folder)=>folder===abs||existsSync2(folder)&&realpathSync(folder)===real)?found:null}async function nearestPackageRoot(designFolder){let fallback=dirname2(designFolder),dir=fallback,fsRoot=parse(dir).root;for(let i=0;i<8;i++){try{return await access(join2(dir,"package.json")),dir}catch{}if(dir===fsRoot)break;dir=dirname2(dir)}return fallback}import{existsSync as existsSync5}from"fs";import{homedir as homedir3}from"os";import{join as join6}from"path";import{mkdir,writeFile}from"fs/promises";import{dirname as dirname3,join as join3}from"path";async function installCursorRules(projectRoot,designFolder){let pinned=await designArgumentFor(projectRoot,designFolder),arg=pinned?` ${pinned}`:"",body=`---
3
3
  description: Drive UI design through the Velloo MCP server (a local design canvas backed by this project's shadcn components).
4
4
  alwaysApply: false
5
5
  ---
@@ -36,5 +36,5 @@ Velloo is a local, code-shaped design canvas exposed over MCP. ${pinned?`The des
36
36
  `;return Bun.TOML.parse(content),content}function toYaml(value){let yaml=Bun.YAML.stringify(value,null,2).replace(/[ \t]+$/gm,"");return yaml.endsWith(`
37
37
  `)?yaml:`${yaml}
38
38
  `}function continueBlockFile(entry){let version=TOOL_VERSION.split(" ")[0]??"0.0.0";return toYaml({name:"velloo",version,schema:"v1",mcpServers:[entry]})}function mergeContinueConfig(existing,entry,path){let doc={name:"Local Assistant",version:"1.0.0",schema:"v1"};if(existing!==null&&existing.trim()!==""){let parsed;try{parsed=Bun.YAML.parse(existing)}catch(err){throw invalidConfig(path,"YAML",err)}if(parsed===null||typeof parsed!=="object"||Array.isArray(parsed))throw invalidConfig(path,"YAML",Error("expected a top-level mapping"));doc=parsed}let others=(Array.isArray(doc.mcpServers)?doc.mcpServers:[]).filter((s)=>!(s!==null&&typeof s==="object"&&s.name==="velloo"));return toYaml({...doc,mcpServers:[...others,entry]})}var MANUAL_AGENT_ID="manual";function manualSetupText(){return["velloo speaks MCP over stdio (recommended) or HTTP \u2014 any MCP-capable agent can connect.","","stdio \u2014 the agent spawns the server itself:",' command: "velloo" args: ["mcp"]',` (resolves the design folder from the agent's cwd; pin one with ["mcp", "path/to/velloo"])`,""," Most agents take the JSON convention:",' { "mcpServers": { "velloo": { "command": "velloo", "args": ["mcp"] } } }',"","HTTP \u2014 for agents that dial a URL: `velloo mcp --http <design>` prints the URL of the","running canvas's MCP server, then point the agent at it:",' { "mcpServers": { "velloo": { "type": "http", "url": "<the printed URL>" } } }'," The port changes whenever the canvas restarts, so prefer stdio where the agent allows it."].join(`
39
- `)}function baseLabel(id){return(AGENTS[id]?.label??id).replace(/\s*\((?:project|global)\)$/,"")}function projectVariantOf(id){let agent=AGENTS[id];if(!agent)return;if(agent.scope==="project")return id;let candidate=id.replace(/-global$/,"");return candidate!==id&&AGENTS[candidate]?candidate:void 0}async function askAgentWiring(opts){let preWired=await globallyWiredAgents(),projectWired=opts?.projectRoot&&!opts.globalOnly?await projectWiredAgents(opts.projectRoot):[],detected=detectInstalledAgents(),fallback=detected.length===0,wanted=fallback?GLOBAL_AGENT_IDS:detected,missing=wanted.filter((id)=>!preWired.includes(id)),alreadyWired=[...new Set([...preWired,...projectWired])];if(projectWired.length>0)log.info(`Already wired for this project: ${projectWired.map(baseLabel).join(", ")} ${import_picocolors.default.dim("(re-wiring is a no-op merge)")}`);if(preWired.length>0){let labels=preWired.map(baseLabel).join(", ");if(opts?.skipWhenCovered&&missing.length===0)return log.success(`velloo is already wired globally \u2014 ${labels} ${import_picocolors.default.dim("(covers this project; skipping agent setup)")}`),{agents:[],manual:!1,preWired:alreadyWired};log.info(`Already wired globally: ${labels} ${import_picocolors.default.dim("(covers this project)")}`)}log.info(fallback?`No coding agents detected on this machine \u2014 offering the defaults (${wanted.map(baseLabel).join(", ")}).`:`Coding agents detected: ${detected.map(baseLabel).join(", ")}`);let targets=missing.length>0?missing:wanted,names=targets.map(baseLabel).join(", "),projectTargets=opts?.globalOnly?[]:targets.map(projectVariantOf).filter((id)=>Boolean(id));if(opts?.globalOnly)log.info(import_picocolors.default.dim("This design lives outside the repository, so only global agent configs are offered \u2014 nothing is written into the checkout."));let mode=await select({message:"Wire the velloo MCP into your coding agents?",options:[{value:"global",label:`Install globally \u2014 ${names}`,hint:"recommended \u2014 one config covers every project"},...projectTargets.length>0?[{value:"project",label:"Install for this project only",hint:projectTargets.map(baseLabel).join(", ")}]:[],{value:"choose",label:"Let me pick agents",hint:"the full list"},{value:"manual",label:"Manual MCP setup instructions",hint:"prints the config to paste into any agent"},{value:"skip",label:"Don't install now",hint:"wire later with `velloo connect`"}],initialValue:"global"});if(isCancel(mode))return null;if(mode==="skip")return{agents:[],manual:!1,preWired:alreadyWired};if(mode==="manual")return{agents:[],manual:!0,preWired:alreadyWired};if(mode==="global")return{agents:targets,manual:!1,preWired:alreadyWired};if(mode==="project")return{agents:projectTargets,manual:!1,preWired:alreadyWired};let picked=await pickAgents({exclude:[...opts?.skipWhenCovered?preWired:[],...opts?.globalOnly?Object.values(AGENTS).filter((agent)=>agent.scope==="project").map((agent)=>agent.id):[]],initial:[...new Set([...targets,...preWired,...projectWired])],wired:alreadyWired});if(picked===null)return null;return{agents:picked.filter((id)=>id!==MANUAL_AGENT_ID),manual:picked.includes(MANUAL_AGENT_ID),preWired:alreadyWired}}async function pickAgents(opts){let exclude=new Set(opts?.exclude??[]),wired=new Set(opts?.wired??[]),agents=Object.values(AGENTS).filter((a)=>!exclude.has(a.id)).sort((a,b)=>a.scope===b.scope?0:a.scope==="global"?-1:1),detected=detectInstalledAgents(),initial=(opts?.initial??(detected.length>0?detected:GLOBAL_AGENT_IDS)).filter((id)=>!exclude.has(id)),picked=await multiselect({message:"Wire the velloo MCP into which agents?",options:[...agents.map((a)=>({value:a.id,label:a.label,hint:wired.has(a.id)?`already wired \u2014 ${a.path(".","~")}`:a.path(".","~")})),{value:MANUAL_AGENT_ID,label:"Manual / other agent",hint:"prints the MCP config to paste anywhere"}],initialValues:initial,required:!1});return isCancel(picked)?null:picked}function hasVellooEntry(content,format){try{switch(format){case"json":{let parsed=JSON.parse(content);return Boolean(parsed.mcpServers&&"velloo"in parsed.mcpServers)}case"codex-toml":return/^\s*\[\s*mcp_servers\s*\.\s*(?:"velloo"|velloo)\s*(?:\]|\.)/m.test(content);case"continue-block":return!0;case"continue-config":{let doc=Bun.YAML.parse(content);return Array.isArray(doc?.mcpServers)&&doc.mcpServers.some((s)=>s!==null&&typeof s==="object"&&s.name==="velloo")}case"opencode-json":{let parsed=JSON.parse(content);return Boolean(parsed.mcp&&"velloo"in parsed.mcp)}case"vscode-json":{let parsed=JSON.parse(content);return Boolean(parsed.servers&&"velloo"in parsed.servers)}}}catch{return!1}}async function projectWiredAgents(projectRoot){let out=[];for(let agent of Object.values(AGENTS)){if(agent.scope!=="project")continue;let content;try{content=await readFile3(agent.path(projectRoot,homedir4()),"utf8")}catch{continue}if(hasVellooEntry(content,agent.format))out.push(agent.id)}return out}async function globallyWiredAgents(homeDir=homedir4()){let out=[];for(let agent of Object.values(AGENTS)){if(agent.scope!=="global")continue;let content;try{content=await readFile3(agent.path(".",homeDir),"utf8")}catch{continue}if(hasVellooEntry(content,agent.format))out.push(agent.id)}return out}function localDesignScopeProblem(folder,agents){if(!localDesignOf(folder))return null;let refused=agents.filter((id)=>AGENTS[id]?.scope==="project");if(refused.length===0)return null;let globals=refused.map((id)=>`${id}-global`).filter((id)=>AGENTS[id]).join(", ");return`${refused.join(", ")} ${refused.length===1?"writes":"write"} into the checkout, and ${folder} is a local design outside it \u2014 only global configs are allowed${globals?` (use ${globals})`:""}.`}async function connect(opts){let transport=opts.transport??"stdio",homeDir=opts.homeDir??homedir4(),projectRoot=await resolveProjectRoot(opts.designFolder,opts.projectRoot),local=localDesignOf(opts.designFolder)!==null,httpUrl=opts.mcpUrl;if(transport==="http"&&!httpUrl)throw Error("the HTTP transport needs the server URL: run `velloo mcp --http` and pass the URL it prints as --mcp-url");let designArg=await designArgumentFor(projectRoot,opts.designFolder),connectionFor=(agent)=>{if(transport==="http")return{transport:"http",url:httpUrl};if(agent.gui){let script=process.argv[1]?resolve2(process.argv[1]):Bun.which("velloo");return script?{transport:"stdio",command:process.execPath,args:[script,"mcp",resolve2(opts.designFolder)]}:{transport:"stdio",command:"velloo",args:["mcp",resolve2(opts.designFolder)]}}return{transport:"stdio",command:"velloo",args:agent.scope==="project"&&designArg?["mcp",designArg]:["mcp"]}},configs=[],unknownAgents=[],projectScoped=[];for(let id of opts.agents){let agent=AGENTS[id];if(!agent){unknownAgents.push(id);continue}if(local&&agent.scope==="project"){projectScoped.push(id);continue}configs.push(await writeAgentConfig(projectRoot,agent,connectionFor(agent),homeDir))}let hasFamily=(family)=>opts.agents.some((id)=>AGENTS[id]?.family===family),hasAny=(...ids)=>opts.agents.some((id)=>ids.includes(id)),plugin=opts.installSkill&&hasFamily("claude-code")?await installClaudePlugin(homeDir)??void 0:void 0,skills=opts.installSkill&&!local&&hasAny("opencode","opencode-global","droid-global","cline-global","gemini","gemini-global","codex","codex-global")?await installSkills(projectRoot):void 0,geminiExtension=opts.installSkill&&hasAny("gemini","gemini-global")?await installGeminiExtension(homeDir)??void 0:void 0,cursorRules=opts.installSkill&&!local&&hasFamily("cursor")?await installCursorRules(projectRoot,opts.designFolder):void 0;return{projectRoot,transport,configs,skills,plugin,geminiExtension,cursorRules,unknownAgents,projectScoped}}
39
+ `)}function baseLabel(id){return(AGENTS[id]?.label??id).replace(/\s*\((?:project|global)\)$/,"")}function projectVariantOf(id){let agent=AGENTS[id];if(!agent)return;if(agent.scope==="project")return id;let candidate=id.replace(/-global$/,"");return candidate!==id&&AGENTS[candidate]?candidate:void 0}async function askAgentWiring(opts){let preWired=await globallyWiredAgents(),projectWired=opts?.projectRoot&&!opts.globalOnly?await projectWiredAgents(opts.projectRoot):[],detected=detectInstalledAgents(),fallback=detected.length===0,wanted=fallback?GLOBAL_AGENT_IDS:detected,missing=wanted.filter((id)=>!preWired.includes(id)),alreadyWired=[...new Set([...preWired,...projectWired])];if(projectWired.length>0)log.info(`Already wired for this project: ${projectWired.map(baseLabel).join(", ")} ${import_picocolors.default.dim("(re-wiring is a no-op merge)")}`);if(preWired.length>0){let labels=preWired.map(baseLabel).join(", ");if(opts?.skipWhenCovered&&missing.length===0)return log.success(`velloo is already wired globally \u2014 ${labels} ${import_picocolors.default.dim("(covers this project; skipping agent setup)")}`),{agents:[],manual:!1,preWired:alreadyWired};log.info(`Already wired globally: ${labels} ${import_picocolors.default.dim("(covers this project)")}`)}log.info(fallback?`No coding agents detected on this machine \u2014 offering the defaults (${wanted.map(baseLabel).join(", ")}).`:`Coding agents detected: ${detected.map(baseLabel).join(", ")}`);let targets=missing.length>0?missing:wanted,names=targets.map(baseLabel).join(", "),projectTargets=opts?.globalOnly?[]:targets.map(projectVariantOf).filter((id)=>Boolean(id));if(opts?.globalOnly)log.info(import_picocolors.default.dim("This design lives outside the repository, so only global agent configs are offered \u2014 nothing is written into the checkout."));let mode=await select({message:"Wire the velloo MCP into your coding agents?",options:[{value:"global",label:`Install globally \u2014 ${names}`,hint:"recommended \u2014 one config covers every project"},...projectTargets.length>0?[{value:"project",label:"Install for this project only",hint:projectTargets.map(baseLabel).join(", ")}]:[],{value:"choose",label:"Let me pick agents",hint:"the full list"},{value:"manual",label:"Manual MCP setup instructions",hint:"prints the config to paste into any agent"},{value:"skip",label:"Don't install now",hint:"wire later with `velloo connect`"}],initialValue:"global"});if(isCancel(mode))return null;if(mode==="skip")return{agents:[],manual:!1,preWired:alreadyWired};if(mode==="manual")return{agents:[],manual:!0,preWired:alreadyWired};if(mode==="global")return{agents:targets,manual:!1,preWired:alreadyWired};if(mode==="project")return{agents:projectTargets,manual:!1,preWired:alreadyWired};let picked=await pickAgents({exclude:[...opts?.skipWhenCovered?preWired:[],...opts?.globalOnly?Object.values(AGENTS).filter((agent)=>agent.scope==="project").map((agent)=>agent.id):[]],initial:[...new Set([...targets,...preWired,...projectWired])],wired:alreadyWired});if(picked===null)return null;return{agents:picked.filter((id)=>id!==MANUAL_AGENT_ID),manual:picked.includes(MANUAL_AGENT_ID),preWired:alreadyWired}}async function pickAgents(opts){let exclude=new Set(opts?.exclude??[]),wired=new Set(opts?.wired??[]),agents=Object.values(AGENTS).filter((a)=>!exclude.has(a.id)).sort((a,b)=>a.scope===b.scope?0:a.scope==="global"?-1:1),detected=detectInstalledAgents(),initial=(opts?.initial??(detected.length>0?detected:GLOBAL_AGENT_IDS)).filter((id)=>!exclude.has(id)),picked=await multiselect({message:"Wire the velloo MCP into which agents?",options:[...agents.map((a)=>({value:a.id,label:a.label,hint:wired.has(a.id)?`already wired \u2014 ${a.path(".","~")}`:a.path(".","~")})),{value:MANUAL_AGENT_ID,label:"Manual / other agent",hint:"prints the MCP config to paste anywhere"}],initialValues:initial,required:!1});return isCancel(picked)?null:picked}function hasVellooEntry(content,format){try{switch(format){case"json":{let parsed=JSON.parse(content);return Boolean(parsed.mcpServers&&"velloo"in parsed.mcpServers)}case"codex-toml":return/^\s*\[\s*mcp_servers\s*\.\s*(?:"velloo"|velloo)\s*(?:\]|\.)/m.test(content);case"continue-block":return!0;case"continue-config":{let doc=Bun.YAML.parse(content);return Array.isArray(doc?.mcpServers)&&doc.mcpServers.some((s)=>s!==null&&typeof s==="object"&&s.name==="velloo")}case"opencode-json":{let parsed=JSON.parse(content);return Boolean(parsed.mcp&&"velloo"in parsed.mcp)}case"vscode-json":{let parsed=JSON.parse(content);return Boolean(parsed.servers&&"velloo"in parsed.servers)}}}catch{return!1}}async function projectWiredAgents(projectRoot){let out=[];for(let agent of Object.values(AGENTS)){if(agent.scope!=="project")continue;let content;try{content=await readFile3(agent.path(projectRoot,homedir4()),"utf8")}catch{continue}if(hasVellooEntry(content,agent.format))out.push(agent.id)}return out}async function globallyWiredAgents(homeDir=homedir4()){let out=[];for(let agent of Object.values(AGENTS)){if(agent.scope!=="global")continue;let content;try{content=await readFile3(agent.path(".",homeDir),"utf8")}catch{continue}if(hasVellooEntry(content,agent.format))out.push(agent.id)}return out}function localDesignScopeProblem(folder,agents){if(!localDesignOf(folder))return null;let refused=agents.filter((id)=>AGENTS[id]?.scope==="project");if(refused.length===0)return null;let globals=refused.map((id)=>`${id}-global`).filter((id)=>AGENTS[id]).join(", ");return`${refused.join(", ")} ${refused.length===1?"writes":"write"} into the checkout, and ${folder} is a local design outside it \u2014 only global configs are allowed${globals?` (use ${globals})`:""}.`}async function connect(opts){let transport=opts.transport??"stdio",homeDir=opts.homeDir??homedir4(),projectRoot=await resolveProjectRoot(opts.designFolder,opts.projectRoot),local=localDesignOf(opts.designFolder)!==null,httpUrl=opts.mcpUrl;if(transport==="http"&&!httpUrl)throw Error("the HTTP transport needs the server URL: run `velloo mcp --http` and pass the URL it prints as --mcp-url");let designArg=await designArgumentFor(projectRoot,opts.designFolder),connectionFor=(agent)=>{if(transport==="http")return{transport:"http",url:httpUrl};if(agent.gui){let script=process.argv[1]?resolve2(process.argv[1]):Bun.which("velloo");return script?{transport:"stdio",command:process.execPath,args:[...BUN_RUNTIME_FLAGS,script,"mcp",resolve2(opts.designFolder)]}:{transport:"stdio",command:"velloo",args:["mcp",resolve2(opts.designFolder)]}}return{transport:"stdio",command:"velloo",args:agent.scope==="project"&&designArg?["mcp",designArg]:["mcp"]}},configs=[],unknownAgents=[],projectScoped=[];for(let id of opts.agents){let agent=AGENTS[id];if(!agent){unknownAgents.push(id);continue}if(local&&agent.scope==="project"){projectScoped.push(id);continue}configs.push(await writeAgentConfig(projectRoot,agent,connectionFor(agent),homeDir))}let hasFamily=(family)=>opts.agents.some((id)=>AGENTS[id]?.family===family),hasAny=(...ids)=>opts.agents.some((id)=>ids.includes(id)),plugin=opts.installSkill&&hasFamily("claude-code")?await installClaudePlugin(homeDir)??void 0:void 0,skills=opts.installSkill&&!local&&hasAny("opencode","opencode-global","droid-global","cline-global","gemini","gemini-global","codex","codex-global")?await installSkills(projectRoot):void 0,geminiExtension=opts.installSkill&&hasAny("gemini","gemini-global")?await installGeminiExtension(homeDir)??void 0:void 0,cursorRules=opts.installSkill&&!local&&hasFamily("cursor")?await installCursorRules(projectRoot,opts.designFolder):void 0;return{projectRoot,transport,configs,skills,plugin,geminiExtension,cursorRules,unknownAgents,projectScoped}}
40
40
  export{AGENTS,AGENT_IDS,PROJECT_AGENT_IDS,GLOBAL_AGENT_IDS,resolveProjectRoot,designArgumentFor,agentRootCandidates,writeAgentConfig,refreshAgentArtifacts,MANUAL_AGENT_ID,manualSetupText,askAgentWiring,globallyWiredAgents,localDesignScopeProblem,connect};