velloo 0.1.0 → 0.3.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 (114) hide show
  1. package/README.md +67 -41
  2. package/canvas/assets/index-CqXW6xA_.js +29 -0
  3. package/canvas/assets/index-gB0StCrx.css +2 -0
  4. package/canvas/assets/lucide-all-C_CNpsMs.js +1 -0
  5. package/canvas/assets/{radix-C3HaOB-d.js → radix-gmpYzWRH.js} +1 -1
  6. package/canvas/index.html +3 -3
  7. package/chunk-0zen7bzb.js +3 -0
  8. package/{chunk-h0c36khx.js → chunk-1jzhw3p4.js} +1 -1
  9. package/chunk-1n5kmsxb.js +2 -0
  10. package/{chunk-k6ferbam.js → chunk-2fgfex9b.js} +1 -1
  11. package/{chunk-t2ttkxe9.js → chunk-3g3dqej3.js} +1 -1
  12. package/chunk-3tmsrvaj.js +2 -0
  13. package/chunk-49cgk5s2.js +2 -0
  14. package/{chunk-e2ag33vd.js → chunk-4nqr089t.js} +2 -2
  15. package/chunk-52hxv18g.js +6 -0
  16. package/chunk-5ezzc1h2.js +688 -0
  17. package/{chunk-74skmg76.js → chunk-5wv5a52y.js} +1 -1
  18. package/chunk-6nzqhfqq.js +5 -0
  19. package/{chunk-fgw3hp2v.js → chunk-6zz9kfbd.js} +1 -1
  20. package/chunk-788t8y5x.js +2 -0
  21. package/chunk-7bvvbsqy.js +26 -0
  22. package/{chunk-cep3ktr3.js → chunk-7k7dpj5y.js} +1 -1
  23. package/{chunk-hs2j6s1v.js → chunk-7njj1qmq.js} +8 -31
  24. package/{chunk-8ssr8a8w.js → chunk-80fjfyha.js} +3 -6
  25. package/chunk-94vx1yb0.js +3 -0
  26. package/{chunk-n5007jcz.js → chunk-9f22qnge.js} +1 -1
  27. package/chunk-9g4tr0r6.js +2 -0
  28. package/{chunk-1gx45384.js → chunk-9nhw49vv.js} +7 -8
  29. package/{chunk-2z0k59hz.js → chunk-as08hzp3.js} +1 -1
  30. package/chunk-bhx8k09w.js +3 -0
  31. package/chunk-bpeezw7w.js +3 -0
  32. package/{chunk-b2ebm1t3.js → chunk-bvmtq0vn.js} +2 -2
  33. package/{chunk-w5rzk6ms.js → chunk-c4fym47a.js} +64 -20
  34. package/{chunk-d385435m.js → chunk-c6hywdvq.js} +1 -1
  35. package/{chunk-jnsfgtn9.js → chunk-cvn689d5.js} +1 -1
  36. package/chunk-cxzkkn12.js +2 -0
  37. package/{chunk-56vqqr8s.js → chunk-d9p6s05n.js} +1 -1
  38. package/{chunk-5js0qw32.js → chunk-dsks52m7.js} +1 -1
  39. package/{chunk-b7j86xq7.js → chunk-hfzg98c8.js} +1 -1
  40. package/{chunk-7e39xe21.js → chunk-js6mz7h1.js} +1 -1
  41. package/chunk-jx11jvq8.js +7 -0
  42. package/{chunk-2vx420g2.js → chunk-k6n249vb.js} +2 -2
  43. package/chunk-k7sehkm8.js +3 -0
  44. package/{chunk-k784090q.js → chunk-k9219kmj.js} +1 -1
  45. package/{chunk-65wb0g7d.js → chunk-kz4423th.js} +1 -1
  46. package/{chunk-g02nd9hn.js → chunk-m3czg1tt.js} +1 -1
  47. package/chunk-maz6z7tz.js +5 -0
  48. package/{chunk-rksq3w72.js → chunk-n9kcxaj7.js} +2 -2
  49. package/chunk-n9t36h0q.js +2 -0
  50. package/chunk-nr3ej3qf.js +5 -0
  51. package/{chunk-bk8b7f9a.js → chunk-nte0t7v3.js} +4 -3
  52. package/{chunk-kxk5x7g6.js → chunk-nycs0z7h.js} +1 -1
  53. package/{chunk-79ykzywe.js → chunk-pjtg3wnm.js} +1 -1
  54. package/chunk-qdnb2t6a.js +3 -0
  55. package/chunk-qgwhd4n6.js +86 -0
  56. package/chunk-sn9vg42q.js +2 -0
  57. package/{chunk-7p7ha0qk.js → chunk-t5bb30zy.js} +1 -1
  58. package/chunk-tbmkq7wy.js +6 -0
  59. package/chunk-tc4mzzfw.js +2 -0
  60. package/chunk-td5z2sm4.js +6 -0
  61. package/chunk-wa6qamwh.js +3 -0
  62. package/chunk-wcqqx6tz.js +2 -0
  63. package/chunk-wzngjjeb.js +10 -0
  64. package/chunk-xyfed1j0.js +2 -0
  65. package/chunk-y5r2w2z3.js +2 -0
  66. package/chunk-yeh9gb5w.js +3 -0
  67. package/cli.js +1 -1
  68. package/launcher.cjs +1 -1
  69. package/package.json +3 -3
  70. package/pkgs/helpers/src/descriptors.ts +7 -1
  71. package/pkgs/provider-antd/src/index.ts +1 -0
  72. package/pkgs/provider-chakra/src/index.ts +1 -0
  73. package/pkgs/provider-mui/src/index.ts +1 -0
  74. package/pkgs/provider-none/src/index.ts +42 -1
  75. package/pkgs/provider-none/src/intro.ts +2 -2
  76. package/pkgs/schema/src/config.ts +27 -1
  77. package/pkgs/schema/src/extension.ts +26 -0
  78. package/pkgs/schema/src/index.ts +18 -0
  79. package/pkgs/schema/src/migrate.ts +57 -4
  80. package/pkgs/schema/src/node.ts +99 -0
  81. package/pkgs/schema/src/repo.ts +98 -16
  82. package/pkgs/schema/src/screen.ts +7 -0
  83. package/pkgs/schema/src/svg-sanitize.ts +472 -59
  84. package/pkgs/shadcn-snapshot/dist/manifest.json +9 -1
  85. package/skills/velloo-setup/SKILL.md +70 -48
  86. package/canvas/assets/index-BCvDZiBo.css +0 -2
  87. package/canvas/assets/index-BcBJ11d2.js +0 -28
  88. package/canvas/assets/lucide-all-BdEyryfF.js +0 -1
  89. package/chunk-1bywxgc5.js +0 -4
  90. package/chunk-1y50g9vp.js +0 -2
  91. package/chunk-1yhc252b.js +0 -3
  92. package/chunk-2mv65qxs.js +0 -5
  93. package/chunk-329e3phg.js +0 -451
  94. package/chunk-40657ggd.js +0 -10
  95. package/chunk-582y60bv.js +0 -2
  96. package/chunk-5x173xay.js +0 -2
  97. package/chunk-75wbh438.js +0 -2
  98. package/chunk-7dggmqwq.js +0 -53
  99. package/chunk-946pcnt5.js +0 -5
  100. package/chunk-9vg3yafz.js +0 -3
  101. package/chunk-aapybh30.js +0 -6
  102. package/chunk-bjnhhsak.js +0 -2
  103. package/chunk-dt03awr1.js +0 -2
  104. package/chunk-erwfk47h.js +0 -3
  105. package/chunk-mq4znqv2.js +0 -2
  106. package/chunk-nfr3q7mg.js +0 -5
  107. package/chunk-nsqs1bqf.js +0 -2
  108. package/chunk-pphgrsxa.js +0 -2
  109. package/chunk-qpvj6kzq.js +0 -6
  110. package/chunk-qwv7xkms.js +0 -2
  111. package/chunk-tmtzxcs5.js +0 -2
  112. package/chunk-xr6f94rj.js +0 -2
  113. package/chunk-y0zxzefg.js +0 -5
  114. package/chunk-zf3xc1wz.js +0 -2
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{require_react_development}from"./chunk-w5rzk6ms.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-c4fym47a.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,3 +1,3 @@
1
1
  // @bun
2
- import{existsSync}from"fs";import{dirname,join}from"path";import{fileURLToPath}from"url";var package_default={name:"@velloo/shadcn-snapshot",version:"0.1.0",license:"Apache-2.0",private:!0,type:"module",description:"[internal] Canvas design-mode runtime for provider-shadcn-upstream \u2014 pinned shadcn snapshot, Tailwind v4 entry CSS, prop manifest. Not a user-facing provider.",snapshotVersion:"2026.09.03",shadcnStyle:"radix-nova",shadcnCliVersion:"4.20.1",exports:{".":"./src/index.ts","./tailwind-entry.css":"./src/tailwind-entry.css","./manifest.json":"./dist/manifest.json","./registry-files":"./src/registry-files.ts","./version":"./src/version.ts"},scripts:{build:"bun run build.ts",vendor:"bun run vendor.ts"},dependencies:{"@velloo/helpers":"workspace:*","@velloo/provider":"workspace:*","class-variance-authority":"0.7.1",echarts:"6.1.0","embla-carousel-react":"8.6.0","lucide-react":"1.40.0","radix-ui":"1.6.7",react:"19.2.8","react-day-picker":"10.0.1","react-dom":"19.2.8",sonner:"2.0.8",tailwindcss:"4.3.3","tw-animate-css":"1.4.0"},devDependencies:{"@types/react":"19.2.18","@types/react-dom":"19.2.7","ts-morph":"28.0.0"}};var snapshotVersion2=package_default.snapshotVersion,here=dirname(fileURLToPath(import.meta.url));function resolveRoot(){let dev=join(here,"..");return[process.env.VELLOO_SNAPSHOT_ROOT,join(here,"pkgs","shadcn-snapshot"),dev].filter((p)=>Boolean(p)).find((r)=>existsSync(join(r,"src","tailwind-entry.css")))??dev}var root=resolveRoot(),srcDir=join(root,"src"),distDir=join(root,"dist"),entryCssPath2=join(srcDir,"tailwind-entry.css"),componentsDir2=join(srcDir,"components"),manifestPath=join(distDir,"manifest.json");
2
+ import{existsSync}from"fs";import{dirname,join}from"path";import{fileURLToPath}from"url";var package_default={name:"@velloo/shadcn-snapshot",version:"0.0.0",license:"Apache-2.0",private:!0,type:"module",description:"[internal] Canvas design-mode runtime for provider-shadcn-upstream \u2014 pinned shadcn snapshot, Tailwind v4 entry CSS, prop manifest. Not a user-facing provider.",snapshotVersion:"2026.09.03",shadcnStyle:"radix-nova",shadcnCliVersion:"4.20.1",exports:{".":"./src/index.ts","./tailwind-entry.css":"./src/tailwind-entry.css","./manifest.json":"./dist/manifest.json","./registry-files":"./src/registry-files.ts","./version":"./src/version.ts"},scripts:{build:"bun run build.ts",vendor:"bun run vendor.ts"},dependencies:{"@velloo/helpers":"workspace:*","@velloo/provider":"workspace:*","class-variance-authority":"0.7.1",echarts:"6.1.0","embla-carousel-react":"8.6.0","lucide-react":"1.40.0","radix-ui":"1.6.7",react:"19.2.8","react-day-picker":"10.0.1","react-dom":"19.2.8",sonner:"2.0.8",tailwindcss:"4.3.3","tw-animate-css":"1.4.0"},devDependencies:{"@types/react":"19.2.18","@types/react-dom":"19.2.7","ts-morph":"28.0.0"}};var snapshotVersion2=package_default.snapshotVersion,here=dirname(fileURLToPath(import.meta.url));function resolveRoot(){let dev=join(here,"..");return[process.env.VELLOO_SNAPSHOT_ROOT,join(here,"pkgs","shadcn-snapshot"),dev].filter((p)=>Boolean(p)).find((r)=>existsSync(join(r,"src","tailwind-entry.css")))??dev}var root=resolveRoot(),srcDir=join(root,"src"),distDir=join(root,"dist"),entryCssPath2=join(srcDir,"tailwind-entry.css"),componentsDir2=join(srcDir,"components"),manifestPath=join(distDir,"manifest.json");
3
3
  export{snapshotVersion2,entryCssPath2,componentsDir2,manifestPath};
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{registry2,loadManifest2}from"./chunk-3g3dqej3.js";import"./chunk-c6hywdvq.js";import{snapshotVersion2,entryCssPath2,componentsDir2}from"./chunk-cvn689d5.js";export{componentsDir2 as componentsDir,entryCssPath2 as entryCssPath,loadManifest2 as loadManifest,registry2 as registry,snapshotVersion2 as snapshotVersion};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{detectTailwindMajor}from"./chunk-329e3phg.js";import{existsSync,readFileSync}from"fs";import{join}from"path";function readJson(path){try{return JSON.parse(readFileSync(path,"utf8"))}catch{return null}}function depRange(deps,name){let v=deps[name];return typeof v==="string"?v:void 0}function detectHost(appRoot){let pkg=readJson(join(appRoot,"package.json"))??{},deps={...pkg.dependencies??{},...pkg.devDependencies??{}},tailwindMajor=detectTailwindMajor(appRoot),componentsJson=readJson(join(appRoot,"components.json")),shadcn=componentsJson!==null,shadcnStyle=typeof componentsJson?.style==="string"?componentsJson.style:void 0,uiLibrary=depRange(deps,"@mui/material")?"mui":depRange(deps,"antd")?"antd":depRange(deps,"@chakra-ui/react")?"chakra":shadcn?"shadcn":void 0,unsupportedUi=uiLibrary?void 0:detectUnsupportedUi(deps);return{shadcn,shadcnStyle,tailwindMajor,globalsCssPath:findGlobalsCss(appRoot,componentsJson),...uiLibrary?{uiLibrary}:{},...unsupportedUi?{unsupportedUi}:{}}}var COMPONENT_DIR_CANDIDATES=["src/components/ui","components/ui","app/components/ui","src/app/components/ui","src/components","components"];function findComponentsDir(appRoot){return COMPONENT_DIR_CANDIDATES.find((rel)=>existsSync(join(appRoot,rel)))}function detectUnsupportedUi(deps){let known=[["@mantine/core","Mantine"],["@nextui-org/react","NextUI"],["@heroui/react","HeroUI"],["react-bootstrap","React Bootstrap"],["@fluentui/react-components","Fluent UI"],["@untitledui/icons","Untitled UI"],["@untitledui/file-icons","Untitled UI"],["react-aria-components","React Aria"]];for(let[pkg,label]of known)if(depRange(deps,pkg))return label;return}function findGlobalsCss(appRoot,componentsJson){let candidates=[componentsJson&&typeof componentsJson.tailwind?.css==="string"?componentsJson.tailwind.css:void 0,"src/app/globals.css","app/globals.css","src/styles/globals.css","styles/globals.css","src/index.css","src/globals.css","src/app.css"].filter((c)=>Boolean(c));for(let rel of candidates){let abs=join(appRoot,rel);if(existsSync(abs))return abs}return}
2
+ import{detectTailwindMajor}from"./chunk-5ezzc1h2.js";import{existsSync,readFileSync}from"fs";import{join}from"path";function readJson(path){try{return JSON.parse(readFileSync(path,"utf8"))}catch{return null}}function depRange(deps,name){let v=deps[name];return typeof v==="string"?v:void 0}function detectHost(appRoot){let pkg=readJson(join(appRoot,"package.json"))??{},deps={...pkg.dependencies??{},...pkg.devDependencies??{}},tailwindMajor=detectTailwindMajor(appRoot),componentsJson=readJson(join(appRoot,"components.json")),shadcn=componentsJson!==null,shadcnStyle=typeof componentsJson?.style==="string"?componentsJson.style:void 0,uiLibrary=depRange(deps,"@mui/material")?"mui":depRange(deps,"antd")?"antd":depRange(deps,"@chakra-ui/react")?"chakra":shadcn?"shadcn":void 0,unsupportedUi=uiLibrary?void 0:detectUnsupportedUi(deps);return{shadcn,shadcnStyle,tailwindMajor,globalsCssPath:findGlobalsCss(appRoot,componentsJson),...uiLibrary?{uiLibrary}:{},...unsupportedUi?{unsupportedUi}:{}}}var COMPONENT_DIR_CANDIDATES=["src/components/ui","components/ui","app/components/ui","src/app/components/ui","src/components","components"];function findComponentsDir(appRoot){return COMPONENT_DIR_CANDIDATES.find((rel)=>existsSync(join(appRoot,rel)))}function detectUnsupportedUi(deps){let known=[["@mantine/core","Mantine"],["@nextui-org/react","NextUI"],["@heroui/react","HeroUI"],["react-bootstrap","React Bootstrap"],["@fluentui/react-components","Fluent UI"],["@untitledui/icons","Untitled UI"],["@untitledui/file-icons","Untitled UI"],["react-aria-components","React Aria"]];for(let[pkg,label]of known)if(depRange(deps,pkg))return label;return}function findGlobalsCss(appRoot,componentsJson){let candidates=[componentsJson&&typeof componentsJson.tailwind?.css==="string"?componentsJson.tailwind.css:void 0,"src/app/globals.css","app/globals.css","src/styles/globals.css","styles/globals.css","src/index.css","src/globals.css","src/app.css"].filter((c)=>Boolean(c));for(let rel of candidates){let abs=join(appRoot,rel);if(existsSync(abs))return abs}return}
3
3
  export{detectHost,findComponentsDir};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{TAILWIND_CLASSNAME,helperSourcePath}from"./chunk-329e3phg.js";import{snapshotVersion2,entryCssPath2,componentsDir2}from"./chunk-jnsfgtn9.js";import{registry2}from"./chunk-t2ttkxe9.js";import"./chunk-d385435m.js";import{readFile}from"fs/promises";import{join}from"path";async function readManifest(cacheDir){let raw=await readFile(join(cacheDir,"manifest.json"),"utf8");return JSON.parse(raw)}import{existsSync as existsSync4}from"fs";import{join as join5}from"path";import{existsSync as existsSync3,readFileSync as readFileSync3}from"fs";import{join as join4}from"path";import{existsSync,readFileSync}from"fs";import{join as join2}from"path";function exportsName(source,id){let name=id.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(new RegExp(`\\bexport\\s+(?:async\\s+)?(?:function|const|let|var|class)\\s+${name}\\b`).test(source))return!0;for(let match of source.matchAll(/\bexport\s*\{([^}]*)\}/g)){let clause=match[1]??"";for(let part of clause.split(",")){let local=part.trim().split(/\s+as\s+/);if((local.length>1?local[1]:local[0])?.trim()===id)return!0}}return/\bexport\s+\*\s+from\b/.test(source)}function hostComponentFile(uiDir,addName,id){for(let extension of["tsx","ts","jsx","js"]){let path=join2(uiDir,`${addName}.${extension}`);if(!existsSync(path))continue;try{return exportsName(readFileSync(path,"utf8"),id)?path:null}catch{return null}}return null}import{existsSync as existsSync2,readdirSync,readFileSync as readFileSync2}from"fs";import{join as join3,resolve}from"path";function kebab(id){return id.replace(/(?<!^)(?=[A-Z])/g,"-").toLowerCase()}function addNameIndex(manifest){let byId=new Map(manifest.flatMap((c)=>c.registryName?[[c.id,c.registryName]]:[]));return(id)=>byId.get(id)??kebab(id)}function findUiDir(hostAppRoot){let candidates=[];try{let cj=JSON.parse(readFileSync2(join3(hostAppRoot,"components.json"),"utf8")),fromAlias=(alias,suffix="")=>{if(!alias)return;let srcBase=existsSync2(join3(hostAppRoot,"src"))?"src":"",rel=alias.replace(/^@\//,srcBase?`${srcBase}/`:"")+suffix;candidates.push(resolve(hostAppRoot,rel))};fromAlias(cj.aliases?.ui),fromAlias(cj.aliases?.components,"/ui")}catch{}candidates.push(resolve(hostAppRoot,"src/components/ui"),resolve(hostAppRoot,"components/ui"),resolve(hostAppRoot,"app/components/ui"));for(let dir of candidates)if(existsSync2(dir))return dir;return null}function installedAddNames(hostAppRoot){let dir=findUiDir(hostAppRoot);if(!dir)return new Set;try{return new Set(readdirSync(dir).filter((f)=>f.endsWith(".tsx")||f.endsWith(".ts")).map((f)=>f.replace(/\.(tsx|ts)$/,"")))}catch{return new Set}}function enrichManifestFromHost(manifest,uiDir){if(!uiDir)return manifest;let addNameOf=addNameIndex(manifest),byFile=new Map,read=(addName)=>{if(byFile.has(addName))return byFile.get(addName)??null;for(let ext of["tsx","ts","jsx","js"]){let path=join4(uiDir,`${addName}.${ext}`);if(!existsSync3(path))continue;let source=readFileSync3(path,"utf8");return byFile.set(addName,source),source}return byFile.set(addName,""),null};return manifest.map((descriptor)=>{if(descriptor.source==="velloo")return descriptor;let source=read(addNameOf(descriptor.id));if(!source||!exportsName(source,descriptor.id))return descriptor;let additions=[...variantPropsFor(source,descriptor.id===descriptor.family),...declaredPropsFor(source,descriptor.id)];if(additions.length===0)return descriptor;let props=[...descriptor.props];for(let addition of additions){let index=props.findIndex((prop)=>prop.name===addition.name);if(index>=0)props[index]={...props[index],...addition};else props.push(addition)}return{...descriptor,props,designModeNotes:appendNote(descriptor.designModeNotes,"Props include variants detected from the app's component source.")}})}function appendNote(current,next){return current?`${current} ${next}`:next}function variantPropsFor(source,primary){let out=[];if(!primary)return out;let variantsAt=source.indexOf("variants:");if(variantsAt<0)return out;let open=source.indexOf("{",variantsAt),block=balancedBlock(source,open);if(!block)return out;for(let[name,value]of objectEntries(block.slice(1,-1))){let values=objectEntries(value.slice(1,-1)).map(([key])=>key);if(values.length===0)continue;out.push({name,type:`${values.map((value)=>JSON.stringify(value)).join(" | ")} | undefined`,optional:!0,control:"enum",enumValues:values,...defaultVariant(source,name)?{defaultValue:defaultVariant(source,name)}:{}})}return out}function defaultVariant(source,name){let at=source.indexOf("defaultVariants:");if(at<0)return;let open=source.indexOf("{",at),block=balancedBlock(source,open);if(!block)return;return objectEntries(block.slice(1,-1)).find(([key])=>key===name)?.[1].replace(/["'`\s]/g,"")}function declaredPropsFor(source,componentId){let match=[new RegExp(`interface\\s+${componentId}Props(?:\\s+extends[^\\{]+)?\\s*\\{`,"m"),new RegExp(`type\\s+${componentId}Props\\s*=.*?&\\s*\\{`,"m")].map((pattern)=>pattern.exec(source)).find(Boolean);if(!match||match.index===void 0)return[];let open=source.indexOf("{",match.index),block=balancedBlock(source,open);if(!block)return[];let out=[],property=/(?:^|[;{\n])\s*([A-Za-z_$][\w$]*)(\?)?\s*:\s*([^;\n}]+)/gm;for(let found of block.slice(1,-1).matchAll(property)){let name=found[1],raw=found[3]?.trim();if(!name||!raw||name==="children")continue;let enumValues=[...raw.matchAll(/["']([^"']+)["']/g)].map((value)=>value[1]),optional=found[2]==="?"||raw.includes("undefined");out.push({name,type:optional&&!raw.includes("undefined")?`${raw} | undefined`:raw,optional,control:enumValues.length>0?"enum":/boolean/.test(raw)?"boolean":/number/.test(raw)?"number":"string",...enumValues.length>0?{enumValues}:{}})}return out}function balancedBlock(source,open){if(open<0||source[open]!=="{")return null;let depth=0,quote="";for(let index=open;index<source.length;index++){let char=source[index],prev=source[index-1];if(quote){if(char===quote&&prev!=="\\")quote="";continue}if(char==='"'||char==="'"||char==="`"){quote=char;continue}if(char==="{")depth++;if(char==="}"&&--depth===0)return source.slice(open,index+1)}return null}function objectEntries(body){let out=[],index=0;while(index<body.length){while(index<body.length&&/[\s,]/.test(body[index]))index++;let keyMatch=/^(?:["']([^"']+)["']|([A-Za-z_$][\w$-]*))\s*:/.exec(body.slice(index));if(!keyMatch)break;let key=keyMatch[1]??keyMatch[2];if(!key)break;index+=keyMatch[0].length;while(/\s/.test(body[index]??""))index++;if(body[index]==="{"){let block=balancedBlock(body,index);if(!block)break;out.push([key,block]),index+=block.length;continue}let end=body.indexOf(",",index),value=body.slice(index,end<0?body.length:end).trim();out.push([key,value]),index=end<0?body.length:end+1}return out}function createProvider(opts={}){let cacheDir=opts.cacheDir,plannedUiDir=cacheDir?join5(cacheDir,"ui"):void 0,hostUiDir=()=>plannedUiDir&&existsSync4(plannedUiDir)?plannedUiDir:opts.hostAppRoot?findUiDir(opts.hostAppRoot):null,componentsDir=componentsDir2,version=opts.version??snapshotVersion2,hostAppRoot=opts.hostAppRoot,loadManifest=async()=>{if(cacheDir&&existsSync4(join5(cacheDir,"manifest.json")))return enrichManifestFromHost(await readManifest(cacheDir),hostUiDir());let{loadManifest:snapshotManifest}=await import("./chunk-pphgrsxa.js");return enrichManifestFromHost(await snapshotManifest(),hostUiDir())};return{id:"shadcn-upstream",version,componentsDir,styleEntryPath:entryCssPath2,registry:registry2,loadManifest,label:`shadcn (upstream @ ${version})`,styleChannel:TAILWIND_CLASSNAME,styleChannels:["tailwind-classname"],mcpIntro:()=>['**This folder targets shadcn/ui with Tailwind.** The canvas imports client-safe components directly from the app, uses named canvas-safe adaptations for portal/state-heavy families, and falls back per component when a host file is missing or cannot compile. Velloo helpers (`Box`, `Heading`, `Text`, `Icon`, `Image`, `Gradient`, `Layer`, `SVG`, `Divider`, `Placeholder`, `Prose`) remain canvas primitives. Style through `update_props { style: "flex gap-4 p-6" }` \u2014 a Tailwind className string. Call `list_components` for the catalog and `component_status` before making a fidelity claim.',""],catalog:async()=>{let manifest=await loadManifest(),addNameOf=addNameIndex(manifest),shadcn=manifest.filter((c)=>c.source!=="velloo"),present=hostAppRoot?installedAddNames(hostAppRoot):new Set;return shadcn.map((c)=>{let addName=addNameOf(c.id);return{id:c.id,installed:present.has(addName),importPath:`@/components/ui/${addName}`}})},canvasBundleSpec:{styleRuntime:{kind:"none"},components:async(ids)=>{let manifest=await loadManifest(),addNameOf=addNameIndex(manifest),sourceById=new Map(manifest.map((entry)=>[entry.id,entry.source])),uiDir=hostUiDir();return ids.flatMap((id)=>{if(sourceById.get(id)==="velloo"){let path=helperSourcePath(id);return path?[{id,sources:[{importPath:path,exportName:id,fidelity:"fallback",note:"Velloo helper used alongside repo-backed shadcn components."}]}]:[]}if(!sourceById.has(id))return[];let addName=addNameOf(id),snapshotPath=join5(componentsDir2,"ui",`${addName}.tsx`);if(CANVAS_ADAPTED_FAMILIES.has(addName))return[{id,sources:[{importPath:snapshotPath,exportName:id,fidelity:"adapted",note:"The app component uses portals or runtime state; Velloo renders its canvas-safe counterpart inline."}]}];let hostPath=uiDir?hostComponentFile(uiDir,addName,id):null;return[{id,sources:[...hostPath?[{importPath:hostPath,exportName:id,fidelity:"exact",preflight:!0,note:"Rendered directly from the app's shadcn source file."}]:[],{importPath:snapshotPath,exportName:id,fidelity:"fallback",note:hostPath?"The app source did not compile for the browser canvas; using the bundled canvas fallback.":"The app does not install this component under this name (it may be renamed in its own file); using the bundled canvas fallback."}]}]})},sourceDirs:()=>{let uiDir=hostUiDir()??plannedUiDir;return uiDir?[uiDir]:[]}}}}var CANVAS_ADAPTED_FAMILIES=new Set(["alert-dialog","calendar","carousel","chart","dialog","dropdown-menu","popover","select","sheet","sonner","tooltip"]);export{createProvider};
2
+ import{TAILWIND_CLASSNAME,helperSourcePath}from"./chunk-5ezzc1h2.js";import{snapshotVersion2,entryCssPath2,componentsDir2}from"./chunk-cvn689d5.js";import{registry2}from"./chunk-3g3dqej3.js";import"./chunk-c6hywdvq.js";import{readFile}from"fs/promises";import{join}from"path";async function readManifest(cacheDir){let raw=await readFile(join(cacheDir,"manifest.json"),"utf8");return JSON.parse(raw)}import{existsSync as existsSync4}from"fs";import{join as join5}from"path";import{existsSync as existsSync3,readFileSync as readFileSync3}from"fs";import{join as join4}from"path";import{existsSync,readFileSync}from"fs";import{join as join2}from"path";function exportsName(source,id){let name=id.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(new RegExp(`\\bexport\\s+(?:async\\s+)?(?:function|const|let|var|class)\\s+${name}\\b`).test(source))return!0;for(let match of source.matchAll(/\bexport\s*\{([^}]*)\}/g)){let clause=match[1]??"";for(let part of clause.split(",")){let local=part.trim().split(/\s+as\s+/);if((local.length>1?local[1]:local[0])?.trim()===id)return!0}}return/\bexport\s+\*\s+from\b/.test(source)}function hostComponentFile(uiDir,addName,id){for(let extension of["tsx","ts","jsx","js"]){let path=join2(uiDir,`${addName}.${extension}`);if(!existsSync(path))continue;try{return exportsName(readFileSync(path,"utf8"),id)?path:null}catch{return null}}return null}import{existsSync as existsSync2,readdirSync,readFileSync as readFileSync2}from"fs";import{join as join3,resolve}from"path";function kebab(id){return id.replace(/(?<!^)(?=[A-Z])/g,"-").toLowerCase()}function addNameIndex(manifest){let byId=new Map(manifest.flatMap((c)=>c.registryName?[[c.id,c.registryName]]:[]));return(id)=>byId.get(id)??kebab(id)}function findUiDir(hostAppRoot){let candidates=[];try{let cj=JSON.parse(readFileSync2(join3(hostAppRoot,"components.json"),"utf8")),fromAlias=(alias,suffix="")=>{if(!alias)return;let srcBase=existsSync2(join3(hostAppRoot,"src"))?"src":"",rel=alias.replace(/^@\//,srcBase?`${srcBase}/`:"")+suffix;candidates.push(resolve(hostAppRoot,rel))};fromAlias(cj.aliases?.ui),fromAlias(cj.aliases?.components,"/ui")}catch{}candidates.push(resolve(hostAppRoot,"src/components/ui"),resolve(hostAppRoot,"components/ui"),resolve(hostAppRoot,"app/components/ui"));for(let dir of candidates)if(existsSync2(dir))return dir;return null}function installedAddNames(hostAppRoot){let dir=findUiDir(hostAppRoot);if(!dir)return new Set;try{return new Set(readdirSync(dir).filter((f)=>f.endsWith(".tsx")||f.endsWith(".ts")).map((f)=>f.replace(/\.(tsx|ts)$/,"")))}catch{return new Set}}function enrichManifestFromHost(manifest,uiDir){if(!uiDir)return manifest;let addNameOf=addNameIndex(manifest),byFile=new Map,read=(addName)=>{if(byFile.has(addName))return byFile.get(addName)??null;for(let ext of["tsx","ts","jsx","js"]){let path=join4(uiDir,`${addName}.${ext}`);if(!existsSync3(path))continue;let source=readFileSync3(path,"utf8");return byFile.set(addName,source),source}return byFile.set(addName,""),null};return manifest.map((descriptor)=>{if(descriptor.source==="velloo")return descriptor;let source=read(addNameOf(descriptor.id));if(!source||!exportsName(source,descriptor.id))return descriptor;let additions=[...variantPropsFor(source,descriptor.id===descriptor.family),...declaredPropsFor(source,descriptor.id)];if(additions.length===0)return descriptor;let props=[...descriptor.props];for(let addition of additions){let index=props.findIndex((prop)=>prop.name===addition.name);if(index>=0)props[index]={...props[index],...addition};else props.push(addition)}return{...descriptor,props,designModeNotes:appendNote(descriptor.designModeNotes,"Props include variants detected from the app's component source.")}})}function appendNote(current,next){return current?`${current} ${next}`:next}function variantPropsFor(source,primary){let out=[];if(!primary)return out;let variantsAt=source.indexOf("variants:");if(variantsAt<0)return out;let open=source.indexOf("{",variantsAt),block=balancedBlock(source,open);if(!block)return out;for(let[name,value]of objectEntries(block.slice(1,-1))){let values=objectEntries(value.slice(1,-1)).map(([key])=>key);if(values.length===0)continue;out.push({name,type:`${values.map((value)=>JSON.stringify(value)).join(" | ")} | undefined`,optional:!0,control:"enum",enumValues:values,...defaultVariant(source,name)?{defaultValue:defaultVariant(source,name)}:{}})}return out}function defaultVariant(source,name){let at=source.indexOf("defaultVariants:");if(at<0)return;let open=source.indexOf("{",at),block=balancedBlock(source,open);if(!block)return;return objectEntries(block.slice(1,-1)).find(([key])=>key===name)?.[1].replace(/["'`\s]/g,"")}function declaredPropsFor(source,componentId){let match=[new RegExp(`interface\\s+${componentId}Props(?:\\s+extends[^\\{]+)?\\s*\\{`,"m"),new RegExp(`type\\s+${componentId}Props\\s*=.*?&\\s*\\{`,"m")].map((pattern)=>pattern.exec(source)).find(Boolean);if(!match||match.index===void 0)return[];let open=source.indexOf("{",match.index),block=balancedBlock(source,open);if(!block)return[];let out=[],property=/(?:^|[;{\n])\s*([A-Za-z_$][\w$]*)(\?)?\s*:\s*([^;\n}]+)/gm;for(let found of block.slice(1,-1).matchAll(property)){let name=found[1],raw=found[3]?.trim();if(!name||!raw||name==="children")continue;let enumValues=[...raw.matchAll(/["']([^"']+)["']/g)].map((value)=>value[1]),optional=found[2]==="?"||raw.includes("undefined");out.push({name,type:optional&&!raw.includes("undefined")?`${raw} | undefined`:raw,optional,control:enumValues.length>0?"enum":/boolean/.test(raw)?"boolean":/number/.test(raw)?"number":"string",...enumValues.length>0?{enumValues}:{}})}return out}function balancedBlock(source,open){if(open<0||source[open]!=="{")return null;let depth=0,quote="";for(let index=open;index<source.length;index++){let char=source[index],prev=source[index-1];if(quote){if(char===quote&&prev!=="\\")quote="";continue}if(char==='"'||char==="'"||char==="`"){quote=char;continue}if(char==="{")depth++;if(char==="}"&&--depth===0)return source.slice(open,index+1)}return null}function objectEntries(body){let out=[],index=0;while(index<body.length){while(index<body.length&&/[\s,]/.test(body[index]))index++;let keyMatch=/^(?:["']([^"']+)["']|([A-Za-z_$][\w$-]*))\s*:/.exec(body.slice(index));if(!keyMatch)break;let key=keyMatch[1]??keyMatch[2];if(!key)break;index+=keyMatch[0].length;while(/\s/.test(body[index]??""))index++;if(body[index]==="{"){let block=balancedBlock(body,index);if(!block)break;out.push([key,block]),index+=block.length;continue}let end=body.indexOf(",",index),value=body.slice(index,end<0?body.length:end).trim();out.push([key,value]),index=end<0?body.length:end+1}return out}function createProvider(opts={}){let cacheDir=opts.cacheDir,plannedUiDir=cacheDir?join5(cacheDir,"ui"):void 0,hostUiDir=()=>plannedUiDir&&existsSync4(plannedUiDir)?plannedUiDir:opts.hostAppRoot?findUiDir(opts.hostAppRoot):null,componentsDir=componentsDir2,version=opts.version??snapshotVersion2,hostAppRoot=opts.hostAppRoot,loadManifest=async()=>{if(cacheDir&&existsSync4(join5(cacheDir,"manifest.json")))return enrichManifestFromHost(await readManifest(cacheDir),hostUiDir());let{loadManifest:snapshotManifest}=await import("./chunk-cxzkkn12.js");return enrichManifestFromHost(await snapshotManifest(),hostUiDir())};return{id:"shadcn-upstream",version,componentsDir,styleEntryPath:entryCssPath2,registry:registry2,loadManifest,label:`shadcn (upstream @ ${version})`,styleChannel:TAILWIND_CLASSNAME,styleChannels:["tailwind-classname"],mcpIntro:()=>['**This folder targets shadcn/ui with Tailwind.** The canvas imports client-safe components directly from the app, uses named canvas-safe adaptations for portal/state-heavy families, and falls back per component when a host file is missing or cannot compile. Velloo helpers (`Box`, `Heading`, `Text`, `Icon`, `Image`, `Gradient`, `Layer`, `SVG`, `Divider`, `Placeholder`, `Prose`) remain canvas primitives. Style through `update_props { style: "flex gap-4 p-6" }` \u2014 a Tailwind className string. Call `list_components` for the catalog and `component_status` before making a fidelity claim.',""],catalog:async()=>{let manifest=await loadManifest(),addNameOf=addNameIndex(manifest),shadcn=manifest.filter((c)=>c.source!=="velloo"),present=hostAppRoot?installedAddNames(hostAppRoot):new Set;return shadcn.map((c)=>{let addName=addNameOf(c.id);return{id:c.id,installed:present.has(addName),importPath:`@/components/ui/${addName}`}})},ownedModules:{dirs:()=>{let uiDir=hostUiDir();return uiDir?[uiDir]:[]}},canvasBundleSpec:{styleRuntime:{kind:"none"},components:async(ids)=>{let manifest=await loadManifest(),addNameOf=addNameIndex(manifest),sourceById=new Map(manifest.map((entry)=>[entry.id,entry.source])),uiDir=hostUiDir();return ids.flatMap((id)=>{if(sourceById.get(id)==="velloo"){let path=helperSourcePath(id);return path?[{id,sources:[{importPath:path,exportName:id,fidelity:"fallback",note:"Velloo helper used alongside repo-backed shadcn components."}]}]:[]}if(!sourceById.has(id))return[];let addName=addNameOf(id),snapshotPath=join5(componentsDir2,"ui",`${addName}.tsx`);if(CANVAS_ADAPTED_FAMILIES.has(addName))return[{id,sources:[{importPath:snapshotPath,exportName:id,fidelity:"adapted",note:"The app component uses portals or runtime state; Velloo renders its canvas-safe counterpart inline."}]}];let hostPath=uiDir?hostComponentFile(uiDir,addName,id):null;return[{id,sources:[...hostPath?[{importPath:hostPath,exportName:id,fidelity:"exact",preflight:!0,note:"Rendered directly from the app's shadcn source file."}]:[],{importPath:snapshotPath,exportName:id,fidelity:"fallback",note:hostPath?"The app source did not compile for the browser canvas; using the bundled canvas fallback.":"The app does not install this component under this name (it may be renamed in its own file); using the bundled canvas fallback."}]}]})},sourceDirs:()=>{let uiDir=hostUiDir()??plannedUiDir;return uiDir?[uiDir]:[]}}}}var CANVAS_ADAPTED_FAMILIES=new Set(["alert-dialog","calendar","carousel","chart","dialog","dropdown-menu","popover","select","sheet","sonner","tooltip"]);export{createProvider};
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{string,object,record,literal}from"./chunk-bk8b7f9a.js";import{chmod,mkdir,readFile,writeFile}from"fs/promises";import{homedir}from"os";import{dirname,join}from"path";var CloudCredentialSchema=object({token:string().min(1),email:string().min(1)}),CredentialsFileSchema=object({version:literal(1),clouds:record(string(),CloudCredentialSchema)}),credentialsPath=()=>process.env.VELLOO_CREDENTIALS_PATH??join(homedir(),".velloo","credentials.json"),normalizeCloudUrl=(url)=>url.replace(/\/+$/,"");async function readAll(){try{let parsed=CredentialsFileSchema.safeParse(JSON.parse(await readFile(credentialsPath(),"utf8")));if(parsed.success)return parsed.data}catch{}return{version:1,clouds:{}}}async function loadCredential(cloudUrl){return(await readAll()).clouds[normalizeCloudUrl(cloudUrl)]??null}async function saveCredential(cloudUrl,cred){let all=await readAll();return all.clouds[normalizeCloudUrl(cloudUrl)]=cred,writeAll(all)}async function deleteCredential(cloudUrl){let all=await readAll(),key=normalizeCloudUrl(cloudUrl);if(!(key in all.clouds))return!1;return delete all.clouds[key],await writeAll(all),!0}async function clearCredentials(){let all=await readAll(),count=Object.keys(all.clouds).length;if(count===0)return 0;return await writeAll({version:1,clouds:{}}),count}async function writeAll(all){let path=credentialsPath();return await mkdir(dirname(path),{recursive:!0,mode:448}),await writeFile(path,`${JSON.stringify(all,null,2)}
2
+ import{string,object,record,literal}from"./chunk-nte0t7v3.js";import{chmod,mkdir,readFile,writeFile}from"fs/promises";import{homedir}from"os";import{dirname,join}from"path";var CloudCredentialSchema=object({token:string().min(1),email:string().min(1)}),CredentialsFileSchema=object({version:literal(1),clouds:record(string(),CloudCredentialSchema)}),credentialsPath=()=>process.env.VELLOO_CREDENTIALS_PATH??join(homedir(),".velloo","credentials.json"),normalizeCloudUrl=(url)=>url.replace(/\/+$/,"");async function readAll(){try{let parsed=CredentialsFileSchema.safeParse(JSON.parse(await readFile(credentialsPath(),"utf8")));if(parsed.success)return parsed.data}catch{}return{version:1,clouds:{}}}async function loadCredential(cloudUrl){return(await readAll()).clouds[normalizeCloudUrl(cloudUrl)]??null}async function saveCredential(cloudUrl,cred){let all=await readAll();return all.clouds[normalizeCloudUrl(cloudUrl)]=cred,writeAll(all)}async function deleteCredential(cloudUrl){let all=await readAll(),key=normalizeCloudUrl(cloudUrl);if(!(key in all.clouds))return!1;return delete all.clouds[key],await writeAll(all),!0}async function clearCredentials(){let all=await readAll(),count=Object.keys(all.clouds).length;if(count===0)return 0;return await writeAll({version:1,clouds:{}}),count}async function writeAll(all){let path=credentialsPath();return await mkdir(dirname(path),{recursive:!0,mode:448}),await writeFile(path,`${JSON.stringify(all,null,2)}
3
3
  `,{mode:384}),await chmod(path,384),path}
4
4
  export{normalizeCloudUrl,loadCredential,saveCredential,deleteCredential,clearCredentials};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{require_react_development}from"./chunk-w5rzk6ms.js";import{__toESM,__commonJS,__require}from"./chunk-2smsg2ct.js";var require_emotion_sheet_development_cjs=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});var isDevelopment=!0;function sheetForTag(tag){if(tag.sheet)return tag.sheet;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].ownerNode===tag)return document.styleSheets[i];return}function createStyleElement(options){var tag=document.createElement("style");if(tag.setAttribute("data-emotion",options.key),options.nonce!==void 0)tag.setAttribute("nonce",options.nonce);return tag.appendChild(document.createTextNode("")),tag.setAttribute("data-s",""),tag}var StyleSheet=function(){function StyleSheet(options){var _this=this;this._insertTag=function(tag){var before;if(_this.tags.length===0)if(_this.insertionPoint)before=_this.insertionPoint.nextSibling;else if(_this.prepend)before=_this.container.firstChild;else before=_this.before;else before=_this.tags[_this.tags.length-1].nextSibling;_this.container.insertBefore(tag,before),_this.tags.push(tag)},this.isSpeedy=options.speedy===void 0?!isDevelopment:options.speedy,this.tags=[],this.ctr=0,this.nonce=options.nonce,this.key=options.key,this.container=options.container,this.prepend=options.prepend,this.insertionPoint=options.insertionPoint,this.before=null}var _proto=StyleSheet.prototype;return _proto.hydrate=function(nodes){nodes.forEach(this._insertTag)},_proto.insert=function(rule){if(this.ctr%(this.isSpeedy?65000:1)===0)this._insertTag(createStyleElement(this));var tag=this.tags[this.tags.length-1];{var isImportRule=rule.charCodeAt(0)===64&&rule.charCodeAt(1)===105;if(isImportRule&&this._alreadyInsertedOrderInsensitiveRule)console.error(`You're attempting to insert the following rule:
2
+ import{require_react_development}from"./chunk-c4fym47a.js";import{__toESM,__commonJS,__require}from"./chunk-2smsg2ct.js";var require_emotion_sheet_development_cjs=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});var isDevelopment=!0;function sheetForTag(tag){if(tag.sheet)return tag.sheet;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].ownerNode===tag)return document.styleSheets[i];return}function createStyleElement(options){var tag=document.createElement("style");if(tag.setAttribute("data-emotion",options.key),options.nonce!==void 0)tag.setAttribute("nonce",options.nonce);return tag.appendChild(document.createTextNode("")),tag.setAttribute("data-s",""),tag}var StyleSheet=function(){function StyleSheet(options){var _this=this;this._insertTag=function(tag){var before;if(_this.tags.length===0)if(_this.insertionPoint)before=_this.insertionPoint.nextSibling;else if(_this.prepend)before=_this.container.firstChild;else before=_this.before;else before=_this.tags[_this.tags.length-1].nextSibling;_this.container.insertBefore(tag,before),_this.tags.push(tag)},this.isSpeedy=options.speedy===void 0?!isDevelopment:options.speedy,this.tags=[],this.ctr=0,this.nonce=options.nonce,this.key=options.key,this.container=options.container,this.prepend=options.prepend,this.insertionPoint=options.insertionPoint,this.before=null}var _proto=StyleSheet.prototype;return _proto.hydrate=function(nodes){nodes.forEach(this._insertTag)},_proto.insert=function(rule){if(this.ctr%(this.isSpeedy?65000:1)===0)this._insertTag(createStyleElement(this));var tag=this.tags[this.tags.length-1];{var isImportRule=rule.charCodeAt(0)===64&&rule.charCodeAt(1)===105;if(isImportRule&&this._alreadyInsertedOrderInsensitiveRule)console.error(`You're attempting to insert the following rule:
3
3
  `+rule+"\n\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.");this._alreadyInsertedOrderInsensitiveRule=this._alreadyInsertedOrderInsensitiveRule||!isImportRule}if(this.isSpeedy){var sheet=sheetForTag(tag);try{sheet.insertRule(rule,sheet.cssRules.length)}catch(e){if(!/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule))console.error('There was a problem inserting the following rule: "'+rule+'"',e)}}else tag.appendChild(document.createTextNode(rule));this.ctr++},_proto.flush=function(){this.tags.forEach(function(tag){var _tag$parentNode;return(_tag$parentNode=tag.parentNode)==null?void 0:_tag$parentNode.removeChild(tag)}),this.tags=[],this.ctr=0,this._alreadyInsertedOrderInsensitiveRule=!1},StyleSheet}();exports.StyleSheet=StyleSheet});var require_stylis=__commonJS(function(exports,module){(function(e,r){typeof exports==="object"&&typeof module<"u"?r(exports):typeof define==="function"&&define.amd?define(["exports"],r):(e=e||self,r(e.stylis={}))})(exports,function(e){var r="-ms-",a="-moz-",c="-webkit-",n="comm",t="rule",s="decl",i="@page",u="@media",o="@import",f="@charset",l="@viewport",p="@supports",h="@document",v="@namespace",d="@keyframes",b="@font-face",w="@counter-style",m="@font-feature-values",g="@layer",k=Math.abs,$=String.fromCharCode,x=Object.assign;function E(e,r){return M(e,0)^45?(((r<<2^M(e,0))<<2^M(e,1))<<2^M(e,2))<<2^M(e,3):0}function y(e){return e.trim()}function T(e,r){return(e=r.exec(e))?e[0]:e}function A(e,r,a){return e.replace(r,a)}function O(e,r){return e.indexOf(r)}function M(e,r){return e.charCodeAt(r)|0}function C(e,r,a){return e.slice(r,a)}function R(e){return e.length}function S(e){return e.length}function z(e,r){return r.push(e),e}function N(e,r){return e.map(r).join("")}e.line=1,e.column=1,e.length=0,e.position=0,e.character=0,e.characters="";function P(r,a,c,n,t,s,i){return{value:r,root:a,parent:c,type:n,props:t,children:s,line:e.line,column:e.column,length:i,return:""}}function j(e,r){return x(P("",null,null,"",null,null,0),e,{length:-e.length},r)}function U(){return e.character}function _(){if(e.character=e.position>0?M(e.characters,--e.position):0,e.column--,e.character===10)e.column=1,e.line--;return e.character}function F(){if(e.character=e.position<e.length?M(e.characters,e.position++):0,e.column++,e.character===10)e.column=1,e.line++;return e.character}function I(){return M(e.characters,e.position)}function L(){return e.position}function D(r,a){return C(e.characters,r,a)}function Y(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function K(r){return e.line=e.column=1,e.length=R(e.characters=r),e.position=0,[]}function V(r){return e.characters="",r}function W(r){return y(D(e.position-1,q(r===91?r+2:r===40?r+1:r)))}function B(e){return V(H(K(e)))}function G(r){while(e.character=I())if(e.character<33)F();else break;return Y(r)>2||Y(e.character)>3?"":" "}function H(r){while(F())switch(Y(e.character)){case 0:z(Q(e.position-1),r);break;case 2:z(W(e.character),r);break;default:z($(e.character),r)}return r}function Z(r,a){while(--a&&F())if(e.character<48||e.character>102||e.character>57&&e.character<65||e.character>70&&e.character<97)break;return D(r,L()+(a<6&&I()==32&&F()==32))}function q(r){while(F())switch(e.character){case r:return e.position;case 34:case 39:if(r!==34&&r!==39)q(e.character);break;case 40:if(r===41)q(r);break;case 92:F();break}return e.position}function J(r,a){while(F())if(r+e.character===57)break;else if(r+e.character===84&&I()===47)break;return"/*"+D(a,e.position-1)+"*"+$(r===47?r:F())}function Q(r){while(!Y(I()))F();return D(r,e.position)}function X(e){return V(ee("",null,null,null,[""],e=K(e),0,[0],e))}function ee(e,r,a,c,n,t,s,i,u){var o=0,f=0,l=s,p=0,h=0,v=0,d=1,b=1,w=1,m=0,g="",k=n,x=t,E=c,y=g;while(b)switch(v=m,m=F()){case 40:if(v!=108&&M(y,l-1)==58){if(O(y+=A(W(m),"&","&\f"),"&\f")!=-1)w=-1;break}case 34:case 39:case 91:y+=W(m);break;case 9:case 10:case 13:case 32:y+=G(v);break;case 92:y+=Z(L()-1,7);continue;case 47:switch(I()){case 42:case 47:z(ae(J(F(),L()),r,a),u);break;default:y+="/"}break;case 123*d:i[o++]=R(y)*w;case 125*d:case 59:case 0:switch(m){case 0:case 125:b=0;case 59+f:if(w==-1)y=A(y,/\f/g,"");if(h>0&&R(y)-l)z(h>32?ce(y+";",c,a,l-1):ce(A(y," ","")+";",c,a,l-2),u);break;case 59:y+=";";default:if(z(E=re(y,r,a,o,f,n,i,g,k=[],x=[],l),t),m===123)if(f===0)ee(y,r,E,E,k,t,l,i,x);else switch(p===99&&M(y,3)===110?100:p){case 100:case 108:case 109:case 115:ee(e,E,E,c&&z(re(e,E,E,0,0,n,i,g,n,k=[],l),x),n,x,l,i,c?k:x);break;default:ee(y,E,E,E,[""],x,0,i,x)}}o=f=h=0,d=w=1,g=y="",l=s;break;case 58:l=1+R(y),h=v;default:if(d<1){if(m==123)--d;else if(m==125&&d++==0&&_()==125)continue}switch(y+=$(m),m*d){case 38:w=f>0?1:(y+="\f",-1);break;case 44:i[o++]=(R(y)-1)*w,w=1;break;case 64:if(I()===45)y+=W(F());p=I(),f=l=R(g=y+=Q(L())),m++;break;case 45:if(v===45&&R(y)==2)d=0}}return t}function re(e,r,a,c,n,s,i,u,o,f,l){var p=n-1,h=n===0?s:[""],v=S(h);for(var d=0,b=0,w=0;d<c;++d)for(var m=0,g=C(e,p+1,p=k(b=i[d])),$=e;m<v;++m)if($=y(b>0?h[m]+" "+g:A(g,/&\f/g,h[m])))o[w++]=$;return P(e,r,a,n===0?t:u,o,f,l)}function ae(e,r,a){return P(e,r,a,n,$(U()),C(e,2,-2),0)}function ce(e,r,a,c){return P(e,r,a,s,C(e,0,c),C(e,c+1,-1),c)}function ne(e,n,t){switch(E(e,n)){case 5103:return c+"print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return c+e+e;case 4789:return a+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return c+e+a+e+r+e+e;case 5936:switch(M(e,n+11)){case 114:return c+e+r+A(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return c+e+r+A(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return c+e+r+A(e,/[svh]\w+-[tblr]{2}/,"lr")+e}case 6828:case 4268:case 2903:return c+e+r+e+e;case 6165:return c+e+r+"flex-"+e+e;case 5187:return c+e+A(e,/(\w+).+(:[^]+)/,c+"box-$1$2"+r+"flex-$1$2")+e;case 5443:return c+e+r+"flex-item-"+A(e,/flex-|-self/g,"")+(!T(e,/flex-|baseline/)?r+"grid-row-"+A(e,/flex-|-self/g,""):"")+e;case 4675:return c+e+r+"flex-line-pack"+A(e,/align-content|flex-|-self/g,"")+e;case 5548:return c+e+r+A(e,"shrink","negative")+e;case 5292:return c+e+r+A(e,"basis","preferred-size")+e;case 6060:return c+"box-"+A(e,"-grow","")+c+e+r+A(e,"grow","positive")+e;case 4554:return c+A(e,/([^-])(transform)/g,"$1"+c+"$2")+e;case 6187:return A(A(A(e,/(zoom-|grab)/,c+"$1"),/(image-set)/,c+"$1"),e,"")+e;case 5495:case 3959:return A(e,/(image-set\([^]*)/,c+"$1$`$1");case 4968:return A(A(e,/(.+:)(flex-)?(.*)/,c+"box-pack:$3"+r+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+c+e+e;case 4200:if(!T(e,/flex-|baseline/))return r+"grid-column-align"+C(e,n)+e;break;case 2592:case 3360:return r+A(e,"template-","")+e;case 4384:case 3616:if(t&&t.some(function(e,r){return n=r,T(e.props,/grid-\w+-end/)}))return~O(e+(t=t[n].value),"span")?e:r+A(e,"-start","")+e+r+"grid-row-span:"+(~O(t,"span")?T(t,/\d+/):+T(t,/\d+/)-+T(e,/\d+/))+";";return r+A(e,"-start","")+e;case 4896:case 4128:return t&&t.some(function(e){return T(e.props,/grid-\w+-start/)})?e:r+A(A(e,"-end","-span"),"span ","")+e;case 4095:case 3583:case 4068:case 2532:return A(e,/(.+)-inline(.+)/,c+"$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(R(e)-1-n>6)switch(M(e,n+1)){case 109:if(M(e,n+4)!==45)break;case 102:return A(e,/(.+:)(.+)-([^]+)/,"$1"+c+"$2-$3$1"+a+(M(e,n+3)==108?"$3":"$2-$3"))+e;case 115:return~O(e,"stretch")?ne(A(e,"stretch","fill-available"),n,t)+e:e}break;case 5152:case 5920:return A(e,/(.+?):(\d+)(\s*\/\s*(span)?\s*(\d+))?(.*)/,function(a,c,n,t,s,i,u){return r+c+":"+n+u+(t?r+c+"-span:"+(s?i:+i-+n)+u:"")+e});case 4949:if(M(e,n+6)===121)return A(e,":",":"+c)+e;break;case 6444:switch(M(e,M(e,14)===45?18:11)){case 120:return A(e,/(.+:)([^;\s!]+)(;|(\s+)?!.+)?/,"$1"+c+(M(e,14)===45?"inline-":"")+"box$3$1"+c+"$2$3$1"+r+"$2box$3")+e;case 100:return A(e,":",":"+r)+e}break;case 5719:case 2647:case 2135:case 3927:case 2391:return A(e,"scroll-","scroll-snap-")+e}return e}function te(e,r){var a="",c=S(e);for(var n=0;n<c;n++)a+=r(e[n],n,e,r)||"";return a}function se(e,r,a,c){switch(e.type){case g:if(e.children.length)break;case o:case s:return e.return=e.return||e.value;case n:return"";case d:return e.return=e.value+"{"+te(e.children,c)+"}";case t:e.value=e.props.join(",")}return R(a=te(e.children,c))?e.return=e.value+"{"+a+"}":""}function ie(e){var r=S(e);return function(a,c,n,t){var s="";for(var i=0;i<r;i++)s+=e[i](a,c,n,t)||"";return s}}function ue(e){return function(r){if(!r.root){if(r=r.return)e(r)}}}function oe(e,n,i,u){if(e.length>-1){if(!e.return)switch(e.type){case s:e.return=ne(e.value,e.length,i);return;case d:return te([j(e,{value:A(e.value,"@","@"+c)})],u);case t:if(e.length)return N(e.props,function(n){switch(T(n,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return te([j(e,{props:[A(n,/:(read-\w+)/,":"+a+"$1")]})],u);case"::placeholder":return te([j(e,{props:[A(n,/:(plac\w+)/,":"+c+"input-$1")]}),j(e,{props:[A(n,/:(plac\w+)/,":"+a+"$1")]}),j(e,{props:[A(n,/:(plac\w+)/,r+"input-$1")]})],u)}return""})}}}function fe(e){switch(e.type){case t:e.props=e.props.map(function(r){return N(B(r),function(r,a,c){switch(M(r,0)){case 12:return C(r,1,R(r));case 0:case 40:case 43:case 62:case 126:return r;case 58:if(c[++a]==="global")c[a]="",c[++a]="\f"+C(c[a],a=1,-1);case 32:return a===1?"":r;default:switch(a){case 0:return e=r,S(c)>1?"":r;case(a=S(c)-1):case 2:return a===2?r+e+e:r+e;default:return r}}})})}}e.CHARSET=f,e.COMMENT=n,e.COUNTER_STYLE=w,e.DECLARATION=s,e.DOCUMENT=h,e.FONT_FACE=b,e.FONT_FEATURE_VALUES=m,e.IMPORT=o,e.KEYFRAMES=d,e.LAYER=g,e.MEDIA=u,e.MOZ=a,e.MS=r,e.NAMESPACE=v,e.PAGE=i,e.RULESET=t,e.SUPPORTS=p,e.VIEWPORT=l,e.WEBKIT=c,e.abs=k,e.alloc=K,e.append=z,e.assign=x,e.caret=L,e.char=U,e.charat=M,e.combine=N,e.comment=ae,e.commenter=J,e.compile=X,e.copy=j,e.dealloc=V,e.declaration=ce,e.delimit=W,e.delimiter=q,e.escaping=Z,e.from=$,e.hash=E,e.identifier=Q,e.indexof=O,e.match=T,e.middleware=ie,e.namespace=fe,e.next=F,e.node=P,e.parse=ee,e.peek=I,e.prefix=ne,e.prefixer=oe,e.prev=_,e.replace=A,e.ruleset=re,e.rulesheet=ue,e.serialize=te,e.sizeof=S,e.slice=D,e.stringify=se,e.strlen=R,e.substr=C,e.token=Y,e.tokenize=B,e.tokenizer=H,e.trim=y,e.whitespace=G,Object.defineProperty(e,"__esModule",{value:!0})})});var require_emotion_weak_memoize_cjs_dev=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});var weakMemoize=function(func){var cache=new WeakMap;return function(arg){if(cache.has(arg))return cache.get(arg);var ret=func(arg);return cache.set(arg,ret),ret}};exports.default=weakMemoize});var require_emotion_memoize_cjs_dev=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});function memoize(fn){var cache=Object.create(null);return function(arg){if(cache[arg]===void 0)cache[arg]=fn(arg);return cache[arg]}}exports.default=memoize});var require_emotion_cache_development_cjs=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});var sheet=require_emotion_sheet_development_cjs(),stylis=require_stylis(),weakMemoize=require_emotion_weak_memoize_cjs_dev(),memoize=require_emotion_memoize_cjs_dev();function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var weakMemoize__default=_interopDefault(weakMemoize),memoize__default=_interopDefault(memoize),isBrowser=typeof document<"u",identifierWithPointTracking=function(begin,points,index){var previous=0,character=0;while(!0){if(previous=character,character=stylis.peek(),previous===38&&character===12)points[index]=1;if(stylis.token(character))break;stylis.next()}return stylis.slice(begin,stylis.position)},toRules=function(parsed,points){var index=-1,character=44;do switch(stylis.token(character)){case 0:if(character===38&&stylis.peek()===12)points[index]=1;parsed[index]+=identifierWithPointTracking(stylis.position-1,points,index);break;case 2:parsed[index]+=stylis.delimit(character);break;case 4:if(character===44){parsed[++index]=stylis.peek()===58?"&\f":"",points[index]=parsed[index].length;break}default:parsed[index]+=stylis.from(character)}while(character=stylis.next());return parsed},getRules=function(value,points){return stylis.dealloc(toRules(stylis.alloc(value),points))},fixedElements=new WeakMap,compat=function(element){if(element.type!=="rule"||!element.parent||element.length<1)return;var{value,parent}=element,isImplicitRule=element.column===parent.column&&element.line===parent.line;while(parent.type!=="rule")if(parent=parent.parent,!parent)return;if(element.props.length===1&&value.charCodeAt(0)!==58&&!fixedElements.get(parent))return;if(isImplicitRule)return;fixedElements.set(element,!0);var points=[],rules=getRules(value,points),parentRules=parent.props;for(var i=0,k=0;i<rules.length;i++)for(var j=0;j<parentRules.length;j++,k++)element.props[k]=points[i]?rules[i].replace(/&\f/g,parentRules[j]):parentRules[j]+" "+rules[i]},removeLabel=function(element){if(element.type==="decl"){var value=element.value;if(value.charCodeAt(0)===108&&value.charCodeAt(2)===98)element.return="",element.value=""}},ignoreFlag="emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason",isIgnoringComment=function(element){return element.type==="comm"&&element.children.indexOf(ignoreFlag)>-1},createUnsafeSelectorsAlarm=function(cache){return function(element,index,children){if(element.type!=="rule"||cache.compat)return;var unsafePseudoClasses=element.value.match(/(:first|:nth|:nth-last)-child/g);if(unsafePseudoClasses){var isNested=!!element.parent,commentContainer=isNested?element.parent.children:children;for(var i=commentContainer.length-1;i>=0;i--){var node=commentContainer[i];if(node.line<element.line)break;if(node.column<element.column){if(isIgnoringComment(node))return;break}}unsafePseudoClasses.forEach(function(unsafePseudoClass){console.error('The pseudo class "'+unsafePseudoClass+'" is potentially unsafe when doing server-side rendering. Try changing it to "'+unsafePseudoClass.split("-child")[0]+'-of-type".')})}}},isImportRule=function(element){return element.type.charCodeAt(1)===105&&element.type.charCodeAt(0)===64},isPrependedWithRegularRules=function(index,children){for(var i=index-1;i>=0;i--)if(!isImportRule(children[i]))return!0;return!1},nullifyElement=function(element){element.type="",element.value="",element.return="",element.children="",element.props=""},incorrectImportAlarm=function(element,index,children){if(!isImportRule(element))return;if(element.parent)console.error("`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles."),nullifyElement(element);else if(isPrependedWithRegularRules(index,children))console.error("`@import` rules can't be after other rules. Please put your `@import` rules before your other rules."),nullifyElement(element)};function prefix(value,length){switch(stylis.hash(value,length)){case 5103:return stylis.WEBKIT+"print-"+value+value;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return stylis.WEBKIT+value+value;case 5349:case 4246:case 4810:case 6968:case 2756:return stylis.WEBKIT+value+stylis.MOZ+value+stylis.MS+value+value;case 6828:case 4268:return stylis.WEBKIT+value+stylis.MS+value+value;case 6165:return stylis.WEBKIT+value+stylis.MS+"flex-"+value+value;case 5187:return stylis.WEBKIT+value+stylis.replace(value,/(\w+).+(:[^]+)/,stylis.WEBKIT+"box-$1$2"+stylis.MS+"flex-$1$2")+value;case 5443:return stylis.WEBKIT+value+stylis.MS+"flex-item-"+stylis.replace(value,/flex-|-self/,"")+value;case 4675:return stylis.WEBKIT+value+stylis.MS+"flex-line-pack"+stylis.replace(value,/align-content|flex-|-self/,"")+value;case 5548:return stylis.WEBKIT+value+stylis.MS+stylis.replace(value,"shrink","negative")+value;case 5292:return stylis.WEBKIT+value+stylis.MS+stylis.replace(value,"basis","preferred-size")+value;case 6060:return stylis.WEBKIT+"box-"+stylis.replace(value,"-grow","")+stylis.WEBKIT+value+stylis.MS+stylis.replace(value,"grow","positive")+value;case 4554:return stylis.WEBKIT+stylis.replace(value,/([^-])(transform)/g,"$1"+stylis.WEBKIT+"$2")+value;case 6187:return stylis.replace(stylis.replace(stylis.replace(value,/(zoom-|grab)/,stylis.WEBKIT+"$1"),/(image-set)/,stylis.WEBKIT+"$1"),value,"")+value;case 5495:case 3959:return stylis.replace(value,/(image-set\([^]*)/,stylis.WEBKIT+"$1$`$1");case 4968:return stylis.replace(stylis.replace(value,/(.+:)(flex-)?(.*)/,stylis.WEBKIT+"box-pack:$3"+stylis.MS+"flex-pack:$3"),/s.+-b[^;]+/,"justify")+stylis.WEBKIT+value+value;case 4095:case 3583:case 4068:case 2532:return stylis.replace(value,/(.+)-inline(.+)/,stylis.WEBKIT+"$1$2")+value;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(stylis.strlen(value)-1-length>6)switch(stylis.charat(value,length+1)){case 109:if(stylis.charat(value,length+4)!==45)break;case 102:return stylis.replace(value,/(.+:)(.+)-([^]+)/,"$1"+stylis.WEBKIT+"$2-$3$1"+stylis.MOZ+(stylis.charat(value,length+3)==108?"$3":"$2-$3"))+value;case 115:return~stylis.indexof(value,"stretch")?prefix(stylis.replace(value,"stretch","fill-available"),length)+value:value}break;case 4949:if(stylis.charat(value,length+1)!==115)break;case 6444:switch(stylis.charat(value,stylis.strlen(value)-3-(~stylis.indexof(value,"!important")&&10))){case 107:return stylis.replace(value,":",":"+stylis.WEBKIT)+value;case 101:return stylis.replace(value,/(.+:)([^;!]+)(;|!.+)?/,"$1"+stylis.WEBKIT+(stylis.charat(value,14)===45?"inline-":"")+"box$3$1"+stylis.WEBKIT+"$2$3$1"+stylis.MS+"$2box$3")+value}break;case 5936:switch(stylis.charat(value,length+11)){case 114:return stylis.WEBKIT+value+stylis.MS+stylis.replace(value,/[svh]\w+-[tblr]{2}/,"tb")+value;case 108:return stylis.WEBKIT+value+stylis.MS+stylis.replace(value,/[svh]\w+-[tblr]{2}/,"tb-rl")+value;case 45:return stylis.WEBKIT+value+stylis.MS+stylis.replace(value,/[svh]\w+-[tblr]{2}/,"lr")+value}return stylis.WEBKIT+value+stylis.MS+value+value}return value}var prefixer=function(element,index,children,callback){if(element.length>-1){if(!element.return)switch(element.type){case stylis.DECLARATION:element.return=prefix(element.value,element.length);break;case stylis.KEYFRAMES:return stylis.serialize([stylis.copy(element,{value:stylis.replace(element.value,"@","@"+stylis.WEBKIT)})],callback);case stylis.RULESET:if(element.length)return stylis.combine(element.props,function(value){switch(stylis.match(value,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return stylis.serialize([stylis.copy(element,{props:[stylis.replace(value,/:(read-\w+)/,":"+stylis.MOZ+"$1")]})],callback);case"::placeholder":return stylis.serialize([stylis.copy(element,{props:[stylis.replace(value,/:(plac\w+)/,":"+stylis.WEBKIT+"input-$1")]}),stylis.copy(element,{props:[stylis.replace(value,/:(plac\w+)/,":"+stylis.MOZ+"$1")]}),stylis.copy(element,{props:[stylis.replace(value,/:(plac\w+)/,stylis.MS+"input-$1")]})],callback)}return""})}}},getServerStylisCache=isBrowser?void 0:weakMemoize__default.default(function(){return memoize__default.default(function(){return{}})}),defaultStylisPlugins=[prefixer],getSourceMap;sourceMapPattern=/\/\*#\ssourceMappingURL=data:application\/json;\S+\s+\*\//g,getSourceMap=function(styles){var matches=styles.match(sourceMapPattern);if(!matches)return;return matches[matches.length-1]};var sourceMapPattern,createCache=function(options){var key=options.key;if(!key)throw Error(`You have to configure \`key\` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.
4
4
  If multiple caches share the same key they might "fight" for each other's style elements.`);if(isBrowser&&key==="css"){var ssrStyles=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(ssrStyles,function(node){var dataEmotionAttribute=node.getAttribute("data-emotion");if(dataEmotionAttribute.indexOf(" ")===-1)return;document.head.appendChild(node),node.setAttribute("data-s","")})}var stylisPlugins=options.stylisPlugins||defaultStylisPlugins;if(/[^a-z-]/.test(key))throw Error('Emotion key must only contain lower case alphabetical characters and - but "'+key+'" was passed');var inserted={},container,nodesToHydrate=[];if(isBrowser)container=options.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+key+' "]'),function(node){var attrib=node.getAttribute("data-emotion").split(" ");for(var i=1;i<attrib.length;i++)inserted[attrib[i]]=!0;nodesToHydrate.push(node)});var _insert,omnipresentPlugins=[compat,removeLabel];if(omnipresentPlugins.push(createUnsafeSelectorsAlarm({get compat(){return cache.compat}}),incorrectImportAlarm),!getServerStylisCache){var currentSheet,finalizingPlugins=[stylis.stringify,function(element){if(!element.root){if(element.return)currentSheet.insert(element.return);else if(element.value&&element.type!==stylis.COMMENT)currentSheet.insert(element.value+"{}")}}],serializer=stylis.middleware(omnipresentPlugins.concat(stylisPlugins,finalizingPlugins)),stylis$1=function(styles){return stylis.serialize(stylis.compile(styles),serializer)};_insert=function(selector,serialized,sheet,shouldCache){if(currentSheet=sheet,getSourceMap){var sourceMap=getSourceMap(serialized.styles);if(sourceMap)currentSheet={insert:function(rule){sheet.insert(rule+sourceMap)}}}if(stylis$1(selector?selector+"{"+serialized.styles+"}":serialized.styles),shouldCache)cache.inserted[serialized.name]=!0}}else{var _finalizingPlugins=[stylis.stringify],_serializer=stylis.middleware(omnipresentPlugins.concat(stylisPlugins,_finalizingPlugins)),_stylis=function(styles){return stylis.serialize(stylis.compile(styles),_serializer)},serverStylisCache=getServerStylisCache(stylisPlugins)(key),getRules=function(selector,serialized){var name=serialized.name;if(serverStylisCache[name]===void 0)serverStylisCache[name]=_stylis(selector?selector+"{"+serialized.styles+"}":serialized.styles);return serverStylisCache[name]};_insert=function(selector,serialized,sheet,shouldCache){var name=serialized.name,rules=getRules(selector,serialized);if(cache.compat===void 0){if(shouldCache)cache.inserted[name]=!0;if(getSourceMap){var sourceMap=getSourceMap(serialized.styles);if(sourceMap)return rules+sourceMap}return rules}else if(shouldCache)cache.inserted[name]=rules;else return rules}}var cache={key,sheet:new sheet.StyleSheet({key,container,nonce:options.nonce,speedy:options.speedy,prepend:options.prepend,insertionPoint:options.insertionPoint}),nonce:options.nonce,inserted,registered:{},insert:_insert};return cache.sheet.hydrate(nodesToHydrate),cache};exports.default=createCache});var require_extends=__commonJS(function(exports,module){function _extends(){return module.exports=_extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},module.exports.__esModule=!0,module.exports.default=module.exports,_extends.apply(null,arguments)}module.exports=_extends,module.exports.__esModule=!0,module.exports.default=module.exports});var require_react_is_development=__commonJS(function(exports){(function(){var hasSymbol=typeof Symbol==="function"&&Symbol.for,REACT_ELEMENT_TYPE=hasSymbol?Symbol.for("react.element"):60103,REACT_PORTAL_TYPE=hasSymbol?Symbol.for("react.portal"):60106,REACT_FRAGMENT_TYPE=hasSymbol?Symbol.for("react.fragment"):60107,REACT_STRICT_MODE_TYPE=hasSymbol?Symbol.for("react.strict_mode"):60108,REACT_PROFILER_TYPE=hasSymbol?Symbol.for("react.profiler"):60114,REACT_PROVIDER_TYPE=hasSymbol?Symbol.for("react.provider"):60109,REACT_CONTEXT_TYPE=hasSymbol?Symbol.for("react.context"):60110,REACT_ASYNC_MODE_TYPE=hasSymbol?Symbol.for("react.async_mode"):60111,REACT_CONCURRENT_MODE_TYPE=hasSymbol?Symbol.for("react.concurrent_mode"):60111,REACT_FORWARD_REF_TYPE=hasSymbol?Symbol.for("react.forward_ref"):60112,REACT_SUSPENSE_TYPE=hasSymbol?Symbol.for("react.suspense"):60113,REACT_SUSPENSE_LIST_TYPE=hasSymbol?Symbol.for("react.suspense_list"):60120,REACT_MEMO_TYPE=hasSymbol?Symbol.for("react.memo"):60115,REACT_LAZY_TYPE=hasSymbol?Symbol.for("react.lazy"):60116,REACT_BLOCK_TYPE=hasSymbol?Symbol.for("react.block"):60121,REACT_FUNDAMENTAL_TYPE=hasSymbol?Symbol.for("react.fundamental"):60117,REACT_RESPONDER_TYPE=hasSymbol?Symbol.for("react.responder"):60118,REACT_SCOPE_TYPE=hasSymbol?Symbol.for("react.scope"):60119;function isValidElementType(type){return typeof type==="string"||typeof type==="function"||type===REACT_FRAGMENT_TYPE||type===REACT_CONCURRENT_MODE_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_PROVIDER_TYPE||type.$$typeof===REACT_CONTEXT_TYPE||type.$$typeof===REACT_FORWARD_REF_TYPE||type.$$typeof===REACT_FUNDAMENTAL_TYPE||type.$$typeof===REACT_RESPONDER_TYPE||type.$$typeof===REACT_SCOPE_TYPE||type.$$typeof===REACT_BLOCK_TYPE)}function typeOf(object){if(typeof object==="object"&&object!==null){var $$typeof=object.$$typeof;switch($$typeof){case REACT_ELEMENT_TYPE:var type=object.type;switch(type){case REACT_ASYNC_MODE_TYPE:case REACT_CONCURRENT_MODE_TYPE:case REACT_FRAGMENT_TYPE:case REACT_PROFILER_TYPE:case REACT_STRICT_MODE_TYPE:case REACT_SUSPENSE_TYPE:return type;default:var $$typeofType=type&&type.$$typeof;switch($$typeofType){case REACT_CONTEXT_TYPE:case REACT_FORWARD_REF_TYPE:case REACT_LAZY_TYPE:case REACT_MEMO_TYPE:case REACT_PROVIDER_TYPE:return $$typeofType;default:return $$typeof}}case REACT_PORTAL_TYPE:return $$typeof}}return}var AsyncMode=REACT_ASYNC_MODE_TYPE,ConcurrentMode=REACT_CONCURRENT_MODE_TYPE,ContextConsumer=REACT_CONTEXT_TYPE,ContextProvider=REACT_PROVIDER_TYPE,Element=REACT_ELEMENT_TYPE,ForwardRef=REACT_FORWARD_REF_TYPE,Fragment=REACT_FRAGMENT_TYPE,Lazy=REACT_LAZY_TYPE,Memo=REACT_MEMO_TYPE,Portal=REACT_PORTAL_TYPE,Profiler=REACT_PROFILER_TYPE,StrictMode=REACT_STRICT_MODE_TYPE,Suspense=REACT_SUSPENSE_TYPE,hasWarnedAboutDeprecatedIsAsyncMode=!1;function isAsyncMode(object){if(!hasWarnedAboutDeprecatedIsAsyncMode)hasWarnedAboutDeprecatedIsAsyncMode=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.");return isConcurrentMode(object)||typeOf(object)===REACT_ASYNC_MODE_TYPE}function isConcurrentMode(object){return typeOf(object)===REACT_CONCURRENT_MODE_TYPE}function isContextConsumer(object){return typeOf(object)===REACT_CONTEXT_TYPE}function isContextProvider(object){return typeOf(object)===REACT_PROVIDER_TYPE}function isElement(object){return typeof object==="object"&&object!==null&&object.$$typeof===REACT_ELEMENT_TYPE}function isForwardRef(object){return typeOf(object)===REACT_FORWARD_REF_TYPE}function isFragment(object){return typeOf(object)===REACT_FRAGMENT_TYPE}function isLazy(object){return typeOf(object)===REACT_LAZY_TYPE}function isMemo(object){return typeOf(object)===REACT_MEMO_TYPE}function isPortal(object){return typeOf(object)===REACT_PORTAL_TYPE}function isProfiler(object){return typeOf(object)===REACT_PROFILER_TYPE}function isStrictMode(object){return typeOf(object)===REACT_STRICT_MODE_TYPE}function isSuspense(object){return typeOf(object)===REACT_SUSPENSE_TYPE}exports.AsyncMode=AsyncMode,exports.ConcurrentMode=ConcurrentMode,exports.ContextConsumer=ContextConsumer,exports.ContextProvider=ContextProvider,exports.Element=Element,exports.ForwardRef=ForwardRef,exports.Fragment=Fragment,exports.Lazy=Lazy,exports.Memo=Memo,exports.Portal=Portal,exports.Profiler=Profiler,exports.StrictMode=StrictMode,exports.Suspense=Suspense,exports.isAsyncMode=isAsyncMode,exports.isConcurrentMode=isConcurrentMode,exports.isContextConsumer=isContextConsumer,exports.isContextProvider=isContextProvider,exports.isElement=isElement,exports.isForwardRef=isForwardRef,exports.isFragment=isFragment,exports.isLazy=isLazy,exports.isMemo=isMemo,exports.isPortal=isPortal,exports.isProfiler=isProfiler,exports.isStrictMode=isStrictMode,exports.isSuspense=isSuspense,exports.isValidElementType=isValidElementType,exports.typeOf=typeOf})()});var require_hoist_non_react_statics_cjs=__commonJS(function(exports,module){var reactIs=__toESM(require_react_is_development()),REACT_STATICS={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},KNOWN_STATICS={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},FORWARD_REF_STATICS={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},MEMO_STATICS={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},TYPE_STATICS={};TYPE_STATICS[reactIs.ForwardRef]=FORWARD_REF_STATICS;TYPE_STATICS[reactIs.Memo]=MEMO_STATICS;function getStatics(component){if(reactIs.isMemo(component))return MEMO_STATICS;return TYPE_STATICS[component.$$typeof]||REACT_STATICS}var{defineProperty,getOwnPropertyNames,getOwnPropertySymbols,getOwnPropertyDescriptor,getPrototypeOf,prototype:objectPrototype}=Object;function hoistNonReactStatics(targetComponent,sourceComponent,blacklist){if(typeof sourceComponent!=="string"){if(objectPrototype){var inheritedComponent=getPrototypeOf(sourceComponent);if(inheritedComponent&&inheritedComponent!==objectPrototype)hoistNonReactStatics(targetComponent,inheritedComponent,blacklist)}var keys=getOwnPropertyNames(sourceComponent);if(getOwnPropertySymbols)keys=keys.concat(getOwnPropertySymbols(sourceComponent));var targetStatics=getStatics(targetComponent),sourceStatics=getStatics(sourceComponent);for(var i=0;i<keys.length;++i){var key=keys[i];if(!KNOWN_STATICS[key]&&!(blacklist&&blacklist[key])&&!(sourceStatics&&sourceStatics[key])&&!(targetStatics&&targetStatics[key])){var descriptor=getOwnPropertyDescriptor(sourceComponent,key);try{defineProperty(targetComponent,key,descriptor)}catch(e){}}}}return targetComponent}module.exports=hoistNonReactStatics});var require_emotion_react__isolated_hnrs_development_cjs=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});var hoistNonReactStatics$1=require_hoist_non_react_statics_cjs();function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var hoistNonReactStatics__default=_interopDefault(hoistNonReactStatics$1),hoistNonReactStatics=function(targetComponent,sourceComponent){return hoistNonReactStatics__default.default(targetComponent,sourceComponent)};exports.default=hoistNonReactStatics});var require_emotion_utils_cjs=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});var isBrowser=typeof document<"u";function getRegisteredStyles(registered,registeredStyles,classNames){var rawClassName="";return classNames.split(" ").forEach(function(className){if(registered[className]!==void 0)registeredStyles.push(registered[className]+";");else if(className)rawClassName+=className+" "}),rawClassName}var registerStyles=function(cache,serialized,isStringTag){var className=cache.key+"-"+serialized.name;if((isStringTag===!1||isBrowser===!1&&cache.compat!==void 0)&&cache.registered[className]===void 0)cache.registered[className]=serialized.styles},insertStyles=function(cache,serialized,isStringTag){registerStyles(cache,serialized,isStringTag);var className=cache.key+"-"+serialized.name;if(cache.inserted[serialized.name]===void 0){var stylesForSSR="",current=serialized;do{var maybeStyles=cache.insert(serialized===current?"."+className:"",current,cache.sheet,!0);if(!isBrowser&&maybeStyles!==void 0)stylesForSSR+=maybeStyles;current=current.next}while(current!==void 0);if(!isBrowser&&stylesForSSR.length!==0)return stylesForSSR}};exports.getRegisteredStyles=getRegisteredStyles;exports.insertStyles=insertStyles;exports.registerStyles=registerStyles});var require_emotion_hash_cjs_dev=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});function murmur2(str){var h=0,k,i=0,len=str.length;for(;len>=4;++i,len-=4)k=str.charCodeAt(i)&255|(str.charCodeAt(++i)&255)<<8|(str.charCodeAt(++i)&255)<<16|(str.charCodeAt(++i)&255)<<24,k=(k&65535)*1540483477+((k>>>16)*59797<<16),k^=k>>>24,h=(k&65535)*1540483477+((k>>>16)*59797<<16)^(h&65535)*1540483477+((h>>>16)*59797<<16);switch(len){case 3:h^=(str.charCodeAt(i+2)&255)<<16;case 2:h^=(str.charCodeAt(i+1)&255)<<8;case 1:h^=str.charCodeAt(i)&255,h=(h&65535)*1540483477+((h>>>16)*59797<<16)}return h^=h>>>13,h=(h&65535)*1540483477+((h>>>16)*59797<<16),((h^h>>>15)>>>0).toString(36)}exports.default=murmur2});var require_emotion_unitless_cjs=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});var unitlessKeys={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,scale:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};exports.default=unitlessKeys});var require_emotion_serialize_development_cjs=__commonJS(function(exports){Object.defineProperty(exports,"__esModule",{value:!0});var hashString=require_emotion_hash_cjs_dev(),unitless=require_emotion_unitless_cjs(),memoize=require_emotion_memoize_cjs_dev();function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var hashString__default=_interopDefault(hashString),unitless__default=_interopDefault(unitless),memoize__default=_interopDefault(memoize),isDevelopment=!0,ILLEGAL_ESCAPE_SEQUENCE_ERROR=`You have illegal escape sequence in your template literal, most likely inside content's property value.
5
5
  Because you write your CSS inside a JavaScript string you actually have to do double escaping, so for example "content: '\\00d7';" should become "content: '\\\\00d7';".
@@ -0,0 +1,7 @@
1
+ // @bun
2
+ import{normalizeRepoManifest,CURRENT_SCHEMA_VERSION,schemaVersionOf,planMigration}from"./chunk-nte0t7v3.js";import{localDesignOf,findOwningManifest,recordedDesignName,loadDesignFolder}from"./chunk-5ezzc1h2.js";import{TOOL_VERSION}from"./chunk-kz4423th.js";import{existsSync,realpathSync}from"fs";import{readdir,readFile,writeFile}from"fs/promises";import{join,resolve}from"path";function isObject(value){return typeof value==="object"&&value!==null&&!Array.isArray(value)}var isAnnotationSidecar=(file)=>file.endsWith(".annotations.json"),isThemeDocument=(file)=>file.endsWith(".json");async function planRewrites(folder,dir,matches,transform){let files=[];try{files=await readdir(join(folder,dir))}catch{return[]}let out=[];for(let file of files.sort()){if(!matches(file))continue;let rel=join(dir,file),prev=await readFile(join(folder,rel),"utf8"),next=`${JSON.stringify(transform(JSON.parse(prev)),null,2)}
3
+ `;if(next!==prev)out.push({rel,next})}return out}async function upgradeFolder(folder,opts={}){let configPath=join(folder,".design","config.json"),rawConfig=JSON.parse(await readFile(configPath,"utf8")),from=schemaVersionOf(rawConfig),manifest=await findOwningManifest(folder).catch(()=>null),run=planMigration(rawConfig,{name:legacyNameOf(folder,manifest)}),manifestFiles=manifest?.legacy?[manifest.path]:[];if(run.applied.length===0){if(manifest?.legacy&&!opts.dryRun)await migrateManifest(manifest);return{from,to:CURRENT_SCHEMA_VERSION,applied:[],changedFiles:manifestFiles}}let rewrites=[...await planRewrites(folder,"screens",isAnnotationSidecar,(parsed)=>Array.isArray(parsed)?parsed.map((e)=>typeof e==="object"&&e!==null?run.annotation(e):e):parsed),...await planRewrites(folder,"theme",isThemeDocument,(parsed)=>isObject(parsed)?run.theme(parsed):parsed)],nextConfig={...run.config,toolVersion:TOOL_VERSION},changedFiles=[join(".design","config.json"),...rewrites.map((r)=>r.rel),...manifestFiles];if(opts.dryRun)return{from,to:CURRENT_SCHEMA_VERSION,applied:run.applied,changedFiles};await writeFile(configPath,`${JSON.stringify(nextConfig,null,2)}
4
+ `,"utf8");for(let r of rewrites)await writeFile(join(folder,r.rel),r.next,"utf8");if(manifest?.legacy)await migrateManifest(manifest);return await loadDesignFolder(folder),{from,to:CURRENT_SCHEMA_VERSION,applied:run.applied,changedFiles}}function legacyNameOf(folder,manifest){let local=localDesignOf(folder);if(local)return local.legacyName;let target=realOr(folder);for(let[path,name]of manifest?.legacyNames??[])if(realOr(path)===target)return name;return}function realOr(path){return existsSync(path)?realpathSync(path):resolve(path)}async function migrateManifest(manifest){for(let[path,name]of manifest.legacyNames){if(recordedDesignName(path))continue;let configPath=join(path,".design","config.json"),raw;try{raw=JSON.parse(await readFile(configPath,"utf8"))}catch{continue}if(isObject(raw))await writeFile(configPath,`${JSON.stringify({...raw,name},null,2)}
5
+ `)}let raw=JSON.parse(await readFile(manifest.path,"utf8"));await writeFile(manifest.path,`${JSON.stringify(normalizeRepoManifest(raw).manifest,null,2)}
6
+ `)}
7
+ export{upgradeFolder};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{DEFAULT_TYPESET_NAME,typesetScale,resolveColors}from"./chunk-bk8b7f9a.js";import{helpersRegistry,parse_default,formatRgb,STYLE_PROP,catalogFromManifest,identifierRef}from"./chunk-329e3phg.js";import{_objectWithoutPropertiesLoose,_extends,_assertThisInitialized,_setPrototypeOf}from"./chunk-h6gchare.js";import{resolveProviderSrcDir}from"./chunk-fjbzk4sw.js";import{require_react_development,require_react_dom}from"./chunk-w5rzk6ms.js";import{__toESM,__commonJS}from"./chunk-2smsg2ct.js";import{ANTD_VERSION}from"./chunk-0t68szgr.js";var require_classnames=__commonJS(function(exports,module){/*!
2
+ import{resolveColors,DEFAULT_TYPESET_NAME,typesetScale}from"./chunk-nte0t7v3.js";import{helpersRegistry,parse_default,formatRgb,STYLE_PROP,catalogFromManifest,identifierRef}from"./chunk-5ezzc1h2.js";import{_objectWithoutPropertiesLoose,_extends,_assertThisInitialized,_setPrototypeOf}from"./chunk-h6gchare.js";import{resolveProviderSrcDir}from"./chunk-fjbzk4sw.js";import{require_react_development,require_react_dom}from"./chunk-c4fym47a.js";import{__toESM,__commonJS}from"./chunk-2smsg2ct.js";import{ANTD_VERSION}from"./chunk-0t68szgr.js";var require_classnames=__commonJS(function(exports,module){/*!
3
3
  Copyright (c) 2018 Jed Watson.
4
4
  Licensed under the MIT License (MIT), see
5
5
  http://jedwatson.github.io/classnames
@@ -439,4 +439,4 @@ html body {
439
439
  ${componentCls}-collapse,
440
440
  ${componentCls}-edit,
441
441
  ${componentCls}-copy
442
- `]:Object.assign(Object.assign({},operationUnit(token)),{marginInlineStart:token.marginXXS})}),getEditableStyles(token)),getCopyableStyles(token)),getEllipsisStyles()),{"&-rtl":{direction:"rtl"}})}},prepareComponentToken31=()=>({titleMarginTop:"1.2em",titleMarginBottom:"0.5em"}),style_default36=genStyleHooks("Typography",genTypographyStyle,prepareComponentToken31);var Editable=(props)=>{let{prefixCls,"aria-label":ariaLabel,className,style,direction,maxLength,autoSize=!0,value,onSave,onCancel,onEnd,component,enterIcon=React396.createElement(EnterOutlined_default2,null)}=props,ref=React396.useRef(null),inComposition=React396.useRef(!1),lastKeyCode=React396.useRef(null),[current,setCurrent]=React396.useState(value);React396.useEffect(()=>{setCurrent(value)},[value]),React396.useEffect(()=>{var _a;if((_a=ref.current)===null||_a===void 0?void 0:_a.resizableTextArea){let{textArea}=ref.current.resizableTextArea;textArea.focus();let{length}=textArea.value;textArea.setSelectionRange(length,length)}},[]);let onChange=({target})=>{setCurrent(target.value.replace(/[\n\r]/g,""))},onCompositionStart=()=>{inComposition.current=!0},onCompositionEnd=()=>{inComposition.current=!1},onKeyDown=({keyCode})=>{if(inComposition.current)return;lastKeyCode.current=keyCode},confirmChange=()=>{onSave(current.trim())},onKeyUp=({keyCode,ctrlKey,altKey,metaKey,shiftKey})=>{if(lastKeyCode.current!==keyCode||inComposition.current||ctrlKey||altKey||metaKey||shiftKey)return;if(keyCode===KeyCode_default.ENTER)confirmChange(),onEnd===null||onEnd===void 0||onEnd();else if(keyCode===KeyCode_default.ESC)onCancel()},onBlur=()=>{confirmChange()},[wrapCSSVar,hashId,cssVarCls]=style_default36(prefixCls),textAreaClassName=import_classnames165.default(prefixCls,`${prefixCls}-edit-content`,{[`${prefixCls}-rtl`]:direction==="rtl",[`${prefixCls}-${component}`]:!!component},className,hashId,cssVarCls);return wrapCSSVar(React396.createElement("div",{className:textAreaClassName,style},React396.createElement(TextArea_default2,{ref,maxLength,value:current,onChange,onKeyDown,onKeyUp,onCompositionStart,onCompositionEnd,onBlur,"aria-label":ariaLabel,rows:1,autoSize}),enterIcon!==null?cloneElement3(enterIcon,{className:`${prefixCls}-edit-content-confirm`}):null))},Editable_default=Editable;var React397=__toESM(require_react_development()),import_copy_to_clipboard=__toESM(require_copy_to_clipboard());var __awaiter=function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve){resolve(value)})}return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},useCopyClick=({copyConfig,children})=>{let[copied,setCopied]=React397.useState(!1),[copyLoading,setCopyLoading]=React397.useState(!1),copyIdRef=React397.useRef(null),cleanCopyId=()=>{if(copyIdRef.current)clearTimeout(copyIdRef.current)},copyOptions={};if(copyConfig.format)copyOptions.format=copyConfig.format;React397.useEffect(()=>cleanCopyId,[]);let onClick=useEvent((e)=>__awaiter(void 0,void 0,void 0,function*(){var _a;e===null||e===void 0||e.preventDefault(),e===null||e===void 0||e.stopPropagation(),setCopyLoading(!0);try{let text=typeof copyConfig.text==="function"?yield copyConfig.text():copyConfig.text;import_copy_to_clipboard.default(text||toList_default(children,!0).join("")||"",copyOptions),setCopyLoading(!1),setCopied(!0),cleanCopyId(),copyIdRef.current=setTimeout(()=>{setCopied(!1)},3000),(_a=copyConfig.onCopy)===null||_a===void 0||_a.call(copyConfig,e)}catch(error){throw setCopyLoading(!1),error}}));return{copied,copyLoading,onClick}},useCopyClick_default=useCopyClick;var React398=__toESM(require_react_development());function useMergedConfig(propConfig,templateConfig){return React398.useMemo(()=>{let support=!!propConfig;return[support,Object.assign(Object.assign({},templateConfig),support&&typeof propConfig==="object"?propConfig:null)]},[propConfig])}var import_react123=__toESM(require_react_development()),usePrevious=(value)=>{let ref=import_react123.useRef(void 0);return import_react123.useEffect(()=>{ref.current=value}),ref.current},usePrevious_default=usePrevious;var import_react124=__toESM(require_react_development()),useTooltipProps=(tooltip,editConfigText,children)=>import_react124.useMemo(()=>{if(tooltip===!0)return{title:editConfigText!==null&&editConfigText!==void 0?editConfigText:children};if(import_react124.isValidElement(tooltip))return{title:tooltip};if(typeof tooltip==="object")return Object.assign({title:editConfigText!==null&&editConfigText!==void 0?editConfigText:children},tooltip);return{title:tooltip}},[tooltip,editConfigText,children]),useTooltipProps_default=useTooltipProps;var React399=__toESM(require_react_development()),import_classnames166=__toESM(require_classnames());var __rest63=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},Typography=React399.forwardRef((props,ref)=>{let{prefixCls:customizePrefixCls,component:Component="article",className,rootClassName,setContentRef,children,direction:typographyDirection,style}=props,restProps=__rest63(props,["prefixCls","component","className","rootClassName","setContentRef","children","direction","style"]),{getPrefixCls,direction:contextDirection,className:contextClassName,style:contextStyle}=useComponentConfig("typography"),direction=typographyDirection!==null&&typographyDirection!==void 0?typographyDirection:contextDirection,mergedRef=setContentRef?composeRef(ref,setContentRef):ref,prefixCls=getPrefixCls("typography",customizePrefixCls);devUseWarning("Typography").deprecated(!setContentRef,"setContentRef","ref");let[wrapCSSVar,hashId,cssVarCls]=style_default36(prefixCls),componentClassName=import_classnames166.default(prefixCls,contextClassName,{[`${prefixCls}-rtl`]:direction==="rtl"},className,rootClassName,hashId,cssVarCls),mergedStyle=Object.assign(Object.assign({},contextStyle),style);return wrapCSSVar(React399.createElement(Component,Object.assign({className:componentClassName,style:mergedStyle,ref:mergedRef},restProps),children))});Typography.displayName="Typography";var Typography_default=Typography;var React401=__toESM(require_react_development());var React400=__toESM(require_react_development());var CopyOutlined={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"},CopyOutlined_default=CopyOutlined;var CopyOutlined2=function(props,ref){return React400.createElement(AntdIcon_default,_extends({},props,{ref,icon:CopyOutlined_default}))},RefIcon32=React400.forwardRef(CopyOutlined2);RefIcon32.displayName="CopyOutlined";var CopyOutlined_default2=RefIcon32;var import_classnames167=__toESM(require_classnames());function toList2(val){if(val===!1)return[!1,!1];return Array.isArray(val)?val:[val]}function getNode(dom,defaultNode,needDom){if(dom===!0||dom===void 0)return defaultNode;return dom||needDom&&defaultNode}function isEleEllipsis(ele){let childDiv=document.createElement("em");ele.appendChild(childDiv),childDiv.className="ant-typography-css-ellipsis-content-measure";let rect=ele.getBoundingClientRect(),childRect=childDiv.getBoundingClientRect();return ele.removeChild(childDiv),rect.left>childRect.left||childRect.right>rect.right||rect.top>childRect.top||childRect.bottom>rect.bottom}var isValidText=(val)=>["string","number"].includes(typeof val);var CopyBtn=({prefixCls,copied,locale,iconOnly,tooltips,icon,tabIndex,onCopy,loading:btnLoading})=>{let tooltipNodes=toList2(tooltips),iconNodes=toList2(icon),{copied:copiedText,copy:copyText}=locale!==null&&locale!==void 0?locale:{},systemStr=copied?copiedText:copyText,copyTitle=getNode(tooltipNodes[copied?1:0],systemStr),ariaLabel=typeof copyTitle==="string"?copyTitle:systemStr;return React401.createElement(tooltip_default,{title:copyTitle},React401.createElement("button",{type:"button",className:import_classnames167.default(`${prefixCls}-copy`,{[`${prefixCls}-copy-success`]:copied,[`${prefixCls}-copy-icon-only`]:iconOnly}),onClick:onCopy,"aria-label":ariaLabel,tabIndex},copied?getNode(iconNodes[1],React401.createElement(CheckOutlined_default2,null),!0):getNode(iconNodes[0],btnLoading?React401.createElement(LoadingOutlined_default2,null):React401.createElement(CopyOutlined_default2,null),!0)))},CopyBtn_default=CopyBtn;var React402=__toESM(require_react_development());var MeasureText=React402.forwardRef(({style,children},ref)=>{let spanRef=React402.useRef(null);return React402.useImperativeHandle(ref,()=>({isExceed:()=>{let span=spanRef.current;return span.scrollHeight>span.clientHeight},getHeight:()=>spanRef.current.clientHeight})),React402.createElement("span",{"aria-hidden":!0,ref:spanRef,style:Object.assign({position:"fixed",display:"block",left:0,top:0,pointerEvents:"none",backgroundColor:"rgba(255, 0, 0, 0.65)"},style)},children)}),getNodesLen=(nodeList)=>nodeList.reduce((totalLen,node)=>totalLen+(isValidText(node)?String(node).length:1),0);function sliceNodes(nodeList,len){let currLen=0,currentNodeList=[];for(let i=0;i<nodeList.length;i+=1){if(currLen===len)return currentNodeList;let node=nodeList[i],nodeLen=isValidText(node)?String(node).length:1,nextLen=currLen+nodeLen;if(nextLen>len){let restLen=len-currLen;return currentNodeList.push(String(node).slice(0,restLen)),currentNodeList}currentNodeList.push(node),currLen=nextLen}return nodeList}var STATUS_MEASURE_NONE=0,STATUS_MEASURE_PREPARE=1,STATUS_MEASURE_START=2,STATUS_MEASURE_NEED_ELLIPSIS=3,STATUS_MEASURE_NO_NEED_ELLIPSIS=4,lineClipStyle={display:"-webkit-box",overflow:"hidden",WebkitBoxOrient:"vertical"};function EllipsisMeasure(props){let{enableMeasure,width,text,children,rows,expanded,miscDeps,onEllipsis}=props,nodeList=React402.useMemo(()=>toArray(text),[text]),nodeLen=React402.useMemo(()=>getNodesLen(nodeList),[text]),fullContent=React402.useMemo(()=>children(nodeList,!1),[text]),[ellipsisCutIndex,setEllipsisCutIndex]=React402.useState(null),cutMidRef=React402.useRef(null),measureWhiteSpaceRef=React402.useRef(null),needEllipsisRef=React402.useRef(null),descRowsEllipsisRef=React402.useRef(null),symbolRowEllipsisRef=React402.useRef(null),[canEllipsis,setCanEllipsis]=React402.useState(!1),[needEllipsis,setNeedEllipsis]=React402.useState(STATUS_MEASURE_NONE),[ellipsisHeight,setEllipsisHeight]=React402.useState(0),[parentWhiteSpace,setParentWhiteSpace]=React402.useState(null);useLayoutEffect_default(()=>{if(enableMeasure&&width&&nodeLen)setNeedEllipsis(STATUS_MEASURE_PREPARE);else setNeedEllipsis(STATUS_MEASURE_NONE)},[width,text,rows,enableMeasure,nodeList]),useLayoutEffect_default(()=>{var _a,_b,_c,_d;if(needEllipsis===STATUS_MEASURE_PREPARE){setNeedEllipsis(STATUS_MEASURE_START);let nextWhiteSpace=measureWhiteSpaceRef.current&&getComputedStyle(measureWhiteSpaceRef.current).whiteSpace;setParentWhiteSpace(nextWhiteSpace)}else if(needEllipsis===STATUS_MEASURE_START){let isOverflow=!!((_a=needEllipsisRef.current)===null||_a===void 0?void 0:_a.isExceed());setNeedEllipsis(isOverflow?STATUS_MEASURE_NEED_ELLIPSIS:STATUS_MEASURE_NO_NEED_ELLIPSIS),setEllipsisCutIndex(isOverflow?[0,nodeLen]:null),setCanEllipsis(isOverflow);let baseRowsEllipsisHeight=((_b=needEllipsisRef.current)===null||_b===void 0?void 0:_b.getHeight())||0,descRowsEllipsisHeight=rows===1?0:((_c=descRowsEllipsisRef.current)===null||_c===void 0?void 0:_c.getHeight())||0,symbolRowEllipsisHeight=((_d=symbolRowEllipsisRef.current)===null||_d===void 0?void 0:_d.getHeight())||0,maxRowsHeight=Math.max(baseRowsEllipsisHeight,descRowsEllipsisHeight+symbolRowEllipsisHeight);setEllipsisHeight(maxRowsHeight+1),onEllipsis(isOverflow)}},[needEllipsis]);let cutMidIndex=ellipsisCutIndex?Math.ceil((ellipsisCutIndex[0]+ellipsisCutIndex[1])/2):0;useLayoutEffect_default(()=>{var _a;let[minIndex,maxIndex]=ellipsisCutIndex||[0,0];if(minIndex!==maxIndex){let isOverflow=(((_a=cutMidRef.current)===null||_a===void 0?void 0:_a.getHeight())||0)>ellipsisHeight,targetMidIndex=cutMidIndex;if(maxIndex-minIndex===1)targetMidIndex=isOverflow?minIndex:maxIndex;setEllipsisCutIndex(isOverflow?[minIndex,targetMidIndex]:[targetMidIndex,maxIndex])}},[ellipsisCutIndex,cutMidIndex]);let finalContent=React402.useMemo(()=>{if(!enableMeasure)return children(nodeList,!1);if(needEllipsis!==STATUS_MEASURE_NEED_ELLIPSIS||!ellipsisCutIndex||ellipsisCutIndex[0]!==ellipsisCutIndex[1]){let content=children(nodeList,!1);if([STATUS_MEASURE_NO_NEED_ELLIPSIS,STATUS_MEASURE_NONE].includes(needEllipsis))return content;return React402.createElement("span",{style:Object.assign(Object.assign({},lineClipStyle),{WebkitLineClamp:rows})},content)}return children(expanded?nodeList:sliceNodes(nodeList,ellipsisCutIndex[0]),canEllipsis)},[expanded,needEllipsis,ellipsisCutIndex,nodeList].concat(_toConsumableArray(miscDeps))),measureStyle={width,margin:0,padding:0,whiteSpace:parentWhiteSpace==="nowrap"?"normal":"inherit"};return React402.createElement(React402.Fragment,null,finalContent,needEllipsis===STATUS_MEASURE_START&&React402.createElement(React402.Fragment,null,React402.createElement(MeasureText,{style:Object.assign(Object.assign(Object.assign({},measureStyle),lineClipStyle),{WebkitLineClamp:rows}),ref:needEllipsisRef},fullContent),React402.createElement(MeasureText,{style:Object.assign(Object.assign(Object.assign({},measureStyle),lineClipStyle),{WebkitLineClamp:rows-1}),ref:descRowsEllipsisRef},fullContent),React402.createElement(MeasureText,{style:Object.assign(Object.assign(Object.assign({},measureStyle),lineClipStyle),{WebkitLineClamp:1}),ref:symbolRowEllipsisRef},children([],!0))),needEllipsis===STATUS_MEASURE_NEED_ELLIPSIS&&ellipsisCutIndex&&ellipsisCutIndex[0]!==ellipsisCutIndex[1]&&React402.createElement(MeasureText,{style:Object.assign(Object.assign({},measureStyle),{top:400}),ref:cutMidRef},children(sliceNodes(nodeList,cutMidIndex),!0)),needEllipsis===STATUS_MEASURE_PREPARE&&React402.createElement("span",{style:{whiteSpace:"inherit"},ref:measureWhiteSpaceRef}))}var React403=__toESM(require_react_development());var EllipsisTooltip=({enableEllipsis,isEllipsis,children,tooltipProps})=>{if(!(tooltipProps===null||tooltipProps===void 0?void 0:tooltipProps.title)||!enableEllipsis)return children;return React403.createElement(tooltip_default,Object.assign({open:isEllipsis?void 0:!1},tooltipProps),children)};EllipsisTooltip.displayName="EllipsisTooltip";var EllipsisTooltip_default=EllipsisTooltip;var __rest64=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t};function wrapperDecorations({mark,code,underline,delete:del,strong,keyboard,italic},content){let currentContent=content;function wrap(tag,needed){if(!needed)return;currentContent=React404.createElement(tag,{},currentContent)}return wrap("strong",strong),wrap("u",underline),wrap("del",del),wrap("code",code),wrap("mark",mark),wrap("kbd",keyboard),wrap("i",italic),currentContent}var ELLIPSIS_STR="...",DECORATION_PROPS=["delete","mark","code","underline","strong","keyboard","italic"],Base=React404.forwardRef((props,ref)=>{var _a;let{prefixCls:customizePrefixCls,className,style,type,disabled,children,ellipsis,editable,copyable,component,title}=props,restProps=__rest64(props,["prefixCls","className","style","type","disabled","children","ellipsis","editable","copyable","component","title"]),{getPrefixCls,direction}=React404.useContext(ConfigContext),[textLocale]=useLocale_default("Text"),typographyRef=React404.useRef(null),editIconRef=React404.useRef(null),prefixCls=getPrefixCls("typography",customizePrefixCls),textProps=omit(restProps,DECORATION_PROPS),[enableEdit,editConfig]=useMergedConfig(editable),[editing,setEditing]=useMergedState(!1,{value:editConfig.editing}),{triggerType=["icon"]}=editConfig,triggerEdit=(edit)=>{var _a;if(edit)(_a=editConfig.onStart)===null||_a===void 0||_a.call(editConfig);setEditing(edit)},prevEditing=usePrevious_default(editing);useLayoutEffect_default(()=>{var _a;if(!editing&&prevEditing)(_a=editIconRef.current)===null||_a===void 0||_a.focus()},[editing]);let onEditClick=(e)=>{e===null||e===void 0||e.preventDefault(),triggerEdit(!0)},onEditChange=(value)=>{var _a;(_a=editConfig.onChange)===null||_a===void 0||_a.call(editConfig,value),triggerEdit(!1)},onEditCancel=()=>{var _a;(_a=editConfig.onCancel)===null||_a===void 0||_a.call(editConfig),triggerEdit(!1)},[enableCopy,copyConfig]=useMergedConfig(copyable),{copied,copyLoading,onClick:onCopyClick}=useCopyClick_default({copyConfig,children}),[isLineClampSupport,setIsLineClampSupport]=React404.useState(!1),[isTextOverflowSupport,setIsTextOverflowSupport]=React404.useState(!1),[isJsEllipsis,setIsJsEllipsis]=React404.useState(!1),[isNativeEllipsis,setIsNativeEllipsis]=React404.useState(!1),[isNativeVisible,setIsNativeVisible]=React404.useState(!0),[enableEllipsis,ellipsisConfig]=useMergedConfig(ellipsis,{expandable:!1,symbol:(isExpanded)=>isExpanded?textLocale===null||textLocale===void 0?void 0:textLocale.collapse:textLocale===null||textLocale===void 0?void 0:textLocale.expand}),[expanded,setExpanded]=useMergedState(ellipsisConfig.defaultExpanded||!1,{value:ellipsisConfig.expanded}),mergedEnableEllipsis=enableEllipsis&&(!expanded||ellipsisConfig.expandable==="collapsible"),{rows=1}=ellipsisConfig,needMeasureEllipsis=React404.useMemo(()=>mergedEnableEllipsis&&(ellipsisConfig.suffix!==void 0||ellipsisConfig.onEllipsis||ellipsisConfig.expandable||enableEdit||enableCopy),[mergedEnableEllipsis,ellipsisConfig,enableEdit,enableCopy]);useLayoutEffect_default(()=>{if(enableEllipsis&&!needMeasureEllipsis)setIsLineClampSupport(isStyleSupport("webkitLineClamp")),setIsTextOverflowSupport(isStyleSupport("textOverflow"))},[needMeasureEllipsis,enableEllipsis]);let[cssEllipsis,setCssEllipsis]=React404.useState(mergedEnableEllipsis),canUseCssEllipsis=React404.useMemo(()=>{if(needMeasureEllipsis)return!1;if(rows===1)return isTextOverflowSupport;return isLineClampSupport},[needMeasureEllipsis,isTextOverflowSupport,isLineClampSupport]);useLayoutEffect_default(()=>{setCssEllipsis(canUseCssEllipsis&&mergedEnableEllipsis)},[canUseCssEllipsis,mergedEnableEllipsis]);let isMergedEllipsis=mergedEnableEllipsis&&(cssEllipsis?isNativeEllipsis:isJsEllipsis),cssTextOverflow=mergedEnableEllipsis&&rows===1&&cssEllipsis,cssLineClamp=mergedEnableEllipsis&&rows>1&&cssEllipsis,onExpandClick=(e,info)=>{var _a;setExpanded(info.expanded),(_a=ellipsisConfig.onExpand)===null||_a===void 0||_a.call(ellipsisConfig,e,info)},[ellipsisWidth,setEllipsisWidth]=React404.useState(0),onResize=({offsetWidth})=>{setEllipsisWidth(offsetWidth)},onJsEllipsis=(jsEllipsis)=>{var _a;if(setIsJsEllipsis(jsEllipsis),isJsEllipsis!==jsEllipsis)(_a=ellipsisConfig.onEllipsis)===null||_a===void 0||_a.call(ellipsisConfig,jsEllipsis)};React404.useEffect(()=>{let textEle=typographyRef.current;if(enableEllipsis&&cssEllipsis&&textEle){let currentEllipsis=isEleEllipsis(textEle);if(isNativeEllipsis!==currentEllipsis)setIsNativeEllipsis(currentEllipsis)}},[enableEllipsis,cssEllipsis,children,cssLineClamp,isNativeVisible,ellipsisWidth]),React404.useEffect(()=>{let textEle=typographyRef.current;if(typeof IntersectionObserver>"u"||!textEle||!cssEllipsis||!mergedEnableEllipsis)return;let observer=new IntersectionObserver(()=>{setIsNativeVisible(!!textEle.offsetParent)});return observer.observe(textEle),()=>{observer.disconnect()}},[cssEllipsis,mergedEnableEllipsis]);let tooltipProps=useTooltipProps_default(ellipsisConfig.tooltip,editConfig.text,children),topAriaLabel=React404.useMemo(()=>{if(!enableEllipsis||cssEllipsis)return;return[editConfig.text,children,title,tooltipProps.title].find(isValidText)},[enableEllipsis,cssEllipsis,title,tooltipProps.title,isMergedEllipsis]);if(editing)return React404.createElement(Editable_default,{value:(_a=editConfig.text)!==null&&_a!==void 0?_a:typeof children==="string"?children:"",onSave:onEditChange,onCancel:onEditCancel,onEnd:editConfig.onEnd,prefixCls,className,style,direction,component,maxLength:editConfig.maxLength,autoSize:editConfig.autoSize,enterIcon:editConfig.enterIcon});let renderExpand=()=>{let{expandable,symbol}=ellipsisConfig;return expandable?React404.createElement("button",{type:"button",key:"expand",className:`${prefixCls}-${expanded?"collapse":"expand"}`,onClick:(e)=>onExpandClick(e,{expanded:!expanded}),"aria-label":expanded?textLocale.collapse:textLocale===null||textLocale===void 0?void 0:textLocale.expand},typeof symbol==="function"?symbol(expanded):symbol):null},renderEdit=()=>{if(!enableEdit)return;let{icon,tooltip,tabIndex}=editConfig,editTitle=toArray(tooltip)[0]||(textLocale===null||textLocale===void 0?void 0:textLocale.edit),ariaLabel=typeof editTitle==="string"?editTitle:"";return triggerType.includes("icon")?React404.createElement(tooltip_default,{key:"edit",title:tooltip===!1?"":editTitle},React404.createElement("button",{type:"button",ref:editIconRef,className:`${prefixCls}-edit`,onClick:onEditClick,"aria-label":ariaLabel,tabIndex},icon||React404.createElement(EditOutlined_default2,{role:"button"}))):null},renderCopy=()=>{if(!enableCopy)return null;return React404.createElement(CopyBtn_default,Object.assign({key:"copy"},copyConfig,{prefixCls,copied,locale:textLocale,onCopy:onCopyClick,loading:copyLoading,iconOnly:children===null||children===void 0}))},renderOperations=(canEllipsis)=>[canEllipsis&&renderExpand(),renderEdit(),renderCopy()],renderEllipsis=(canEllipsis)=>[canEllipsis&&!expanded&&React404.createElement("span",{"aria-hidden":!0,key:"ellipsis"},ELLIPSIS_STR),ellipsisConfig.suffix,renderOperations(canEllipsis)];return React404.createElement(es_default,{onResize,disabled:!mergedEnableEllipsis},(resizeRef)=>React404.createElement(EllipsisTooltip_default,{tooltipProps,enableEllipsis:mergedEnableEllipsis,isEllipsis:isMergedEllipsis},React404.createElement(Typography_default,Object.assign({className:import_classnames168.default({[`${prefixCls}-${type}`]:type,[`${prefixCls}-disabled`]:disabled,[`${prefixCls}-ellipsis`]:enableEllipsis,[`${prefixCls}-ellipsis-single-line`]:cssTextOverflow,[`${prefixCls}-ellipsis-multiple-line`]:cssLineClamp},className),prefixCls:customizePrefixCls,style:Object.assign(Object.assign({},style),{WebkitLineClamp:cssLineClamp?rows:void 0}),component,ref:composeRef(resizeRef,typographyRef,ref),direction,onClick:triggerType.includes("text")?onEditClick:void 0,"aria-label":topAriaLabel===null||topAriaLabel===void 0?void 0:topAriaLabel.toString(),title},textProps),React404.createElement(EllipsisMeasure,{enableMeasure:mergedEnableEllipsis&&!cssEllipsis,text:children,rows,width:ellipsisWidth,onEllipsis:onJsEllipsis,expanded,miscDeps:[copied,expanded,copyLoading,enableEdit,enableCopy,textLocale].concat(_toConsumableArray(DECORATION_PROPS.map((key)=>props[key])))},(node,canEllipsis)=>wrapperDecorations(props,React404.createElement(React404.Fragment,null,node.length>0&&canEllipsis&&!expanded&&topAriaLabel?React404.createElement("span",{key:"show-content","aria-hidden":!0},node):node,renderEllipsis(canEllipsis)))))))}),Base_default=Base;var __rest65=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},Link=React405.forwardRef((props,ref)=>{let{ellipsis,rel,children,navigate:_navigate}=props,restProps=__rest65(props,["ellipsis","rel","children","navigate"]);devUseWarning("Typography.Link")(typeof ellipsis!=="object","usage","`ellipsis` only supports boolean value.");let mergedProps=Object.assign(Object.assign({},restProps),{rel:rel===void 0&&restProps.target==="_blank"?"noopener noreferrer":rel});return React405.createElement(Base_default,Object.assign({},mergedProps,{ref,ellipsis:!!ellipsis,component:"a"}),children)}),Link_default=Link;var React406=__toESM(require_react_development());var __rest66=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},Paragraph2=React406.forwardRef((props,ref)=>{let{children}=props,restProps=__rest66(props,["children"]);return React406.createElement(Base_default,Object.assign({ref},restProps,{component:"div"}),children)}),Paragraph_default2=Paragraph2;var React407=__toESM(require_react_development());var __rest67=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},Text=(props,ref)=>{let{ellipsis,children}=props,restProps=__rest67(props,["ellipsis","children"]),mergedEllipsis=React407.useMemo(()=>{if(ellipsis&&typeof ellipsis==="object")return omit(ellipsis,["expandable","rows"]);return ellipsis},[ellipsis]);return devUseWarning("Typography.Text")(typeof ellipsis!=="object"||!ellipsis||!("expandable"in ellipsis)&&!("rows"in ellipsis),"usage","`ellipsis` do not support `expandable` or `rows` props."),React407.createElement(Base_default,Object.assign({ref},restProps,{ellipsis:mergedEllipsis,component:"span"}),children)},Text_default=React407.forwardRef(Text);var React408=__toESM(require_react_development());var __rest68=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},TITLE_ELE_LIST=[1,2,3,4,5],Title2=React408.forwardRef((props,ref)=>{let{level=1,children}=props,restProps=__rest68(props,["level","children"]);devUseWarning("Typography.Title")(TITLE_ELE_LIST.includes(level),"usage","Title only accept `1 | 2 | 3 | 4 | 5` as `level` value. And `5` need 4.6.0+ version.");let component=TITLE_ELE_LIST.includes(level)?`h${level}`:"h1";return React408.createElement(Base_default,Object.assign({ref},restProps,{component}),children)}),Title_default2=Title2;var Typography2=Typography_default;Typography2.Text=Text_default;Typography2.Link=Link_default;Typography2.Title=Title_default2;Typography2.Paragraph=Paragraph_default2;var typography_default=Typography2;var import_react125=__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 mergeStyle(baseStyle,style){return style&&typeof style==="object"&&!Array.isArray(style)?{...baseStyle,...style}:baseStyle}var SURFACE_SHADOW="0 6px 16px rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12)";function Modal(props){let width=typeof props.width==="number"?props.width:520,footer=props.footer;return import_react125.createElement(card_default,{...chrome(props),title:props.title,style:mergeStyle({width:"100%",maxWidth:width,margin:"16px auto",boxShadow:SURFACE_SHADOW},props.style)},props.children,footer?import_react125.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:16}},footer):null)}function Drawer(props){return import_react125.createElement(card_default,{...chrome(props),title:props.title,style:mergeStyle({width:320,height:"100%",borderRadius:0,boxShadow:SURFACE_SHADOW},props.style)},props.children)}function Popover2(props){return import_react125.createElement(import_react125.Fragment,null,props.children,import_react125.createElement(card_default,{...chrome(props),size:"small",title:props.title,style:mergeStyle({display:"inline-block",maxWidth:320,marginTop:8,boxShadow:SURFACE_SHADOW},props.style)},props.content))}function Tooltip3(props){let tip=props.title;return import_react125.createElement(import_react125.Fragment,null,props.children,tip==null?null:import_react125.createElement("span",{...chrome(props),style:mergeStyle({display:"inline-block",background:"rgba(0, 0, 0, 0.85)",color:"#fff",borderRadius:6,padding:"4px 8px",fontSize:12,lineHeight:1.4,marginLeft:8,verticalAlign:"middle"},props.style)},tip))}function Dropdown4(props){let menu=props.menu;return import_react125.createElement(import_react125.Fragment,null,props.children,import_react125.createElement("div",{...chrome(props),style:mergeStyle({display:"inline-block",minWidth:160,marginTop:4,borderRadius:8,boxShadow:SURFACE_SHADOW,overflow:"hidden"},props.style)},import_react125.createElement(menu_default2,{items:menu?.items??[],selectable:!1,style:{borderInlineEnd:"none"}})))}var REUSED_HELPER_IDS=["Icon","Image","Placeholder","SVG","Layer","Gradient","Prose"],registry={Alert:alert_default,Avatar:avatar_default,Badge:badge_default,Breadcrumb:breadcrumb_default,Button:button_default2,Card:card_default,Checkbox:checkbox_default,Col:col_default2,Divider:divider_default,Drawer,Dropdown:Dropdown4,Empty:empty_default2,Flex:flex_default,Input:input_default,List:list_default,ListItem:list_default.Item,ListItemMeta:list_default.Item.Meta,Menu:menu_default2,Modal,Pagination:pagination_default,Popover:Popover2,Progress:progress_default2,Radio:radio_default2,Rate:rate_default,Row:row_default2,Segmented:segmented_default,Select:select_default,Skeleton:skeleton_default,Slider:slider_default,Space:space_default,Statistic:statistic_default2,Steps:steps_default,Switch:switch_default,Table:table_default,Tabs:tabs_default,Tag:tag_default,Tooltip:Tooltip3,TypographyParagraph:typography_default.Paragraph,TypographyText:typography_default.Text,TypographyTitle:typography_default.Title,...helpersRegistry(REUSED_HELPER_IDS)};var import_react126=__toESM(require_react_development(),1);function antdColor(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 antdColor(slot);if(slot&&typeof slot==="object"&&typeof slot.DEFAULT==="string")return antdColor(slot.DEFAULT);return antdColor(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 antdTokens(theme,dark){let c=resolveColors(theme,dark);return{colorPrimary:base(c.primary,"#4f46e5"),colorBgBase:antdColor(c.background),colorTextBase:antdColor(c.foreground),colorError:base(c.destructive,"#dc2626"),borderRadius:radiusPx(theme),...antdTypography(theme),...c.card?{colorBgContainer:base(c.card,c.background)}:{}}}function antdTypography(theme){let typography=theme.typography,scale=typesetScale(typography.typesets?.[DEFAULT_TYPESET_NAME],{...typography.fontFamily?{fontFamily:typography.fontFamily}:{}});return{fontFamily:scale.body.fontFamily??typography.fontFamily?.sans??"system-ui, -apple-system, sans-serif",fontSize:scale.body.fontSize,fontSizeSM:scale.caption.fontSize,fontSizeLG:scale.lead.fontSize,fontSizeHeading1:scale.h1.fontSize,fontSizeHeading2:scale.h2.fontSize,fontSizeHeading3:scale.h3.fontSize,fontSizeHeading4:scale.h4.fontSize,fontSizeHeading5:scale.h5.fontSize,lineHeight:scale.body.lineHeight,lineHeightHeading1:scale.h1.lineHeight,lineHeightHeading2:scale.h2.lineHeight,lineHeightHeading3:scale.h3.lineHeight,lineHeightHeading4:scale.h4.lineHeight,lineHeightHeading5:scale.h5.lineHeight}}function antdThemeConfig(theme,dark=!1){return{cssVar:!0,algorithm:dark?theme_default3.darkAlgorithm:theme_default3.defaultAlgorithm,token:antdTokens(theme,dark)}}function antdThemeOptions(theme,dark=!1){return{cssVar:!0,algorithm:identifierRef(dark?"antdTheme.darkAlgorithm":"antdTheme.defaultAlgorithm"),token:antdTokens(theme,dark)}}function makeRenderPass(theme,dark=!1){let cache=createCache(),config=antdThemeConfig(theme,dark);return{wrap:(element)=>import_react126.createElement(StyleProvider,{cache},import_react126.createElement(config_provider_default,{theme:config},element)),css:()=>stripStyleTags(extractStyle(cache,{plain:!0}))}}function stripStyleTags(css){let current=css;for(;;){let next=current.replace(/<\/?style[^>]*>/gi,"");if(next===current)return next;current=next}}var here=dirname(fileURLToPath(import.meta.url)),srcDir=resolveProviderSrcDir(here,"provider-antd",process.env.VELLOO_ANTD_SRC);function createProvider(){return{id:"antd",version:ANTD_VERSION,label:"Ant Design v5",componentsDir:srcDir,styleEntryPath:join(srcDir,"tailwind-entry.css"),registry,loadManifest:async()=>ANTD_MANIFEST,catalog:async()=>catalogFromManifest(ANTD_MANIFEST.filter((c)=>c.source==="antd"),{importPath:"antd"}),styleChannel:STYLE_PROP,styleChannels:["style"],mcpIntro:()=>[...ANTD_INTRO],renderPass:(theme,dark)=>makeRenderPass(theme,dark??!1),codegenModule:"antd",themeToNative:(theme,dark)=>antdThemeOptions(theme,dark),themeModule:{importLines:['import { theme as antdTheme } from "antd";'],factory:null,defaultPath:"antd-theme.ts"}}}export{createProvider};
442
+ `]:Object.assign(Object.assign({},operationUnit(token)),{marginInlineStart:token.marginXXS})}),getEditableStyles(token)),getCopyableStyles(token)),getEllipsisStyles()),{"&-rtl":{direction:"rtl"}})}},prepareComponentToken31=()=>({titleMarginTop:"1.2em",titleMarginBottom:"0.5em"}),style_default36=genStyleHooks("Typography",genTypographyStyle,prepareComponentToken31);var Editable=(props)=>{let{prefixCls,"aria-label":ariaLabel,className,style,direction,maxLength,autoSize=!0,value,onSave,onCancel,onEnd,component,enterIcon=React396.createElement(EnterOutlined_default2,null)}=props,ref=React396.useRef(null),inComposition=React396.useRef(!1),lastKeyCode=React396.useRef(null),[current,setCurrent]=React396.useState(value);React396.useEffect(()=>{setCurrent(value)},[value]),React396.useEffect(()=>{var _a;if((_a=ref.current)===null||_a===void 0?void 0:_a.resizableTextArea){let{textArea}=ref.current.resizableTextArea;textArea.focus();let{length}=textArea.value;textArea.setSelectionRange(length,length)}},[]);let onChange=({target})=>{setCurrent(target.value.replace(/[\n\r]/g,""))},onCompositionStart=()=>{inComposition.current=!0},onCompositionEnd=()=>{inComposition.current=!1},onKeyDown=({keyCode})=>{if(inComposition.current)return;lastKeyCode.current=keyCode},confirmChange=()=>{onSave(current.trim())},onKeyUp=({keyCode,ctrlKey,altKey,metaKey,shiftKey})=>{if(lastKeyCode.current!==keyCode||inComposition.current||ctrlKey||altKey||metaKey||shiftKey)return;if(keyCode===KeyCode_default.ENTER)confirmChange(),onEnd===null||onEnd===void 0||onEnd();else if(keyCode===KeyCode_default.ESC)onCancel()},onBlur=()=>{confirmChange()},[wrapCSSVar,hashId,cssVarCls]=style_default36(prefixCls),textAreaClassName=import_classnames165.default(prefixCls,`${prefixCls}-edit-content`,{[`${prefixCls}-rtl`]:direction==="rtl",[`${prefixCls}-${component}`]:!!component},className,hashId,cssVarCls);return wrapCSSVar(React396.createElement("div",{className:textAreaClassName,style},React396.createElement(TextArea_default2,{ref,maxLength,value:current,onChange,onKeyDown,onKeyUp,onCompositionStart,onCompositionEnd,onBlur,"aria-label":ariaLabel,rows:1,autoSize}),enterIcon!==null?cloneElement3(enterIcon,{className:`${prefixCls}-edit-content-confirm`}):null))},Editable_default=Editable;var React397=__toESM(require_react_development()),import_copy_to_clipboard=__toESM(require_copy_to_clipboard());var __awaiter=function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve){resolve(value)})}return new(P||(P=Promise))(function(resolve,reject){function fulfilled(value){try{step(generator.next(value))}catch(e){reject(e)}}function rejected(value){try{step(generator.throw(value))}catch(e){reject(e)}}function step(result){result.done?resolve(result.value):adopt(result.value).then(fulfilled,rejected)}step((generator=generator.apply(thisArg,_arguments||[])).next())})},useCopyClick=({copyConfig,children})=>{let[copied,setCopied]=React397.useState(!1),[copyLoading,setCopyLoading]=React397.useState(!1),copyIdRef=React397.useRef(null),cleanCopyId=()=>{if(copyIdRef.current)clearTimeout(copyIdRef.current)},copyOptions={};if(copyConfig.format)copyOptions.format=copyConfig.format;React397.useEffect(()=>cleanCopyId,[]);let onClick=useEvent((e)=>__awaiter(void 0,void 0,void 0,function*(){var _a;e===null||e===void 0||e.preventDefault(),e===null||e===void 0||e.stopPropagation(),setCopyLoading(!0);try{let text=typeof copyConfig.text==="function"?yield copyConfig.text():copyConfig.text;import_copy_to_clipboard.default(text||toList_default(children,!0).join("")||"",copyOptions),setCopyLoading(!1),setCopied(!0),cleanCopyId(),copyIdRef.current=setTimeout(()=>{setCopied(!1)},3000),(_a=copyConfig.onCopy)===null||_a===void 0||_a.call(copyConfig,e)}catch(error){throw setCopyLoading(!1),error}}));return{copied,copyLoading,onClick}},useCopyClick_default=useCopyClick;var React398=__toESM(require_react_development());function useMergedConfig(propConfig,templateConfig){return React398.useMemo(()=>{let support=!!propConfig;return[support,Object.assign(Object.assign({},templateConfig),support&&typeof propConfig==="object"?propConfig:null)]},[propConfig])}var import_react123=__toESM(require_react_development()),usePrevious=(value)=>{let ref=import_react123.useRef(void 0);return import_react123.useEffect(()=>{ref.current=value}),ref.current},usePrevious_default=usePrevious;var import_react124=__toESM(require_react_development()),useTooltipProps=(tooltip,editConfigText,children)=>import_react124.useMemo(()=>{if(tooltip===!0)return{title:editConfigText!==null&&editConfigText!==void 0?editConfigText:children};if(import_react124.isValidElement(tooltip))return{title:tooltip};if(typeof tooltip==="object")return Object.assign({title:editConfigText!==null&&editConfigText!==void 0?editConfigText:children},tooltip);return{title:tooltip}},[tooltip,editConfigText,children]),useTooltipProps_default=useTooltipProps;var React399=__toESM(require_react_development()),import_classnames166=__toESM(require_classnames());var __rest63=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},Typography=React399.forwardRef((props,ref)=>{let{prefixCls:customizePrefixCls,component:Component="article",className,rootClassName,setContentRef,children,direction:typographyDirection,style}=props,restProps=__rest63(props,["prefixCls","component","className","rootClassName","setContentRef","children","direction","style"]),{getPrefixCls,direction:contextDirection,className:contextClassName,style:contextStyle}=useComponentConfig("typography"),direction=typographyDirection!==null&&typographyDirection!==void 0?typographyDirection:contextDirection,mergedRef=setContentRef?composeRef(ref,setContentRef):ref,prefixCls=getPrefixCls("typography",customizePrefixCls);devUseWarning("Typography").deprecated(!setContentRef,"setContentRef","ref");let[wrapCSSVar,hashId,cssVarCls]=style_default36(prefixCls),componentClassName=import_classnames166.default(prefixCls,contextClassName,{[`${prefixCls}-rtl`]:direction==="rtl"},className,rootClassName,hashId,cssVarCls),mergedStyle=Object.assign(Object.assign({},contextStyle),style);return wrapCSSVar(React399.createElement(Component,Object.assign({className:componentClassName,style:mergedStyle,ref:mergedRef},restProps),children))});Typography.displayName="Typography";var Typography_default=Typography;var React401=__toESM(require_react_development());var React400=__toESM(require_react_development());var CopyOutlined={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M832 64H296c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h496v688c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V96c0-17.7-14.3-32-32-32zM704 192H192c-17.7 0-32 14.3-32 32v530.7c0 8.5 3.4 16.6 9.4 22.6l173.3 173.3c2.2 2.2 4.7 4 7.4 5.5v1.9h4.2c3.5 1.3 7.2 2 11 2H704c17.7 0 32-14.3 32-32V224c0-17.7-14.3-32-32-32zM350 856.2L263.9 770H350v86.2zM664 888H414V746c0-22.1-17.9-40-40-40H232V264h432v624z"}}]},name:"copy",theme:"outlined"},CopyOutlined_default=CopyOutlined;var CopyOutlined2=function(props,ref){return React400.createElement(AntdIcon_default,_extends({},props,{ref,icon:CopyOutlined_default}))},RefIcon32=React400.forwardRef(CopyOutlined2);RefIcon32.displayName="CopyOutlined";var CopyOutlined_default2=RefIcon32;var import_classnames167=__toESM(require_classnames());function toList2(val){if(val===!1)return[!1,!1];return Array.isArray(val)?val:[val]}function getNode(dom,defaultNode,needDom){if(dom===!0||dom===void 0)return defaultNode;return dom||needDom&&defaultNode}function isEleEllipsis(ele){let childDiv=document.createElement("em");ele.appendChild(childDiv),childDiv.className="ant-typography-css-ellipsis-content-measure";let rect=ele.getBoundingClientRect(),childRect=childDiv.getBoundingClientRect();return ele.removeChild(childDiv),rect.left>childRect.left||childRect.right>rect.right||rect.top>childRect.top||childRect.bottom>rect.bottom}var isValidText=(val)=>["string","number"].includes(typeof val);var CopyBtn=({prefixCls,copied,locale,iconOnly,tooltips,icon,tabIndex,onCopy,loading:btnLoading})=>{let tooltipNodes=toList2(tooltips),iconNodes=toList2(icon),{copied:copiedText,copy:copyText}=locale!==null&&locale!==void 0?locale:{},systemStr=copied?copiedText:copyText,copyTitle=getNode(tooltipNodes[copied?1:0],systemStr),ariaLabel=typeof copyTitle==="string"?copyTitle:systemStr;return React401.createElement(tooltip_default,{title:copyTitle},React401.createElement("button",{type:"button",className:import_classnames167.default(`${prefixCls}-copy`,{[`${prefixCls}-copy-success`]:copied,[`${prefixCls}-copy-icon-only`]:iconOnly}),onClick:onCopy,"aria-label":ariaLabel,tabIndex},copied?getNode(iconNodes[1],React401.createElement(CheckOutlined_default2,null),!0):getNode(iconNodes[0],btnLoading?React401.createElement(LoadingOutlined_default2,null):React401.createElement(CopyOutlined_default2,null),!0)))},CopyBtn_default=CopyBtn;var React402=__toESM(require_react_development());var MeasureText=React402.forwardRef(({style,children},ref)=>{let spanRef=React402.useRef(null);return React402.useImperativeHandle(ref,()=>({isExceed:()=>{let span=spanRef.current;return span.scrollHeight>span.clientHeight},getHeight:()=>spanRef.current.clientHeight})),React402.createElement("span",{"aria-hidden":!0,ref:spanRef,style:Object.assign({position:"fixed",display:"block",left:0,top:0,pointerEvents:"none",backgroundColor:"rgba(255, 0, 0, 0.65)"},style)},children)}),getNodesLen=(nodeList)=>nodeList.reduce((totalLen,node)=>totalLen+(isValidText(node)?String(node).length:1),0);function sliceNodes(nodeList,len){let currLen=0,currentNodeList=[];for(let i=0;i<nodeList.length;i+=1){if(currLen===len)return currentNodeList;let node=nodeList[i],nodeLen=isValidText(node)?String(node).length:1,nextLen=currLen+nodeLen;if(nextLen>len){let restLen=len-currLen;return currentNodeList.push(String(node).slice(0,restLen)),currentNodeList}currentNodeList.push(node),currLen=nextLen}return nodeList}var STATUS_MEASURE_NONE=0,STATUS_MEASURE_PREPARE=1,STATUS_MEASURE_START=2,STATUS_MEASURE_NEED_ELLIPSIS=3,STATUS_MEASURE_NO_NEED_ELLIPSIS=4,lineClipStyle={display:"-webkit-box",overflow:"hidden",WebkitBoxOrient:"vertical"};function EllipsisMeasure(props){let{enableMeasure,width,text,children,rows,expanded,miscDeps,onEllipsis}=props,nodeList=React402.useMemo(()=>toArray(text),[text]),nodeLen=React402.useMemo(()=>getNodesLen(nodeList),[text]),fullContent=React402.useMemo(()=>children(nodeList,!1),[text]),[ellipsisCutIndex,setEllipsisCutIndex]=React402.useState(null),cutMidRef=React402.useRef(null),measureWhiteSpaceRef=React402.useRef(null),needEllipsisRef=React402.useRef(null),descRowsEllipsisRef=React402.useRef(null),symbolRowEllipsisRef=React402.useRef(null),[canEllipsis,setCanEllipsis]=React402.useState(!1),[needEllipsis,setNeedEllipsis]=React402.useState(STATUS_MEASURE_NONE),[ellipsisHeight,setEllipsisHeight]=React402.useState(0),[parentWhiteSpace,setParentWhiteSpace]=React402.useState(null);useLayoutEffect_default(()=>{if(enableMeasure&&width&&nodeLen)setNeedEllipsis(STATUS_MEASURE_PREPARE);else setNeedEllipsis(STATUS_MEASURE_NONE)},[width,text,rows,enableMeasure,nodeList]),useLayoutEffect_default(()=>{var _a,_b,_c,_d;if(needEllipsis===STATUS_MEASURE_PREPARE){setNeedEllipsis(STATUS_MEASURE_START);let nextWhiteSpace=measureWhiteSpaceRef.current&&getComputedStyle(measureWhiteSpaceRef.current).whiteSpace;setParentWhiteSpace(nextWhiteSpace)}else if(needEllipsis===STATUS_MEASURE_START){let isOverflow=!!((_a=needEllipsisRef.current)===null||_a===void 0?void 0:_a.isExceed());setNeedEllipsis(isOverflow?STATUS_MEASURE_NEED_ELLIPSIS:STATUS_MEASURE_NO_NEED_ELLIPSIS),setEllipsisCutIndex(isOverflow?[0,nodeLen]:null),setCanEllipsis(isOverflow);let baseRowsEllipsisHeight=((_b=needEllipsisRef.current)===null||_b===void 0?void 0:_b.getHeight())||0,descRowsEllipsisHeight=rows===1?0:((_c=descRowsEllipsisRef.current)===null||_c===void 0?void 0:_c.getHeight())||0,symbolRowEllipsisHeight=((_d=symbolRowEllipsisRef.current)===null||_d===void 0?void 0:_d.getHeight())||0,maxRowsHeight=Math.max(baseRowsEllipsisHeight,descRowsEllipsisHeight+symbolRowEllipsisHeight);setEllipsisHeight(maxRowsHeight+1),onEllipsis(isOverflow)}},[needEllipsis]);let cutMidIndex=ellipsisCutIndex?Math.ceil((ellipsisCutIndex[0]+ellipsisCutIndex[1])/2):0;useLayoutEffect_default(()=>{var _a;let[minIndex,maxIndex]=ellipsisCutIndex||[0,0];if(minIndex!==maxIndex){let isOverflow=(((_a=cutMidRef.current)===null||_a===void 0?void 0:_a.getHeight())||0)>ellipsisHeight,targetMidIndex=cutMidIndex;if(maxIndex-minIndex===1)targetMidIndex=isOverflow?minIndex:maxIndex;setEllipsisCutIndex(isOverflow?[minIndex,targetMidIndex]:[targetMidIndex,maxIndex])}},[ellipsisCutIndex,cutMidIndex]);let finalContent=React402.useMemo(()=>{if(!enableMeasure)return children(nodeList,!1);if(needEllipsis!==STATUS_MEASURE_NEED_ELLIPSIS||!ellipsisCutIndex||ellipsisCutIndex[0]!==ellipsisCutIndex[1]){let content=children(nodeList,!1);if([STATUS_MEASURE_NO_NEED_ELLIPSIS,STATUS_MEASURE_NONE].includes(needEllipsis))return content;return React402.createElement("span",{style:Object.assign(Object.assign({},lineClipStyle),{WebkitLineClamp:rows})},content)}return children(expanded?nodeList:sliceNodes(nodeList,ellipsisCutIndex[0]),canEllipsis)},[expanded,needEllipsis,ellipsisCutIndex,nodeList].concat(_toConsumableArray(miscDeps))),measureStyle={width,margin:0,padding:0,whiteSpace:parentWhiteSpace==="nowrap"?"normal":"inherit"};return React402.createElement(React402.Fragment,null,finalContent,needEllipsis===STATUS_MEASURE_START&&React402.createElement(React402.Fragment,null,React402.createElement(MeasureText,{style:Object.assign(Object.assign(Object.assign({},measureStyle),lineClipStyle),{WebkitLineClamp:rows}),ref:needEllipsisRef},fullContent),React402.createElement(MeasureText,{style:Object.assign(Object.assign(Object.assign({},measureStyle),lineClipStyle),{WebkitLineClamp:rows-1}),ref:descRowsEllipsisRef},fullContent),React402.createElement(MeasureText,{style:Object.assign(Object.assign(Object.assign({},measureStyle),lineClipStyle),{WebkitLineClamp:1}),ref:symbolRowEllipsisRef},children([],!0))),needEllipsis===STATUS_MEASURE_NEED_ELLIPSIS&&ellipsisCutIndex&&ellipsisCutIndex[0]!==ellipsisCutIndex[1]&&React402.createElement(MeasureText,{style:Object.assign(Object.assign({},measureStyle),{top:400}),ref:cutMidRef},children(sliceNodes(nodeList,cutMidIndex),!0)),needEllipsis===STATUS_MEASURE_PREPARE&&React402.createElement("span",{style:{whiteSpace:"inherit"},ref:measureWhiteSpaceRef}))}var React403=__toESM(require_react_development());var EllipsisTooltip=({enableEllipsis,isEllipsis,children,tooltipProps})=>{if(!(tooltipProps===null||tooltipProps===void 0?void 0:tooltipProps.title)||!enableEllipsis)return children;return React403.createElement(tooltip_default,Object.assign({open:isEllipsis?void 0:!1},tooltipProps),children)};EllipsisTooltip.displayName="EllipsisTooltip";var EllipsisTooltip_default=EllipsisTooltip;var __rest64=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t};function wrapperDecorations({mark,code,underline,delete:del,strong,keyboard,italic},content){let currentContent=content;function wrap(tag,needed){if(!needed)return;currentContent=React404.createElement(tag,{},currentContent)}return wrap("strong",strong),wrap("u",underline),wrap("del",del),wrap("code",code),wrap("mark",mark),wrap("kbd",keyboard),wrap("i",italic),currentContent}var ELLIPSIS_STR="...",DECORATION_PROPS=["delete","mark","code","underline","strong","keyboard","italic"],Base=React404.forwardRef((props,ref)=>{var _a;let{prefixCls:customizePrefixCls,className,style,type,disabled,children,ellipsis,editable,copyable,component,title}=props,restProps=__rest64(props,["prefixCls","className","style","type","disabled","children","ellipsis","editable","copyable","component","title"]),{getPrefixCls,direction}=React404.useContext(ConfigContext),[textLocale]=useLocale_default("Text"),typographyRef=React404.useRef(null),editIconRef=React404.useRef(null),prefixCls=getPrefixCls("typography",customizePrefixCls),textProps=omit(restProps,DECORATION_PROPS),[enableEdit,editConfig]=useMergedConfig(editable),[editing,setEditing]=useMergedState(!1,{value:editConfig.editing}),{triggerType=["icon"]}=editConfig,triggerEdit=(edit)=>{var _a;if(edit)(_a=editConfig.onStart)===null||_a===void 0||_a.call(editConfig);setEditing(edit)},prevEditing=usePrevious_default(editing);useLayoutEffect_default(()=>{var _a;if(!editing&&prevEditing)(_a=editIconRef.current)===null||_a===void 0||_a.focus()},[editing]);let onEditClick=(e)=>{e===null||e===void 0||e.preventDefault(),triggerEdit(!0)},onEditChange=(value)=>{var _a;(_a=editConfig.onChange)===null||_a===void 0||_a.call(editConfig,value),triggerEdit(!1)},onEditCancel=()=>{var _a;(_a=editConfig.onCancel)===null||_a===void 0||_a.call(editConfig),triggerEdit(!1)},[enableCopy,copyConfig]=useMergedConfig(copyable),{copied,copyLoading,onClick:onCopyClick}=useCopyClick_default({copyConfig,children}),[isLineClampSupport,setIsLineClampSupport]=React404.useState(!1),[isTextOverflowSupport,setIsTextOverflowSupport]=React404.useState(!1),[isJsEllipsis,setIsJsEllipsis]=React404.useState(!1),[isNativeEllipsis,setIsNativeEllipsis]=React404.useState(!1),[isNativeVisible,setIsNativeVisible]=React404.useState(!0),[enableEllipsis,ellipsisConfig]=useMergedConfig(ellipsis,{expandable:!1,symbol:(isExpanded)=>isExpanded?textLocale===null||textLocale===void 0?void 0:textLocale.collapse:textLocale===null||textLocale===void 0?void 0:textLocale.expand}),[expanded,setExpanded]=useMergedState(ellipsisConfig.defaultExpanded||!1,{value:ellipsisConfig.expanded}),mergedEnableEllipsis=enableEllipsis&&(!expanded||ellipsisConfig.expandable==="collapsible"),{rows=1}=ellipsisConfig,needMeasureEllipsis=React404.useMemo(()=>mergedEnableEllipsis&&(ellipsisConfig.suffix!==void 0||ellipsisConfig.onEllipsis||ellipsisConfig.expandable||enableEdit||enableCopy),[mergedEnableEllipsis,ellipsisConfig,enableEdit,enableCopy]);useLayoutEffect_default(()=>{if(enableEllipsis&&!needMeasureEllipsis)setIsLineClampSupport(isStyleSupport("webkitLineClamp")),setIsTextOverflowSupport(isStyleSupport("textOverflow"))},[needMeasureEllipsis,enableEllipsis]);let[cssEllipsis,setCssEllipsis]=React404.useState(mergedEnableEllipsis),canUseCssEllipsis=React404.useMemo(()=>{if(needMeasureEllipsis)return!1;if(rows===1)return isTextOverflowSupport;return isLineClampSupport},[needMeasureEllipsis,isTextOverflowSupport,isLineClampSupport]);useLayoutEffect_default(()=>{setCssEllipsis(canUseCssEllipsis&&mergedEnableEllipsis)},[canUseCssEllipsis,mergedEnableEllipsis]);let isMergedEllipsis=mergedEnableEllipsis&&(cssEllipsis?isNativeEllipsis:isJsEllipsis),cssTextOverflow=mergedEnableEllipsis&&rows===1&&cssEllipsis,cssLineClamp=mergedEnableEllipsis&&rows>1&&cssEllipsis,onExpandClick=(e,info)=>{var _a;setExpanded(info.expanded),(_a=ellipsisConfig.onExpand)===null||_a===void 0||_a.call(ellipsisConfig,e,info)},[ellipsisWidth,setEllipsisWidth]=React404.useState(0),onResize=({offsetWidth})=>{setEllipsisWidth(offsetWidth)},onJsEllipsis=(jsEllipsis)=>{var _a;if(setIsJsEllipsis(jsEllipsis),isJsEllipsis!==jsEllipsis)(_a=ellipsisConfig.onEllipsis)===null||_a===void 0||_a.call(ellipsisConfig,jsEllipsis)};React404.useEffect(()=>{let textEle=typographyRef.current;if(enableEllipsis&&cssEllipsis&&textEle){let currentEllipsis=isEleEllipsis(textEle);if(isNativeEllipsis!==currentEllipsis)setIsNativeEllipsis(currentEllipsis)}},[enableEllipsis,cssEllipsis,children,cssLineClamp,isNativeVisible,ellipsisWidth]),React404.useEffect(()=>{let textEle=typographyRef.current;if(typeof IntersectionObserver>"u"||!textEle||!cssEllipsis||!mergedEnableEllipsis)return;let observer=new IntersectionObserver(()=>{setIsNativeVisible(!!textEle.offsetParent)});return observer.observe(textEle),()=>{observer.disconnect()}},[cssEllipsis,mergedEnableEllipsis]);let tooltipProps=useTooltipProps_default(ellipsisConfig.tooltip,editConfig.text,children),topAriaLabel=React404.useMemo(()=>{if(!enableEllipsis||cssEllipsis)return;return[editConfig.text,children,title,tooltipProps.title].find(isValidText)},[enableEllipsis,cssEllipsis,title,tooltipProps.title,isMergedEllipsis]);if(editing)return React404.createElement(Editable_default,{value:(_a=editConfig.text)!==null&&_a!==void 0?_a:typeof children==="string"?children:"",onSave:onEditChange,onCancel:onEditCancel,onEnd:editConfig.onEnd,prefixCls,className,style,direction,component,maxLength:editConfig.maxLength,autoSize:editConfig.autoSize,enterIcon:editConfig.enterIcon});let renderExpand=()=>{let{expandable,symbol}=ellipsisConfig;return expandable?React404.createElement("button",{type:"button",key:"expand",className:`${prefixCls}-${expanded?"collapse":"expand"}`,onClick:(e)=>onExpandClick(e,{expanded:!expanded}),"aria-label":expanded?textLocale.collapse:textLocale===null||textLocale===void 0?void 0:textLocale.expand},typeof symbol==="function"?symbol(expanded):symbol):null},renderEdit=()=>{if(!enableEdit)return;let{icon,tooltip,tabIndex}=editConfig,editTitle=toArray(tooltip)[0]||(textLocale===null||textLocale===void 0?void 0:textLocale.edit),ariaLabel=typeof editTitle==="string"?editTitle:"";return triggerType.includes("icon")?React404.createElement(tooltip_default,{key:"edit",title:tooltip===!1?"":editTitle},React404.createElement("button",{type:"button",ref:editIconRef,className:`${prefixCls}-edit`,onClick:onEditClick,"aria-label":ariaLabel,tabIndex},icon||React404.createElement(EditOutlined_default2,{role:"button"}))):null},renderCopy=()=>{if(!enableCopy)return null;return React404.createElement(CopyBtn_default,Object.assign({key:"copy"},copyConfig,{prefixCls,copied,locale:textLocale,onCopy:onCopyClick,loading:copyLoading,iconOnly:children===null||children===void 0}))},renderOperations=(canEllipsis)=>[canEllipsis&&renderExpand(),renderEdit(),renderCopy()],renderEllipsis=(canEllipsis)=>[canEllipsis&&!expanded&&React404.createElement("span",{"aria-hidden":!0,key:"ellipsis"},ELLIPSIS_STR),ellipsisConfig.suffix,renderOperations(canEllipsis)];return React404.createElement(es_default,{onResize,disabled:!mergedEnableEllipsis},(resizeRef)=>React404.createElement(EllipsisTooltip_default,{tooltipProps,enableEllipsis:mergedEnableEllipsis,isEllipsis:isMergedEllipsis},React404.createElement(Typography_default,Object.assign({className:import_classnames168.default({[`${prefixCls}-${type}`]:type,[`${prefixCls}-disabled`]:disabled,[`${prefixCls}-ellipsis`]:enableEllipsis,[`${prefixCls}-ellipsis-single-line`]:cssTextOverflow,[`${prefixCls}-ellipsis-multiple-line`]:cssLineClamp},className),prefixCls:customizePrefixCls,style:Object.assign(Object.assign({},style),{WebkitLineClamp:cssLineClamp?rows:void 0}),component,ref:composeRef(resizeRef,typographyRef,ref),direction,onClick:triggerType.includes("text")?onEditClick:void 0,"aria-label":topAriaLabel===null||topAriaLabel===void 0?void 0:topAriaLabel.toString(),title},textProps),React404.createElement(EllipsisMeasure,{enableMeasure:mergedEnableEllipsis&&!cssEllipsis,text:children,rows,width:ellipsisWidth,onEllipsis:onJsEllipsis,expanded,miscDeps:[copied,expanded,copyLoading,enableEdit,enableCopy,textLocale].concat(_toConsumableArray(DECORATION_PROPS.map((key)=>props[key])))},(node,canEllipsis)=>wrapperDecorations(props,React404.createElement(React404.Fragment,null,node.length>0&&canEllipsis&&!expanded&&topAriaLabel?React404.createElement("span",{key:"show-content","aria-hidden":!0},node):node,renderEllipsis(canEllipsis)))))))}),Base_default=Base;var __rest65=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},Link=React405.forwardRef((props,ref)=>{let{ellipsis,rel,children,navigate:_navigate}=props,restProps=__rest65(props,["ellipsis","rel","children","navigate"]);devUseWarning("Typography.Link")(typeof ellipsis!=="object","usage","`ellipsis` only supports boolean value.");let mergedProps=Object.assign(Object.assign({},restProps),{rel:rel===void 0&&restProps.target==="_blank"?"noopener noreferrer":rel});return React405.createElement(Base_default,Object.assign({},mergedProps,{ref,ellipsis:!!ellipsis,component:"a"}),children)}),Link_default=Link;var React406=__toESM(require_react_development());var __rest66=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},Paragraph2=React406.forwardRef((props,ref)=>{let{children}=props,restProps=__rest66(props,["children"]);return React406.createElement(Base_default,Object.assign({ref},restProps,{component:"div"}),children)}),Paragraph_default2=Paragraph2;var React407=__toESM(require_react_development());var __rest67=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},Text=(props,ref)=>{let{ellipsis,children}=props,restProps=__rest67(props,["ellipsis","children"]),mergedEllipsis=React407.useMemo(()=>{if(ellipsis&&typeof ellipsis==="object")return omit(ellipsis,["expandable","rows"]);return ellipsis},[ellipsis]);return devUseWarning("Typography.Text")(typeof ellipsis!=="object"||!ellipsis||!("expandable"in ellipsis)&&!("rows"in ellipsis),"usage","`ellipsis` do not support `expandable` or `rows` props."),React407.createElement(Base_default,Object.assign({ref},restProps,{ellipsis:mergedEllipsis,component:"span"}),children)},Text_default=React407.forwardRef(Text);var React408=__toESM(require_react_development());var __rest68=function(s,e){var t={};for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p)&&e.indexOf(p)<0)t[p]=s[p];if(s!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var i=0,p=Object.getOwnPropertySymbols(s);i<p.length;i++)if(e.indexOf(p[i])<0&&Object.prototype.propertyIsEnumerable.call(s,p[i]))t[p[i]]=s[p[i]]}return t},TITLE_ELE_LIST=[1,2,3,4,5],Title2=React408.forwardRef((props,ref)=>{let{level=1,children}=props,restProps=__rest68(props,["level","children"]);devUseWarning("Typography.Title")(TITLE_ELE_LIST.includes(level),"usage","Title only accept `1 | 2 | 3 | 4 | 5` as `level` value. And `5` need 4.6.0+ version.");let component=TITLE_ELE_LIST.includes(level)?`h${level}`:"h1";return React408.createElement(Base_default,Object.assign({ref},restProps,{component}),children)}),Title_default2=Title2;var Typography2=Typography_default;Typography2.Text=Text_default;Typography2.Link=Link_default;Typography2.Title=Title_default2;Typography2.Paragraph=Paragraph_default2;var typography_default=Typography2;var import_react125=__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 mergeStyle(baseStyle,style){return style&&typeof style==="object"&&!Array.isArray(style)?{...baseStyle,...style}:baseStyle}var SURFACE_SHADOW="0 6px 16px rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12)";function Modal(props){let width=typeof props.width==="number"?props.width:520,footer=props.footer;return import_react125.createElement(card_default,{...chrome(props),title:props.title,style:mergeStyle({width:"100%",maxWidth:width,margin:"16px auto",boxShadow:SURFACE_SHADOW},props.style)},props.children,footer?import_react125.createElement("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:16}},footer):null)}function Drawer(props){return import_react125.createElement(card_default,{...chrome(props),title:props.title,style:mergeStyle({width:320,height:"100%",borderRadius:0,boxShadow:SURFACE_SHADOW},props.style)},props.children)}function Popover2(props){return import_react125.createElement(import_react125.Fragment,null,props.children,import_react125.createElement(card_default,{...chrome(props),size:"small",title:props.title,style:mergeStyle({display:"inline-block",maxWidth:320,marginTop:8,boxShadow:SURFACE_SHADOW},props.style)},props.content))}function Tooltip3(props){let tip=props.title;return import_react125.createElement(import_react125.Fragment,null,props.children,tip==null?null:import_react125.createElement("span",{...chrome(props),style:mergeStyle({display:"inline-block",background:"rgba(0, 0, 0, 0.85)",color:"#fff",borderRadius:6,padding:"4px 8px",fontSize:12,lineHeight:1.4,marginLeft:8,verticalAlign:"middle"},props.style)},tip))}function Dropdown4(props){let menu=props.menu;return import_react125.createElement(import_react125.Fragment,null,props.children,import_react125.createElement("div",{...chrome(props),style:mergeStyle({display:"inline-block",minWidth:160,marginTop:4,borderRadius:8,boxShadow:SURFACE_SHADOW,overflow:"hidden"},props.style)},import_react125.createElement(menu_default2,{items:menu?.items??[],selectable:!1,style:{borderInlineEnd:"none"}})))}var REUSED_HELPER_IDS=["Icon","Image","Placeholder","SVG","Layer","Gradient","Prose"],registry={Alert:alert_default,Avatar:avatar_default,Badge:badge_default,Breadcrumb:breadcrumb_default,Button:button_default2,Card:card_default,Checkbox:checkbox_default,Col:col_default2,Divider:divider_default,Drawer,Dropdown:Dropdown4,Empty:empty_default2,Flex:flex_default,Input:input_default,List:list_default,ListItem:list_default.Item,ListItemMeta:list_default.Item.Meta,Menu:menu_default2,Modal,Pagination:pagination_default,Popover:Popover2,Progress:progress_default2,Radio:radio_default2,Rate:rate_default,Row:row_default2,Segmented:segmented_default,Select:select_default,Skeleton:skeleton_default,Slider:slider_default,Space:space_default,Statistic:statistic_default2,Steps:steps_default,Switch:switch_default,Table:table_default,Tabs:tabs_default,Tag:tag_default,Tooltip:Tooltip3,TypographyParagraph:typography_default.Paragraph,TypographyText:typography_default.Text,TypographyTitle:typography_default.Title,...helpersRegistry(REUSED_HELPER_IDS)};var import_react126=__toESM(require_react_development(),1);function antdColor(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 antdColor(slot);if(slot&&typeof slot==="object"&&typeof slot.DEFAULT==="string")return antdColor(slot.DEFAULT);return antdColor(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 antdTokens(theme,dark){let c=resolveColors(theme,dark);return{colorPrimary:base(c.primary,"#4f46e5"),colorBgBase:antdColor(c.background),colorTextBase:antdColor(c.foreground),colorError:base(c.destructive,"#dc2626"),borderRadius:radiusPx(theme),...antdTypography(theme),...c.card?{colorBgContainer:base(c.card,c.background)}:{}}}function antdTypography(theme){let typography=theme.typography,scale=typesetScale(typography.typesets?.[DEFAULT_TYPESET_NAME],{...typography.fontFamily?{fontFamily:typography.fontFamily}:{}});return{fontFamily:scale.body.fontFamily??typography.fontFamily?.sans??"system-ui, -apple-system, sans-serif",fontSize:scale.body.fontSize,fontSizeSM:scale.caption.fontSize,fontSizeLG:scale.lead.fontSize,fontSizeHeading1:scale.h1.fontSize,fontSizeHeading2:scale.h2.fontSize,fontSizeHeading3:scale.h3.fontSize,fontSizeHeading4:scale.h4.fontSize,fontSizeHeading5:scale.h5.fontSize,lineHeight:scale.body.lineHeight,lineHeightHeading1:scale.h1.lineHeight,lineHeightHeading2:scale.h2.lineHeight,lineHeightHeading3:scale.h3.lineHeight,lineHeightHeading4:scale.h4.lineHeight,lineHeightHeading5:scale.h5.lineHeight}}function antdThemeConfig(theme,dark=!1){return{cssVar:!0,algorithm:dark?theme_default3.darkAlgorithm:theme_default3.defaultAlgorithm,token:antdTokens(theme,dark)}}function antdThemeOptions(theme,dark=!1){return{cssVar:!0,algorithm:identifierRef(dark?"antdTheme.darkAlgorithm":"antdTheme.defaultAlgorithm"),token:antdTokens(theme,dark)}}function makeRenderPass(theme,dark=!1){let cache=createCache(),config=antdThemeConfig(theme,dark);return{wrap:(element)=>import_react126.createElement(StyleProvider,{cache},import_react126.createElement(config_provider_default,{theme:config},element)),css:()=>stripStyleTags(extractStyle(cache,{plain:!0}))}}function stripStyleTags(css){let current=css;for(;;){let next=current.replace(/<\/?style[^>]*>/gi,"");if(next===current)return next;current=next}}var here=dirname(fileURLToPath(import.meta.url)),srcDir=resolveProviderSrcDir(here,"provider-antd",process.env.VELLOO_ANTD_SRC);function createProvider(){return{id:"antd",version:ANTD_VERSION,label:"Ant Design v5",componentsDir:srcDir,styleEntryPath:join(srcDir,"tailwind-entry.css"),registry,loadManifest:async()=>ANTD_MANIFEST,catalog:async()=>catalogFromManifest(ANTD_MANIFEST.filter((c)=>c.source==="antd"),{importPath:"antd"}),styleChannel:STYLE_PROP,styleChannels:["style"],mcpIntro:()=>[...ANTD_INTRO],renderPass:(theme,dark)=>makeRenderPass(theme,dark??!1),codegenModule:"antd",themeToNative:(theme,dark)=>antdThemeOptions(theme,dark),themeModule:{importLines:['import { theme as antdTheme } from "antd";'],factory:null,defaultPath:"antd-theme.ts"},ownedModules:{packages:["antd"]}}}export{createProvider};
@@ -0,0 +1,3 @@
1
+ // @bun
2
+ import{CURRENT_SCHEMA_VERSION}from"./chunk-nte0t7v3.js";import{localDesignOf,recordedDesignName}from"./chunk-5ezzc1h2.js";import{AGENTS,designArgumentFor,agentRootCandidates,writeAgentConfig,refreshAgentArtifacts}from"./chunk-9nhw49vv.js";import{daemonRoot,readLock,isLive,stopDaemon}from"./chunk-k9219kmj.js";import{fail}from"./chunk-s23gtejf.js";import{installedVellooBin,upgradeInstalledVelloo}from"./chunk-7k7dpj5y.js";import{createProgress}from"./chunk-pjtg3wnm.js";import{upgradeFolder}from"./chunk-jx11jvq8.js";import{DESIGN_ARG_DESCRIPTION,resolveDesign,checkoutDesigns}from"./chunk-td5z2sm4.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
+ export{repinAgentConfigs,upgrade_default,migrateFolder2};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{string,number,object,CURRENT_SCHEMA_VERSION,schemaVersionOf}from"./chunk-bk8b7f9a.js";import{writeJsonAtomic}from"./chunk-329e3phg.js";import{TOOL_VERSION}from"./chunk-65wb0g7d.js";import{defaultCloudUrl}from"./chunk-2z0k59hz.js";function isLoopbackHost(host){let normalized=host.trim().toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"");if(normalized==="localhost"||normalized==="::1")return!0;let octets=normalized.split(".");return octets.length===4&&octets[0]==="127"&&octets.every((part)=>/^\d+$/.test(part))}function assertLoopbackHost(host){if(isLoopbackHost(host))return;throw Error(`refusing to bind ${JSON.stringify(host)}: the canvas and MCP endpoints have no authentication and only serve loopback (use 127.0.0.1, localhost or ::1)`)}import{closeSync,existsSync,mkdirSync,openSync,readFileSync,realpathSync,statSync,unlinkSync,writeSync}from"fs";import{mkdir,readFile}from"fs/promises";import{homedir}from"os";import{dirname,join,resolve}from"path";var DaemonRecordSchema=object({root:string().min(1),pid:number().int().positive(),canvasUrl:string().min(1),canvasPort:number().int().positive(),mcpUrl:string().min(1),mcpPort:number().int().positive(),cloudUrl:string().min(1),version:string().min(1),startedAt:string().min(1)});function daemonMatchesRuntime(rec,cloudUrl=defaultCloudUrl()){return rec.version===TOOL_VERSION&&rec.cloudUrl===cloudUrl}var MUTEX_STALE_MS=15000,HEALTHY_TIMEOUT_MS=15000,cacheDir=(root)=>join(root,".design","cache"),lockPath=(root)=>join(cacheDir(root),"runtime.json"),mutexPath=(root)=>join(cacheDir(root),"runtime.lock"),logPath=(root)=>join(cacheDir(root),"daemon.log"),portMemoPath=(root)=>join(cacheDir(root),"port.json"),registryPath=()=>process.env.VELLOO_DAEMONS_PATH??join(homedir(),".velloo","daemons.json");function daemonRoot(folder){let abs=resolve(folder);return existsSync(abs)?realpathSync(abs):abs}class DesignFolderFormatError extends Error{root;found;current;constructor(message,root,found,current){super(message);this.root=root;this.found=found;this.current=current;this.name="DesignFolderFormatError"}}function assertFolderFormatCurrent(root){let raw;try{raw=JSON.parse(readFileSync(join(root,".design","config.json"),"utf8"))}catch{return}let found=schemaVersionOf(raw);if(found===CURRENT_SCHEMA_VERSION)return;let message=found>CURRENT_SCHEMA_VERSION?`velloo: ${root} uses design-folder schema version ${found}, but this velloo only knows version ${CURRENT_SCHEMA_VERSION}. Upgrade velloo to open it.`:`velloo: ${root} uses design-folder schema version ${found} (current: ${CURRENT_SCHEMA_VERSION}). Run \`velloo upgrade ${root}\` to migrate it.`;throw new DesignFolderFormatError(message,root,found,CURRENT_SCHEMA_VERSION)}async function readLock(root){try{let parsed=DaemonRecordSchema.safeParse(JSON.parse(await readFile(lockPath(root),"utf8")));return parsed.success?parsed.data:null}catch{return null}}async function writeLock(rec){await writeJsonAtomic(lockPath(rec.root),rec)}function removeLock(root){try{unlinkSync(lockPath(root))}catch{}}var DEFAULT_CANVAS_PORT=7300,DERIVED_BAND={start:7310,size:90},PortMemoSchema=object({canvasPort:number().int().min(1).max(65535)});async function readRememberedPort(root){try{let parsed=PortMemoSchema.safeParse(JSON.parse(await readFile(portMemoPath(root),"utf8")));return parsed.success?parsed.data.canvasPort:null}catch{return null}}async function rememberPort(root,canvasPort){await writeJsonAtomic(portMemoPath(root),{canvasPort})}function derivedPort(root){let digest=Bun.CryptoHasher.hash("sha256",root,"hex");return DERIVED_BAND.start+Number.parseInt(digest.slice(0,8),16)%DERIVED_BAND.size}function portCandidates(opts){if(opts.explicit!==void 0)return[opts.explicit];let wanted=[opts.remembered,DEFAULT_CANVAS_PORT,derivedPort(opts.root)];return[...new Set(wanted.filter((p)=>typeof p==="number"))]}var HealthSchema=object({app:string().optional(),root:string().optional()});async function isLive(rec){try{let res=await fetch(`http://127.0.0.1:${rec.canvasPort}/api/health`,{signal:AbortSignal.timeout(1000)});if(!res.ok)return!1;let body=await res.json(),health=HealthSchema.safeParse(body);return health.success&&health.data.app==="velloo"&&health.data.root===rec.root}catch{return!1}}async function registryRead(){try{let raw=JSON.parse(await readFile(registryPath(),"utf8"));if(!Array.isArray(raw))return[];return raw.flatMap((entry)=>{let parsed=DaemonRecordSchema.safeParse(entry);return parsed.success?[parsed.data]:[]})}catch{return[]}}async function registryWrite(records){let p=registryPath();await mkdir(dirname(p),{recursive:!0}),await writeJsonAtomic(p,records)}async function registryUpsert(rec){let others=(await registryRead()).filter((r)=>r.root!==rec.root);await registryWrite([...others,rec])}async function registryRemove(root){await registryWrite((await registryRead()).filter((r)=>r.root!==root))}async function listDaemons(){let all=await registryRead(),live=[];for(let rec of all)if(await isLive(rec))live.push(rec);if(live.length!==all.length)await registryWrite(live);return live}function daemonSpawnCmd(root,preferredPort,host){let args=["__daemon",root,"--host",host];if(preferredPort!==void 0)args.push("--port",String(preferredPort));let entry=Bun.main;return existsSync(entry)?[process.execPath,entry,...args]:[process.execPath,...args]}function spawnDetached(root,preferredPort,host){mkdirSync(cacheDir(root),{recursive:!0});let logStart=0;try{logStart=statSync(logPath(root)).size}catch{}let log=openSync(logPath(root),"a"),proc=Bun.spawn(daemonSpawnCmd(root,preferredPort,host),{stdin:"ignore",stdout:log,stderr:log});return proc.unref(),{exited:proc.exited,logStart}}function claimMutex(root){let path=mutexPath(root);try{let fd=openSync(path,"wx");return writeSync(fd,String(process.pid)),closeSync(fd),!0}catch{try{if(Date.now()-statSync(path).mtimeMs>MUTEX_STALE_MS)return unlinkSync(path),claimMutex(root)}catch{}return!1}}function releaseMutex(root){try{unlinkSync(mutexPath(root))}catch{}}function startupFailure(root,logStart){let appended="";try{appended=readFileSync(logPath(root),"utf8").slice(logStart)}catch{}let lines=appended.split(`
2
+ import{string,number,object,CURRENT_SCHEMA_VERSION,schemaVersionOf}from"./chunk-nte0t7v3.js";import{writeJsonAtomic}from"./chunk-5ezzc1h2.js";import{TOOL_VERSION}from"./chunk-kz4423th.js";import{defaultCloudUrl}from"./chunk-as08hzp3.js";function isLoopbackHost(host){let normalized=host.trim().toLowerCase().replace(/^\[|\]$/g,"").replace(/\.$/,"");if(normalized==="localhost"||normalized==="::1")return!0;let octets=normalized.split(".");return octets.length===4&&octets[0]==="127"&&octets.every((part)=>/^\d+$/.test(part))}function assertLoopbackHost(host){if(isLoopbackHost(host))return;throw Error(`refusing to bind ${JSON.stringify(host)}: the canvas and MCP endpoints have no authentication and only serve loopback (use 127.0.0.1, localhost or ::1)`)}import{closeSync,existsSync,mkdirSync,openSync,readFileSync,realpathSync,statSync,unlinkSync,writeSync}from"fs";import{mkdir,readFile}from"fs/promises";import{homedir}from"os";import{dirname,join,resolve}from"path";var DaemonRecordSchema=object({root:string().min(1),pid:number().int().positive(),canvasUrl:string().min(1),canvasPort:number().int().positive(),mcpUrl:string().min(1),mcpPort:number().int().positive(),cloudUrl:string().min(1),version:string().min(1),startedAt:string().min(1)});function daemonMatchesRuntime(rec,cloudUrl=defaultCloudUrl()){return rec.version===TOOL_VERSION&&rec.cloudUrl===cloudUrl}var MUTEX_STALE_MS=15000,HEALTHY_TIMEOUT_MS=15000,cacheDir=(root)=>join(root,".design","cache"),lockPath=(root)=>join(cacheDir(root),"runtime.json"),mutexPath=(root)=>join(cacheDir(root),"runtime.lock"),logPath=(root)=>join(cacheDir(root),"daemon.log"),portMemoPath=(root)=>join(cacheDir(root),"port.json"),registryPath=()=>process.env.VELLOO_DAEMONS_PATH??join(homedir(),".velloo","daemons.json");function daemonRoot(folder){let abs=resolve(folder);return existsSync(abs)?realpathSync(abs):abs}class DesignFolderFormatError extends Error{root;found;current;constructor(message,root,found,current){super(message);this.root=root;this.found=found;this.current=current;this.name="DesignFolderFormatError"}}function assertFolderFormatCurrent(root){let raw;try{raw=JSON.parse(readFileSync(join(root,".design","config.json"),"utf8"))}catch{return}let found=schemaVersionOf(raw);if(found===CURRENT_SCHEMA_VERSION)return;let message=found>CURRENT_SCHEMA_VERSION?`velloo: ${root} uses design-folder schema version ${found}, but this velloo only knows version ${CURRENT_SCHEMA_VERSION}. Upgrade velloo to open it.`:`velloo: ${root} uses design-folder schema version ${found} (current: ${CURRENT_SCHEMA_VERSION}). Run \`velloo upgrade ${root}\` to migrate it.`;throw new DesignFolderFormatError(message,root,found,CURRENT_SCHEMA_VERSION)}async function readLock(root){try{let parsed=DaemonRecordSchema.safeParse(JSON.parse(await readFile(lockPath(root),"utf8")));return parsed.success?parsed.data:null}catch{return null}}async function writeLock(rec){await writeJsonAtomic(lockPath(rec.root),rec)}function removeLock(root){try{unlinkSync(lockPath(root))}catch{}}var DEFAULT_CANVAS_PORT=7300,DERIVED_BAND={start:7310,size:90},PortMemoSchema=object({canvasPort:number().int().min(1).max(65535)});async function readRememberedPort(root){try{let parsed=PortMemoSchema.safeParse(JSON.parse(await readFile(portMemoPath(root),"utf8")));return parsed.success?parsed.data.canvasPort:null}catch{return null}}async function rememberPort(root,canvasPort){await writeJsonAtomic(portMemoPath(root),{canvasPort})}function derivedPort(root){let digest=Bun.CryptoHasher.hash("sha256",root,"hex");return DERIVED_BAND.start+Number.parseInt(digest.slice(0,8),16)%DERIVED_BAND.size}function portCandidates(opts){if(opts.explicit!==void 0)return[opts.explicit];let wanted=[opts.remembered,DEFAULT_CANVAS_PORT,derivedPort(opts.root)];return[...new Set(wanted.filter((p)=>typeof p==="number"))]}var HealthSchema=object({app:string().optional(),root:string().optional()});async function isLive(rec){try{let res=await fetch(`http://127.0.0.1:${rec.canvasPort}/api/health`,{signal:AbortSignal.timeout(1000)});if(!res.ok)return!1;let body=await res.json(),health=HealthSchema.safeParse(body);return health.success&&health.data.app==="velloo"&&health.data.root===rec.root}catch{return!1}}async function registryRead(){try{let raw=JSON.parse(await readFile(registryPath(),"utf8"));if(!Array.isArray(raw))return[];return raw.flatMap((entry)=>{let parsed=DaemonRecordSchema.safeParse(entry);return parsed.success?[parsed.data]:[]})}catch{return[]}}async function registryWrite(records){let p=registryPath();await mkdir(dirname(p),{recursive:!0}),await writeJsonAtomic(p,records)}async function registryUpsert(rec){let others=(await registryRead()).filter((r)=>r.root!==rec.root);await registryWrite([...others,rec])}async function registryRemove(root){await registryWrite((await registryRead()).filter((r)=>r.root!==root))}async function listDaemons(){let all=await registryRead(),live=[];for(let rec of all)if(await isLive(rec))live.push(rec);if(live.length!==all.length)await registryWrite(live);return live}function daemonSpawnCmd(root,preferredPort,host){let args=["__daemon",root,"--host",host];if(preferredPort!==void 0)args.push("--port",String(preferredPort));let entry=Bun.main;return existsSync(entry)?[process.execPath,entry,...args]:[process.execPath,...args]}function spawnDetached(root,preferredPort,host){mkdirSync(cacheDir(root),{recursive:!0});let logStart=0;try{logStart=statSync(logPath(root)).size}catch{}let log=openSync(logPath(root),"a"),proc=Bun.spawn(daemonSpawnCmd(root,preferredPort,host),{stdin:"ignore",stdout:log,stderr:log,detached:process.platform==="win32"});return proc.unref(),{exited:proc.exited,logStart}}function claimMutex(root){let path=mutexPath(root);try{let fd=openSync(path,"wx");return writeSync(fd,String(process.pid)),closeSync(fd),!0}catch{try{if(Date.now()-statSync(path).mtimeMs>MUTEX_STALE_MS)return unlinkSync(path),claimMutex(root)}catch{}return!1}}function releaseMutex(root){try{unlinkSync(mutexPath(root))}catch{}}function startupFailure(root,logStart){let appended="";try{appended=readFileSync(logPath(root),"utf8").slice(logStart)}catch{}let lines=appended.split(`
3
3
  `).map((l)=>l.replace(/^velloo __daemon: /,"").trimEnd()).filter((l)=>l.trim().length>0).slice(-8);if(lines.length===0)return`velloo: the canvas daemon for ${root} exited during startup with no output \u2014 see ${logPath(root)}`;return`velloo: the canvas daemon for ${root} exited during startup:
4
4
  ${lines.join(`
5
5
  `)}`}async function waitForHealthy(root,spawned){let deadline=Date.now()+HEALTHY_TIMEOUT_MS,died=!1;if(spawned)spawned.exited.then(()=>died=!0);while(Date.now()<deadline){let rec=await readLock(root);if(rec&&await isLive(rec))return rec;if(died)throw Error(startupFailure(root,spawned?.logStart??0));await new Promise((r)=>setTimeout(r,150))}throw Error(`velloo: canvas daemon for ${root} didn't come up \u2014 see ${logPath(root)}`)}async function ensureDaemon(folder,opts={}){let root=daemonRoot(folder);assertFolderFormatCurrent(root);let host=opts.host??"127.0.0.1";assertLoopbackHost(host),mkdirSync(cacheDir(root),{recursive:!0});let deadline=Date.now()+HEALTHY_TIMEOUT_MS+5000;while(Date.now()<deadline){let existing=await readLock(root);if(existing&&await isLive(existing)){if(daemonMatchesRuntime(existing))return existing;await stopDaemon(root)}if(claimMutex(root))try{let again=await readLock(root);if(again&&await isLive(again)){if(daemonMatchesRuntime(again))return again;await stopDaemon(root)}let spawned=spawnDetached(root,opts.preferredPort,host);return opts.onSpawn?.(),await waitForHealthy(root,spawned)}finally{releaseMutex(root)}await new Promise((r)=>setTimeout(r,200))}throw Error(`velloo: timed out ensuring a canvas daemon for ${root}`)}async function stopDaemon(root){let rec=await readLock(root);if(!rec)return!1;try{process.kill(rec.pid,"SIGTERM")}catch{}for(let i=0;i<30;i++){if(!await isLive(rec))break;await new Promise((r)=>setTimeout(r,100))}return removeLock(root),await registryRemove(root),!0}
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- var package_default={name:"@velloo/cli",version:"0.1.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-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.1.0 (f18ce63-dirty \xB7 2026-09-15)",BUILD_TIME_MS=1789490581891;
2
+ var package_default={name:"@velloo/cli",version:"0.3.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-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.3.0",BUILD_TIME_MS=1789995973983;
3
3
  export{PACKAGE_VERSION,TOOL_VERSION,BUILD_TIME_MS};
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{isCancel,select}from"./chunk-8ssr8a8w.js";import{preflightScreens}from"./chunk-329e3phg.js";import{fail}from"./chunk-s23gtejf.js";import{copyToClipboard}from"./chunk-vbk1qhdz.js";import{require_picocolors}from"./chunk-jrsknzjt.js";import{__toESM}from"./chunk-2smsg2ct.js";import{stripVTControlCharacters}from"util";var import_picocolors=__toESM(require_picocolors(),1);function plural(count,noun){return`${count} ${noun}${count===1?"":"s"}`}function formatFailures(command,failures){let byScreen=new Map;for(let failure of failures)byScreen.set(failure.screenId,[...byScreen.get(failure.screenId)??[],failure]);let notDrawn=[...byScreen.values()].filter((group)=>group.some((failure)=>failure.componentId===null)),placeholders=[...byScreen.values()].filter((group)=>!notDrawn.includes(group)).reduce((sum,group)=>sum+group.length,0),consequences=[placeholders>0&&`${plural(placeholders,"component")} will appear as placeholders`,notDrawn.length>0&&`${plural(notDrawn.length,"screen")} will not render at all`].filter(Boolean),lines=[`${import_picocolors.default.yellow(`velloo ${command}:`)} render failures on ${plural(byScreen.size,"screen")} \u2014 ${consequences.join(", and ")}:`];for(let group of byScreen.values()){let[first]=group;if(!first)continue;let boards=first.boards.length>0?first.boards.map((board)=>board.name).join(", "):"no board";lines.push("",` ${import_picocolors.default.dim(`${boards} \u203A`)} ${import_picocolors.default.bold(first.screenName)} ${import_picocolors.default.dim(`(${first.screenId})`)}`);let pinned=group.some((failure)=>failure.componentId!==null);for(let failure of group)if(failure.componentId!==null)lines.push(` ${import_picocolors.default.cyan(failure.componentId)}: ${failure.reason}`);else{let label=pinned?"screen not drawn":"screen not drawn \u2014 the error could not be pinned on one component";lines.push(` ${import_picocolors.default.red(label)}: ${failure.reason}`)}}return lines}async function confirmRenderFailures(command,source,screens,yes){let failures=preflightScreens(source,screens);if(failures.length===0)return;let report=formatFailures(command,failures);for(let line of report)console.error(line);if(console.error(""),yes)return;if(!process.stdin.isTTY)fail(command,"refusing to continue \u2014 re-run with --yes to accept the placeholders.");for(;;){let choice=await select({message:"Continue anyway?",options:[{value:"cancel",label:"No, cancel"},{value:"continue",label:"Yes, continue with the failures"},{value:"copy",label:"Copy errors to clipboard"}],initialValue:"cancel"});if(isCancel(choice)||choice==="cancel")fail(command,"cancelled.");if(choice==="continue")return;let copied=await copyToClipboard(stripVTControlCharacters(report.join(`
2
+ import{isCancel,select}from"./chunk-80fjfyha.js";import{preflightScreens}from"./chunk-5ezzc1h2.js";import{fail}from"./chunk-s23gtejf.js";import{copyToClipboard}from"./chunk-vbk1qhdz.js";import{require_picocolors}from"./chunk-jrsknzjt.js";import{__toESM}from"./chunk-2smsg2ct.js";import{stripVTControlCharacters}from"util";var import_picocolors=__toESM(require_picocolors(),1);function plural(count,noun){return`${count} ${noun}${count===1?"":"s"}`}function formatFailures(command,failures){let byScreen=new Map;for(let failure of failures)byScreen.set(failure.screenId,[...byScreen.get(failure.screenId)??[],failure]);let notDrawn=[...byScreen.values()].filter((group)=>group.some((failure)=>failure.componentId===null)),placeholders=[...byScreen.values()].filter((group)=>!notDrawn.includes(group)).reduce((sum,group)=>sum+group.length,0),consequences=[placeholders>0&&`${plural(placeholders,"component")} will appear as placeholders`,notDrawn.length>0&&`${plural(notDrawn.length,"screen")} will not render at all`].filter(Boolean),lines=[`${import_picocolors.default.yellow(`velloo ${command}:`)} render failures on ${plural(byScreen.size,"screen")} \u2014 ${consequences.join(", and ")}:`];for(let group of byScreen.values()){let[first]=group;if(!first)continue;let boards=first.boards.length>0?first.boards.map((board)=>board.name).join(", "):"no board";lines.push("",` ${import_picocolors.default.dim(`${boards} \u203A`)} ${import_picocolors.default.bold(first.screenName)} ${import_picocolors.default.dim(`(${first.screenId})`)}`);let pinned=group.some((failure)=>failure.componentId!==null);for(let failure of group)if(failure.componentId!==null)lines.push(` ${import_picocolors.default.cyan(failure.componentId)}: ${failure.reason}`);else{let label=pinned?"screen not drawn":"screen not drawn \u2014 the error could not be pinned on one component";lines.push(` ${import_picocolors.default.red(label)}: ${failure.reason}`)}}return lines}async function confirmRenderFailures(command,source,screens,yes){let failures=preflightScreens(source,screens);if(failures.length===0)return;let report=formatFailures(command,failures);for(let line of report)console.error(line);if(console.error(""),yes)return;if(!process.stdin.isTTY)fail(command,"refusing to continue \u2014 re-run with --yes to accept the placeholders.");for(;;){let choice=await select({message:"Continue anyway?",options:[{value:"cancel",label:"No, cancel"},{value:"continue",label:"Yes, continue with the failures"},{value:"copy",label:"Copy errors to clipboard"}],initialValue:"cancel"});if(isCancel(choice)||choice==="cancel")fail(command,"cancelled.");if(choice==="continue")return;let copied=await copyToClipboard(stripVTControlCharacters(report.join(`
3
3
  `)));console.error(copied?` ${import_picocolors.default.green("\u2713")} Errors copied to the clipboard.`:import_picocolors.default.dim(" Couldn't reach a clipboard tool \u2014 copy the errors printed above."))}}
4
4
  export{confirmRenderFailures};
@@ -0,0 +1,5 @@
1
+ // @bun
2
+ import{ThemeSchema}from"./chunk-nte0t7v3.js";import{colorizeDiff,emitTheme,emitNativeTheme,loadDesignFolder,resolveProviders}from"./chunk-5ezzc1h2.js";import"./chunk-n9t36h0q.js";import"./chunk-c4fym47a.js";import"./chunk-80fjfyha.js";import"./chunk-s23gtejf.js";import{detectHost}from"./chunk-d9p6s05n.js";import{DESIGN_ARG_DESCRIPTION,resolveDesign}from"./chunk-td5z2sm4.js";import{defineCommand}from"./chunk-2smsg2ct.js";import{readFile}from"fs/promises";import{isAbsolute,join,resolve}from"path";import{stdin,stdout}from"process";import{createInterface}from"readline/promises";async function readMaybe(path){try{return await readFile(path,"utf8")}catch{return}}async function themeEmitter(folderRoot,theme,outDir,cssOnly,tailwind3){let design=await loadDesignFolder(folderRoot),{defaultProvider}=await resolveProviders(design.config,folderRoot),adapter=defaultProvider;if(adapter.themeToNative&&adapter.themeModule){let toNative=adapter.themeToNative.bind(adapter),spec=adapter.themeModule;return{native:!0,produce:(apply)=>emitNativeTheme(toNative(theme),{spec,outputDir:outDir,apply,...theme.colorsDark?{darkThemeOptions:toNative(theme,!0)}:{},sourceTheme:theme})}}let customCss=await readMaybe(join(folderRoot,"theme","custom.css"));return{native:!1,produce:(apply)=>emitTheme(theme,{outputDir:outDir,apply,cssOnly,...customCss?{customCss}:{},...tailwind3?{tailwindMajor:3}:{}})}}var exportTheme=defineCommand({meta:{name:"export",description:"Export DTCG tokens.json plus the framework theme in diff mode \u2014 Tailwind v4 globals.css by default, or v3 CSS + preset when detected"},args:{to:{type:"string",required:!0,description:"Target app directory (writes <to>/app/globals.css and <to>/tailwind.config.ts)"},design:{type:"string",description:DESIGN_ARG_DESCRIPTION},theme:{type:"string",description:"Path to theme JSON (default: the design's theme/default.json)"},apply:{type:"boolean",description:"Write files instead of printing diffs. Default: dry-run."},"css-only":{type:"boolean",description:"Skip tailwind.config.ts (CSS-only export)."},"force-v4":{type:"boolean",description:"Emit the v4 artifacts even when the target app looks like Tailwind v3."}},async run({args}){let folderRoot=await resolveDesign(args.design,"theme export",{designFlag:"--design"}),themePath=args.theme?resolve(args.theme):join(folderRoot,"theme","default.json"),outDir=isAbsolute(args.to)?args.to:resolve(args.to),themeJson=JSON.parse(await readFile(themePath,"utf8")),theme=ThemeSchema.parse(themeJson),tailwind3=!args["force-v4"]&&detectHost(outDir).tailwindMajor===3,{native,produce}=await themeEmitter(folderRoot,theme,outDir,Boolean(args["css-only"]),tailwind3);if(!native&&tailwind3)console.log("velloo theme export: target looks like Tailwind v3 \u2014 emitting velloo-theme.css + velloo.preset (pass --force-v4 for the v4 artifacts).");let result=await produce(Boolean(args.apply)),useColor=stdout.isTTY===!0,anyChange=!1;for(let warning of result.warnings)console.error(`velloo theme export: warning: ${warning}`);for(let file of result.files){if(file.diff.identical){console.log(`velloo theme export: ${file.path} is already up to date.`);continue}if(anyChange=!0,file.applied)console.log(`velloo theme export: wrote ${file.path}`);else{let rendered=useColor?colorizeDiff(file.diff.diff):file.diff.diff;stdout.write(`${rendered}
3
+ `),stdout.write(`Would write to: ${file.path}
4
+
5
+ `)}}for(let note of result.notes)console.log(`velloo theme export: ${note}`);if(!anyChange||args.apply)return;if(!stdin.isTTY){console.log("(non-TTY) re-run with --apply to write the files.");return}let rl=createInterface({input:stdin,output:stdout}),answer=(await rl.question("Apply all? (y/N) ")).trim().toLowerCase();if(rl.close(),answer==="y"||answer==="yes"){let final=await produce(!0);for(let file of final.files)if(file.applied)console.log(`velloo theme export: wrote ${file.path}`)}else console.log("velloo theme export: skipped (no changes written).")}}),theme_default=defineCommand({meta:{name:"theme",description:"Work with a design's theme"},subCommands:{export:exportTheme}});export{theme_default as default};