velloo 0.8.0 → 0.9.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 (73) hide show
  1. package/BUN-LICENSE.md +4 -3
  2. package/THIRD-PARTY-NOTICES.md +3 -3
  3. package/canvas/assets/index-DFOlwAKW.js +31 -0
  4. package/canvas/assets/{lucide-all-Cezxn40A.js → lucide-all-CezGNjGW.js} +1 -1
  5. package/canvas/index.html +1 -1
  6. package/{chunk-mqtnj8ws.js → chunk-00n2d68z.js} +1 -1
  7. package/{chunk-45wv1fs5.js → chunk-02gpgqj4.js} +5 -5
  8. package/{chunk-m0v3d581.js → chunk-0ztxyzac.js} +1 -1
  9. package/{chunk-07fxzrx2.js → chunk-2x5rw009.js} +3 -3
  10. package/{chunk-w30zfv3m.js → chunk-3f2p94wa.js} +1 -1
  11. package/{chunk-zgwvkgsz.js → chunk-3jqbybmp.js} +1 -1
  12. package/{chunk-mqx96m2g.js → chunk-5tatkt2j.js} +1 -1
  13. package/{chunk-qqagacne.js → chunk-640swnrm.js} +1 -1
  14. package/{chunk-v6ks5v53.js → chunk-6600wkmq.js} +1 -1
  15. package/{chunk-esg0x95a.js → chunk-6adv9eke.js} +1 -1
  16. package/{chunk-s1cwck4c.js → chunk-6wfvb07c.js} +1 -1
  17. package/{chunk-dqqpbmxt.js → chunk-8a2agf28.js} +1 -1
  18. package/{chunk-asqpx5v7.js → chunk-8kn6tp4b.js} +2 -2
  19. package/{chunk-cq2q36d1.js → chunk-9b4akcfp.js} +1 -1
  20. package/{chunk-8n07n0cr.js → chunk-9kvbe53e.js} +2 -2
  21. package/{chunk-3612470d.js → chunk-a5mxgvcz.js} +1 -1
  22. package/{chunk-sjxp2bx3.js → chunk-as4rn21e.js} +1 -1
  23. package/{chunk-qx83fdv2.js → chunk-avewjans.js} +4 -4
  24. package/chunk-bpb97rsk.js +17 -0
  25. package/{chunk-q7wwqn03.js → chunk-bsn761jv.js} +1 -1
  26. package/{chunk-rg86bhtb.js → chunk-c11n1tve.js} +1 -1
  27. package/{chunk-emty5315.js → chunk-cfksd3zh.js} +1 -1
  28. package/{chunk-hsk91jms.js → chunk-ck3bg8rf.js} +1 -1
  29. package/{chunk-r5y1sh4f.js → chunk-cy1nmr0f.js} +1 -1
  30. package/{chunk-nx0ex7qw.js → chunk-dqy6a75x.js} +1 -1
  31. package/{chunk-qgbat4fv.js → chunk-f8jchnwe.js} +1 -1
  32. package/{chunk-d19ttv1a.js → chunk-fejhav0p.js} +1 -1
  33. package/{chunk-x84qrz4q.js → chunk-fzqt4rsz.js} +1 -1
  34. package/{chunk-rrrn1mkq.js → chunk-g7pbfad5.js} +1 -1
  35. package/{chunk-cg0sjdqt.js → chunk-gv209d5j.js} +1 -1
  36. package/chunk-j4rt31qb.js +2 -0
  37. package/{chunk-t08391mh.js → chunk-kmsbcb3q.js} +1 -1
  38. package/{chunk-nrxqr4v5.js → chunk-ktps9v0k.js} +1 -1
  39. package/{chunk-rhfzy9c0.js → chunk-ktsdzzgx.js} +1 -1
  40. package/{chunk-8ztgcajz.js → chunk-kvxn1cyx.js} +1 -1
  41. package/{chunk-xg49s85z.js → chunk-n70zfv0m.js} +902 -902
  42. package/{chunk-djwvt6jx.js → chunk-n8pr0kc8.js} +1 -1
  43. package/{chunk-dy7qwj3t.js → chunk-pasvz8xw.js} +1 -1
  44. package/{chunk-t61vyqpd.js → chunk-qewarcqf.js} +1 -1
  45. package/{chunk-b4hny6hw.js → chunk-qf1c6jxh.js} +1 -1
  46. package/chunk-qn05hn7a.js +5 -0
  47. package/{chunk-majd3gx9.js → chunk-qvdvxqs0.js} +1 -1
  48. package/{chunk-aefn23tr.js → chunk-r014f76h.js} +1 -1
  49. package/{chunk-32cq4wpr.js → chunk-seaar5na.js} +1 -1
  50. package/{chunk-g3k8k6fq.js → chunk-tax7fxav.js} +1 -1
  51. package/{chunk-c4164x55.js → chunk-tmjs6xas.js} +1 -1
  52. package/{chunk-z6r6wxm6.js → chunk-v6w8akph.js} +1 -1
  53. package/{chunk-xxw67jpk.js → chunk-w40pqmyz.js} +4 -4
  54. package/{chunk-yjwtdm71.js → chunk-x05grjd9.js} +1 -1
  55. package/{chunk-ffm2jpxp.js → chunk-x61f42fj.js} +2 -2
  56. package/{chunk-h3ser37q.js → chunk-xc6mats8.js} +1 -1
  57. package/chunk-yp39f93e.js +815 -0
  58. package/{chunk-ez720ked.js → chunk-ysf9388d.js} +1 -1
  59. package/{chunk-6w42sr61.js → chunk-z3r8px3d.js} +1 -1
  60. package/{chunk-8qf0ne1p.js → chunk-z9kcdgj8.js} +1 -1
  61. package/chunk-zexzy6zv.js +2 -0
  62. package/chunk-zjbbd87h.js +2 -0
  63. package/cli.js +1 -1
  64. package/package.json +9 -9
  65. package/pkgs/schema/src/index.ts +1 -0
  66. package/pkgs/schema/src/snippet-resolve.ts +43 -0
  67. package/canvas/assets/index-CcPwhD7W.js +0 -31
  68. package/chunk-4g4c9h7k.js +0 -2
  69. package/chunk-9g45c5md.js +0 -815
  70. package/chunk-bntsn3wj.js +0 -2
  71. package/chunk-ejpccmcj.js +0 -18
  72. package/chunk-jxgwdz2r.js +0 -5
  73. package/chunk-kvq7pcph.js +0 -2
package/canvas/index.html CHANGED
@@ -9,7 +9,7 @@
9
9
  <link rel="manifest" href="/site.webmanifest" />
10
10
  <meta name="theme-color" content="#0d0c0a" />
11
11
  <title>velloo</title>
12
- <script type="module" crossorigin src="/assets/index-CcPwhD7W.js"></script>
12
+ <script type="module" crossorigin src="/assets/index-DFOlwAKW.js"></script>
13
13
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/react-D0Ec-185.js">
15
15
  <link rel="modulepreload" crossorigin href="/assets/vendor-CKmQ-Zst.js">
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{styleObjectFromCss}from"./chunk-xxw67jpk.js";import{NONE_MANIFEST2,inlineRegistry,entryCssPath2,componentsDir2}from"./chunk-majd3gx9.js";import{STYLE_PROP,require_react_development}from"./chunk-xg49s85z.js";import{__toESM}from"./chunk-2smsg2ct.js";import{HTML_VERSION}from"./chunk-6k05kqnc.js";var import_react=__toESM(require_react_development(),1),SAFE_TAG=/^(?:a|abbr|address|article|aside|b|bdi|bdo|blockquote|br|button|caption|circle|cite|clipPath|code|col|colgroup|data|dd|defs|del|details|dfn|div|dl|dt|ellipse|em|fieldset|figcaption|figure|footer|form|g|h[1-6]|header|hr|i|img|input|ins|kbd|label|legend|li|line|linearGradient|main|mark|mask|meter|nav|ol|optgroup|option|output|p|path|picture|polygon|polyline|pre|progress|q|radialGradient|rect|s|samp|section|select|small|source|span|stop|strong|sub|summary|sup|svg|table|tbody|td|text|textarea|tfoot|th|thead|time|tr|tspan|u|ul|var|wbr)$/,URL_ATTRIBUTES=new Set(["href","src","action","formaction","poster","cite","xlinkhref","xlink:href"]),SCRIPT_URL=/^(?:javascript|vbscript):|^data:text\/html/i,withoutControls=(value)=>[...value].filter((char)=>char.charCodeAt(0)>32).join(""),REACT_PROP={class:"className",for:"htmlFor",autocomplete:"autoComplete",autofocus:"autoFocus",tabindex:"tabIndex",readonly:"readOnly",maxlength:"maxLength",minlength:"minLength",colspan:"colSpan",rowspan:"rowSpan",enctype:"encType",novalidate:"noValidate",datetime:"dateTime",srcset:"srcSet",crossorigin:"crossOrigin",accesskey:"accessKey",contenteditable:"contentEditable",spellcheck:"spellCheck",formaction:"formAction",formmethod:"formMethod",inputmode:"inputMode",referrerpolicy:"referrerPolicy"};function safeAttributeValue(name,value){let key=name.toLowerCase();if(key.startsWith("on")||key==="dangerouslysetinnerhtml")return!1;if(URL_ATTRIBUTES.has(key)&&typeof value==="string")return!SCRIPT_URL.test(withoutControls(value));return!0}function safeTag(component,as){if(!SAFE_TAG.test(as))throw Error(`${component}: unsupported HTML tag ${JSON.stringify(as)}`);return as}function nativeAttributes(props){return Object.fromEntries(Object.entries(props).map(([name,value])=>[REACT_PROP[name]??name,value]).filter(([name,value])=>safeAttributeValue(name,value)).flatMap(([name,value])=>{if(name!=="style"||typeof value!=="string")return[[name,value]];let style=styleObjectFromCss(value);return style?[[name,style]]:[]}))}function Html({as="div",children,...props}){return import_react.createElement(safeTag("Html",as),nativeAttributes(props),children)}var registry={...inlineRegistry,Html};var htmlDescriptors=[{id:"Html",category:"ui",source:"velloo",group:"layout",family:"Html",allowUnknownProps:!0,designModeNotes:"Use for a native HTML element. Set as to a semantic tag and pass ordinary HTML or hx-* attributes as props.",props:[{name:"as",type:"string",optional:!0,control:"string",defaultValue:"div"},{name:"className",type:"string",optional:!0,control:"string"},{name:"style",type:"CSSProperties",optional:!0,control:"string"},{name:"children",type:"ReactNode",optional:!0,control:"string"}]}],HTML_MANIFEST=[...NONE_MANIFEST2,...htmlDescriptors],HTML_INTRO=["**This is a server-rendered HTML/htmx app.** Compose semantic HTML with `Html` nodes (`as=\"form\"`, \u2026), styled by the app's own CSS classes or inline `style` \u2014 there is no Tailwind; new classes need CSS authored in the app. Give forms and controls the real `hx-*` attributes: the canvas never fires them, and `emit_code` keeps them in the native HTML it returns for the app's templates.","","A design never contacts the running app: it is styled by copies of the app's stylesheets, which `store_host_files` refreshes from source or from a capture (including built CSS a `screenshot` reports missing). Reference the app's files by their real paths (`src=\"/static/logo.png\"`), not as Velloo assets. Theme tokens are CSS variables (`var(--color-primary)`); `emit_theme` writes the stylesheet that defines them.","","To reproduce a page, capture it from the running app with `start_capture_session` (the user signs in if needed), rebuild it from `get_capture` with the content written into the nodes, and verify with `compare_to_url { captureId }`.","","On a form, a custom `hx-trigger` replaces htmx's default submit trigger \u2014 include `submit` when a submit button must swap a response instead of navigating.",""];function createProvider(){return{id:"html",version:HTML_VERSION,label:"HTML + htmx",componentsDir:componentsDir2,styleEntryPath:entryCssPath2,registry,loadManifest:async()=>HTML_MANIFEST,styleChannel:STYLE_PROP,styleChannels:["style"],themeRoles:["background","foreground","card","muted","border","input"],registryForChannel:()=>registry,mcpIntro:()=>HTML_INTRO,hostStylesheets:!0,codegenFormat:"html",elementComponent:"Html"}}export{createProvider};
2
+ import{styleObjectFromCss}from"./chunk-w40pqmyz.js";import{NONE_MANIFEST2,inlineRegistry,entryCssPath2,componentsDir2}from"./chunk-qvdvxqs0.js";import{STYLE_PROP,require_react_development}from"./chunk-n70zfv0m.js";import{__toESM}from"./chunk-2smsg2ct.js";import{HTML_VERSION}from"./chunk-6k05kqnc.js";var import_react=__toESM(require_react_development(),1),SAFE_TAG=/^(?:a|abbr|address|article|aside|b|bdi|bdo|blockquote|br|button|caption|circle|cite|clipPath|code|col|colgroup|data|dd|defs|del|details|dfn|div|dl|dt|ellipse|em|fieldset|figcaption|figure|footer|form|g|h[1-6]|header|hr|i|img|input|ins|kbd|label|legend|li|line|linearGradient|main|mark|mask|meter|nav|ol|optgroup|option|output|p|path|picture|polygon|polyline|pre|progress|q|radialGradient|rect|s|samp|section|select|small|source|span|stop|strong|sub|summary|sup|svg|table|tbody|td|text|textarea|tfoot|th|thead|time|tr|tspan|u|ul|var|wbr)$/,URL_ATTRIBUTES=new Set(["href","src","action","formaction","poster","cite","xlinkhref","xlink:href"]),SCRIPT_URL=/^(?:javascript|vbscript):|^data:text\/html/i,withoutControls=(value)=>[...value].filter((char)=>char.charCodeAt(0)>32).join(""),REACT_PROP={class:"className",for:"htmlFor",autocomplete:"autoComplete",autofocus:"autoFocus",tabindex:"tabIndex",readonly:"readOnly",maxlength:"maxLength",minlength:"minLength",colspan:"colSpan",rowspan:"rowSpan",enctype:"encType",novalidate:"noValidate",datetime:"dateTime",srcset:"srcSet",crossorigin:"crossOrigin",accesskey:"accessKey",contenteditable:"contentEditable",spellcheck:"spellCheck",formaction:"formAction",formmethod:"formMethod",inputmode:"inputMode",referrerpolicy:"referrerPolicy"};function safeAttributeValue(name,value){let key=name.toLowerCase();if(key.startsWith("on")||key==="dangerouslysetinnerhtml")return!1;if(URL_ATTRIBUTES.has(key)&&typeof value==="string")return!SCRIPT_URL.test(withoutControls(value));return!0}function safeTag(component,as){if(!SAFE_TAG.test(as))throw Error(`${component}: unsupported HTML tag ${JSON.stringify(as)}`);return as}function nativeAttributes(props){return Object.fromEntries(Object.entries(props).map(([name,value])=>[REACT_PROP[name]??name,value]).filter(([name,value])=>safeAttributeValue(name,value)).flatMap(([name,value])=>{if(name!=="style"||typeof value!=="string")return[[name,value]];let style=styleObjectFromCss(value);return style?[[name,style]]:[]}))}function Html({as="div",children,...props}){return import_react.createElement(safeTag("Html",as),nativeAttributes(props),children)}var registry={...inlineRegistry,Html};var htmlDescriptors=[{id:"Html",category:"ui",source:"velloo",group:"layout",family:"Html",allowUnknownProps:!0,designModeNotes:"Use for a native HTML element. Set as to a semantic tag and pass ordinary HTML or hx-* attributes as props.",props:[{name:"as",type:"string",optional:!0,control:"string",defaultValue:"div"},{name:"className",type:"string",optional:!0,control:"string"},{name:"style",type:"CSSProperties",optional:!0,control:"string"},{name:"children",type:"ReactNode",optional:!0,control:"string"}]}],HTML_MANIFEST=[...NONE_MANIFEST2,...htmlDescriptors],HTML_INTRO=["**This is a server-rendered HTML/htmx app.** Compose semantic HTML with `Html` nodes (`as=\"form\"`, \u2026), styled by the app's own CSS classes or inline `style` \u2014 there is no Tailwind; new classes need CSS authored in the app. Give forms and controls the real `hx-*` attributes: the canvas never fires them, and `emit_code` keeps them in the native HTML it returns for the app's templates.","","A design never contacts the running app: it is styled by copies of the app's stylesheets, which `store_host_files` refreshes from source or from a capture (including built CSS a `screenshot` reports missing). Reference the app's files by their real paths (`src=\"/static/logo.png\"`), not as Velloo assets. Theme tokens are CSS variables (`var(--color-primary)`); `emit_theme` writes the stylesheet that defines them.","","To reproduce a page, capture it from the running app with `start_capture_session` (the user signs in if needed), rebuild it from `get_capture` with the content written into the nodes, and verify with `compare_to_url { captureId }`.","","On a form, a custom `hx-trigger` replaces htmx's default submit trigger \u2014 include `submit` when a submit button must swap a response instead of navigating.",""];function createProvider(){return{id:"html",version:HTML_VERSION,label:"HTML + htmx",componentsDir:componentsDir2,styleEntryPath:entryCssPath2,registry,loadManifest:async()=>HTML_MANIFEST,styleChannel:STYLE_PROP,styleChannels:["style"],themeRoles:["background","foreground","card","muted","border","input"],registryForChannel:()=>registry,mcpIntro:()=>HTML_INTRO,hostStylesheets:!0,codegenFormat:"html",elementComponent:"Html"}}export{createProvider};