@vyuh/react-feature-system
Version:
System feature package for Vyuh React framework
6 lines • 63.5 kB
JavaScript
import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import*as h from'@radix-ui/react-accordion';import {HelpCircle,Menu,CircleUser,Blocks,Settings,Home,Command,TriangleAlert,ChevronDownIcon,ArrowLeft,ArrowRight}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';import {TypeDescriptor,UNKNOWN_SCHEMA_TYPE,FeatureDescriptor,LayoutConfiguration,ActionConfiguration,ObjectReference,useVyuhStore,ConditionConfiguration,useVyuh,executeAction,executeCondition,PoweredByVyuh}from'@vyuh/react-core';import {ContentExtensionBuilder,ContentExtensionDescriptor,ContentBuilder,ContentDescriptor,AsyncContentContainer}from'@vyuh/react-extension-content';import {Slot}from'@radix-ui/react-slot';import {cva}from'class-variance-authority';import*as p from'react';import p__default,{useCallback}from'react';import eo from'embla-carousel-react';import {PortableText}from'@portabletext/react';// @vyuh/react-feature-system - System feature package for Vyuh React framework
var C="vyuh.accordion";function a(...t){return twMerge(clsx(t))}function pt({...t}){return jsx(h.Root,{"data-slot":"accordion",...t})}function mt({className:t,...e}){return jsx(h.Item,{"data-slot":"accordion-item",className:a("vfs:border-b vfs:last:border-b-0",t),...e})}function vt({className:t,children:e,...r}){return jsx(h.Header,{className:"vfs:flex",children:jsxs(h.Trigger,{"data-slot":"accordion-trigger",className:a("vfs:focus-visible:border-neutral-950 vfs:focus-visible:ring-neutral-950/50 vfs:flex vfs:flex-1 vfs:items-start vfs:justify-between vfs:gap-4 vfs:rounded-md vfs:py-4 vfs:text-left vfs:text-sm vfs:font-medium vfs:transition-all vfs:outline-none vfs:focus-visible:ring-[3px] vfs:disabled:pointer-events-none vfs:disabled:opacity-50 vfs:[&[data-state=open]>svg]:rotate-180 vfs:dark:focus-visible:border-neutral-300 vfs:dark:focus-visible:ring-neutral-300/50",t),...r,children:[e,jsx(ChevronDownIcon,{className:"vfs:text-neutral-500 vfs:pointer-events-none vfs:size-4 vfs:shrink-0 vfs:translate-y-0.5 vfs:transition-transform vfs:duration-200 vfs:dark:text-neutral-400"})]})})}function ut({className:t,children:e,...r}){return jsx(h.Content,{"data-slot":"accordion-content",className:"vfs:data-[state=closed]:animate-accordion-up vfs:data-[state=open]:animate-accordion-down vfs:overflow-hidden vfs:text-sm",...r,children:jsx("div",{className:a("vfs:pt-0 vfs:pb-4",t),children:e})})}var D=class D extends LayoutConfiguration{constructor(){super({schemaType:D.schemaName,title:"Default Accordion Layout"});}render(e){return jsx(sr,{content:e})}};D.schemaName=`${C}.layout.default`,D.typeDescriptor=new TypeDescriptor(D.schemaName,D);var ae=D,sr=({content:t})=>{let{plugins:e}=useVyuh(),r=t.items.length>0?"item-0":void 0;return jsxs("div",{className:"vfs:w-full vfs:space-y-4",children:[(t.title||t.description)&&jsxs("div",{className:"vfs:mb-6",children:[t.title&&jsx("h3",{className:"vfs:text-2xl vfs:font-bold vfs:text-black",children:t.title}),t.description&&jsx("p",{className:"vfs:text-muted-foreground vfs:mt-2 vfs:max-w-2xl vfs:text-sm",children:t.description})]}),jsx("div",{className:"vfs:overflow-hidden vfs:rounded-xl vfs:border vfs:border-neutral-200 vfs:bg-gradient-to-br vfs:from-white vfs:to-neutral-50 vfs:p-2 dark:vfs:border-neutral-700 dark:vfs:from-neutral-900 dark:vfs:to-neutral-950",children:jsx(pt,{type:"single",collapsible:true,defaultValue:r,className:"vfs:w-full",children:t.items.map((o,s)=>jsxs(mt,{value:`item-${s}`,className:"vfs:mb-2 vfs:overflow-hidden vfs:rounded-lg vfs:border-0 vfs:bg-white vfs:shadow-sm vfs:transition-all vfs:duration-200 vfs:last:mb-0 vfs:hover:shadow-md vfs:dark:bg-neutral-800",children:[jsx(vt,{className:"vfs:dark:to-neutral-750 vfs:rounded-t-lg vfs:bg-gradient-to-r vfs:from-neutral-50 vfs:to-white vfs:px-6 vfs:py-4 vfs:text-base vfs:font-medium vfs:transition-all vfs:duration-300 vfs:hover:from-blue-50 vfs:hover:to-indigo-50 vfs:hover:no-underline vfs:data-[state=open]:rounded-bl-none vfs:data-[state=open]:rounded-br-none vfs:dark:from-neutral-800 vfs:dark:hover:from-blue-950 vfs:dark:hover:to-indigo-950",children:jsx("span",{className:"vfs:flex vfs:items-center vfs:gap-2",children:o.title})}),jsx(ut,{className:"vfs:border-t vfs:border-neutral-100 vfs:bg-white vfs:px-6 vfs:py-4 vfs:dark:border-neutral-700 vfs:dark:bg-neutral-800",children:jsx("div",{className:"vfs:prose vfs:dark:prose-invert vfs:max-w-none",children:jsx(nr,{item:o})})})]},s))})})]})};function nr({item:t}){let{plugins:e}=useVyuh(),r=Array.isArray(t.content)?t.content[0]:void 0;return r?e.content.render(r):null}var be=class extends ContentBuilder{constructor(){super({schemaType:C,defaultLayout:new ae,defaultLayoutDescriptor:ae.typeDescriptor});}};var Ce=class extends ContentDescriptor{constructor(e){super({schemaType:C,title:"Accordion",layouts:e?.layouts});}};var T="vyuh.card";var fr=cva("vfs:inline-flex vfs:items-center vfs:justify-center vfs:gap-2 vfs:whitespace-nowrap vfs:rounded-md vfs:text-sm vfs:font-medium vfs:transition-all vfs:disabled:pointer-events-none vfs:disabled:opacity-50 [&_svg]:vfs:pointer-events-none [&_svg:not([class*='size-'])]:vfs:size-4 vfs:shrink-0 [&_svg]:vfs:shrink-0 vfs:outline-none vfs:focus-visible:border-ring vfs:focus-visible:ring-ring/50 vfs:focus-visible:ring-[3px] vfs:aria-invalid:ring-destructive/20 vfs:dark:aria-invalid:ring-destructive/40 vfs:aria-invalid:border-destructive",{variants:{variant:{default:"vfs:bg-primary vfs:text-primary-foreground vfs:shadow-xs vfs:hover:bg-primary/90",destructive:"vfs:bg-destructive vfs:text-white vfs:shadow-xs vfs:hover:bg-destructive/90 vfs:focus-visible:ring-destructive/20 vfs:dark:focus-visible:ring-destructive/40 vfs:dark:bg-destructive/60",outline:"vfs:border vfs:bg-background vfs:shadow-xs vfs:hover:bg-accent vfs:hover:text-accent-foreground vfs:dark:bg-input/30 vfs:dark:border-input vfs:dark:hover:bg-input/50",secondary:"vfs:bg-secondary vfs:text-secondary-foreground vfs:shadow-xs vfs:hover:bg-secondary/80",ghost:"vfs:hover:bg-accent vfs:hover:text-accent-foreground vfs:dark:hover:bg-accent/50",link:"vfs:text-primary vfs:underline-offset-4 vfs:hover:underline"},size:{default:"vfs:h-9 vfs:px-4 vfs:py-2 vfs:has-[>svg]:px-3",sm:"vfs:h-8 vfs:rounded-md vfs:gap-1.5 vfs:px-3 vfs:has-[>svg]:px-2.5",lg:"vfs:h-10 vfs:rounded-md vfs:px-6 vfs:has-[>svg]:px-4",icon:"vfs:size-9"}},defaultVariants:{variant:"default",size:"default"}});function P({className:t,variant:e,size:r,asChild:o=false,...s}){return jsx(o?Slot:"button",{"data-slot":"button",className:a(fr({variant:e,size:r,className:t})),...s})}function lt({className:t,...e}){return jsx("div",{"data-slot":"card",className:a("vfs:bg-card vfs:text-card-foreground vfs:flex vfs:flex-col vfs:gap-6 vfs:overflow-hidden vfs:rounded-xl vfs:border vfs:shadow-sm",t),...e})}function ht({className:t,...e}){return jsx("div",{"data-slot":"card-header",className:a("vfs:@container/card-header vfs:grid vfs:auto-rows-min vfs:grid-rows-[auto_auto] vfs:items-start vfs:gap-1.5 vfs:pb-4 vfs:has-[data-slot=card-action]:grid-cols-[1fr_auto]",t),...e})}function yt({className:t,...e}){return jsx("div",{"data-slot":"card-title",className:a("vfs:px-4 vfs:pt-4 vfs:font-semibold vfs:leading-none",t),...e})}function wt({className:t,...e}){return jsx("div",{"data-slot":"card-description",className:a("vfs:text-muted-foreground vfs:px-4 vfs:text-sm",t),...e})}function xt({className:t,...e}){return jsx("div",{"data-slot":"card-content",className:a("vfs:px-6",t),...e})}function bt({className:t,...e}){return jsx("div",{"data-slot":"card-footer",className:a("vfs:[.border-t]:pt-6 vfs:flex vfs:items-center vfs:px-6",t),...e})}var I=class I extends LayoutConfiguration{constructor(){super({schemaType:I.schemaName,title:"Default Card Layout"});}render(e){return jsx(ur,{content:e})}};I.schemaName=`${T}.layout.default`,I.typeDescriptor=new TypeDescriptor(I.schemaName,I);var le=I,ur=({content:t})=>{let{plugins:e}=useVyuh(),r=t.imageUrl;!r&&t.image&&(r=e.content.provider.image(t.image));let o=!!r;return o&&!t.title&&!t.description&&!t.content?.blocks&&!t.secondaryAction&&!t.tertiaryAction?jsx(lt,{className:a("vfs:overflow-hidden vfs:border-neutral-300 vfs:p-0",{"vfs:cursor-pointer":t.action}),onClick:()=>t.action&&executeAction(t.action),children:jsx("img",{src:r,alt:"Card image",className:"vfs:max-h-[400px] vfs:w-full vfs:object-cover"})}):jsxs(lt,{className:a("vfs:border-[6px] vfs:border-neutral-100",{"vfs:cursor-pointer":t.action}),onClick:()=>t.action&&executeAction(t.action),children:[jsxs(ht,{children:[o&&jsx("div",{className:"vfs:h-48 vfs:w-full vfs:overflow-hidden",children:jsx("img",{src:r,alt:t.title||"Card image",className:"vfs:h-full vfs:w-full vfs:object-cover"})}),t.title&&jsx(yt,{children:t.title}),t.description&&jsx(wt,{children:t.description})]}),t.content&&jsx(xt,{children:e.content.render(t.content)}),(t.secondaryAction||t.tertiaryAction)&&jsxs(bt,{className:"vfs:flex vfs:flex-wrap vfs:gap-2",children:[t.secondaryAction&&jsx(P,{onClick:()=>executeAction(t.secondaryAction),variant:"outline",children:t.secondaryAction.label||"Secondary"}),t.tertiaryAction&&jsx(P,{onClick:()=>executeAction(t.tertiaryAction),variant:"link",children:t.tertiaryAction.label||"Tertiary"})]})]})};var Pe=class extends ContentBuilder{constructor(){super({schemaType:T,defaultLayout:new le,defaultLayoutDescriptor:le.typeDescriptor});}};var Ne=class extends ContentDescriptor{constructor(e){super({schemaType:T,title:"Card",layouts:e?.layouts});}};var N="vyuh.conditional";async function Ct(t){if(!t.condition||!t.cases)return null;let e=await executeCondition(t.condition)||t.defaultCase,r=t.cases?.find(o=>o.value===e);return Array.isArray(r?.item)&&r.item.length>0?r.item[0]:null}var S=class S extends LayoutConfiguration{constructor(){super({schemaType:S.schemaName,title:"Default Conditional Content Layout"});}render(e){return jsx(Tr,{content:e})}};S.schemaName=`${N}.layout.default`,S.typeDescriptor=new TypeDescriptor(S.schemaName,S);var ce=S;function Tr({content:t}){let{plugins:e}=useVyuh();return jsx(AsyncContentContainer,{fetchContent:async()=>{let s=await Ct(t);if(!s)throw new Error("No matching content found");return s},renderContent:s=>e.content.render(s),errorTitle:"Failed to load Conditional Content"})}var Re=class extends ContentBuilder{constructor(){super({schemaType:N,defaultLayout:new ce,defaultLayoutDescriptor:ce.typeDescriptor});}};var ke=class extends ContentDescriptor{constructor(e){super({schemaType:N,title:"Conditional Content",layouts:e?.layouts});}};var Z="vyuh.conditionalRoute";async function Pt(t){if(!t.condition||!t.cases)return;let e=await executeCondition(t.condition)||t.defaultCase,r=t.cases?.find(n=>n.value===e),{content:o}=useVyuhStore.getState().plugins,s=r?.item?o.provider.reference(r?.item):void 0;if(s)return o.provider.fetchRoute({routeId:s});throw new Error(`
No matching route found for conditional route: ${t.path}.
Condition evaluated to: ${e}.
${r?"":"No matching case defined."}
`)}var M=class M extends LayoutConfiguration{constructor(){super({schemaType:M.schemaName,title:"Default Conditional Route Layout"});}render(e){return jsx(Sr,{content:e})}};M.schemaName=`${Z}.layout.default`,M.typeDescriptor=new TypeDescriptor(M.schemaName,M);var fe=M;function Sr({content:t}){let{plugins:e}=useVyuh(),r=useCallback(async()=>Pt(t),[t]),o=useCallback(s=>e.content.render(s),[e.content]);return jsx(AsyncContentContainer,{fetchContent:r,renderContent:o,errorTitle:"Failed to load Conditional Route"})}var Ee=class extends ContentBuilder{constructor(){super({schemaType:Z,defaultLayout:new fe,defaultLayoutDescriptor:fe.typeDescriptor});}getLayout(e){let r=super.getLayout(e),o=Array.isArray(e.category?.layout)?e.category?.layout[0]:void 0;return r||o}};var Ae=class extends ContentDescriptor{constructor(e){super({schemaType:Z,title:"Conditional Route",layouts:e?.layouts});}};var _="vyuh.divider";var De=class extends ContentBuilder{constructor(){super({schemaType:_,defaultLayout:new Ie,defaultLayoutDescriptor:Ie.typeDescriptor});}},V=class V extends LayoutConfiguration{constructor(){super({schemaType:V.schemaName,title:"Default Divider Layout"});}render(e){return jsx(Hr,{content:e})}};V.schemaName=`${_}.layout.default`,V.typeDescriptor=new TypeDescriptor(V.schemaName,V);var Ie=V,Hr=({content:t})=>{let e={height:t.thickness??1,marginLeft:t.indent??0,marginRight:t.indent??0,width:"auto"};return jsx("div",{className:"vfs:bg-neutral-300",style:e,role:"separator","aria-orientation":"horizontal"})};var Se=class extends ContentDescriptor{constructor(e){super({schemaType:_,title:"Divider",layouts:e?.layouts});}};var R="vyuh.document.view",Et=(r=>(r.REFERENCE="reference",r.QUERY="query",r))(Et||{}),ee=class t{constructor(e){this.schemaType=e.schemaType,this.title=e.title;}static fromJson(e){let r=Array.isArray(e.query)?e.query[0]:void 0;if(!r)return;let{plugins:o}=useVyuhStore.getState(),s=r?o.content.provider.schemaType(r):void 0,n=s?o.content.getItem(t,s):void 0;if(n)return new n.fromJson(r);throw new Error(`No Query Configuration found for schemaType: ${s}`)}};var L=class L extends LayoutConfiguration{constructor(){super({schemaType:L.schemaName,title:"Default Document View Layout"});}render(e){return jsx(At,{content:e})}};L.schemaName=`${R}.layout.default`,L.typeDescriptor=new TypeDescriptor(L.schemaName,L);var de=L,At=({content:t,itemLayout:e})=>{let{plugins:r}=useVyuh();return jsx(AsyncContentContainer,{fetchContent:async()=>{let n=r.content.provider.schemaType(t);switch(t.loadStrategy){case "reference":let m=t.reference?r.content.provider.reference(t.reference):void 0;return m?r.content.provider.fetchById(m):Promise.reject(new Error(`No valid Document ID set for ${n}`));case "query":let l=ee.fromJson(t);if(!l)return Promise.reject(new Error(`No Document query configuration found for document type: ${n}`));let f=l.buildQuery();return f?r.content.provider.fetchSingle(f):Promise.reject(new Error(`Could not build a Document query for document type: ${n}`));default:return Promise.reject(new Error(`Unsupported load strategy: ${t.loadStrategy}`))}},renderContent:n=>{let{plugins:c}=useVyuhStore.getState();return n?Array.isArray(n)?jsx("div",{className:"vfs:p-4",children:jsx("div",{className:"vfs:space-y-4",children:n.map((m,l)=>jsx("div",{children:c.content.render(m,e)},l))})}):c.content.render(n,e):jsx("div",{className:"vfs:p-4",children:"No document found"})},errorTitle:"No document found"})};var Me=class extends ContentBuilder{constructor(){super({schemaType:R,defaultLayout:new de,defaultLayoutDescriptor:de.typeDescriptor});}init(e){super.init(e);let o=e.flatMap(n=>n.queries||[]),{content:s}=useVyuhStore.getState().plugins;for(let n of o)s.registerItem(ee,n);}};var _e=class extends ContentDescriptor{constructor(e){super({schemaType:R,title:"Document View"}),this.queries=e?.queries;}};var Ve="vyuh.document";var O=class O extends LayoutConfiguration{constructor(e){super({schemaType:O.schemaName,title:"Default Document Layout"}),this.mode=e?.mode||"single";}render(e){return jsx(Xr,{content:e,layout:this})}};O.schemaName=`${Ve}.layout.default`,O.typeDescriptor=new TypeDescriptor(O.schemaName,O);var pe=O,Xr=({content:t,layout:e})=>{let{plugins:r}=useVyuh();return jsxs("div",{className:"vfs:flex vfs:flex-col vfs:gap-4 vfs:w-full",children:[(t.title||t.description)&&jsxs("div",{className:"vfs:flex vfs:flex-col vfs:gap-2",children:[t.title&&jsx("h2",{className:"vfs:text-xl vfs:font-medium",children:t.title}),t.description&&jsx("p",{children:t.description})]}),t.items&&t.items.length>0&&jsx("div",{className:"vfs:flex-1",children:e.mode==="single"?r.content.render(t.items[0]):jsx("div",{className:"vfs:flex vfs:flex-col vfs:gap-4 vfs:overflow-auto",children:t.items.map((o,s)=>jsx("div",{className:"vfs:w-full",children:r.content.render(o)},s))})})]})};var Le=class extends ContentBuilder{constructor(){super({schemaType:Ve,defaultLayout:new pe,defaultLayoutDescriptor:pe.typeDescriptor});}};var u="vyuh.group";var It=p.createContext(null);function Oe(){let t=p.useContext(It);if(!t)throw new Error("useCarousel must be used within a <Carousel />");return t}function St({orientation:t="horizontal",opts:e,setApi:r,plugins:o,className:s,children:n,...c}){let[m,l]=eo({...e,axis:t==="horizontal"?"x":"y"},o),[f,i]=p.useState(false),[Wt,Jt]=p.useState(false),ie=p.useCallback(b=>{b&&(i(b.canScrollPrev()),Jt(b.canScrollNext()));},[]),nt=p.useCallback(()=>{l?.scrollPrev();},[l]),it=p.useCallback(()=>{l?.scrollNext();},[l]),Kt=p.useCallback(b=>{b.key==="ArrowLeft"?(b.preventDefault(),nt()):b.key==="ArrowRight"&&(b.preventDefault(),it());},[nt,it]);return p.useEffect(()=>{!l||!r||r(l);},[l,r]),p.useEffect(()=>{if(l)return ie(l),l.on("reInit",ie),l.on("select",ie),()=>{l?.off("select",ie);}},[l,ie]),jsx(It.Provider,{value:{carouselRef:m,api:l,opts:e,orientation:t||(e?.axis==="y"?"vertical":"horizontal"),scrollPrev:nt,scrollNext:it,canScrollPrev:f,canScrollNext:Wt},children:jsx("div",{onKeyDownCapture:Kt,className:a("vfs:relative",s),role:"region","aria-roledescription":"carousel","data-slot":"carousel",...c,children:n})})}function Mt({className:t,...e}){let{carouselRef:r,orientation:o}=Oe();return jsx("div",{ref:r,className:"vfs:overflow-hidden","data-slot":"carousel-content",children:jsx("div",{className:a("vfs:flex",o==="horizontal"?"vfs:-ml-4":"vfs:-mt-4 vfs:flex-col",t),...e})})}function _t({className:t,...e}){let{orientation:r}=Oe();return jsx("div",{role:"group","aria-roledescription":"slide","data-slot":"carousel-item",className:a("vfs:min-w-0 vfs:shrink-0 vfs:grow-0 vfs:basis-full",r==="horizontal"?"vfs:pl-4":"vfs:pt-4",t),...e})}function Vt({className:t,variant:e="outline",size:r="icon",...o}){let{orientation:s,scrollPrev:n,canScrollPrev:c}=Oe();return jsxs(P,{"data-slot":"carousel-previous",variant:e,size:r,className:a("vfs:absolute vfs:size-8 vfs:rounded-full",s==="horizontal"?"vfs:-left-12 vfs:top-1/2 vfs:-translate-y-1/2":"vfs:-top-12 vfs:left-1/2 vfs:-translate-x-1/2 vfs:rotate-90",t),disabled:!c,onClick:n,...o,children:[jsx(ArrowLeft,{}),jsx("span",{className:"vfs:sr-only",children:"Previous slide"})]})}function Lt({className:t,variant:e="outline",size:r="icon",...o}){let{orientation:s,scrollNext:n,canScrollNext:c}=Oe();return jsxs(P,{"data-slot":"carousel-next",variant:e,size:r,className:a("vfs:absolute vfs:size-8 vfs:rounded-full",s==="horizontal"?"vfs:-right-12 vfs:top-1/2 vfs:-translate-y-1/2":"vfs:-bottom-12 vfs:left-1/2 vfs:-translate-x-1/2 vfs:rotate-90",t),disabled:!c,onClick:n,...o,children:[jsx(ArrowRight,{}),jsx("span",{className:"vfs:sr-only",children:"Next slide"})]})}var H=class H extends LayoutConfiguration{constructor(){super({schemaType:H.schemaName,title:"Carousel Group Layout"});}render(e){return jsx(io,{content:e})}};H.schemaName=`${u}.layout.carousel`,H.typeDescriptor=new TypeDescriptor(H.schemaName,H);var He=H;function io({content:t}){let{plugins:e}=useVyuh();return jsxs("div",{className:"vfs:w-full vfs:space-y-4",children:[(t.title||t.description)&&jsxs("div",{children:[t.title&&jsx("h3",{className:"vfs:text-xl vfs:font-semibold",children:t.title}),t.description&&jsx("p",{className:"vfs:text-muted-foreground vfs:text-sm",children:t.description})]}),jsxs(St,{opts:{align:"start",loop:true,dragFree:true},className:"vfs:w-full",children:[jsx(Mt,{children:t.items.map((r,o)=>jsx(_t,{className:"vfs:md:basis-1/2 vfs:lg:basis-1/3",children:jsx("div",{className:"vfs:p-1",children:e.content.render(r)})},o))}),jsx(Vt,{}),jsx(Lt,{})]})]})}var Y=class Y extends LayoutConfiguration{constructor(e){super({schemaType:Y.schemaName,title:"Grid Group Layout"}),this.columns=e?.columns??2,this.aspectRatio=e?.aspectRatio??1,this.scrollable=e?.scrollable??false;}render(e){return jsx(fo,{content:e,columns:this.columns})}};Y.schemaName=`${u}.layout.grid`,Y.typeDescriptor=new TypeDescriptor(Y.schemaName,Y);var Ye=Y,fo=({content:t,columns:e})=>{let{plugins:r}=useVyuh();return jsxs("div",{className:"vfs:w-full vfs:space-y-4",children:[(t.title||t.description)&&jsxs("div",{className:"vfs:mb-4",children:[t.title&&jsx("h3",{className:"vfs:text-xl vfs:font-semibold",children:t.title}),t.description&&jsx("p",{className:"vfs:text-muted-foreground vfs:text-sm",children:t.description})]}),jsx("div",{className:a("vfs:grid vfs:grid-cols-1 vfs:gap-4",{"vfs:sm:grid-cols-2":e===2},{"vfs:sm:grid-cols-3":e===3},{"vfs:sm:grid-cols-4":e===4}),children:t.items.map((o,s)=>jsx("div",{className:"vfs:p-1",children:r.content.render(o)},s))})]})};var B=class B extends LayoutConfiguration{constructor(){super({schemaType:B.schemaName,title:"Default Group Layout"});}render(e){return jsx(uo,{content:e})}};B.schemaName=`${u}.layout.default`,B.typeDescriptor=new TypeDescriptor(B.schemaName,B);var ue=B,uo=({content:t})=>{let{plugins:e}=useVyuh();return jsxs("div",{className:"vfs:w-full vfs:space-y-4",children:[(t.title||t.description)&&jsxs("div",{className:"vfs:mb-4",children:[t.title&&jsx("h3",{className:"vfs:text-xl vfs:font-semibold",children:t.title}),t.description&&jsx("p",{className:"vfs:text-muted-foreground vfs:text-sm",children:t.description})]}),jsx("div",{className:"vfs:grid vfs:snap-x vfs:grid-flow-col vfs:grid-cols-none vfs:gap-4 vfs:overflow-x-auto vfs:pb-4",children:t.items.map((r,o)=>jsx("div",{className:"vfs:w-80 vfs:snap-start",children:e.content.render(r)},o))})]})};var Be=class extends ContentBuilder{constructor(){super({schemaType:u,defaultLayout:new ue,defaultLayoutDescriptor:ue.typeDescriptor});}};var Ue=class extends ContentDescriptor{constructor(e){super({schemaType:u,title:"Group",layouts:e?.layouts});}};var d=class t{constructor(){this._defaultTypes={image:({value:e})=>{let{plugins:r}=useVyuh(),o=r.content.provider.image(e);return jsx("img",{src:o,alt:e.alt||"",className:"vfs:my-4 vfs:max-w-full vfs:rounded-md"})}};this.renderContentItem=({value:e})=>{let{plugins:r}=useVyuh();return r.content.render(e)};this._defaultMarks={link:({children:e,value:r})=>{let o=r.href.startsWith("/")?void 0:"noreferrer noopener";return jsx("a",{href:r.href,rel:o,className:"vfs:text-blue-500 vfs:hover:underline",children:e})},code:({children:e})=>jsx("code",{className:"vfs:rounded vfs:bg-gray-100 vfs:p-1 vfs:font-mono vfs:text-sm",children:e})};this._defaultBlockStyles={h1:({children:e})=>jsx("h1",{className:"vfs:mb-4 vfs:mt-6 vfs:text-3xl vfs:font-bold",children:e}),h2:({children:e})=>jsx("h2",{className:"vfs:mb-3 vfs:mt-5 vfs:text-2xl vfs:font-bold",children:e}),h3:({children:e})=>jsx("h3",{className:"vfs:mb-2 vfs:mt-4 vfs:text-xl vfs:font-bold",children:e}),h4:({children:e})=>jsx("h4",{className:"vfs:mb-1 vfs:mt-3 vfs:text-lg vfs:font-bold",children:e}),normal:({children:e})=>jsx("div",{className:"vfs:mb-4",children:e}),blockquote:({children:e})=>jsx("blockquote",{className:"vfs:my-4 vfs:border-l-4 vfs:border-gray-300 vfs:pl-4 vfs:italic",children:e})};this._defaultLists={bullet:({children:e})=>jsx("ul",{className:"vfs:mb-4 vfs:list-disc vfs:pl-5",children:e}),number:({children:e})=>jsx("ol",{className:"vfs:mb-4 vfs:list-decimal vfs:pl-5",children:e})};this._defaultListItems={bullet:({children:e})=>jsx("li",{className:"vfs:mb-1",children:e}),number:({children:e})=>jsx("li",{className:"vfs:mb-1",children:e})};this._types={};this._marks={};this._blockStyles={};this._lists={};this._listItems={};this._unknownMark=({value:e})=>{let{components:r}=useVyuh();return r.renderError({title:"Unknown Mark",error:new Error(`Missing MarkDescriptor for schemaType: ${e._type}`)})};this._unknownType=({value:e})=>{let{components:r}=useVyuh();return r.renderError({title:"Unknown Type",error:new Error(`Missing BlockTypeDescriptor for schemaType: ${e._type}`)})};this._unknownList=({value:e})=>{let{components:r}=useVyuh();return r.renderError({title:"Unknown List",error:new Error(`Missing ListDescriptor for schemaType: ${e._type}`)})};this._unknownListItem=({value:e})=>{let{components:r}=useVyuh();return r.renderError({title:"Unknown List Item",error:new Error(`Missing ListItemDescriptor for schemaType: ${e._type}`)})};}static get shared(){return this._instance||(this._instance=new t),this._instance}registerType(e,r){this._types[e]=r;}registerMark(e,r){this._marks[e]=r;}registerBlockStyle(e,r){this._blockStyles[e]=r;}registerList(e,r){this._lists[e]=r;}registerListItem(e,r){this._listItems[e]=r;}get components(){return {types:{...this._defaultTypes,...this._types},marks:{...this._defaultMarks,...this._marks},block:{...this._defaultBlockStyles,...this._blockStyles},list:{...this._defaultLists,...this._lists},listItem:{...this._defaultListItems,...this._listItems},unknownMark:this._unknownMark,unknownType:this._unknownType,unknownList:this._unknownList,unknownListItem:this._unknownListItem}}reset(){this._types={},this._marks={},this._blockStyles={},this._lists={},this._listItems={};}};var U=class U extends LayoutConfiguration{constructor(){super({schemaType:U.schemaName,title:"Default Portable Text Layout"});}render(e){return jsx(bo,{portableText:e})}};U.schemaName="vyuh.portableText.layout.default",U.typeDescriptor=new TypeDescriptor(U.schemaName,U);var ge=U;function bo({portableText:t}){if(!t.blocks||t.blocks.length===0)return null;let e=d.shared.components;return jsx(PortableText,{value:t.blocks,components:e,onMissingComponent:false})}var ze="vyuh.portableText";var $e=class extends ContentBuilder{constructor(){super({schemaType:ze,defaultLayout:new ge,defaultLayoutDescriptor:ge.typeDescriptor});}init(e){super.init(e);let r=useVyuhStore.getState().plugins.telemetry,o=e;d.shared.reset();let s={},n={},c={},m={},l={};o.forEach(f=>{f.blockTypes?.forEach(i=>{s[i.type]&&r?.log(`Duplicate block type component for type: ${i.type}. The later definition will override the earlier one.`,"warning"),s[i.type]=i.component;}),f.marks?.forEach(i=>{n[i.type]&&r?.log(`Duplicate mark component for type: ${i.type}. The later definition will override the earlier one.`,"warning"),n[i.type]=i.component;}),f.blockStyles?.forEach(i=>{c[i.style]&&r?.log(`Duplicate block style component for style: ${i.style}. The later definition will override the earlier one.`,"warning"),c[i.style]=i.component;}),f.lists?.forEach(i=>{m[i.type]&&r?.log(`Duplicate list component for type: ${i.type}. The later definition will override the earlier one.`,"warning"),m[i.type]=i.component;}),f.listItems?.forEach(i=>{l[i.type]&&r?.log(`Duplicate list item component for type: ${i.type}. The later definition will override the earlier one.`,"warning"),l[i.type]=i.component;});}),Object.entries(s).forEach(([f,i])=>{d.shared.registerType(f,i);}),Object.entries(n).forEach(([f,i])=>{d.shared.registerMark(f,i);}),Object.entries(c).forEach(([f,i])=>{d.shared.registerBlockStyle(f,i);}),Object.entries(m).forEach(([f,i])=>{d.shared.registerList(f,i);}),Object.entries(l).forEach(([f,i])=>{d.shared.registerListItem(f,i);});}};var Ge=class extends ContentDescriptor{constructor(e){super({schemaType:ze,title:"Portable Text",layouts:e?.layouts}),this.blockTypes=e?.blockTypes,this.marks=e?.marks,this.blockStyles=e?.blockStyles,this.lists=e?.lists,this.listItems=e?.listItems;}};var Ut={home:jsx(Home,{}),settings:jsx(Settings,{}),category:jsx(Blocks,{}),account:jsx(CircleUser,{}),menu:jsx(Menu,{}),fallback:jsx(HelpCircle,{})},Fe=({title:t,actions:e,children:r})=>jsxs("div",{className:"vfs:container vfs:mx-auto vfs:p-4",children:[(t||e?.length)&&jsxs("h1",{className:"vfs:mb-16 vfs:flex vfs:items-center vfs:justify-between vfs:border-b vfs:border-neutral-200 vfs:py-2",children:[t&&jsx("span",{className:"vfs:inline-block vfs:bg-gradient-to-r vfs:from-purple-600 vfs:to-indigo-500 vfs:bg-clip-text vfs:text-xl vfs:font-bold vfs:text-transparent md:vfs:text-3xl",children:t}),e?.length&&jsx("div",{className:"vfs:flex vfs:space-x-2",children:e.map((o,s)=>jsx(P,{disabled:!o.action,variant:"outline",size:"icon",onClick:()=>{executeAction(o.action);},className:"vfs:cursor-pointer",children:Ut[o.icon]||Ut.fallback},s))})]}),jsx("main",{children:r}),jsx("div",{className:"vfs:flex vfs:justify-center",children:jsx(PoweredByVyuh,{className:"vfs:bg-neutral-200"})})]});var E="vyuh.route";var z=class z extends LayoutConfiguration{constructor(e){super({schemaType:z.schemaName,title:"Default Route Layout"}),this.gap=e?.gap??"small";}render(e){return jsx(Oo,{route:e,layout:this})}};z.schemaName=`${E}.layout.default`,z.typeDescriptor=new TypeDescriptor(z.schemaName,z);var ye=z,Lo={none:"vfs:gap-0",small:"vfs:gap-4",medium:"vfs:gap-8",large:"vfs:gap-16"};function Oo({route:t,layout:e}){let{plugins:r}=useVyuh(),o=Lo[e.gap||"medium"];return jsx(Fe,{title:t.title,children:t.regions.map(s=>jsx("div",{className:"vfs:mb-8",children:jsx("div",{className:`vfs:flex vfs:flex-col ${o}`,children:s.items.map((n,c)=>{let m=r.content.provider.schemaType(n);return jsx("div",{children:r.content.render(n)},`${m}-${c}`)})})},s.identifier))})}var qe=class extends ContentBuilder{constructor(){super({schemaType:E,defaultLayout:new ye,defaultLayoutDescriptor:ye.typeDescriptor});}getLayout(e){let r=super.getLayout(e),o=Array.isArray(e.category?.layout)?e.category?.layout[0]:void 0;return r||o}};var je=class extends ContentDescriptor{constructor(e){super({schemaType:E,title:"Route",layouts:e?.layouts}),this.lifecycleHandlers=e?.lifecycleHandlers;}};var $=class $ extends LayoutConfiguration{constructor(e){super({schemaType:$.schemaName,title:"Single Item Layout"}),this.showAppBar=e?.showAppBar??false,this.actions=e?.actions;}render(e){return jsx($o,{route:e,showAppBar:this.showAppBar,actions:this.actions})}};$.schemaName=`${E}.layout.single`,$.typeDescriptor=new TypeDescriptor($.schemaName,$);var Qe=$;function $o({route:t,showAppBar:e,actions:r}){let{plugins:o}=useVyuh(),s=t.regions.find(m=>m.identifier==="body"),n=s?.items&&s.items.length>0?s.items[0]:void 0,c=n?o.content.render(n):null;return jsx(Fe,{title:t.title,actions:r,children:c})}var G=class G extends LayoutConfiguration{constructor(){super({schemaType:G.schemaName,title:"Default Unknown Layout"});}render(e){return jsxs("div",{className:"vfs:bg-red-100 vfs:p-3 vfs:rounded vfs:border vfs:border-red-300 vfs:text-red-800 vfs:my-2",children:[jsxs("div",{className:"vfs:flex vfs:items-center vfs:mb-2",children:[jsx(TriangleAlert,{className:"vfs:mr-2"}),jsx("h3",{className:"vfs:m-0 vfs:text-base vfs:font-semibold",children:"Missing Content Type"})]}),jsx("div",{className:"vfs:font-bold vfs:font-mono vfs:mb-1",children:e.missingSchemaType}),jsx("div",{className:"vfs:text-sm",children:e.description})]})}};G.schemaName=`${UNKNOWN_SCHEMA_TYPE}.layout.default`,G.typeDescriptor=new TypeDescriptor(G.schemaName,G);var Je=G,Ke=class extends ContentBuilder{constructor(){super({schemaType:UNKNOWN_SCHEMA_TYPE,defaultLayout:new Je,defaultLayoutDescriptor:Je.typeDescriptor});}};var qt=(r=>(r.url="url",r.file="file",r))(qt||{}),A="vyuh.videoPlayer";var F=class F extends LayoutConfiguration{constructor(){super({schemaType:F.schemaName,title:"Default Video Player Layout"});}render(e){return jsx(Xo,{content:e})}};F.schemaName=`${A}.layout.default`,F.typeDescriptor=new TypeDescriptor(F.schemaName,F);var we=F,Xo=({content:t})=>{let{plugins:e,components:r}=useVyuh();return jsx(AsyncContentContainer,{fetchContent:async()=>{let n;if(t.linkType==="file"&&t.file?n=e.content?.provider.fileUrl(t.file):t.linkType==="url"&&t.url&&(n=t.url),!n)throw new Error("Unable to determine video URL");return n},renderContent:n=>n&&!Array.isArray(n)&&jsxs("div",{className:"vfs:w-full",children:[t.title&&jsx("div",{className:"vfs:mb-2 vfs:text-lg vfs:font-medium",children:t.title}),jsx("div",{className:"vfs:relative vfs:overflow-hidden vfs:rounded-lg",children:jsx(Zo,{url:n,loop:t.loop,muted:t.muted,autoplay:t.autoplay})})]}),errorTitle:"Failed to load video"})},Zo=({url:t,loop:e,muted:r,autoplay:o})=>{let s=p__default.useRef(null);return p__default.useEffect(()=>{s.current&&(r&&(s.current.muted=true),o&&(s.current.autoplay=true,s.current.play().catch(()=>{console.warn("Autoplay was prevented by the browser");})));},[r,o]),jsx("video",{ref:s,className:"vfs:aspect-video vfs:w-full vfs:object-cover",src:t,controls:true,loop:e,muted:r,playsInline:true})};var Xe=class extends ContentBuilder{constructor(){super({schemaType:A,defaultLayout:new we,defaultLayoutDescriptor:we.typeDescriptor});}};var Ze=class extends ContentDescriptor{constructor(e){super({schemaType:A,title:"Video Player",layouts:e?.layouts});}};var q=class q extends ActionConfiguration{constructor(e){super({schemaType:q.schemaType,title:"Navigate",isAwaited:e?.isAwaited}),this.url=e?.url,this.route=e?.route?new ObjectReference(e?.route):void 0,this.linkType=e?.linkType||(e?.route?"route":"url"),this.navigationType=e?.navigationType??"push";}async execute(){let{plugins:e,showLoader:r,hideLoader:o}=useVyuhStore.getState(),s;if(this.linkType==="route"&&this.route){r();try{let c=await e.content.provider.fetchRoute({routeId:this.route.ref});if(!c){e.telemetry?.log(`Route not found: ${this.route.ref}`,"warning");return}s=c.path;}finally{o();}}else s=this.url;if(!s){e.telemetry?.log("No URL or route provided for navigation","warning");return}this.navigationType==="replace"?e.navigation.replace(s):e.navigation.push(s);}};q.schemaType="vyuh.action.navigation",q.typeDescriptor=new TypeDescriptor(q.schemaType,q);var et=q;var fs=(o=>(o.inAppWebView="inAppWebView",o.externalApplication="externalApplication",o.platformDefault="platformDefault",o))(fs||{}),j=class j extends ActionConfiguration{constructor(e){super({schemaType:j.schemaType,title:"Open URL",isAwaited:e?.isAwaited}),this.url=e?.url,this.mode=e?.mode??"platformDefault";}async execute(){let{plugins:e}=useVyuhStore.getState();if(!this.url){e.telemetry?.log("No URL provided to open","warning");return}try{switch(new URL(this.url),this.mode){case "inAppWebView":window.location.href=this.url;break;default:window.open(this.url,"_blank","noopener,noreferrer");break}}catch{e.telemetry?.log(`Invalid URL: ${this.url}`,"error");}}};j.schemaType="vyuh.action.openUrl",j.typeDescriptor=new TypeDescriptor(j.schemaType,j);var tt=j;var Q=class Q extends ConditionConfiguration{constructor(e){super({schemaType:Q.schemaType,title:"Boolean Condition"}),this.value=e?.value??false,this.evaluationDelayInSeconds=e?.evaluationDelayInSeconds;}async execute(e){return this.evaluationDelayInSeconds&&this.evaluationDelayInSeconds>0&&await new Promise(r=>setTimeout(r,this.evaluationDelayInSeconds*1e3)),`${this.value}`}};Q.schemaType="vyuh.condition.boolean",Q.typeDescriptor=new TypeDescriptor(Q.schemaType,Q);var rt=Q;var W="vyuh.apiContent",ne=class t{constructor(e){this.schemaType=e.schemaType,this.title=e.title;}static fromJson(e){let r=Array.isArray(e.configuration)?e.configuration[0]:void 0;if(!r)return;let{plugins:o}=useVyuhStore.getState(),s=r?o.content.provider.schemaType(r):void 0,n=s?o.content.getItem(t,s):void 0;if(n)return new n.fromJson(r);throw new Error(`No API Configuration found for schemaType: ${s}`)}},ot=class extends ContentDescriptor{constructor(e){super({schemaType:W,title:"API Content",layouts:e?.layouts}),this.configurations=e?.configurations;}};var J=class J extends LayoutConfiguration{constructor(){super({schemaType:J.schemaType,title:"Default API Content Layout"});}render(e,r){let o=ne.fromJson(e);return jsx(ys,{content:e,config:o,children:r})}};J.schemaType=`${W}.layout.default`,J.typeDescriptor=new TypeDescriptor(J.schemaType,J);var xe=J;function ys({content:t,children:e,config:r}){return jsxs("div",{className:"vfs:api-content",children:[jsx(AsyncContentContainer,{fetchContent:async()=>r?.invoke(),renderContent:n=>n?r?.build(n):null,errorTitle:`API Error ${t.configuration?.title?`: ${t.configuration.title}`:""}`}),e]})}var st=class extends ContentBuilder{constructor(){super({schemaType:W,defaultLayout:new xe,defaultLayoutDescriptor:xe.typeDescriptor});}init(e){super.init(e);let o=e.flatMap(n=>n.configurations||[]),{content:s}=useVyuhStore.getState().plugins;for(let n of o)s.registerItem(ne,n);}};var pf=new FeatureDescriptor({name:"system",title:"System",description:"Core building blocks of the Vyuh React framework",icon:jsx(Command,{}),extensions:[new ContentExtensionDescriptor({contents:[new je({layouts:[Qe.typeDescriptor]}),new Ae,new ke,new Ne,new Ue({layouts:[He.typeDescriptor,Ye.typeDescriptor]}),new Ce,new _e,new Ge({blockTypes:[{type:T,component:d.shared.renderContentItem},{type:u,component:d.shared.renderContentItem},{type:_,component:d.shared.renderContentItem},{type:N,component:d.shared.renderContentItem},{type:W,component:d.shared.renderContentItem},{type:A,component:d.shared.renderContentItem},{type:C,component:d.shared.renderContentItem},{type:R,component:d.shared.renderContentItem}]}),new Se,new Ze,new ot],contentBuilders:[new qe,new Ee,new Re,new Ke,new $e,new Pe,new Be,new De,new Xe,new st,new be,new Le,new Me],actions:[et.typeDescriptor,tt.typeDescriptor],conditions:[rt.typeDescriptor]})],extensionBuilders:[new ContentExtensionBuilder],init:async()=>{console.log("System feature initialized with Tailwind CSS 4.0");}});function dt(t,{insertAt:e}={}){if(typeof document>"u")return;let r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",e==="top"&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=t:o.appendChild(document.createTextNode(t));}dt(`/*! tailwindcss v4.1.6 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--vfs-font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--vfs-font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--vfs-color-red-100:oklch(93.6% .032 17.717);--vfs-color-red-300:oklch(80.8% .114 19.571);--vfs-color-red-800:oklch(44.4% .177 26.899);--vfs-color-blue-50:oklch(97% .014 254.604);--vfs-color-blue-500:oklch(62.3% .214 259.815);--vfs-color-blue-950:oklch(28.2% .091 267.935);--vfs-color-indigo-50:oklch(96.2% .018 272.314);--vfs-color-indigo-500:oklch(58.5% .233 277.117);--vfs-color-indigo-950:oklch(25.7% .09 281.288);--vfs-color-purple-600:oklch(55.8% .288 302.321);--vfs-color-gray-100:oklch(96.7% .003 264.542);--vfs-color-gray-300:oklch(87.2% .01 258.338);--vfs-color-neutral-50:oklch(98.5% 0 0);--vfs-color-neutral-100:oklch(97% 0 0);--vfs-color-neutral-200:oklch(92.2% 0 0);--vfs-color-neutral-300:oklch(87% 0 0);--vfs-color-neutral-400:oklch(70.8% 0 0);--vfs-color-neutral-500:oklch(55.6% 0 0);--vfs-color-neutral-700:oklch(37.1% 0 0);--vfs-color-neutral-800:oklch(26.9% 0 0);--vfs-color-neutral-950:oklch(14.5% 0 0);--vfs-color-black:#000;--vfs-color-white:#fff;--vfs-spacing:.25rem;--vfs-container-2xl:42rem;--vfs-text-sm:.875rem;--vfs-text-sm--line-height:calc(1.25/.875);--vfs-text-base:1rem;--vfs-text-base--line-height: 1.5 ;--vfs-text-lg:1.125rem;--vfs-text-lg--line-height:calc(1.75/1.125);--vfs-text-xl:1.25rem;--vfs-text-xl--line-height:calc(1.75/1.25);--vfs-text-2xl:1.5rem;--vfs-text-2xl--line-height:calc(2/1.5);--vfs-text-3xl:1.875rem;--vfs-text-3xl--line-height: 1.2 ;--vfs-font-weight-medium:500;--vfs-font-weight-semibold:600;--vfs-font-weight-bold:700;--vfs-radius-md:.375rem;--vfs-radius-lg:.5rem;--vfs-radius-xl:.75rem;--vfs-aspect-video:16/9;--vfs-default-transition-duration:.15s;--vfs-default-transition-timing-function:cubic-bezier(.4,0,.2,1);--vfs-default-font-family:var(--vfs-font-sans);--vfs-default-mono-font-family:var(--vfs-font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--vfs-default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--vfs-default-font-feature-settings,normal);font-variation-settings:var(--vfs-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--vfs-default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--vfs-default-mono-font-feature-settings,normal);font-variation-settings:var(--vfs-default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.vfs\\:\\@container\\/card-header{container:card-header/inline-size}.vfs\\:pointer-events-none{pointer-events:none}.vfs\\:sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.vfs\\:absolute{position:absolute}.vfs\\:relative{position:relative}.vfs\\:-top-12{top:calc(var(--vfs-spacing)*-12)}.vfs\\:top-1\\/2{top:50%}.vfs\\:-right-12{right:calc(var(--vfs-spacing)*-12)}.vfs\\:-bottom-12{bottom:calc(var(--vfs-spacing)*-12)}.vfs\\:-left-12{left:calc(var(--vfs-spacing)*-12)}.vfs\\:left-1\\/2{left:50%}.vfs\\:col-start-2{grid-column-start:2}.vfs\\:row-span-2{grid-row:span 2/span 2}.vfs\\:row-start-1{grid-row-start:1}.vfs\\:container{width:100%}@media (min-width:40rem){.vfs\\:container{max-width:40rem}}@media (min-width:48rem){.vfs\\:container{max-width:48rem}}@media (min-width:64rem){.vfs\\:container{max-width:64rem}}@media (min-width:80rem){.vfs\\:container{max-width:80rem}}@media (min-width:96rem){.vfs\\:container{max-width:96rem}}.vfs\\:m-0{margin:calc(var(--vfs-spacing)*0)}.vfs\\:mx-auto{margin-inline:auto}.vfs\\:my-2{margin-block:calc(var(--vfs-spacing)*2)}.vfs\\:my-4{margin-block:calc(var(--vfs-spacing)*4)}.vfs\\:-mt-4{margin-top:calc(var(--vfs-spacing)*-4)}.vfs\\:mt-2{margin-top:calc(var(--vfs-spacing)*2)}.vfs\\:mt-3{margin-top:calc(var(--vfs-spacing)*3)}.vfs\\:mt-4{margin-top:calc(var(--vfs-spacing)*4)}.vfs\\:mt-5{margin-top:calc(var(--vfs-spacing)*5)}.vfs\\:mt-6{margin-top:calc(var(--vfs-spacing)*6)}.vfs\\:mr-2{margin-right:calc(var(--vfs-spacing)*2)}.vfs\\:mb-1{margin-bottom:calc(var(--vfs-spacing)*1)}.vfs\\:mb-2{margin-bottom:calc(var(--vfs-spacing)*2)}.vfs\\:mb-3{margin-bottom:calc(var(--vfs-spacing)*3)}.vfs\\:mb-4{margin-bottom:calc(var(--vfs-spacing)*4)}.vfs\\:mb-6{margin-bottom:calc(var(--vfs-spacing)*6)}.vfs\\:mb-8{margin-bottom:calc(var(--vfs-spacing)*8)}.vfs\\:mb-16{margin-bottom:calc(var(--vfs-spacing)*16)}.vfs\\:-ml-4{margin-left:calc(var(--vfs-spacing)*-4)}.vfs\\:flex{display:flex}.vfs\\:grid{display:grid}.vfs\\:inline-block{display:inline-block}.vfs\\:inline-flex{display:inline-flex}.vfs\\:aspect-video{aspect-ratio:var(--vfs-aspect-video)}.vfs\\:size-4{width:calc(var(--vfs-spacing)*4);height:calc(var(--vfs-spacing)*4)}.vfs\\:size-8{width:calc(var(--vfs-spacing)*8);height:calc(var(--vfs-spacing)*8)}.vfs\\:size-9{width:calc(var(--vfs-spacing)*9);height:calc(var(--vfs-spacing)*9)}.vfs\\:h-8{height:calc(var(--vfs-spacing)*8)}.vfs\\:h-9{height:calc(var(--vfs-spacing)*9)}.vfs\\:h-10{height:calc(var(--vfs-spacing)*10)}.vfs\\:h-48{height:calc(var(--vfs-spacing)*48)}.vfs\\:h-full{height:100%}.vfs\\:max-h-\\[400px\\]{max-height:400px}.vfs\\:w-80{width:calc(var(--vfs-spacing)*80)}.vfs\\:w-full{width:100%}.vfs\\:max-w-2xl{max-width:var(--vfs-container-2xl)}.vfs\\:max-w-full{max-width:100%}.vfs\\:max-w-none{max-width:none}.vfs\\:min-w-0{min-width:calc(var(--vfs-spacing)*0)}.vfs\\:flex-1{flex:1}.vfs\\:shrink-0{flex-shrink:0}.vfs\\:grow-0{flex-grow:0}.vfs\\:basis-full{flex-basis:100%}.vfs\\:-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.vfs\\:-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.vfs\\:translate-y-0\\.5{--tw-translate-y:calc(var(--vfs-spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.vfs\\:rotate-90{rotate:90deg}.vfs\\:cursor-pointer{cursor:pointer}.vfs\\:snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.vfs\\:snap-start{scroll-snap-align:start}.vfs\\:list-decimal{list-style-type:decimal}.vfs\\:list-disc{list-style-type:disc}.vfs\\:grid-flow-col{grid-auto-flow:column}.vfs\\:auto-rows-min{grid-auto-rows:min-content}.vfs\\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.vfs\\:grid-cols-none{grid-template-columns:none}.vfs\\:grid-rows-\\[auto_auto\\]{grid-template-rows:auto auto}.vfs\\:flex-col{flex-direction:column}.vfs\\:flex-wrap{flex-wrap:wrap}.vfs\\:items-center{align-items:center}.vfs\\:items-start{align-items:flex-start}.vfs\\:justify-between{justify-content:space-between}.vfs\\:justify-center{justify-content:center}.vfs\\:gap-0{gap:calc(var(--vfs-spacing)*0)}.vfs\\:gap-1\\.5{gap:calc(var(--vfs-spacing)*1.5)}.vfs\\:gap-2{gap:calc(var(--vfs-spacing)*2)}.vfs\\:gap-4{gap:calc(var(--vfs-spacing)*4)}.vfs\\:gap-6{gap:calc(var(--vfs-spacing)*6)}.vfs\\:gap-8{gap:calc(var(--vfs-spacing)*8)}.vfs\\:gap-16{gap:calc(var(--vfs-spacing)*16)}:where(.vfs\\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--vfs-spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--vfs-spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.vfs\\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--vfs-spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--vfs-spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.vfs\\:self-start{align-self:flex-start}.vfs\\:justify-self-end{justify-self:flex-end}.vfs\\:overflow-auto{overflow:auto}.vfs\\:overflow-hidden{overflow:hidden}.vfs\\:overflow-x-auto{overflow-x:auto}.vfs\\:rounded{border-radius:.25rem}.vfs\\:rounded-full{border-radius:3.40282e38px}.vfs\\:rounded-lg{border-radius:var(--vfs-radius-lg)}.vfs\\:rounded-md{border-radius:var(--vfs-radius-md)}.vfs\\:rounded-xl{border-radius:var(--vfs-radius-xl)}.vfs\\:rounded-t-lg{border-top-left-radius:var(--vfs-radius-lg);border-top-right-radius:var(--vfs-radius-lg)}.vfs\\:border{border-style:var(--tw-border-style);border-width:1px}.vfs\\:border-0{border-style:var(--tw-border-style);border-width:0}.vfs\\:border-\\[6px\\]{border-style:var(--tw-border-style);border-width:6px}.vfs\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.vfs\\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.vfs\\:border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.vfs\\:border-gray-300{border-color:var(--vfs-color-gray-300)}.vfs\\:border-neutral-100{border-color:var(--vfs-color-neutral-100)}.vfs\\:border-neutral-200{border-color:var(--vfs-color-neutral-200)}.vfs\\:border-neutral-300{bo